[
  {
    "path": ".claude/settings.json",
    "content": "{\n  \"enabledPlugins\": {\n    \"frontend-design@claude-plugins-official\": true\n  }\n}\n"
  },
  {
    "path": ".gemini/settings.json",
    "content": "{\n  \"mcpServers\": {\n    \"context7\": {\n      \"httpUrl\": \"https://mcp.context7.com/mcp\",\n      \"headers\": {\n        \"CONTEXT7_API_KEY\": \"${CONTEXT7_API_KEY}\",\n        \"Accept\": \"application/json, text/event-stream\"\n      }\n    }\n  },\n  \"context\": {\n    \"fileName\": [\"AGENTS.md\"]\n  }\n}\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]\npatreon: # Replace with a single Patreon username\nopen_collective: masscode\n# ko_fi: antonreshetov\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\nlfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry\ncustom: [paypal.me/antongithub, antonreshetov.gumroad.com/l/masscode, https://buy.polar.sh/polar_cl_bpDmjg079kfiAVtdtrtBwxyRXN6NK8B4Bvqdk2QXdx7]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: 🐞 Bug report\ndescription: Report an issue with massCode\ntitle: '[Bug]: '\nlabels: [pending triage]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        Thanks for taking the time to fill out this bug report!\n  - type: textarea\n    id: describe\n    attributes:\n      label: Describe the bug\n      description: A clear and concise description of what the bug is. If applicable, add screenshots to help explain your problem.\n    validations:\n      required: true\n  - type: textarea\n    id: reproduse\n    attributes:\n      label: To reproduce\n      description: Steps to reproduce the behavior\n      value: |\n        1. Go to ...\n        2. Click on ...\n        3. Scroll down to ..\n        4. See error\n    validations:\n      required: true\n  - type: input\n    id: app_details\n    attributes:\n      label: App Version and Architecture\n      description: What version and architecture of massCode are you running? You can get this info from the About massCode in app menu.\n      placeholder: e.g. 4.0.1 (arm64)\n    validations:\n      required: true\n  - type: textarea\n    id: system\n    attributes:\n      label: System info\n      description: Output of `npx envinfo --system`\n      render: shell\n      placeholder: System\n    validations:\n      required: true\n  - type: checkboxes\n    id: validation\n    attributes:\n      label: Validations\n      description: Before submitting the issue, please make sure you do the following\n      options:\n        - label: Follow our [Code of Conduct](https://github.com/massCodeIO/massCode/blob/master/CODE_OF_CONDUCT.md)\n          required: true\n        - label: Check that there isn't [already an issue](https://github.com/massCodeIO/massCode/issues) that reports the same bug to avoid creating a duplicate.\n          required: true\n        - label: Check that this is a concrete bug. For Q&A open a [GitHub Discussion](https://github.com/massCodeIO/massCode/discussions).\n          required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Questions & Discussions\n    url: https://github.com/massCodeIO/massCode/discussions\n    about: Use GitHub discussions for message-board style questions and discussions.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "### What kind of change does this PR introduce?\n\n> check at least one\n\n- [ ] Bugfix\n- [ ] Feature\n- [ ] Refactor\n- [ ] Other, please describe:\n\n### Validations\n\n- [ ] Follow our [CONTRIBUTING](https://github.com/massCodeIO/massCode/blob/master/CONTRIBUTING.md) guide\n"
  },
  {
    "path": ".github/workflows/build-sponsored.yml",
    "content": "name: Build Sponsored\n\non:\n  workflow_dispatch:\n\njobs:\n  build-sponsored:\n    name: Build Sponsored for ${{ matrix.os }}\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        include:\n          - os: macos-15-intel\n            platform: mac\n            arch: x64\n          - os: macos-15\n            platform: mac\n            arch: arm64\n          - os: windows-latest\n            platform: win\n          - os: ubuntu-latest\n            platform: linux\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Setup pnpm\n        uses: pnpm/action-setup@v4\n        with:\n          version: latest\n\n      - name: Setup Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20.16.0\n          cache: pnpm\n\n      - name: Install dependencies\n        run: pnpm install\n\n      - name: Rebuild native dependencies (macOS)\n        if: matrix.platform == 'mac'\n        run: pnpm run rebuild --arch ${{ matrix.arch }}\n\n      - name: Rebuild native dependencies (other platforms)\n        if: matrix.platform != 'mac'\n        run: pnpm run rebuild\n\n      - name: Build application (sponsored macOS)\n        if: matrix.platform == 'mac'\n        run: pnpm run build:sponsored:${{ matrix.platform }}:${{ matrix.arch }}\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          VITE_SPONSORED: true\n\n      - name: Build application (sponsored other platforms)\n        if: matrix.platform != 'mac'\n        run: pnpm run build:sponsored:${{ matrix.platform }}\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          VITE_SPONSORED: true\n\n      - name: Upload artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          name: sponsored-${{ matrix.platform }}-${{ matrix.arch }}-${{ github.ref_name }}\n          path: |\n            dist/*.dmg\n            dist/*.pkg\n            dist/*.exe\n            dist/*.msi\n            dist/*.AppImage\n            dist/*.snap\n          if-no-files-found: warn\n          retention-days: 30\n\n\n"
  },
  {
    "path": ".github/workflows/issue-close-require.yml",
    "content": "name: Issue Close Require\n\non:\n  schedule:\n    - cron: '0 0 * * *'\n\njobs:\n  close-issues:\n    runs-on: ubuntu-latest\n    steps:\n      - name: need reproduction\n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: close-issues\n          token: ${{ secrets.GITHUB_TOKEN }}\n          labels: need reproduction\n          inactive-day: 3\n"
  },
  {
    "path": ".github/workflows/issue-labeled.yml",
    "content": "name: Issue Labeled\n\non:\n  issues:\n    types: [labeled]\n\njobs:\n  reply-labeled:\n    runs-on: ubuntu-latest\n    steps:\n\n      - name: need reproduction\n        if: github.event.label.name == 'need reproduction'\n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: 'create-comment, remove-labels'\n          token: ${{ secrets.GITHUB_TOKEN }}\n          issue-number: ${{ github.event.issue.number }}\n          body: |\n            Hello @${{ github.event.issue.user.login }}. Please describe in detail the sequence of actions that leads to the bug (skip it if it's already there). Add screenshots of errors from the console. If possible add a video. Issues marked with `need reproduction` will be closed if they have no activity within 3 days.\n          labels: pending triage\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Release\n\non:\n  push:\n    tags:\n      - 'v*'\n  workflow_dispatch:\n    inputs:\n      tag:\n        description: 'Tag for release (e.g., v1.0.0)'\n        required: true\n        default: v4.0.0\n\njobs:\n  build:\n    name: Build for ${{ matrix.os }}\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        include:\n          - os: macos-15-intel\n            platform: mac\n            arch: x64\n          - os: macos-15\n            platform: mac\n            arch: arm64\n          - os: windows-latest\n            platform: win\n          - os: ubuntu-latest\n            platform: linux\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Setup pnpm\n        uses: pnpm/action-setup@v4\n        with:\n          version: latest\n\n      - name: Setup Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20.16.0\n          cache: pnpm\n\n      - name: Install dependencies\n        run: pnpm install\n\n      - name: Rebuild native dependencies (macOS)\n        if: matrix.platform == 'mac'\n        run: pnpm run rebuild --arch ${{ matrix.arch }}\n\n      - name: Rebuild native dependencies (other platforms)\n        if: matrix.platform != 'mac'\n        run: pnpm run rebuild\n\n      - name: Build application (macOS)\n        if: matrix.platform == 'mac'\n        run: pnpm run build:${{ matrix.platform }}:${{ matrix.arch }}\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Build application (other platforms)\n        if: matrix.platform != 'mac'\n        run: pnpm run build:${{ matrix.platform }}\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Upload artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          name: masscode-${{ matrix.platform }}-${{ matrix.arch }}-${{ github.ref_name || inputs.tag }}\n          path: |\n            dist/*.dmg\n            dist/*.pkg\n            dist/*.exe\n            dist/*.msi\n            dist/*.AppImage\n            dist/*.snap\n            !dist/*-sponsored.*\n            !dist/*.yml\n            !dist/*.blockmap\n          if-no-files-found: warn\n          retention-days: 30\n\n  release:\n    name: Create Release\n    needs: build\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n\n      - name: Download artifacts from \"build\" job\n        uses: actions/download-artifact@v4\n        with:\n          pattern: masscode-*\n          path: artifacts\n\n      - name: Generate changelog\n        run: npx changelogithub --output release-notes.md\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Create Release\n        id: create_release\n        uses: softprops/action-gh-release@v2\n        with:\n          files: artifacts/**/*\n          tag_name: ${{ github.ref_name || inputs.tag }}\n          draft: true\n          body_path: release-notes.md\n          generate_release_notes: true\n          append_body: true\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n\n"
  },
  {
    "path": ".gitignore",
    "content": "dist\nbuild/main\nbuild/renderer\nscripts/build-sponsored.sh\n\nnode_modules\n.DS_Store\ncomponents.d.ts\nauto-imports.d.ts\n.github/*-instructions.md\n.env"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"plugins\": [\"prettier-plugin-tailwindcss\"]\n}"
  },
  {
    "path": "AGENTS.md",
    "content": "# massCode AI Coding Guidelines\n\nYou are an expert Senior Frontend Developer specializing in Electron, Vue 3, and TypeScript.\nFollow these rules strictly when generating code for massCode.\n\n## 1. Core Stack\n\n- **Framework:** Vue 3 (Composition API, `<script setup lang=\"ts\">`)\n- **Styling:** TailwindCSS v4 (`@tailwindcss/vite`), `tailwind-merge`, `cva`\n- **UI:** Custom components (`src/renderer/components/ui`), Shadcn (based on `reka-ui`), `lucide-vue-next` icons\n- **State:** Vue Composables (No Vuex/Pinia)\n- **Backend:** Electron (Main), `better-sqlite3` (DB), Elysia.js (API)\n- **Utilities:** `@vueuse/core`, `vue-sonner` (Notifications)\n\n## 2. Philosophy\n\n**YAGNI — simplicity above all.** Do not overcomplicate code for hypothetical future scenarios. The minimum viable implementation is the correct implementation. Three similar lines of code are better than a premature abstraction.\n\nSigns of overengineering:\n- A function guards against a case that will never happen\n- A factory used in exactly one place that doesn't encapsulate state\n- Abstraction for its own sake (a wrapper around a single line of code)\n- Constants or patterns invented in advance without a real need\n\n## 3. Architecture & Communication\n\n**Strict Separation of Concerns:**\n\n| Layer        | Process  | Access                                      | Communication                             |\n|:-------------|:---------|:--------------------------------------------|:------------------------------------------|\n| **Renderer** | Frontend | **NO** Node.js/DB access. Only via API/IPC. | Calls API (`api.*`) or IPC (`ipc.invoke`) |\n| **API**      | Main     | Full DB/System access.                      | Receives requests from Renderer           |\n| **Main**     | Backend  | Full System access.                         | Handles IPC & Lifecycle                   |\n\n**Data Flow:** Renderer → REST API (Elysia) → Service/DB Layer → Response\n\n## 4. File Naming\n\n| Type | Convention | Example |\n|------|------------|---------|\n| Vue components | PascalCase | `Folders.vue`, `CreateDialog.vue` |\n| TypeScript files | camelCase | `useSnippets.ts`, `errorMessage.ts` |\n\nComposables get a `use` prefix. The file name matches the exported function name: `useSnippets.ts` → `export function useSnippets()`.\n\n## 5. Critical Rules & Conventions\n\n### A. Imports (STRICT)\n\n**❌ DO NOT IMPORT:**\n\n- Vue core (`ref`, `computed`, `watch`, `onMounted`) → *Auto-imported*\n- Project components (`src/renderer/components/`) → *Auto-imported* (e.g., `<SidebarFolders />` for `components/sidebar/Folders.vue`)\n\n**✅ ALWAYS IMPORT MANUALLY:**\n\n- Shadcn UI: `import * as Select from '@/components/ui/shadcn/select'`\n- Composables: `import { useApp } from '@/composables'`\n- Utils: `import { cn } from '@/utils'`\n- VueUse: `import { useClipboard } from '@vueuse/core'`\n- Electron IPC/Store: `import { ipc, store } from '@/electron'`\n\n### B. State & Settings\n\n- **Global State:** Composables in `@/composables` (e.g., `useApp`, `useSnippets`) maintain shared state by defining reactive variables **outside** the exported function (module level). This ensures all components access the same state. **No Pinia/Vuex.**\n- **Persistent Settings:** Use `store` from '@/electron'.\n  - `store.app`: UI state (sizes, visibility)\n  - `store.preferences`: User prefs (theme, language)\n\n### C. Database & API\n\n- **Renderer:** **NEVER** import `better-sqlite3`. Use `import { api } from '~/renderer/services/api'`\n- **New Endpoints:**\n  1. Define DTO in `src/main/api/dto/`\n  2. Add route in `src/main/api/routes/`\n  3. **Run `pnpm api:generate`** to update client.\n\n### D. System & IPC\n\n- **File System/System Ops:** Use `ipc.invoke('channel:action', data)`.\n- **Channels:** `fs:*`, `system:*`, `db:*`, `main-menu:*`, `prettier:*`, `spaces:*`.\n- **Renderer:** Access Electron only via `src/renderer/electron.ts`.\n\n### E. Spaces Architecture\n\nmassCode uses a **Spaces** system to organize different functional areas:\n\n| Space | ID | Description |\n|-------|----|-------------|\n| Code | `code` | Main snippet management (folders, snippets, tags) |\n| Tools | `tools` | Developer utilities (converters, generators) |\n| Math | `math` | Math Notebook with calculation sheets |\n\n**Space Definitions:** `src/renderer/spaceDefinitions.ts` — `SpaceId`, `getSpaceDefinitions()`, `getActiveSpaceId()`.\n\n**Space State Persistence (Markdown Engine):**\n- Each space can store its state in `__spaces__/{spaceId}/.state.yaml` inside the vault.\n- Runtime utilities: `src/main/storage/providers/markdown/runtime/spaces.ts` — `ensureSpaceDirectory()`, `getSpaceStatePath()`.\n- Generic YAML read/write: `src/main/storage/providers/markdown/runtime/spaceState.ts` — `readSpaceState<T>()`, `writeSpaceState()`.\n- Space state writes use the same debounce/flush infrastructure as `state.json` (`pendingStateWriteByPath` in `constants.ts`), so they flush automatically on app exit.\n- `__spaces__/` directory exists **only in markdown engine**. When engine is `sqlite`, spaces fall back to `electron-store`.\n\n**Space IPC Channels:**\n- `spaces:math:read` — read Math Notebook state (auto-migrates from electron-store on first read in markdown mode).\n- `spaces:math:write` — persist Math Notebook state.\n- Handlers: `src/main/ipc/handlers/spaces.ts`.\n\n**Space-Aware Sync:**\n- `system:storage-synced` event dispatches refresh based on `getActiveSpaceId()`:\n  - `code` / `null` → refresh folders + snippets\n  - `math` → `reloadFromDisk()` via `useMathNotebook()`\n  - `tools` → no-op (no vault data)\n- Mutable operations must call `markPersistedStorageMutation()` to prevent sync loops.\n\n### F. Localization\n\n- **Primary Language:** English (EN) is the base language. All new keys **MUST** be added to `src/main/i18n/locales/en_US/` first.\n- **Strictly No Hardcoding:** Never use hardcoded strings in templates or logic. Always use the localization system.\n- **Usage:** Use `i18n.t('namespace:key.path')` in both templates and scripts.\n- **Default Namespace:** The `ui` namespace is the default. You can use `i18n.t('key.path')` instead of `i18n.t('ui:key.path')`.\n- **Imports:** `import { i18n } from '@/electron'`\n\n## 6. UI/UX Guidelines\n\n- **Variants:** Use `cva` for component variants.\n- **Classes:** Use `cn()` to merge Tailwind classes.\n- **Notifications:** Use `useSonner()` composable.\n- **Utilities / Composables:**\n  - **Check `@vueuse/core` first.** Most common logic (clipboard, events, sensors) is already implemented.\n  - **Only** create custom composables if no suitable VueUse utility exists.\n  - Remember to **manually import** them (e.g., `import { useClipboard } from '@vueuse/core'`).\n- **Component Usage (STRICT):**\n  - **NEVER** reimplement basic UI elements (buttons, inputs, checkboxes, etc.).\n  - **ALWAYS** use existing components from `src/renderer/components/ui/`.\n  - **Missing Elements:** If a required UI element does not exist, create it in `src/renderer/components/ui/` first, following established patterns (Tailwind, cva, cn), then use it.\n  - **Naming:** They are auto-imported with a `Ui` prefix (e.g., `<UiButton />`, `<UiInput />`, `<UiCheckbox />`).\n\n## 7. Component Decomposition\n\nSplit a component when it exceeds ~300 lines or has more than 3 unrelated responsibilities:\n\n1. Extract constants and static data\n2. Extract pure functions into utils (only if used in multiple places)\n3. Move state and effects into a composable\n4. Break the template into child components\n\nKeep no logic in `<template>` more complex than a ternary operator.\n\n## 8. Development Workflow & Commands\n\n**Linting (CRITICAL):**\n\n- **ALWAYS** scope lint commands to specific files/dirs.\n- **NEVER** run lint on the whole project during a task.\n- Usage: `pnpm lint <path>` or `pnpm lint:fix <path>`\n\n**Other Commands:**\n\n- `pnpm dev`: Start dev server\n- `pnpm api:generate`: Regenerate API client (required after API changes)\n- `pnpm build`: Build for production\n\n## 9. Code Examples\n\n**Component Setup:**\n\n```html\n<script setup lang=\"ts\">\nimport * as Dialog from '@/components/ui/shadcn/dialog' // Manual import\nimport { useSnippets } from '@/composables' // Manual import\n\nconst { snippets } = useSnippets()\n// ref, computed are auto-imported (Vue core)\n</script>\n\n<template>\n  <div>\n    <!-- Use auto-imported UI component -->\n    <UiButton>Click me</UiButton>\n\n    <!-- Use Shadcn components with namespace -->\n    <Dialog.Dialog>\n      <Dialog.DialogTrigger as-child>\n        <UiButton variant=\"outline\">Open</UiButton>\n      </Dialog.DialogTrigger>\n      <Dialog.DialogContent>\n        Snippet count: {{ snippets.length }}\n      </Dialog.DialogContent>\n    </Dialog.Dialog>\n  </div>\n</template>\n```\n\n**Data Fetching (Renderer):**\n\n```typescript\nimport { api } from '~/renderer/services/api'\nconst { data } = await api.snippets.getSnippets({ folderId: 1 })\n```\n\n**IPC Call:**\n\n```typescript\nimport { ipc } from '@/electron'\nawait ipc.invoke('fs:assets', { buffer, fileName })\n```\n\n**Localization:**\n\n```html\n<script setup lang=\"ts\">\nimport { i18n } from '@/electron'\n</script>\n\n<template>\n  <div>\n    <!-- Using default 'ui' namespace -->\n    <p>{{ i18n.t('common.save') }}</p>\n\n    <!-- Using specific namespace -->\n    <p>{{ i18n.t('messages:snippets.count', { count: 10 }) }}</p>\n  </div>\n</template>\n```\n\n**Creating New API Endpoint (DTO & Route):**\n\n1. **Define DTO** (`src/main/api/dto/snippets.ts`):\n\n   ```typescript\n   import { t } from 'elysia'\n\n   // Define validation schema\n   const snippetsDuplicate = t.Object({\n     id: t.Number()\n   })\n\n   // Register in main DTO model\n   export const snippetsDTO = new Elysia().model({\n     // ... other DTOs\n     snippetsDuplicate\n   })\n   ```\n\n2. **Add Route** (`src/main/api/routes/snippets.ts`):\n\n   ```typescript\n   import { useDB } from '../../db'\n\n   app.post('/duplicate', ({ body }) => {\n     const db = useDB()\n     // Database logic here...\n     return { id: newId }\n   }, {\n     body: 'snippetsDuplicate', // Use registered DTO name\n     detail: { tags: ['Snippets'] }\n   })\n   ```\n\n3. **Generate Client:** Run `pnpm api:generate`\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# [4.4.0](https://github.com/massCodeIO/massCode/compare/v4.3.0...v4.4.0) (2025-12-19)\n\n\n### Bug Fixes\n\n* **devtools:** update scroll position on change route ([864afb1](https://github.com/massCodeIO/massCode/commit/864afb181dfc2d17d46d9d8af9ffae152c044ed8))\n* **elysia:** prevent DB hangs during saves ([#643](https://github.com/massCodeIO/massCode/issues/643)) ([f6583b7](https://github.com/massCodeIO/massCode/commit/f6583b7cb2d4555b008820a9121bd46808955f09))\n* **i18n:** fix Czech translations ([#651](https://github.com/massCodeIO/massCode/issues/651)) ([55367e2](https://github.com/massCodeIO/massCode/commit/55367e2334075d559b12c92d2e12c4e9ea8aa49f))\n\n\n### Features\n\n* **devtools:** add JSON generator ([#644](https://github.com/massCodeIO/massCode/issues/644)) ([630cf86](https://github.com/massCodeIO/massCode/commit/630cf8629a8d06cc16e7980b8f562bc778851033))\n* **devtools:** add Lorem Ipsum generator ([#645](https://github.com/massCodeIO/massCode/issues/645)) ([332362a](https://github.com/massCodeIO/massCode/commit/332362ae73c4338f00f99715f4be3173a39d2615))\n* **devtools:** add notifications for copy to clipboard ([#646](https://github.com/massCodeIO/massCode/issues/646)) ([00755ba](https://github.com/massCodeIO/massCode/commit/00755ba5aab109ee151458d062cae6462e14a101))\n\n\n\n# [4.3.0](https://github.com/massCodeIO/massCode/compare/v4.2.2...v4.3.0) (2025-11-26)\n\n\n### Bug Fixes\n\n* **folders:** ensure context and toolbar folder creation respect parent ([#640](https://github.com/massCodeIO/massCode/issues/640)) ([b2877c2](https://github.com/massCodeIO/massCode/commit/b2877c29994f4c227da967e801dc13d3731aeba0))\n\n\n### Features\n\n* **editor:** add Power Query (M) language support ([#639](https://github.com/massCodeIO/massCode/issues/639)) ([a49b5d0](https://github.com/massCodeIO/massCode/commit/a49b5d04ab28cd1bc163a24f8b8c431c72baa6f5))\n* **folders:** add multi-selection ([#641](https://github.com/massCodeIO/massCode/issues/641)) ([daef94f](https://github.com/massCodeIO/massCode/commit/daef94f718fd7ec9611f8c21a618c8a33f833feb))\n* **preferences:** add api port to preference option ([#631](https://github.com/massCodeIO/massCode/issues/631)) ([d542824](https://github.com/massCodeIO/massCode/commit/d542824361becdcfcd7bd980adff8a7f8f0354ce))\n\n\n\n## [4.2.2](https://github.com/massCodeIO/massCode/compare/v4.2.1...v4.2.2) (2025-10-29)\n\n\n### Bug Fixes\n\n* **db:** ensure directory exists before accessing the db ([#628](https://github.com/massCodeIO/massCode/issues/628)) ([d20bd9a](https://github.com/massCodeIO/massCode/commit/d20bd9a2aa44e58d36abd019936761afeb439766))\n* **editor:** jumping scroll when editing ([#629](https://github.com/massCodeIO/massCode/issues/629)) ([ee7e384](https://github.com/massCodeIO/massCode/commit/ee7e38458c541c455b74203ec6a59749090bd758))\n\n\n\n## [4.2.1](https://github.com/massCodeIO/massCode/compare/v4.2.0...v4.2.1) (2025-10-28)\n\n\n\n# [4.2.0](https://github.com/massCodeIO/massCode/compare/v4.1.0...v4.2.0) (2025-10-08)\n\n\n### Bug Fixes\n\n* **editor:** prevent header and editor display for multiple selected snippets ([e1d4ccd](https://github.com/massCodeIO/massCode/commit/e1d4ccd995f5d1ea14f50d9d8bef51101ffb4bb1))\n* **editor:** show code preview panel ([5e91b74](https://github.com/massCodeIO/massCode/commit/5e91b74c93a57b491bf4b84241e8b2ff664551dd))\n* **i18n:** update sidebar toggle translations ([f819f4a](https://github.com/massCodeIO/massCode/commit/f819f4acd83f90387e8644b88e871f5451b17d40))\n* **scrollbar:** suppress horizontal scrolling ([53f6aef](https://github.com/massCodeIO/massCode/commit/53f6aef8497be9aad13b680d801a7bbcd8312198))\n* **snippets:** use default folder language for fragments [#611](https://github.com/massCodeIO/massCode/issues/611) ([#612](https://github.com/massCodeIO/massCode/issues/612)) ([4c52a5e](https://github.com/massCodeIO/massCode/commit/4c52a5e4a6c607dbb8009dd1c660f964a474e3a0))\n* update entitlements and enable hardened runtime for macOS builds ([d350977](https://github.com/massCodeIO/massCode/commit/d350977b02c158789b887f7cf54981310c738bd4))\n\n\n### Features\n\n* add show/hide sidebar toggle ([#610](https://github.com/massCodeIO/massCode/issues/610)) ([64cc14f](https://github.com/massCodeIO/massCode/commit/64cc14f803ed27490c8cfe087ccb3c3d9fd523ee))\n\n\n\n# [4.1.0](https://github.com/massCodeIO/massCode/compare/v4.0.4...v4.1.0) (2025-10-03)\n\n\n### Bug Fixes\n\n* add help menu ([a27d605](https://github.com/massCodeIO/massCode/commit/a27d6059057b7adb10ccafbe78ba2b353efe657f))\n* set folder custom icon ([#607](https://github.com/massCodeIO/massCode/issues/607)) ([505a8a0](https://github.com/massCodeIO/massCode/commit/505a8a0e735979ebbd887280a5017bc19a491681))\n\n\n### Features\n\n* add json visualizer ([#609](https://github.com/massCodeIO/massCode/issues/609)) ([afce45c](https://github.com/massCodeIO/massCode/commit/afce45c3e131e402ae3e180d8db57504b444bf19))\n* **editor:** add highlighting for search terms ([#606](https://github.com/massCodeIO/massCode/issues/606)) ([48b7f56](https://github.com/massCodeIO/massCode/commit/48b7f56b4cc45e14664d9521e100ad2c265e5e38))\n\n\n\n## [4.0.4](https://github.com/massCodeIO/massCode/compare/v4.0.3...v4.0.4) (2025-09-30)\n\n\n### Bug Fixes\n\n* **editor:** vertical scrolling [#603](https://github.com/massCodeIO/massCode/issues/603) ([#604](https://github.com/massCodeIO/massCode/issues/604)) ([dc75eb0](https://github.com/massCodeIO/massCode/commit/dc75eb0f1ce5a811e1b0eb4ff549b4193436badb))\n\n\n\n## [4.0.3](https://github.com/massCodeIO/massCode/compare/v4.0.2...v4.0.3) (2025-09-30)\n\n\n### Bug Fixes\n\n* **db:** add SQLite file validation and backup for non-SQLite file [#592](https://github.com/massCodeIO/massCode/issues/592) ([#601](https://github.com/massCodeIO/massCode/issues/601)) ([1951d6a](https://github.com/massCodeIO/massCode/commit/1951d6a75ed894550cd25dc74137bda7cd6c909f))\n\n\n\n## [4.0.2](https://github.com/massCodeIO/massCode/compare/v4.0.1...v4.0.2) (2025-09-29)\n\n\n### Bug Fixes\n\n* **db:** check tables, set default values during migration [#581](https://github.com/massCodeIO/massCode/issues/581) ([#599](https://github.com/massCodeIO/massCode/issues/599)) ([ee52846](https://github.com/massCodeIO/massCode/commit/ee52846c0489b550b4f4c227ecc3f14543008cc6))\n* **menu:** update preview code shortcut to include Alt modifier ([de92898](https://github.com/massCodeIO/massCode/commit/de92898092914484cbf16ce1110b0c93a0ef9e17))\n\n\n\n## [4.0.1](https://github.com/massCodeIO/massCode/compare/v4.0.0...v4.0.1) (2025-09-29)\n\n\n### Bug Fixes\n\n* **editor:** line number overlapping [#594](https://github.com/massCodeIO/massCode/issues/594) ([#596](https://github.com/massCodeIO/massCode/issues/596)) ([7641421](https://github.com/massCodeIO/massCode/commit/7641421269cfc35c0e9cd4a0ed4a6b58358f8952))\n* **menu:** double window menu ([#595](https://github.com/massCodeIO/massCode/issues/595)) ([c5dc66c](https://github.com/massCodeIO/massCode/commit/c5dc66cf842d88162624a064dc78f229f7dd1769)), closes [#593](https://github.com/massCodeIO/massCode/issues/593)\n\n\n\n# [4.0.0](https://github.com/massCodeIO/massCode/compare/v3.12.1...v4.0.0) (2025-09-27)\n\n\n### Features\n\n* v4 ([#590](https://github.com/massCodeIO/massCode/issues/590)) ([d50d939](https://github.com/massCodeIO/massCode/commit/d50d9391b395380961ae3e1e5d27cc66c583cf35)), closes [#504](https://github.com/massCodeIO/massCode/issues/504) [#505](https://github.com/massCodeIO/massCode/issues/505) [#506](https://github.com/massCodeIO/massCode/issues/506) [#508](https://github.com/massCodeIO/massCode/issues/508) [#509](https://github.com/massCodeIO/massCode/issues/509) [#511](https://github.com/massCodeIO/massCode/issues/511) [#513](https://github.com/massCodeIO/massCode/issues/513) [#514](https://github.com/massCodeIO/massCode/issues/514) [#515](https://github.com/massCodeIO/massCode/issues/515) [#517](https://github.com/massCodeIO/massCode/issues/517) [#518](https://github.com/massCodeIO/massCode/issues/518) [#519](https://github.com/massCodeIO/massCode/issues/519) [#520](https://github.com/massCodeIO/massCode/issues/520) [#521](https://github.com/massCodeIO/massCode/issues/521) [#522](https://github.com/massCodeIO/massCode/issues/522) [#523](https://github.com/massCodeIO/massCode/issues/523) [#524](https://github.com/massCodeIO/massCode/issues/524) [#525](https://github.com/massCodeIO/massCode/issues/525) [#527](https://github.com/massCodeIO/massCode/issues/527) [#528](https://github.com/massCodeIO/massCode/issues/528) [#529](https://github.com/massCodeIO/massCode/issues/529) [#530](https://github.com/massCodeIO/massCode/issues/530)\n\n\n\n## [3.12.1](https://github.com/massCodeIO/massCode/compare/v3.12.0...v3.12.1) (2025-06-13)\n\n\n### Features\n\n* check only v3 & handle github rate limit ([30d0987](https://github.com/massCodeIO/massCode/commit/30d0987ccf0b895486e1d1377ef7df1450df3e66))\n\n\n\n# [3.12.0](https://github.com/massCodeIO/massCode/compare/v3.11.0...v3.12.0) (2025-02-10)\n\n\n### Bug Fixes\n\n* **search:** delete marks by reset search ([#500](https://github.com/massCodeIO/massCode/issues/500)) ([2142bd9](https://github.com/massCodeIO/massCode/commit/2142bd91b794a1a319eb682f55d51318b14977d5))\n* **snippets:** truncate name ([#501](https://github.com/massCodeIO/massCode/issues/501)) ([54be51b](https://github.com/massCodeIO/massCode/commit/54be51bd188e0a385d83c751a176a6f808b1c8ed))\n\n\n### Features\n\n* add window menu with minimize option ([#499](https://github.com/massCodeIO/massCode/issues/499)) ([2f013d1](https://github.com/massCodeIO/massCode/commit/2f013d18e6067fbef2ba213b46be0088c5794f67)), closes [#498](https://github.com/massCodeIO/massCode/issues/498)\n\n\n\n# [3.11.0](https://github.com/massCodeIO/massCode/compare/v3.10.0...v3.11.0) (2024-02-19)\n\n\n### Features\n\n* add fuzzy search ([a0eba0a](https://github.com/massCodeIO/massCode/commit/a0eba0ac89335ad134999bc1a679b99d523096c7))\n* add search by description ([134c424](https://github.com/massCodeIO/massCode/commit/134c4249f474c6653d0c8e1a8470b13e2fdd5359))\n* **i18n:** add new Czech translations ([3166034](https://github.com/massCodeIO/massCode/commit/3166034bf8e576bebb23dd8fcb8f65719c8f45ea))\n* **i18n:** add Persian locales ([a32dc0f](https://github.com/massCodeIO/massCode/commit/a32dc0ff8a187b4eb80971c15082e848ed4d5b23))\n* **i18n:** add Polish locales ([cd44fb4](https://github.com/massCodeIO/massCode/commit/cd44fb4d87ff873d6483c1eaeff3f45f5a9a287f))\n\n\n\n# [3.10.0](https://github.com/massCodeIO/massCode/compare/v3.9.0...v3.10.0) (2023-10-12)\n\n\n### Bug Fixes\n\n* **snippets:** delete fragment ([8b362a0](https://github.com/massCodeIO/massCode/commit/8b362a00c1dc61b6e415dfa37257c9a83b3d37d8))\n\n\n### Features\n\n* add mindmap ([#419](https://github.com/massCodeIO/massCode/issues/419)) ([238388d](https://github.com/massCodeIO/massCode/commit/238388de5bd3288121415a3860e8818036e96fcc))\n* **i18n:** add French locales ([#417](https://github.com/massCodeIO/massCode/issues/417)) ([5b27fda](https://github.com/massCodeIO/massCode/commit/5b27fdad3180a43177a2b047afe221114efe39f2))\n\n\n\n# [3.9.0](https://github.com/massCodeIO/massCode/compare/v3.8.0...v3.9.0) (2023-10-05)\n\n\n### Bug Fixes\n\n* devtools menu in win [#415](https://github.com/massCodeIO/massCode/issues/415) ([#416](https://github.com/massCodeIO/massCode/issues/416)) ([a8909e4](https://github.com/massCodeIO/massCode/commit/a8909e475dafb4ff876d438e185f61ae9baf4510))\n\n\n### Features\n\n* **i18n:** add new Czech translations ([#411](https://github.com/massCodeIO/massCode/issues/411)) ([e7e0cdc](https://github.com/massCodeIO/massCode/commit/e7e0cdcaca4718ffe828ff7ae9119895cabb79bc))\n* **i18n:** add Turkish locales ([#412](https://github.com/massCodeIO/massCode/issues/412)) ([bc6da09](https://github.com/massCodeIO/massCode/commit/bc6da09021d95eeb9ba35f2a5373e464b155df88))\n\n\n\n# [3.8.0](https://github.com/massCodeIO/massCode/compare/v3.7.0...v3.8.0) (2023-09-29)\n\n\n### Features\n\n* add dev tools ([#407](https://github.com/massCodeIO/massCode/issues/407)) ([eea5900](https://github.com/massCodeIO/massCode/commit/eea5900f6765d62a64863c5a8bbb28bebffac862))\n* add reload db ([#408](https://github.com/massCodeIO/massCode/issues/408)) ([d6ff713](https://github.com/massCodeIO/massCode/commit/d6ff71324d478e3e2f6590a3ae01ed30feb43877))\n* **icons:** add DigitalOcean, Moodle and Oracle icons ([#388](https://github.com/massCodeIO/massCode/issues/388)) ([864e2f6](https://github.com/massCodeIO/massCode/commit/864e2f6ff42c79ac99c63d84e470a0beb1aab362))\n\n\n\n# [3.7.0](https://github.com/massCodeIO/massCode/compare/v3.6.0...v3.7.0) (2023-06-14)\n\n\n### Bug Fixes\n\n* **snippets:** multiple select ([#373](https://github.com/massCodeIO/massCode/issues/373)) ([63c90e9](https://github.com/massCodeIO/massCode/commit/63c90e9b9c29f678f2236a5897f337eef385320e))\n* **snippets:** remove prev characters by typing name [#347](https://github.com/massCodeIO/massCode/issues/347) ([#351](https://github.com/massCodeIO/massCode/issues/351)) ([ddc31e7](https://github.com/massCodeIO/massCode/commit/ddc31e7b5d792aafc531b95c37dfc738571ca509))\n\n\n### Features\n\n* **folders:** add custom icon ([#376](https://github.com/massCodeIO/massCode/issues/376)) ([3c6f762](https://github.com/massCodeIO/massCode/commit/3c6f7626b3b977d16a3076984998a652bfd7b81d))\n* hide subfolder snippets ([#371](https://github.com/massCodeIO/massCode/issues/371)) ([e2c8d4f](https://github.com/massCodeIO/massCode/commit/e2c8d4f08294998b195a397fe12a6dff3572e46c))\n* **snippets:** add compact mode ([#372](https://github.com/massCodeIO/massCode/issues/372)) ([84b39d1](https://github.com/massCodeIO/massCode/commit/84b39d1d4caae305d566290614492b298330cd51))\n\n\n\n# [3.6.0](https://github.com/massCodeIO/massCode/compare/v3.5.0...v3.6.0) (2023-02-22)\n\n\n### Bug Fixes\n\n* **main:** blinking context menu ([#345](https://github.com/massCodeIO/massCode/issues/345)) ([23f57c5](https://github.com/massCodeIO/massCode/commit/23f57c5fabb7f1273ccb6a8b85419a9a808458f3))\n* **snippets:** invalid prettier es6 option ([#323](https://github.com/massCodeIO/massCode/issues/323)) ([08e5123](https://github.com/massCodeIO/massCode/commit/08e512381601faa60c4aad590ca4e4c789e64e19))\n* **snippets:** wrapping long lines in screenshot ([#326](https://github.com/massCodeIO/massCode/issues/326)) ([891b548](https://github.com/massCodeIO/massCode/commit/891b548c021c7f8817e28379cd86f77d23171b40))\n\n\n### Features\n\n* **grammars:** add bicep ([#325](https://github.com/massCodeIO/massCode/issues/325)) ([e461e51](https://github.com/massCodeIO/massCode/commit/e461e516c089437bd8391c3dda474c5c5cd8124e))\n* **grammars:** add kusto (KQL) ([#324](https://github.com/massCodeIO/massCode/issues/324)) ([b92e403](https://github.com/massCodeIO/massCode/commit/b92e4033530d77c5ffb956a5b10b76c58e6776d2))\n* **i18n:** add Czech locales ([#294](https://github.com/massCodeIO/massCode/issues/294)) ([7fe6696](https://github.com/massCodeIO/massCode/commit/7fe66967c6e73467948626ba19eb7a99b019c65d))\n* **i18n:** add Romanian locales ([#334](https://github.com/massCodeIO/massCode/issues/334)) ([9f55ff1](https://github.com/massCodeIO/massCode/commit/9f55ff1ec219c81281c30e6733407230d6a30b44))\n* **snippets:** copy screenshot to clipboard ([#327](https://github.com/massCodeIO/massCode/issues/327)) ([f06b084](https://github.com/massCodeIO/massCode/commit/f06b0842b14502bb4e2f9882ed5ed79625652043))\n\n\n\n# [3.5.0](https://github.com/massCodeIO/massCode/compare/v3.4.1...v3.5.0) (2023-01-07)\n\n\n### Bug Fixes\n\n* **snippets:** export to html [#309](https://github.com/massCodeIO/massCode/issues/309) ([#320](https://github.com/massCodeIO/massCode/issues/320)) ([2f3bada](https://github.com/massCodeIO/massCode/commit/2f3badaf78378c68a7f667edb26a8a5039d282a9))\n* **snippets:** use 'dom-to-image' instead 'html2canvas' [#297](https://github.com/massCodeIO/massCode/issues/297) ([#317](https://github.com/massCodeIO/massCode/issues/317)) ([2ba53ac](https://github.com/massCodeIO/massCode/commit/2ba53ac1408dc083fcbbeccd6010fa93e1cbe6a9))\n\n\n### Features\n\n* **i18n:** add Greek locales ([#304](https://github.com/massCodeIO/massCode/issues/304)) ([19f0942](https://github.com/massCodeIO/massCode/commit/19f0942e229d64ebf976f540f1b73c9fa85ee563))\n* **i18n:** add Ukrainian locales ([#319](https://github.com/massCodeIO/massCode/issues/319)) ([a44ebd2](https://github.com/massCodeIO/massCode/commit/a44ebd222731fb0965fd9df87b8cc7835c8c42df))\n* **snippets:** save screenshot as svg ([#318](https://github.com/massCodeIO/massCode/issues/318)) ([4cf24c9](https://github.com/massCodeIO/massCode/commit/4cf24c9ba49931ac36e18c1e9cdc407639e4d709))\n* **snippets:** use codemirror for screenshot ([#321](https://github.com/massCodeIO/massCode/issues/321)) ([9d264e0](https://github.com/massCodeIO/massCode/commit/9d264e0659f1e2b064eab1e93072c672b330ed15))\n\n\n\n## [3.4.1](https://github.com/massCodeIO/massCode/compare/v3.4.0...v3.4.1) (2022-08-29)\n\n\n### Bug Fixes\n\n* **grammars:** update xml & xsl [#263](https://github.com/massCodeIO/massCode/issues/263) ([#268](https://github.com/massCodeIO/massCode/issues/268)) ([fa79043](https://github.com/massCodeIO/massCode/commit/fa7904344f1261bcba5f2b711fd290d33275afc8))\n\n\n\n# [3.4.0](https://github.com/massCodeIO/massCode/compare/v3.3.0...v3.4.0) (2022-08-22)\n\n\n### Bug Fixes\n\n* **editor:** editor height by resize window [#242](https://github.com/massCodeIO/massCode/issues/242) ([#253](https://github.com/massCodeIO/massCode/issues/253)) ([7865ff8](https://github.com/massCodeIO/massCode/commit/7865ff85023b5db0243d22f346dd6121ee639864))\n* **snippet:** set first fragment when creating a snippet ([#256](https://github.com/massCodeIO/massCode/issues/256)) ([d382625](https://github.com/massCodeIO/massCode/commit/d382625859a371e009be8def83839eb2791edf27))\n\n\n### Features\n\n* **i18n:** add German locales ([#244](https://github.com/massCodeIO/massCode/issues/244)) ([d842b29](https://github.com/massCodeIO/massCode/commit/d842b291670fa77b63e8083e670152a667afa369))\n\n\n\n# [3.3.0](https://github.com/massCodeIO/massCode/compare/v3.2.0...v3.3.0) (2022-08-15)\n\n\n### Bug Fixes\n\n* **editor:** update editor value only if snippet id is changed ([#228](https://github.com/massCodeIO/massCode/issues/228)) ([78f6f7e](https://github.com/massCodeIO/massCode/commit/78f6f7ebedd781f987df4e07540c3f29c3f40217))\n* **markdown:** crash if value is empty ([#233](https://github.com/massCodeIO/massCode/issues/233)) ([23bb935](https://github.com/massCodeIO/massCode/commit/23bb935e975fdbc9b3821195229685265fa89d9b))\n* **markdown:** render mermaid ([#231](https://github.com/massCodeIO/massCode/issues/231)) ([1df5319](https://github.com/massCodeIO/massCode/commit/1df53194e162b57bbbe610efba8c685ced9c86ec))\n* restore scroll to folder on init ([#234](https://github.com/massCodeIO/massCode/issues/234)) ([3fb66e4](https://github.com/massCodeIO/massCode/commit/3fb66e462d324130c0ce0c2dccb3945a86ad2a18))\n* **snippets:** use only markdown for presentation ([#232](https://github.com/massCodeIO/massCode/issues/232)) ([834327a](https://github.com/massCodeIO/massCode/commit/834327a20540847661346948974cda457bdcedeb))\n\n\n### Features\n\n* add snippets selection history  ([#238](https://github.com/massCodeIO/massCode/issues/238)) ([a7540c9](https://github.com/massCodeIO/massCode/commit/a7540c91fd9a62aa4dd2f8253f30be1b70cd5bff))\n* **main:menu:** add keymap to control editor font size ([#229](https://github.com/massCodeIO/massCode/issues/229)) ([cb17910](https://github.com/massCodeIO/massCode/commit/cb17910e87eb5275ab693f4fb8d4728cda971835))\n* **markdown:** persist preview state ([#236](https://github.com/massCodeIO/massCode/issues/236)) ([3fadd32](https://github.com/massCodeIO/massCode/commit/3fadd327a2f4c753124ccc956123a1b52617d176))\n* **snippets:** add snippet link ([#230](https://github.com/massCodeIO/massCode/issues/230)) ([5a744f5](https://github.com/massCodeIO/massCode/commit/5a744f5d482c783b7ee1e2ba4cb94dbea8b667e9))\n* use escape to exit from markdown, code & screenshot previews ([#235](https://github.com/massCodeIO/massCode/issues/235)) ([12c6906](https://github.com/massCodeIO/massCode/commit/12c69060af04bbd4d29f2c9b9826022ca6d72572))\n\n\n\n# [3.2.0](https://github.com/massCodeIO/massCode/compare/v3.1.0...v3.2.0) (2022-08-11)\n\n\n### Features\n\n* add presentation mode ([#215](https://github.com/massCodeIO/massCode/issues/215)) ([0b540cf](https://github.com/massCodeIO/massCode/commit/0b540cf9214a30a3b11d50a517f44efced527e5f))\n* **i18n:** add Japanese locales ([#214](https://github.com/massCodeIO/massCode/issues/214)) ([5ceea07](https://github.com/massCodeIO/massCode/commit/5ceea076c691ed6e8d96050d8232e5dadc925a85))\n* **keymap:** add `cmd+` / `cmd-` to control editor font size ([#222](https://github.com/massCodeIO/massCode/issues/222)) ([d8b2872](https://github.com/massCodeIO/massCode/commit/d8b2872c5073038e505290eebbfc291c09aec31a))\n* **markdown:** add optional codemirror as code block renderer ([#218](https://github.com/massCodeIO/massCode/issues/218)) ([4a76beb](https://github.com/massCodeIO/massCode/commit/4a76beb76f4e2bd6a5d82296f8d09b6508026028))\n* notarizing macOS builds ([#219](https://github.com/massCodeIO/massCode/issues/219)) ([0a9c214](https://github.com/massCodeIO/massCode/commit/0a9c214da6f680a5bfc1998f195fe12e6ba0d153))\n* **snippets:** add restore from trash ([#221](https://github.com/massCodeIO/massCode/issues/221)) ([0db6756](https://github.com/massCodeIO/massCode/commit/0db67561ee57ac98b17aace22fedb13db97ebedb))\n\n\n\n# [3.1.0](https://github.com/massCodeIO/massCode/compare/v3.0.0...v3.1.0) (2022-08-08)\n\n\n### Bug Fixes\n\n* **editor:** clear search marks ([6a1bfc1](https://github.com/massCodeIO/massCode/commit/6a1bfc11b73403cc249c19555d5e4aae7d7f4936))\n\n\n### Features\n\n* add collapse/expand all folders action ([#199](https://github.com/massCodeIO/massCode/issues/199)) ([b1ee963](https://github.com/massCodeIO/massCode/commit/b1ee963f2f61cd5d0e82c85ea290693c75627b5a))\n* add create a new storage ([#197](https://github.com/massCodeIO/massCode/issues/197)) ([da2f192](https://github.com/massCodeIO/massCode/commit/da2f19203da237ce567f821010d3b7e7dbaac919))\n* **editor:** add embed image in mardown ([#201](https://github.com/massCodeIO/massCode/issues/201)) ([37dcae9](https://github.com/massCodeIO/massCode/commit/37dcae9ba53c5f96af7b1b3655adaf234351702f))\n* **i18n:** add Português (Brasil) locale ([#194](https://github.com/massCodeIO/massCode/issues/194)) ([3e60142](https://github.com/massCodeIO/massCode/commit/3e601425b4b8c96a868b730d257183cdf91dbac8))\n* **main: menu:** add snippet collection link ([#198](https://github.com/massCodeIO/massCode/issues/198)) ([861f889](https://github.com/massCodeIO/massCode/commit/861f889f473aea59a7f032663a89c09079e944e9))\n* **themes:** add material palenight ([#195](https://github.com/massCodeIO/massCode/issues/195)) ([d644074](https://github.com/massCodeIO/massCode/commit/d644074dceb64ae798942c26d0487eb9cd17df01))\n* **themes:** add tokyo night ([#196](https://github.com/massCodeIO/massCode/issues/196)) ([f17aa89](https://github.com/massCodeIO/massCode/commit/f17aa8918b0da0a1bdc1c59f6545f8f0fd791e65))\n\n\n\n# [3.0.0](https://github.com/massCodeIO/massCode/compare/v2.11.0...v3.0.0) (2022-08-05)\n\n\n### Features\n\n* add codemirror & use `.tmLanguage` directly as grammar ([#190](https://github.com/massCodeIO/massCode/issues/190)) ([a36bcf0](https://github.com/massCodeIO/massCode/commit/a36bcf005f4210a372b424ccc7e7c3fb84f7d634))\n\n\n\n# [2.11.0](https://github.com/massCodeIO/massCode/compare/v2.10.0...v2.11.0) (2022-08-04)\n\n\n### Bug Fixes\n\n* **snippets:** folder rename [#162](https://github.com/massCodeIO/massCode/issues/162) ([#169](https://github.com/massCodeIO/massCode/issues/169)) ([c5ddd23](https://github.com/massCodeIO/massCode/commit/c5ddd231c6baecda6df572dda4406d50cc803575))\n\n\n### Features\n\n* **i18n:** add Chinese traditional locale ([#161](https://github.com/massCodeIO/massCode/issues/161)) ([8b00fcd](https://github.com/massCodeIO/massCode/commit/8b00fcd58eca6c42402a747f23ac57ee8be28927))\n* **i18n:** add Spanish locale ([bd68311](https://github.com/massCodeIO/massCode/commit/bd6831123158a38166025a3683412a290ca74114))\n\n\n\n# [2.10.0](https://github.com/massCodeIO/massCode/compare/v2.9.0...v2.10.0) (2022-07-21)\n\n\n### Bug Fixes\n\n* **editor:** fallback to monospace font [#149](https://github.com/massCodeIO/massCode/issues/149) ([3d9efcd](https://github.com/massCodeIO/massCode/commit/3d9efcdc6dd82d6ae598e160333c3fb116b87aa9))\n* **editor:** height when opening code preview ([#131](https://github.com/massCodeIO/massCode/issues/131)) ([c8d8443](https://github.com/massCodeIO/massCode/commit/c8d84432d71873a5b64c66c9f1afc4043031a20d))\n\n\n### Features\n\n* add tooltips ([#159](https://github.com/massCodeIO/massCode/issues/159)) ([9c90e71](https://github.com/massCodeIO/massCode/commit/9c90e713e9e6aa4d3425f0c68be2ebfba0fd5965))\n* **i18n:** add Simplified Chinese for i18n ([#154](https://github.com/massCodeIO/massCode/issues/154)) ([843b91d](https://github.com/massCodeIO/massCode/commit/843b91de41752face2e8a86ae23a0e8d5ad1f57a))\n* **snippets:** add snippets showcase link ([e30a174](https://github.com/massCodeIO/massCode/commit/e30a17469bf7da14e3dfaac289fbc25254bd5432))\n* support i18n, add russian local ([#152](https://github.com/massCodeIO/massCode/issues/152)) ([59da3d9](https://github.com/massCodeIO/massCode/commit/59da3d95ee28f637fc3314cfc28cf940f7e3ee18))\n\n\n\n# [2.9.0](https://github.com/massCodeIO/massCode/compare/v2.8.1...v2.9.0) (2022-07-13)\n\n\n### Features\n\n* **snippets:** add html & css renderer to snippets preview ([#126](https://github.com/massCodeIO/massCode/issues/126)) ([21828e6](https://github.com/massCodeIO/massCode/commit/21828e63a142c13953495e3d8693fe946deabe50))\n\n\n\n## [2.8.1](https://github.com/massCodeIO/massCode/compare/v2.8.0...v2.8.1) (2022-07-09)\n\n\n### Bug Fixes\n\n* **editor:** search highlighting ([0bdab6c](https://github.com/massCodeIO/massCode/commit/0bdab6ceda460074cb1781b9ded3958309f8750f))\n* **snippets:** blinking system folder when click ([bc7cdfe](https://github.com/massCodeIO/massCode/commit/bc7cdfee4090e7e65f036b6ad3b2a00913937ad6))\n* **snippets:** clear search field after click folder ([6360b5c](https://github.com/massCodeIO/massCode/commit/6360b5cab456881a67ccad0ab4da61d7b5ad4e4d))\n* **snippets:** double get snippets when add new snippet ([c38af77](https://github.com/massCodeIO/massCode/commit/c38af77500dd147aa3ff83bfa492464589f5b748))\n* **snippets:** search [#117](https://github.com/massCodeIO/massCode/issues/117) ([beb8591](https://github.com/massCodeIO/massCode/commit/beb8591003f45305a1f08455ff4e26e785135e27))\n\n\n\n# [2.8.0](https://github.com/massCodeIO/massCode/compare/v2.7.1...v2.8.0) (2022-07-08)\n\n\n### Bug Fixes\n\n* **markdown:** proper bg color for code block depending on theme ([85eaa64](https://github.com/massCodeIO/massCode/commit/85eaa6475c7f167b26f83e04424781844caf85c7))\n* **snippets:** update editor if fragments is changed [#113](https://github.com/massCodeIO/massCode/issues/113) ([8908af9](https://github.com/massCodeIO/massCode/commit/8908af9906611d4cd604fe869840748a0bd6ce8a))\n\n\n### Features\n\n* **snippets:** create screenshot of snippets ([#115](https://github.com/massCodeIO/massCode/issues/115)) ([024dfa5](https://github.com/massCodeIO/massCode/commit/024dfa5870d9e7dd36f533dcb06898e9bc50a641))\n\n\n\n## [2.7.1](https://github.com/massCodeIO/massCode/compare/v2.7.0...v2.7.1) (2022-07-07)\n\n\n### Bug Fixes\n\n* **editor:** update value after format ([3a91111](https://github.com/massCodeIO/massCode/commit/3a911112d7dcebc0b0299ada6e1e5e550c899197))\n* **markdown:** render task list ([#107](https://github.com/massCodeIO/massCode/issues/107)) ([4ee1970](https://github.com/massCodeIO/massCode/commit/4ee19704291e55ef66b5e617ed56afc7a732edd5))\n* **snippets:** await fetch snippets by click on system folders ([4f2a203](https://github.com/massCodeIO/massCode/commit/4f2a203611130713e20f64f1f4a6605d552f3dfe))\n\n\n### Performance Improvements\n\n* **editor:** set value only if snippet id is changed ([#109](https://github.com/massCodeIO/massCode/issues/109)) ([56bd929](https://github.com/massCodeIO/massCode/commit/56bd9296deae1f37a0f467b596fc4b2be0d4021c))\n* **snippets:** no need to fetch snippets after patch ([3a51e69](https://github.com/massCodeIO/massCode/commit/3a51e695ac61e268cc499acd71f61ad48a57f28d))\n\n\n\n# [2.7.0](https://github.com/massCodeIO/massCode/compare/v2.6.1...v2.7.0) (2022-07-06)\n\n\n### Bug Fixes\n\n* **snippets:** fragmetns scroll [#92](https://github.com/massCodeIO/massCode/issues/92) ([#105](https://github.com/massCodeIO/massCode/issues/105)) ([35e57dd](https://github.com/massCodeIO/massCode/commit/35e57dd233bbc518b7124084b1e64104ab9879ed))\n* **snippets:** update snippets list after add new ([#101](https://github.com/massCodeIO/massCode/issues/101)) ([55bb05d](https://github.com/massCodeIO/massCode/commit/55bb05dae55a559c8bd4519713eeab24fb690218))\n\n\n### Features\n\n* add mermaid diagram for markdown ([#104](https://github.com/massCodeIO/massCode/issues/104)) ([e578056](https://github.com/massCodeIO/massCode/commit/e57805675fe352f1e9a7618d40b0e725e6fee2ba))\n* **db:** add migration from SnippetsLab >= v2.1 ([#98](https://github.com/massCodeIO/massCode/issues/98)) ([542870d](https://github.com/massCodeIO/massCode/commit/542870d621673308549fdde1937f336029524830))\n* **main: menu:** add donate via PayPal ([86bf46a](https://github.com/massCodeIO/massCode/commit/86bf46af9ffcaaf64cfd964c145f555ccb40ee05))\n\n\n\n## [2.6.1](https://github.com/massCodeIO/massCode/compare/v2.6.0...v2.6.1) (2022-05-06)\n\n\n### Bug Fixes\n\n* **ui:** button spacing ([41ade18](https://github.com/massCodeIO/massCode/commit/41ade1819235ca1690450734807208279ef99ec8))\n\n\n\n# [2.6.0](https://github.com/massCodeIO/massCode/compare/v2.5.0...v2.6.0) (2022-05-06)\n\n\n### Bug Fixes\n\n* **snippets:** deselect after context menu action ([4fb7b95](https://github.com/massCodeIO/massCode/commit/4fb7b95c8c9cb410ba25923ea90a498943db9837))\n* **snippets:** flickering lang selector via add new fragment ([3c59f26](https://github.com/massCodeIO/massCode/commit/3c59f26463f2863fd20ae43c018a0e69c97ccc2a))\n* **snippets:** multiple add to favorites ([1776679](https://github.com/massCodeIO/massCode/commit/1776679c78bc1b4fec892dbac736d64e6aed3e9e))\n* **snippets:** show placeholder for not selected snippet ([25b4494](https://github.com/massCodeIO/massCode/commit/25b449416e74f6c253fc701c08a62c7d4770afe7))\n\n\n### Features\n\n* **snippets:** add description ([#74](https://github.com/massCodeIO/massCode/issues/74)) ([7e78922](https://github.com/massCodeIO/massCode/commit/7e78922a0536858111ffbe5ee34d9f3c156d6154))\n* **snippets:** add sort by `name`, `createdAt` & `updatedAt` ([#69](https://github.com/massCodeIO/massCode/issues/69)) ([3603fad](https://github.com/massCodeIO/massCode/commit/3603fad4691dd55c329c1ce11e9050abe96e1e4a))\n\n\n\n# [2.5.0](https://github.com/massCodeIO/massCode/compare/v2.4.0...v2.5.0) (2022-04-29)\n\n\n### Bug Fixes\n\n* **main: menu:** add check for updates for other platforms ([94676b6](https://github.com/massCodeIO/massCode/commit/94676b65c1dca707fae18fc1119d79636d20b89a))\n\n\n### Features\n\n* **main: menu:** add check for updates ([702d0f5](https://github.com/massCodeIO/massCode/commit/702d0f550306f57b2964c9588a579d6f3bbaf7c5))\n* **snippets:** more languages support for prettier ([#58](https://github.com/massCodeIO/massCode/issues/58)) ([658d3c0](https://github.com/massCodeIO/massCode/commit/658d3c0bf69a801e9f4ff3c6ebd7d1b3c1e91f02))\n\n\n\n# [2.4.0](https://github.com/massCodeIO/massCode/compare/v2.3.0...v2.4.0) (2022-04-27)\n\n\n### Features\n\n* **api:** create snippets ([#56](https://github.com/massCodeIO/massCode/issues/56)) ([4abd6bd](https://github.com/massCodeIO/massCode/commit/4abd6bd53660c8b2750700139ba0fa4202532c35))\n* **main: menu:** add VS Code extension link ([98c4720](https://github.com/massCodeIO/massCode/commit/98c4720a3bf40fe3031808ccbf22717f4ac87d15))\n\n\n\n# [2.3.0](https://github.com/massCodeIO/massCode/compare/v2.2.0...v2.3.0) (2022-04-26)\n\n\n### Bug Fixes\n\n* **api:** don't mutate snippets table during embed folders ([f60d045](https://github.com/massCodeIO/massCode/commit/f60d04586b5b7890df7dbcf5f0c71aedd4a455b4))\n* **main: db:** migrate after move storage ([5406083](https://github.com/massCodeIO/massCode/commit/54060831a8bd3d3a11f63b8cb044e2c777d28f8d))\n* **main: db:** set empty `value` for content if `value` is `null` on migrate from v1 [#38](https://github.com/massCodeIO/massCode/issues/38) ([1874d1c](https://github.com/massCodeIO/massCode/commit/1874d1c3c925175a74f95527d6aafb3307b09ffe))\n* **snippets:** remove selected by click for system folder ([ebd9f29](https://github.com/massCodeIO/massCode/commit/ebd9f29ae31db0f5e03cec76e79a072c4b36b127))\n\n\n### Features\n\n* **main: menu:** add raycast & alfred extensions links ([aab76b6](https://github.com/massCodeIO/massCode/commit/aab76b61ad7191a929e3c3861b1394811ad926da))\n* **snippets:** allow add snippets to inbox ([#52](https://github.com/massCodeIO/massCode/issues/52)) ([5cf809a](https://github.com/massCodeIO/massCode/commit/5cf809aea45e20d3cab9152dcb986652583413b6))\n\n\n\n# [2.2.0](https://github.com/massCodeIO/massCode/compare/v2.1.1...v2.2.0) (2022-04-19)\n\n\n### Bug Fixes\n\n* **search:** set selected folder & snippet after focus on editor after search ([069e296](https://github.com/massCodeIO/massCode/commit/069e296f0aa3792990b8a25a1cfd314c853946fa))\n* **snippets:** persist scroll position by change view ([ba05384](https://github.com/massCodeIO/massCode/commit/ba05384c62eb39115bcc6c0fdd5d0f0a6a83b6c5))\n\n\n### Features\n\n* **editor:** add `highlightGutter` & `highlightLine` settings ([#45](https://github.com/massCodeIO/massCode/issues/45)) ([52f8455](https://github.com/massCodeIO/massCode/commit/52f845575b641b1eeaa3a2a893b72f362908c744))\n\n\n\n## [2.1.1](https://github.com/massCodeIO/massCode/compare/v2.1.0...v2.1.1) (2022-04-18)\n\n\n### Bug Fixes\n\n* **editor:** disable multiple selection by edit snippet after search ([ec2c1eb](https://github.com/massCodeIO/massCode/commit/ec2c1eb39605a87f575b0e5e970232b7ef5078fa))\n* **sidebar:** tag highlight, spell fix tabs -> tags ([#33](https://github.com/massCodeIO/massCode/issues/33)) ([9be3e13](https://github.com/massCodeIO/massCode/commit/9be3e13b1fad2c8a5d027d36f743d7f1bc4afd86))\n* **snippets:** color text for ghost for multiple dragged snippets ([fc25202](https://github.com/massCodeIO/massCode/commit/fc25202059819f298e27e4506c0625756219c97d))\n\n\n\n# [2.1.0](https://github.com/massCodeIO/massCode/compare/v2.0.1...v2.1.0) (2022-04-15)\n\n\n### Bug Fixes\n\n* **snippets:** disable markdown preview by select other fragment [#27](https://github.com/massCodeIO/massCode/issues/27) ([#31](https://github.com/massCodeIO/massCode/issues/31)) ([a7dfceb](https://github.com/massCodeIO/massCode/commit/a7dfcebd7d0721a7c28f412ced93d4bf8d4e6518))\n* unsubscribe on unmount for emiiter events [#29](https://github.com/massCodeIO/massCode/issues/29) ([#32](https://github.com/massCodeIO/massCode/issues/32)) ([d1d0bc5](https://github.com/massCodeIO/massCode/commit/d1d0bc583801d8655a1736310b4baef9e4f58372))\n\n\n### Features\n\n* **main: db:** migrate from SnippetsLab ([#30](https://github.com/massCodeIO/massCode/issues/30)) ([1d48506](https://github.com/massCodeIO/massCode/commit/1d485067c5b6f476d92149905b437ae918a16963))\n\n\n\n## [2.0.1](https://github.com/massCodeIO/massCode/compare/v2.0.0...v2.0.1) (2022-04-15)\n\n\n### Bug Fixes\n\n* **snippets:** system folder highlight ([4cfe131](https://github.com/massCodeIO/massCode/commit/4cfe131bc79f55b28b1929905adfd86a7ada6086))\n\n\n\n# [2.0.0](https://github.com/massCodeIO/massCode/compare/v2.0.0-beta.6...v2.0.0) (2022-04-15)\n\n\n### Bug Fixes\n\n* **snippets:** sort by `updatedAt` ([f5f50e6](https://github.com/massCodeIO/massCode/commit/f5f50e6a68d5b309fabe77f402b370a6d4d22d43))\n\n\n### Features\n\n* **api:** add controller to get snippets with folder ([3a2f1fb](https://github.com/massCodeIO/massCode/commit/3a2f1fb0f1d224e943942ad02be851c97a62ef97))\n* **main: menu:** add find menu ([e42349e](https://github.com/massCodeIO/massCode/commit/e42349e25f6cfdbb9b74d3f7815a3e7eabd2b39a))\n* **snippets:** show time for today updated & full date for other snippets ([3724a5b](https://github.com/massCodeIO/massCode/commit/3724a5b459034bab90a3410c5e2d720394c33581))\n\n\n\n# [2.0.0-beta.6](https://github.com/massCodeIO/massCode/compare/v2.0.0-beta.5...v2.0.0-beta.6) (2022-04-14)\n\n\n### Features\n\n* add  4 light & 4 dark app theme ([#26](https://github.com/massCodeIO/massCode/issues/26)) ([e9dff1e](https://github.com/massCodeIO/massCode/commit/e9dff1e7739f770d557dc8cea4fcfc2bd131d0cd))\n* **folders:** add rename context menu ([#25](https://github.com/massCodeIO/massCode/issues/25)) ([654767b](https://github.com/massCodeIO/massCode/commit/654767b98dbf25390af892ac3eb1ba93f7cefee0))\n* **snippets:** exit from edit mode by enter for fragment ([9e3e301](https://github.com/massCodeIO/massCode/commit/9e3e301006953bc81ac7fee9bb3c1920b1ec5d39))\n\n\n\n# [2.0.0-beta.5](https://github.com/massCodeIO/massCode/compare/v2.0.0-beta.4...v2.0.0-beta.5) (2022-04-13)\n\n\n### Bug Fixes\n\n* **snippets:** cut off snippets name for Windows [#20](https://github.com/massCodeIO/massCode/issues/20) ([#24](https://github.com/massCodeIO/massCode/issues/24)) ([097d2cb](https://github.com/massCodeIO/massCode/commit/097d2cbf688fdfc7404d1e7d9e479bb70dd42ed0))\n* **snippets:** open external link in markdown ([b5d3ee0](https://github.com/massCodeIO/massCode/commit/b5d3ee01cf7ad48dffb0255d10b652f98659867b))\n\n\n### Features\n\n* add prettier for snippets formatting ([#22](https://github.com/massCodeIO/massCode/issues/22)) ([14b0f86](https://github.com/massCodeIO/massCode/commit/14b0f86ab67ed7bea7277c424988f75e07a8ed91))\n* resizable layout ([#19](https://github.com/massCodeIO/massCode/issues/19)) ([a1e41b3](https://github.com/massCodeIO/massCode/commit/a1e41b3ab567854eda7b9c636cb94c6e34614242))\n* update main menu ([#21](https://github.com/massCodeIO/massCode/issues/21)) ([6d14e7d](https://github.com/massCodeIO/massCode/commit/6d14e7df657f4762a8e43f207e909ee3eaed33cf))\n\n\n\n# [2.0.0-beta.4](https://github.com/massCodeIO/massCode/compare/v2.0.0-beta.3...v2.0.0-beta.4) (2022-04-12)\n\n\n### Bug Fixes\n\n* **editor:** undo/redo stack ([84096c4](https://github.com/massCodeIO/massCode/commit/84096c47bcf88b49229997d592f473f23812672e))\n* **snippets:** sort in 'All snippets' ([ab799d5](https://github.com/massCodeIO/massCode/commit/ab799d5df478bed659d56cb6529c1dd589355c0f))\n\n\n### Features\n\n* add editor preferences ([#18](https://github.com/massCodeIO/massCode/issues/18)) ([d1fe23f](https://github.com/massCodeIO/massCode/commit/d1fe23fd510445426424bef85df2e3cf01c086e4))\n* **snippets:** add markdown preview ([#15](https://github.com/massCodeIO/massCode/issues/15)) ([c208871](https://github.com/massCodeIO/massCode/commit/c2088712ffbc38c2ce2593ec50dbaeaa6291bd7a))\n\n\n\n# [2.0.0-beta.3](https://github.com/massCodeIO/massCode/compare/v2.0.0-beta.2...v2.0.0-beta.3) (2022-04-11)\n\n\n### Bug Fixes\n\n* **main: db:** create app folder [#14](https://github.com/massCodeIO/massCode/issues/14) ([750637d](https://github.com/massCodeIO/massCode/commit/750637d068dae50dc10cc7308e9f5862754f0177))\n* **snippets:** scroll to top ([2dbecaf](https://github.com/massCodeIO/massCode/commit/2dbecaff987d9376e62fab0e98aa9194ef01d2d3))\n\n\n\n# [2.0.0-beta.2](https://github.com/massCodeIO/massCode/compare/v2.0.0-beta.1...v2.0.0-beta.2) (2022-04-10)\n\n\n### Features\n\n* support win ([#13](https://github.com/massCodeIO/massCode/issues/13)) ([edc114c](https://github.com/massCodeIO/massCode/commit/edc114cd4995913f039da0197c2560c5a99828f1))\n\n\n\n# [2.0.0-beta.1](https://github.com/massCodeIO/massCode/compare/9fd7085f113be898b9bde3a78eca1eff56c7a391...v2.0.0-beta.1) (2022-04-09)\n\n\n### Bug Fixes\n\n* **build:** change main script, move files to `src` ([6eb1e8a](https://github.com/massCodeIO/massCode/commit/6eb1e8a788abb15ec32d4089868ee2f5b30c6b30))\n* **build:** include renderer to build ([8ea99c5](https://github.com/massCodeIO/massCode/commit/8ea99c5f1206876786e2a9d046fbc59d7048a2a0))\n* **editor:** init theme ([1de3afa](https://github.com/massCodeIO/massCode/commit/1de3afae2669c9bf3125281c7192f6dd40b82d06))\n* **editor:** set lang during init ([34c340d](https://github.com/massCodeIO/massCode/commit/34c340d91df1e3a93632526108fd3dfc30f3fd50))\n* **editor:** update height ([2f55391](https://github.com/massCodeIO/massCode/commit/2f5539138448c6b062be3afca041a8e65c18192f))\n* in build need to push to main route ([4dc4974](https://github.com/massCodeIO/massCode/commit/4dc497434e5612e87f178ae3ec9875eb95fe121f))\n* **ipc:** cancel delete snippet ([7c71b49](https://github.com/massCodeIO/massCode/commit/7c71b4924a0c876ab767fa398ce4557a4bb48e9a))\n* **main: api:** path resolve ([07d7f8c](https://github.com/massCodeIO/massCode/commit/07d7f8cf24cfc4d2fca14c77e579e9a39cc21c31))\n* **main: db:** remove from app store `selectedFolderId` & `selectedFolderIds` ([8e364f1](https://github.com/massCodeIO/massCode/commit/8e364f1ea8617f0fd705b9982e381a39a7fa722d))\n* **main: ipc:** add typing ([07cfb74](https://github.com/massCodeIO/massCode/commit/07cfb7432ad67992e13a57cf42c243a923879b5f))\n* **main: store:** set cwd to v2 to prevent conflict ([075b490](https://github.com/massCodeIO/massCode/commit/075b4907de48d5c97ff1ee2a9ba5414ebf60afb4))\n* **main:** import config in build ([aa68762](https://github.com/massCodeIO/massCode/commit/aa6876221b7e83c81e28c9f9d460d756270df148))\n* **main:** ipc listener for `restart` ([4ea5460](https://github.com/massCodeIO/massCode/commit/4ea5460675aeb8e6d9013fda3bc09b084d293c95))\n* **main:** set storage & backup path in dev mode ([dd455cf](https://github.com/massCodeIO/massCode/commit/dd455cfe8b0137bc752039908facdc647ea04725))\n* **router:** import all views at once ([7762315](https://github.com/massCodeIO/massCode/commit/7762315e512c3135c8d0f08b670c110c2f251c74))\n* **snippets:** `currentContent` & `currentLanguage` getters ([4b6e4e4](https://github.com/massCodeIO/massCode/commit/4b6e4e4952c701f691ec4b284447bb6553e8cb28))\n* **snippets:** add `folder` prop as optional ([e28c761](https://github.com/massCodeIO/massCode/commit/e28c7614f3a921665276ed0f8a920d028c6d03c6))\n* **snippets:** add new snippet from list header ([686c982](https://github.com/massCodeIO/massCode/commit/686c9829c6188c67bcc832e4b786b2089c35af34))\n* **snippets:** blur snippets after context menu ([c8b1c6a](https://github.com/massCodeIO/massCode/commit/c8b1c6a4be754bf3f1efade02599c03c65d1cb2e))\n* **snippets:** check for `undefined` ([f2b6a2f](https://github.com/massCodeIO/massCode/commit/f2b6a2f13c4cf03c20b97dc207fe30ed276eee56))\n* **snippets:** delete fragments ([453fc05](https://github.com/massCodeIO/massCode/commit/453fc053862bc5045bd4e9c9837cafaed16831ea))\n* **snippets:** delete from electron store snippet id ([b5dcb73](https://github.com/massCodeIO/massCode/commit/b5dcb7345badebaecaa7f46da8154fa100d7ce58))\n* **snippets:** filter by not deleted ([c1099e7](https://github.com/massCodeIO/massCode/commit/c1099e73070a191f0235de52ef7446f27ba82c34))\n* **snippets:** focus snippet name by add new snippet ([e2e4ff3](https://github.com/massCodeIO/massCode/commit/e2e4ff3d0193945fbb2cf0b578498f98c92f6f4b))\n* **snippets:** get all snippets after patch ([f6b0d76](https://github.com/massCodeIO/massCode/commit/f6b0d7659a828a982224334355605a88495c2061))\n* **snippets:** set first selected ([24bc85c](https://github.com/massCodeIO/massCode/commit/24bc85c5a82f0cc725e177d24a8533f0d4b20594))\n* **snippets:** unset `selectedIds` by `setSnippetsByAlias` ([7d76a6c](https://github.com/massCodeIO/massCode/commit/7d76a6c3ede566f9d872914f29989dc2d2537ead))\n* **tags:** scroll ([b060225](https://github.com/massCodeIO/massCode/commit/b0602254a11e8e4df30948beeb0120dabfeb54bc))\n* **ui: tree:** disable `hoveredNodeId` if is dragged tree node ([6eab5e6](https://github.com/massCodeIO/massCode/commit/6eab5e67feea2f8abd8d9a8fc0e04a255d26bec2))\n\n\n### Features\n\n* add analytics ([#12](https://github.com/massCodeIO/massCode/issues/12)) ([d73856c](https://github.com/massCodeIO/massCode/commit/d73856cc631616d465a1c185466a99b9dcbf7840))\n* add custom scroll, restore snippet position during init ([#10](https://github.com/massCodeIO/massCode/issues/10)) ([889624f](https://github.com/massCodeIO/massCode/commit/889624fb2e2307dcf89896027c775eeb1a91b4ac))\n* add db (basic) ([#1](https://github.com/massCodeIO/massCode/issues/1)) ([bccf129](https://github.com/massCodeIO/massCode/commit/bccf129b4a4c10d5df5f48684fd1e51818db41a2))\n* add editor (base) ([9fd7085](https://github.com/massCodeIO/massCode/commit/9fd7085f113be898b9bde3a78eca1eff56c7a391))\n* add folder component & retrieve folders from store ([9120886](https://github.com/massCodeIO/massCode/commit/91208869996ac254cbfe2e596d852c523a81d0fc))\n* add folder tree ([#2](https://github.com/massCodeIO/massCode/issues/2)) ([ac025f0](https://github.com/massCodeIO/massCode/commit/ac025f031c4d1cf0c2bfe1253812de2dd827581a))\n* add init app ([5e4de2a](https://github.com/massCodeIO/massCode/commit/5e4de2a84288d21b80d9cae6688a9b48a01b8e08))\n* add search ([#9](https://github.com/massCodeIO/massCode/issues/9)) ([e8f4bce](https://github.com/massCodeIO/massCode/commit/e8f4bceec2c1eccc36496eea4beda8be75af4dbb))\n* add sidebar (basic) ([118e83a](https://github.com/massCodeIO/massCode/commit/118e83a808c683d9b8e2795bb6426bf84b68823c))\n* add snippet list (basic) ([5681c75](https://github.com/massCodeIO/massCode/commit/5681c754a4a9457f4dc41bf0696e65a1a2503c4a))\n* add snippets header, fragments (basic) ([8ae34ee](https://github.com/massCodeIO/massCode/commit/8ae34ee0249646cdcc2d770959a8f6c3af63c47e))\n* add storage preferences ([#11](https://github.com/massCodeIO/massCode/issues/11)) ([7756db5](https://github.com/massCodeIO/massCode/commit/7756db5cd65638bfffe12cf8df8d5af1e4ec7a38))\n* add tags ([#8](https://github.com/massCodeIO/massCode/issues/8)) ([c84386c](https://github.com/massCodeIO/massCode/commit/c84386c997669220368064ddc71489c8d0c599e0))\n* **api:** add snippets batch delete ([f27295a](https://github.com/massCodeIO/massCode/commit/f27295a795c8a2422ee8470674a5a3af2857af27))\n* **composable:** add `useApi` ([b29cd11](https://github.com/massCodeIO/massCode/commit/b29cd11a133cbf218ac824f0c18ee9791b9e4e6e))\n* **composable:** add emitter ([80f7fc5](https://github.com/massCodeIO/massCode/commit/80f7fc5bf124cdb63e27c1722611814f1cd875d9))\n* drop .env & add `config.ts` ([1ad8639](https://github.com/massCodeIO/massCode/commit/1ad8639041111d39679f2d9d2d942dd9145ad800))\n* **editor:** add old languages mapping ([bfd86ba](https://github.com/massCodeIO/massCode/commit/bfd86ba6a1553f4c92fe65860fa76ffab08d75d0))\n* **editor:** disable all keybindings ([b75d987](https://github.com/massCodeIO/massCode/commit/b75d987bdf5c0aca21744339e4f969ae7f61b283))\n* fetch multiple folders with snippets ([62d427d](https://github.com/massCodeIO/massCode/commit/62d427db4987929ed548d99697e57345ccd7bd29))\n* **folders:** add alias ([7297274](https://github.com/massCodeIO/massCode/commit/729727414a6a483e7a3ccd76d52046a00609bde3))\n* **folders:** add context menu for add new, delete ([9f921b2](https://github.com/massCodeIO/massCode/commit/9f921b2ea7780c9ef1a34448c2bf31398be89835))\n* **main: api:** add middleware for POST, PATCH & PUT ([df26660](https://github.com/massCodeIO/massCode/commit/df266606c5e1716dd8fd2e85f1eaf763abdd7fd0))\n* **main: components:** return instance of menu ([5b12cc7](https://github.com/massCodeIO/massCode/commit/5b12cc7dcb35bf246a6b506365f85637bcd39011))\n* **main: db:** map old languages during migration ([9e91d5a](https://github.com/massCodeIO/massCode/commit/9e91d5a0f5ff7686f1aeb1c1b62b0b8e19583fca))\n* **main: ipc:** add context menu for snippets ([24f33c2](https://github.com/massCodeIO/massCode/commit/24f33c2523690406a2c65fba2bafa297e06c4192))\n* **main: ipc:** add restart app listener ([1b8ea86](https://github.com/massCodeIO/massCode/commit/1b8ea860bb5969fd62bed02526fce154f1572f6e))\n* **main: ipc:** create notification ([8a66475](https://github.com/massCodeIO/massCode/commit/8a66475819e59dbb4133fc655f0d1e69d7c1bdb1))\n* **main: store:** store selected folder & snippet id ([b0547e2](https://github.com/massCodeIO/massCode/commit/b0547e23d7a6b085c27aac5a82ea18a8404af56d))\n* **main:** add `createPopupMenu` constructor ([cc806ba](https://github.com/massCodeIO/massCode/commit/cc806ba003f16c8d35799f18cf6c66003fcfb4ff))\n* **main:** add context menu ipc, typing ([d5c11ee](https://github.com/massCodeIO/massCode/commit/d5c11ee8f23e36d98588706592b3c7fd0bc235a1))\n* **main:** check for update ([09ec5ee](https://github.com/massCodeIO/massCode/commit/09ec5eed378658bc6ec59c90b61d48b771d3fdb1))\n* **main:** disable `webSecurity` ([3bd9999](https://github.com/massCodeIO/massCode/commit/3bd9999bfb276fc30a732b7ff60f297e0fbbc210))\n* **main:** expose `on` & `once` events ([008e11a](https://github.com/massCodeIO/massCode/commit/008e11aa2ea8c010003182f7e6cc51eebd05000c))\n* **main:** expose only `invoke` ipc ([daf42b5](https://github.com/massCodeIO/massCode/commit/daf42b5b134edd479bd93db0d669b260783ac832))\n* **main:** extend exposed store methods ([e24ee88](https://github.com/massCodeIO/massCode/commit/e24ee88da68a3cc74cee9875855a9eeba8751cf3))\n* **main:** provide preferences ([9520dc9](https://github.com/massCodeIO/massCode/commit/9520dc9523267eecfc3440f5ca99fe432534bc3c))\n* **main:** provide store to renderer ([9829f0a](https://github.com/massCodeIO/massCode/commit/9829f0ad56b8b1a2a033961b67aee0e215bbe922))\n* **main:** remove trash as folder from default ([34c8287](https://github.com/massCodeIO/massCode/commit/34c8287bc2da2319e9363431862851f8b9fcb766))\n* **main:** set window width to 1000 ([a89367b](https://github.com/massCodeIO/massCode/commit/a89367b988fecb8592d5efc52fddf40a38317b96))\n* **main:** store window bounds on move & resize ([3d1e88d](https://github.com/massCodeIO/massCode/commit/3d1e88d486c094c921a76cdd165af82b8b46e540))\n* **sidebar:** add focus, selected state ([bc7f2d3](https://github.com/massCodeIO/massCode/commit/bc7f2d34f89e9b8ccc31bd852b5d487fa36b5429))\n* **snippets:** add copy to clipboard ([1699335](https://github.com/massCodeIO/massCode/commit/169933530ca173c08b85d404e90d161edaa3a9bd))\n* **snippets:** add date format, name placeholder ([da12895](https://github.com/massCodeIO/massCode/commit/da128951251d8514e4ad276779e9c043aedf2628))\n* **snippets:** add delete fragment ([40c54fb](https://github.com/massCodeIO/massCode/commit/40c54fb14563be3b82d2fd95e8cec1626b887277))\n* **snippets:** add delete method ([caad594](https://github.com/massCodeIO/massCode/commit/caad594b2b0f17117d94f44fbe98ff11dc7fe546))\n* **snippets:** add delete, duplicate & add to favorites ([bc306fe](https://github.com/massCodeIO/massCode/commit/bc306fece419dbc0e1b2e7034a35648b05136052))\n* **snippets:** add ediable snippet name, focus name for new snippet ([2798fa0](https://github.com/massCodeIO/massCode/commit/2798fa0b0ad6c1c84ea214355162175254b1cf91))\n* **snippets:** add empty trash ([8bcf972](https://github.com/massCodeIO/massCode/commit/8bcf97297f02a5e2e24182aa94849f1380e689b9))\n* **snippets:** add fragment coun ([6fdf620](https://github.com/massCodeIO/massCode/commit/6fdf62095083d6597a77a11629f0348a70c2ca4a))\n* **snippets:** add h-scroll for fragments ([8ec47a6](https://github.com/massCodeIO/massCode/commit/8ec47a631f1a3021db72157ead99e9b28f3f399f))\n* **snippets:** add multiple selection ([#6](https://github.com/massCodeIO/massCode/issues/6)) ([dcd0ff4](https://github.com/massCodeIO/massCode/commit/dcd0ff4a9483a89fb04e46facf8d4703c709e200))\n* **snippets:** add new fragment ([fa1e828](https://github.com/massCodeIO/massCode/commit/fa1e828df9018f52181bc1ba95861762241089b7))\n* **snippets:** add new snippet action ([60f35d7](https://github.com/massCodeIO/massCode/commit/60f35d733be3257722b2410e88d424d2a78d8258))\n* **snippets:** add new snippet method ([412b3a1](https://github.com/massCodeIO/massCode/commit/412b3a14d7d0c5e6375f9e3212878cd13c4d5057))\n* **snippets:** add patch method ([41ba0c8](https://github.com/massCodeIO/massCode/commit/41ba0c8c55e55cc45e832c09701fccf188c31934))\n* **snippets:** add placeholder for not selected ([445431f](https://github.com/massCodeIO/massCode/commit/445431fdc3d63bdd086912e2e402a7674f20795b))\n* **snippets:** add separeate context menu & actions ([2dc81b5](https://github.com/massCodeIO/massCode/commit/2dc81b5b633340b875a1dcc72f65cb715c05cec2))\n* **snippets:** add snippets to folder by drag & drop ([a27b042](https://github.com/massCodeIO/massCode/commit/a27b04246625646aee2dfea224fda19a0c555d1b))\n* **snippets:** editable fragment name ([8df0ea3](https://github.com/massCodeIO/massCode/commit/8df0ea368c5bbf5bcef9f418408ce842e6114203))\n* **snippets:** get all snipptes, set snippets by folder id or alias ([313301c](https://github.com/massCodeIO/massCode/commit/313301c4fa1e7c2078f61d9b41454f6df4519a63))\n* **snippets:** listen `context-menu:close` to remove highlight ([3fce6b5](https://github.com/massCodeIO/massCode/commit/3fce6b5ab4b5522c9f80b3a23f1ee166070c5987))\n* **snippets:** retrieve snippets from store, update style ([88e7546](https://github.com/massCodeIO/massCode/commit/88e75462ce61885430094f81397a50a7c43b271a))\n* **snippets:** select new fragment after add ([04c51af](https://github.com/massCodeIO/massCode/commit/04c51af36984f7d8c63e769c57c5e9f3d1d09e96))\n* **snippets:** show only non deleted snippets ([f895d97](https://github.com/massCodeIO/massCode/commit/f895d9741cb653619e55daee3073aedb6cbe106c))\n* **snippets:** sort by date ([dea7dc2](https://github.com/massCodeIO/massCode/commit/dea7dc27af6e2b8a3b3b21a60b1eeb47725e9905))\n* **snippets:** use debounce for update content ([6d56cb5](https://github.com/massCodeIO/massCode/commit/6d56cb5643d4515acfd43f78521bae8d32060046))\n* **store:** add app store, set app theme ([a48d439](https://github.com/massCodeIO/massCode/commit/a48d439932576d20df78fda3f117e6c022a791e1))\n* **store:** add snippets & folders store (basic) ([18462a4](https://github.com/massCodeIO/massCode/commit/18462a48212e188767c8b19bbb8b040754cb08e1))\n* **ui: tree:** add & expose`hoveredNodeId` ([59d7886](https://github.com/massCodeIO/massCode/commit/59d7886025a6c12b41eb96f6dc45994903fc0b02))\n* **ui:** add `AppActionButton` ([20e739e](https://github.com/massCodeIO/massCode/commit/20e739e358c160c8934010c4ae3a8ebcf00efd20))\n* **ui:** add `contextMenuHandler` for AppTree ([f8ded2a](https://github.com/massCodeIO/massCode/commit/f8ded2a680418b50c747ac74e3ba775242786ca7))\n* update db table by API request, remove manual restart server ([cdbec6f](https://github.com/massCodeIO/massCode/commit/cdbec6f30719da5a4b712a1b2322083ed33814e2))\n* update init ([cb3507d](https://github.com/massCodeIO/massCode/commit/cb3507db680dfc0df3b02afd11cd02dac083a5fe))\n\n\n\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Code Of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, political party, or sexual identity and orientation. Note, however, that religion, political party, or other ideological affiliation provide no exemptions for the behavior we outline as unacceptable in this Code of Conduct.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual attention or advances\n- Trolling, insulting/derogatory comments, and personal or political attacks\n- Public or private harassment\n- Publishing others' private information, such as a physical or electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team by DM at [email](reshetov.art@gmail.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n[homepage]: https://www.contributor-covenant.org\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "Hey there! We are really excited that you are interested in contributing. Before submitting your contribution, please make sure to take a moment and read through the following guide:\n## Sending Pull Request\n\n### Discuss First\n\nBefore you start to work on a feature pull request, it's always better to open a feature request issue first to [discuss](https://github.com/massCodeIO/massCode/discussions) with the maintainers whether the feature is desired and the design of those features. This would help save time for both the maintainers and the contributors and help features to be shipped faster.\n\nFor typo fixes, it's recommended to batch multiple typo fixes into one pull request to maintain a cleaner commit history.\n\n### Commit Convention\n\nWe use [Conventional Commits](https://www.conventionalcommits.org/) for commit messages, which allows the changelog to be auto-generated based on the commits. Please read the guide through if you aren't familiar with it already.\n\nOnly `fix:` and `feat:` will be presented in the changelog.\n\nNote that `fix:` and `feat:` are for actual code changes (that might affect logic). For typo or document changes, use docs: or chore: instead:\n\n- ~~`fix: typo`~~ -> `docs: fix typo`\n\n### Pull Request\n\nIf you don't know how to send a Pull Request, we recommend reading the [guide](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).\n\nWhen sending a pull request, make sure your PR's title also follows the Commit Convention.\n\nIf your PR fixes or resolves an existing issue, please add the following line in your PR description (replace 123 with a real issue number):\n\n```\nfix #123\n```\n\nIt's ok to have multiple commits in a single PR, you don't need to rebase or force push for your changes as we will use Squash and Merge to squash the commits into one commit when merging.\n\nAnd of course please test your code before PR. "
  },
  {
    "path": "LICENSE",
    "content": "                    GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 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 Affero General Public License is a free, copyleft license for\nsoftware and other kinds of works, specifically designed to ensure\ncooperation with the community in the case of network server software.\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,\nour General Public Licenses are 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.\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  Developers that use our General Public Licenses protect your rights\nwith two steps: (1) assert copyright on the software, and (2) offer\nyou this License which gives you legal permission to copy, distribute\nand/or modify the software.\n\n  A secondary benefit of defending all users' freedom is that\nimprovements made in alternate versions of the program, if they\nreceive widespread use, become available for other developers to\nincorporate.  Many developers of free software are heartened and\nencouraged by the resulting cooperation.  However, in the case of\nsoftware used on network servers, this result may fail to come about.\nThe GNU General Public License permits making a modified version and\nletting the public access it on a server without ever releasing its\nsource code to the public.\n\n  The GNU Affero General Public License is designed specifically to\nensure that, in such cases, the modified source code becomes available\nto the community.  It requires the operator of a network server to\nprovide the source code of the modified version running there to the\nusers of that server.  Therefore, public use of a modified version, on\na publicly accessible server, gives the public access to the source\ncode of the modified version.\n\n  An older license, called the Affero General Public License and\npublished by Affero, was designed to accomplish similar goals.  This is\na different license, not a version of the Affero GPL, but Affero has\nreleased a new version of the Affero GPL which permits relicensing under\nthis license.\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 Affero 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. Remote Network Interaction; Use with the GNU General Public License.\n\n  Notwithstanding any other provision of this License, if you modify the\nProgram, your modified version must prominently offer all users\ninteracting with it remotely through a computer network (if your version\nsupports such interaction) an opportunity to receive the Corresponding\nSource of your version by providing access to the Corresponding Source\nfrom a network server at no charge, through some standard or customary\nmeans of facilitating copying of software.  This Corresponding Source\nshall include the Corresponding Source for any work covered by version 3\nof the GNU General Public License that is incorporated pursuant to the\nfollowing paragraph.\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 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 work with which it is combined will remain governed by version\n3 of the GNU General Public License.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU Affero General Public License from time to time.  Such new versions\nwill be 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 Affero 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 Affero 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 Affero 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 Affero General Public License as published\n    by 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 Affero General Public License for more details.\n\n    You should have received a copy of the GNU Affero 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 your software can interact with users remotely through a computer\nnetwork, you should also make sure that it provides a way for users to\nget its source.  For example, if your program is a web application, its\ninterface could display a \"Source\" link that leads users to an archive\nof the code.  There are many ways you could offer source, and different\nsolutions will be better for different programs; see section 13 for the\nspecific requirements.\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 AGPL, see\n<https://www.gnu.org/licenses/>."
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n  <img src=\"./.github/assets/logo.png\" alt=\"massCode\" width=\"150\">\n</p>\n\n<h1 align=\"center\">massCode</h1>\n<p align=\"center\">\nA free, open-source code snippet manager to create, organize, and instantly access your personal snippet library.\n</p>\n\n<p align=\"center\">\n  <strong>Built with Electron, Vue & Codemirror.</strong>\n  <br>\n  Inspired by applications like SnippetsLab and Quiver.\n</p>\n\n<p align=\"center\">\n  <img alt=\"GitHub package.json version\" src=\"https://img.shields.io/github/package-json/v/massCodeIO/massCode\">\n  <img alt=\"GitHub All Releases\" src=\"https://img.shields.io/github/downloads/massCodeIO/massCode/total\">\n  <img alt=\"GitHub\" src=\"https://img.shields.io/github/license/massCodeIO/massCode\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/massCodeIO/massCode/releases\">Latest Release</a> |\n  <a href=\"https://masscode.io/documentation/\">Documentation</a> |\n  <a href=\"https://github.com/massCodeIO/massCode/blob/master/CHANGELOG.md\">Change Log</a>\n</p>\n\n<p align=\"center\">\n  Extensions:\n  <a href=\"https://marketplace.visualstudio.com/items?itemName=AntonReshetov.masscode-assistant\">VS Code</a> |\n  <a href=\"https://www.raycast.com/antonreshetov/masscode\">Raycast</a>\n</p>\n\n<p align=\"center\">\n  <strong>SPONSORS</strong>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://m.do.co/c/f2bb3bfab2e6\">\n    <img src='.github/assets/DO.svg'>\n  </a>\n  &nbsp;\n  <a href=\"https://mysigmail.com/?ref=github/massCodeIO\">\n    <img src='.github/assets/MySigMail.svg'>\n  </a>\n</p>\n\n## Support\n\nmassCode is an open-source project and completely free to use.\n\nMaintaining and adding new features requires significant time and effort. If you find massCode useful, consider supporting its development. Your contribution helps keep the project alive and moving forward.\n\nYou can support massCode through the following channels:\n<div align=\"center\">\n\n[![Donate via Open Collective](https://img.shields.io/badge/donate-Open%20Collective-blue.svg?style=popout&logo=opencollective)](https://opencollective.com/masscode)\n[![Donate via PayPal](https://img.shields.io/badge/donate-PayPal-blue.svg?style=popout&logo=paypal)](https://paypal.me/antongithub)\n[![Donate via Gummroad](https://img.shields.io/badge/donate-Gumroad-blue?style=popout&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAzNCAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGVsbGlwc2UgY3g9IjE5LjgyODciIGN5PSIxOS4xMzU5IiByeD0iMTQuMTcxNCIgcnk9IjEzLjY3NjUiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xNi4xNzE0IDI5Ljk0NjRDMjQuNDAzMiAyOS45NDY0IDMxLjEyNDEgMjMuNDk5NSAzMS4xMjQxIDE1LjQ4ODdDMzEuMTI0MSA3LjQ3OCAyNC40MDMyIDEuMDMxMDEgMTYuMTcxNCAxLjAzMTAxQzcuOTM5NyAxLjAzMTAxIDEuMjE4NzUgNy40NzggMS4yMTg3NSAxNS40ODg3QzEuMjE4NzUgMjMuNDk5NSA3LjkzOTcgMjkuOTQ2NCAxNi4xNzE0IDI5Ljk0NjRaIiBmaWxsPSIjRkY5MEU4IiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEuNTYyNSIvPgo8cGF0aCBkPSJNMTUuMDQ2NyAyMi43ODI3QzEwLjg2MiAyMi43ODI3IDguNDAwMzkgMTkuNDAyNCA4LjQwMDM5IDE1LjE5NzZDOC40MDAzOSAxMC44Mjc5IDExLjEwODEgNy4yODI3MSAxNi4yNzc0IDcuMjgyNzFDMjEuNjEwOSA3LjI4MjcxIDIzLjQxNiAxMC45MTA0IDIzLjQ5ODEgMTIuOTcxNUgxOS42NDE2QzE5LjU1OTYgMTEuODE3MyAxOC41NzQ5IDEwLjA4NTkgMTYuMTk1NCAxMC4wODU5QzEzLjY1MTggMTAuMDg1OSAxMi4wMTA3IDEyLjMxMiAxMi4wMTA3IDE1LjAzMjdDMTIuMDEwNyAxNy43NTM1IDEzLjY1MTggMTkuOTc5NSAxNi4xOTU0IDE5Ljk3OTVDMTguNDkyOSAxOS45Nzk1IDE5LjQ3NzUgMTguMTY1NyAxOS44ODc4IDE2LjM1MTlIMTYuMTk1NFYxNC44Njc4SDIzLjk0MzJWMjIuNDUyOUgyMC41NDQyVjE3LjY3MUMyMC4yOTggMTkuNDAyNCAxOS4yMzEzIDIyLjc4MjcgMTUuMDQ2NyAyMi43ODI3WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==)](https://antonreshetov.gumroad.com/l/masscode)\n[![Donate via Polar](https://img.shields.io/badge/donate-Polar-blue?style=popout&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xXzEwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNjYuNDI4NCAyNzQuMjZDMTM0Ljg3NiAzMjAuNTkzIDIyNy45MjUgMzAyLjY2NiAyNzQuMjU4IDIzNC4yMTlDMzIwLjU5MyAxNjUuNzcxIDMwMi42NjYgNzIuNzIyMiAyMzQuMjE4IDI2LjM4ODVDMTY1Ljc3IC0xOS45NDUxIDcyLjcyMSAtMi4wMTgxIDI2LjM4NzIgNjYuNDI5N0MtMTkuOTQ2NSAxMzQuODc3IC0yLjAxOTM5IDIyNy45MjcgNjYuNDI4NCAyNzQuMjZaTTQ3Ljk1NTUgMTE2LjY3QzMwLjgzNzQgMTY5LjI2MyAzNi41NDQ1IDIyMS44OTMgNTkuMjQ1NCAyNTYuMzczQzE4LjA0MTIgMjE3LjM2MSA3LjI3NTYyIDE1MC4zMDcgMzYuOTQzNiA5Mi4zMThDNTUuOTE1MSA1NS4yMzYyIDg3LjU2NjQgMjkuMzkzNyAxMjIuNSAxOC4zNDgzQzkwLjU5MTEgMzYuNzEwNSA2Mi41NTQ5IDcxLjgxNDQgNDcuOTU1NSAxMTYuNjdaTTE3NS4zNDcgMjgzLjEzN0MyMTEuMzc3IDI3Mi42MDYgMjQ0LjIxMSAyNDYuMzg1IDI2My42ODUgMjA4LjMyMkMyOTMuMTAxIDE1MC44MjUgMjgyLjc2OCA4NC40MTcyIDI0Mi40MjcgNDUuMjY3M0MyNjQuMjIgNzkuNzYyNiAyNjkuNDczIDEzMS41NDIgMjUyLjYzMSAxODMuMjg3QzIzNy42MTUgMjI5LjQyMSAyMDguMzg1IDI2NS4yMzkgMTc1LjM0NyAyODMuMTM3Wk0xODMuNjI3IDI2Ni4yMjlDMjA3Ljk0NSAyNDUuNDE4IDIyOC4wMTYgMjEwLjYwNCAyMzYuOTM1IDE2OC43OUMyNTEuMDMzIDEwMi42OTMgMjMyLjU1MSA0MS4xOTc4IDE5NS4xMTIgMjAuNjc2OEMyMTQuOTcgNDcuMzk0NSAyMjUuMDIyIDk5LjI5MDIgMjE4LjgyNCAxNTcuMzMzQzIxNC4wODUgMjAxLjcyNCAyMDAuODE0IDI0MC41OTMgMTgzLjYyNyAyNjYuMjI5Wk02My43MTc3IDEzMS44NDRDNDkuNTE1NSAxOTguNDMgNjguMzc3IDI2MC4zNDUgMTA2LjM3NCAyODAuNDA1Qzg1Ljk5NjIgMjU0LjAwOSA3NS41OTY4IDIwMS41MTQgODEuODc1OCAxNDIuNzExQzg2LjUzNzQgOTkuMDUzNiA5OS40NTAzIDYwLjczNyAxMTYuMjI1IDM1LjA5NjlDOTIuMjY3NyA1NS45ODMgNzIuNTM4NCA5MC40ODkyIDYzLjcxNzcgMTMxLjg0NFpNMTk5LjgzNCAxNDkuNTYxQzIwMC45MDggMjE3LjQ3MyAxNzkuNTkgMjcyLjg3OCAxNTIuMjIyIDI3My4zMDlDMTI0Ljg1MyAyNzMuNzQyIDEwMS43OTcgMjE5LjAzOSAxMDAuNzI0IDE1MS4xMjdDOTkuNjUxMSA4My4yMTM4IDEyMC45NjggMjcuODA5NCAxNDguMzM3IDI3LjM3N0MxNzUuNzA1IDI2Ljk0NDYgMTk4Ljc2MiA4MS42NDggMTk5LjgzNCAxNDkuNTYxWiIgZmlsbD0id2hpdGUiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xXzEwIj4KPHJlY3Qgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==)](https://buy.polar.sh/polar_cl_bpDmjg079kfiAVtdtrtBwxyRXN6NK8B4Bvqdk2QXdx7)\n\n</div>\n\n## Features\n\n### Organization\n\nOrganize your snippets with multi-level folders and tags. Each snippet can contain multiple fragments (tabs), giving you fine-grained control over structure and grouping.\n\n### Editor\n\nBuilt on [CodeMirror](https://github.com/codemirror/codemirror5) with `.tmLanguage` grammars for syntax highlighting.\n\n* Supports over [600 grammars](https://github.com/github/linguist/blob/master/vendor/README.md), with 160+ available out of the box.\n* Integrated [Prettier](https://prettier.io) for clean, consistent code formatting.\n\n### Real-time HTML & CSS Preview\n\nWrite and instantly preview HTML and CSS snippets. Perfect for prototyping, testing ideas, or quick visual checks.\n\n### Markdown\n\nFull Markdown support with syntax highlighting, tables, lists, and more.\n\n* Integrated [Mermaid](https://mermaid-js.github.io/mermaid/#) for dynamic diagrams and charts.\n\n### Presentation Mode\n\nTurn a sequence of snippets into a presentation. Useful for classrooms, team meetings, conference talks, or simply walking through your own notes.\n\n### Mindmap\n\nGenerate mind maps from Markdown. Fast, intuitive, and ideal for structuring and visualizing ideas.\n\n### JSON Visualizer\n\nVisualize and explore your JSON data with an interactive graph view. Perfect for quickly inspecting complex responses, APIs, or configuration files.\n\n### Math Notebook\n\nA calculator notepad inspired by [Numi](https://numi.app). Write expressions in natural language and get instant results on each line. Supports arithmetic, percentages, unit conversions, 28 currencies with live rates, date & time operations, variables, and more.\n\n### Beautiful Screenshots\n\nExport snippets as polished images with customizable themes and backgrounds.\n\n### Developer Tools\n\nHandy built-in utilities for everyday dev tasks:\n\n* **Text Tools**: Case Converter, Slug Generator, URL Parser\n* **Crypto & Security**: Hash/HMAC, Password Generator, UUID\n* **Encoders/Decoders**: URL, Base64, JSON ⇄ TOML/XML/YAML, Text ⇄ ASCII/Binary/Unicode, Color Converter\n\n### Custom Themes\n\nFully customize the UI and editor syntax highlighting with JSON theme files stored in `~/.massCode/themes/`. Supports light and dark types with live reload.\n\n### Integrations\n\nExtend your workflow with:\n\n* [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=AntonReshetov.masscode-assistant): zen mode snippet search, instant insertion, and save selected code as snippets.\n* [Raycast Extension](https://www.raycast.com/antonreshetov/masscode): quick snippet access directly from Raycast.\n\n## Storage\n\nmassCode supports two storage engines — you can switch between them in **Settings → Storage**.\n\n### Markdown Vault\n\nThe default storage engine. Snippets are stored as plain `.md` files on disk with frontmatter metadata. The vault structure mirrors your folder hierarchy.\n\n* **Git-friendly** — track changes, sync via GitHub or any Git remote.\n* **Cloud sync** — works with iCloud, Dropbox, Syncthing, or any file sync service.\n* **Live sync** — massCode watches the vault directory and picks up external changes in real time.\n\n### SQLite (Legacy)\n\nAll data is stored in a single SQLite database file. SQLite engine is deprecated and will be removed in future versions. Please migrate to Markdown Vault.\n\n## Overview\n\nmassCode was created as a personal learning project and evolved into an open-source tool. The goal: combine the best features of snippet managers (free and paid) into one flexible, developer-friendly application.\n\n## Build Locally\n\n### Prerequisites\n\n- Node.js (>=20.16.0)\n- pnpm (>= 9.0.0)\n\n### Install Dependencies\n\n```bash\npnpm install\n```\n\n### Build\n\nTo build for current platform:\n\n```bash\npnpm build\n```\n\nTo build for a specific platform:\n\n```bash\npnpm build:mac    # macOS\npnpm build:win    # Windows\npnpm build:linux  # Linux\n```\n\n### Development\n\nTo run in development mode:\n\n```bash\npnpm dev\n```\n\nThis will start the application with hot reloading.\n\n## Troubleshooting\n\n### macOS\n\nIf you encounter the error message \"massCode\" is damaged and can't be opened. You should move it to the Trash while installing software on macOS, it may be due to security settings restrictions in macOS.\n\n**Option 1: System Settings (macOS 13+)**\n1. Open **System Settings** → **Privacy & Security**\n2. Scroll down to find \"massCode\" in the list of blocked applications\n3. Click **Allow Anyway** or **Open Anyway**\n4. You may need to enter your administrator password\n\n**Option 2: Terminal command**\n```bash\nsudo xattr -r -d com.apple.quarantine /Applications/massCode.app\n```\n\n## Follow\n - News and updates on [X](https://x.com/anton_reshetov).\n - [Discussions](https://github.com/massCodeIO/massCode/discussions).\n\n![](.github/assets/subscribe.gif)\n\n## License\n\n[AGPL-3.0](https://github.com/massCodeIO/massCode/blob/master/LICENSE)\n\nCopyright (c) 2019-present, [Anton Reshetov](https://github.com/antonreshetov).\n"
  },
  {
    "path": "build/entitlements.mac.inherit.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n  <dict>\n    <key>com.apple.security.cs.allow-jit</key>\n    <true/>\n    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>\n    <true/>\n     <key>com.apple.security.cs.allow-dyld-environment-variables</key>\n    <true/>\n  </dict>\n</plist>\n"
  },
  {
    "path": "commitlint.config.js",
    "content": "module.exports = {\n  extends: ['@commitlint/config-conventional'],\n  rules: {\n    'type-enum': [\n      2,\n      'always',\n      [\n        'build',\n        'chore',\n        'ci',\n        'docs',\n        'feat',\n        'fix',\n        'polish',\n        'refactor',\n        'release',\n        'revert',\n        'style',\n        'test',\n        'types',\n      ],\n    ],\n  },\n}\n"
  },
  {
    "path": "components.json",
    "content": "{\n  \"$schema\": \"https://shadcn-vue.com/schema.json\",\n  \"style\": \"new-york\",\n  \"typescript\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/renderer/styles.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/utils\",\n    \"ui\": \"@/components/ui/shadcn2\",\n    \"lib\": \"@/utils\",\n    \"composables\": \"~/composables\"\n  },\n  \"registries\": {}\n}\n"
  },
  {
    "path": "electron-builder.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/electron-builder\",\n  \"appId\": \"io.masscode.app\",\n  \"productName\": \"massCode\",\n  \"directories\": {\n    \"output\": \"dist\"\n  },\n  \"files\": [\n    \"build/renderer/**/*\",\n    \"build/main/**/*\",\n    \"!build/**/*.map\"\n  ],\n  \"mac\": {\n    \"target\": \"dmg\",\n    \"icon\": \"build/icons/icon.icns\",\n    \"entitlements\": \"build/entitlements.mac.inherit.plist\",\n    \"category\": \"public.app-category.productivity\",\n    \"hardenedRuntime\": true,\n    \"identity\": null\n  },\n  \"win\": {\n    \"target\": [\"nsis\", \"portable\"],\n    \"icon\": \"build/icons/icon.ico\"\n  },\n  \"linux\": {\n    \"target\": [\"AppImage\"],\n    \"icon\": \"build/icons/icon.png\"\n  },\n  \"nsis\": {\n    \"oneClick\": false,\n    \"perMachine\": false,\n    \"allowToChangeInstallationDirectory\": true,\n    \"shortcutName\": \"massCode\",\n    \"artifactName\": \"${productName}-${version}-${arch}.${ext}\"\n  },\n  \"portable\": {\n    \"artifactName\": \"${productName}-${version}-${arch}-portable.${ext}\"\n  },\n  \"protocols\": [\n    {\n      \"name\": \"massCode\",\n      \"schemes\": [\"masscode\"]\n    }\n  ]\n}\n"
  },
  {
    "path": "electron-builder.sponsored.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/electron-builder\",\n  \"appId\": \"io.masscode.app\",\n  \"productName\": \"massCode\",\n  \"directories\": {\n    \"output\": \"dist\"\n  },\n  \"files\": [\n    \"build/renderer/**/*\",\n    \"build/main/**/*\",\n    \"!build/**/*.map\"\n  ],\n  \"artifactName\": \"${productName}-${version}-${arch}-sponsored.${ext}\",\n  \"mac\": {\n    \"target\": \"dmg\",\n    \"icon\": \"build/icons/icon.icns\",\n    \"entitlements\": \"build/entitlements.mac.inherit.plist\",\n    \"category\": \"public.app-category.productivity\",\n    \"hardenedRuntime\": true,\n    \"identity\": null\n  },\n  \"win\": {\n    \"target\": [\"nsis\", \"portable\"],\n    \"icon\": \"build/icons/icon.ico\"\n  },\n  \"linux\": {\n    \"target\": [\"AppImage\"],\n    \"icon\": \"build/icons/icon.png\"\n  },\n  \"nsis\": {\n    \"oneClick\": false,\n    \"perMachine\": false,\n    \"allowToChangeInstallationDirectory\": true,\n    \"shortcutName\": \"massCode\",\n    \"artifactName\": \"${productName}-${version}-${arch}-sponsored.${ext}\"\n  },\n  \"portable\": {\n    \"artifactName\": \"${productName}-${version}-${arch}-portable-sponsored.${ext}\"\n  },\n  \"protocols\": [\n    {\n      \"name\": \"massCode\",\n      \"schemes\": [\"masscode\"]\n    }\n  ]\n}\n"
  },
  {
    "path": "eslint.config.js",
    "content": "const antfu = require('@antfu/eslint-config').default\n\nmodule.exports = antfu({\n  rules: {\n    'vue/max-attributes-per-line': [\n      'error',\n      {\n        singleline: 1,\n      },\n    ],\n  },\n  ignores: ['src/renderer/services/api/generated/**/*'],\n})\n"
  },
  {
    "path": "nodemon.json",
    "content": "{\n  \"watch\": [\"src/main\"],\n  \"ext\": \"ts,json\",\n  \"ignore\": [\n    \"src/main/i18n/locales/**/*.json\"\n  ],\n  \"exec\": \"tsc -p tsconfig.main.json\",\n  \"delay\": 1000\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"masscode\",\n  \"version\": \"4.7.1\",\n  \"description\": \"A free and open source code snippets manager for developers\",\n  \"author\": {\n    \"name\": \"Anton Reshetov\",\n    \"url\": \"https://github.com/antonreshetov\"\n  },\n  \"license\": \"AGPL-3.0\",\n  \"repository\": \"https://github.com/massCodeIO/massCode\",\n  \"main\": \"build/main/index.js\",\n  \"engines\": {\n    \"pnpm\": \">=9.0.0\"\n  },\n  \"scripts\": {\n    \"dev\": \"npm run build:main && concurrently -k \\\"vite\\\" \\\"npm:dev:main\\\" \\\"npm:dev:start\\\"\",\n    \"dev:main\": \"nodemon\",\n    \"dev:start\": \"cross-env NODE_ENV=development electronmon .\",\n    \"build\": \"vite build && npm run build:main && electron-builder\",\n    \"build:mac\": \"vite build && npm run build:main && npm run build:mac:x64 && npm run build:mac:arm64\",\n    \"build:mac:x64\": \"vite build && npm run build:main && electron-builder --mac --x64\",\n    \"build:mac:arm64\": \"vite build && npm run build:main && electron-builder --mac --arm64\",\n    \"build:win\": \"vite build && npm run build:main && electron-builder --win --x64\",\n    \"build:linux\": \"vite build && npm run build:main && electron-builder --linux --x64\",\n    \"build:sponsored:mac\": \"vite build && npm run build:main && npm run build:sponsored:mac:x64 && npm run build:sponsored:mac:arm64\",\n    \"build:sponsored:mac:x64\": \"vite build && npm run build:main && electron-builder --config electron-builder.sponsored.json --mac --x64\",\n    \"build:sponsored:mac:arm64\": \"vite build && npm run build:main && electron-builder --config electron-builder.sponsored.json --mac --arm64\",\n    \"build:sponsored:win\": \"vite build && npm run build:main && electron-builder --config electron-builder.sponsored.json --win --x64\",\n    \"build:sponsored:linux\": \"vite build && npm run build:main && electron-builder --config electron-builder.sponsored.json --linux --x64\",\n    \"build:all\": \"vite build && npm run build:main && npm run build:mac && npm run build:win && npm run build:linux\",\n    \"build:main\": \"npm run copy:locales && tsc -p tsconfig.main.json\",\n    \"api:generate\": \"node scripts/api-generate.js\",\n    \"copy:locales\": \"node scripts/copy-locales.js\",\n    \"bench:load-test\": \"node scripts/bench-load-test.js\",\n    \"bench:seed\": \"node scripts/bench-seed.js\",\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"lint\": \"eslint .\",\n    \"lint:fix\": \"eslint --fix .\",\n    \"release\": \"bumpp -c 'build: release v' -t\",\n    \"changelog\": \"conventional-changelog -p angular -i CHANGELOG.md -s -r 0\",\n    \"rebuild\": \"electron-rebuild\",\n    \"prepare\": \"simple-git-hooks && npm run rebuild\"\n  },\n  \"dependencies\": {\n    \"@dagrejs/dagre\": \"^1.1.5\",\n    \"@elysiajs/cors\": \"^1.2.0\",\n    \"@elysiajs/node\": \"^1.4.2\",\n    \"@elysiajs/swagger\": \"^1.3.1\",\n    \"@faker-js/faker\": \"^10.1.0\",\n    \"@sinclair/typebox\": \"^0.34.41\",\n    \"@vue-flow/background\": \"^1.3.2\",\n    \"@vue-flow/controls\": \"^1.1.3\",\n    \"@vue-flow/core\": \"^1.46.5\",\n    \"@vue-flow/minimap\": \"^1.5.4\",\n    \"@vueuse/core\": \"^12.7.0\",\n    \"better-sqlite3\": \"^12.4.1\",\n    \"change-case\": \"^5.4.4\",\n    \"chokidar\": \"^4.0.3\",\n    \"chroma-js\": \"^3.1.2\",\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"codemirror\": \"^5.65.18\",\n    \"codemirror-textmate\": \"^1.1.0\",\n    \"color-name-list\": \"^11.22.0\",\n    \"crypto-js\": \"^4.2.0\",\n    \"date-fns\": \"^4.1.0\",\n    \"dom-to-image\": \"^2.6.0\",\n    \"electron-store\": \"^8.2.0\",\n    \"elysia\": \"^1.4.16\",\n    \"fs-extra\": \"^11.3.0\",\n    \"i18next\": \"^24.2.2\",\n    \"i18next-fs-backend\": \"^2.6.0\",\n    \"interactjs\": \"^1.10.27\",\n    \"js-yaml\": \"^4.1.0\",\n    \"ky\": \"^1.7.5\",\n    \"lucide-vue-next\": \"^0.476.0\",\n    \"marked\": \"^15.0.8\",\n    \"markmap-lib\": \"^0.18.11\",\n    \"markmap-view\": \"^0.18.10\",\n    \"mathjs\": \"^15.1.1\",\n    \"mermaid\": \"^11.6.0\",\n    \"nanoid\": \"^3.3.8\",\n    \"nearest-color\": \"^0.4.4\",\n    \"onigasm\": \"^2.2.5\",\n    \"prettier\": \"^3.5.3\",\n    \"reka-ui\": \"^2.9.0\",\n    \"sanitize-html\": \"^2.15.0\",\n    \"slash\": \"^3.0.0\",\n    \"slugify\": \"^1.6.6\",\n    \"tailwind-merge\": \"^3.0.2\",\n    \"toml\": \"^3.0.0\",\n    \"uuid\": \"^11.1.0\",\n    \"vue-sonner\": \"^1.3.0\",\n    \"vue-virtual-scroller\": \"2.0.0-beta.8\",\n    \"vuedraggable\": \"^4.1.0\"\n  },\n  \"devDependencies\": {\n    \"@antfu/eslint-config\": \"^3.16.0\",\n    \"@commitlint/cli\": \"^19.6.1\",\n    \"@commitlint/config-conventional\": \"^19.6.0\",\n    \"@electron/rebuild\": \"^3.7.1\",\n    \"@tailwindcss/postcss\": \"^4.0.9\",\n    \"@tailwindcss/vite\": \"^4.0.9\",\n    \"@types/better-sqlite3\": \"^7.6.12\",\n    \"@types/chroma-js\": \"^3.1.1\",\n    \"@types/codemirror\": \"^5.60.15\",\n    \"@types/crypto-js\": \"^4.2.2\",\n    \"@types/dagre\": \"^0.7.53\",\n    \"@types/dom-to-image\": \"^2.6.7\",\n    \"@types/fs-extra\": \"^11.0.4\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/node\": \"^22.10.8\",\n    \"@types/sanitize-html\": \"^2.15.0\",\n    \"@vitejs/plugin-vue\": \"^5.2.1\",\n    \"autoprefixer\": \"^10.4.20\",\n    \"bumpp\": \"^9.10.2\",\n    \"concurrently\": \"^9.1.2\",\n    \"cross-env\": \"^7.0.3\",\n    \"electron\": \"^34.0.1\",\n    \"electron-builder\": \"^25.1.8\",\n    \"electronmon\": \"^2.0.3\",\n    \"eslint\": \"^9.18.0\",\n    \"lint-staged\": \"^15.4.2\",\n    \"nodemon\": \"^3.1.9\",\n    \"prettier-plugin-tailwindcss\": \"^0.6.11\",\n    \"sass\": \"^1.85.1\",\n    \"simple-git-hooks\": \"^2.11.1\",\n    \"tailwindcss\": \"^4.0.9\",\n    \"tw-animate-css\": \"^1.4.0\",\n    \"typescript\": \"^5.7.3\",\n    \"unplugin-auto-import\": \"^19.1.0\",\n    \"unplugin-vue-components\": \"^28.4.0\",\n    \"vite\": \"^6.1.1\",\n    \"vitest\": \"^4.0.18\",\n    \"vue\": \"^3.5.13\",\n    \"vue-router\": \"^4.5.0\",\n    \"vue-tsc\": \"^3.2.5\"\n  },\n  \"pnpm\": {\n    \"onlyBuiltDependencies\": [\n      \"better-sqlite3\",\n      \"electron\"\n    ]\n  },\n  \"simple-git-hooks\": {\n    \"pre-commit\": \"npx lint-staged\",\n    \"commit-msg\": \"npx commitlint --edit $1\"\n  },\n  \"lint-staged\": {\n    \"*.{js,ts,vue}\": [\n      \"prettier --write\",\n      \"eslint --fix\"\n    ]\n  },\n  \"electronmon\": {\n    \"patterns\": [\n      \"!scripts/**/*\",\n      \"!src/renderer/**/*\",\n      \"!src/main/**/*\"\n    ]\n  },\n  \"volta\": {\n    \"node\": \"20.16.0\"\n  }\n}\n"
  },
  {
    "path": "postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    '@tailwindcss/postcss': {},\n  },\n}\n"
  },
  {
    "path": "scripts/api-generate.js",
    "content": "const child_process = require('node:child_process')\nconst { styleText } = require('node:util')\nconst Store = require('electron-store')\n\nconst store = new Store({ name: 'preferences', cwd: 'v2' })\nconst apiPort = store.get('apiPort', 4321)\nconst url = `http://localhost:${apiPort}/swagger/json`\n\nasync function generateApi() {\n  try {\n    console.log(styleText('blue', 'Generating API...'))\n    child_process.execSync(\n      `npx swagger-typescript-api@13.0.23 -p ${url} -o ./src/renderer/services/api/generated -n index.ts`,\n    )\n    console.log(styleText('green', 'API is successfully generated'))\n  }\n  catch (err) {\n    console.log(styleText('red', 'Error generating API'))\n    console.log(err)\n  }\n}\n\ngenerateApi()\n"
  },
  {
    "path": "scripts/bench-load-test.js",
    "content": "#!/usr/bin/env node\n\nconst { performance } = require('node:perf_hooks')\nconst process = require('node:process')\n\nfunction getErrorMessage(error) {\n  if (error instanceof Error) {\n    const cause = error.cause\n    if (cause && typeof cause === 'object' && 'message' in cause) {\n      const causeMessage = String(cause.message || '').trim()\n      if (causeMessage) {\n        return `${error.message} (${causeMessage})`\n      }\n    }\n\n    return error.message\n  }\n\n  return String(error)\n}\n\nfunction parseArgs(argv) {\n  const options = {\n    baseUrl: process.env.MASSCODE_API_URL || 'http://localhost:4321',\n    fragments: 3,\n    keep: false,\n    query: '',\n    snippets: 100,\n  }\n\n  for (let index = 0; index < argv.length; index += 1) {\n    const argument = argv[index]\n\n    if (argument === '--base-url') {\n      options.baseUrl = String(argv[index + 1] || options.baseUrl)\n      index += 1\n      continue\n    }\n\n    if (argument === '--snippets') {\n      options.snippets = Number(argv[index + 1] || options.snippets)\n      index += 1\n      continue\n    }\n\n    if (argument === '--fragments') {\n      options.fragments = Number(argv[index + 1] || options.fragments)\n      index += 1\n      continue\n    }\n\n    if (argument === '--query') {\n      options.query = String(argv[index + 1] || '')\n      index += 1\n      continue\n    }\n\n    if (argument === '--keep') {\n      options.keep = true\n    }\n  }\n\n  options.snippets\n    = Number.isFinite(options.snippets) && options.snippets > 0\n      ? Math.trunc(options.snippets)\n      : 100\n  options.fragments\n    = Number.isFinite(options.fragments) && options.fragments > 0\n      ? Math.trunc(options.fragments)\n      : 3\n\n  return options\n}\n\nasync function requestJson(baseUrl, pathname, options) {\n  const requestUrl = new URL(pathname, baseUrl)\n  let response\n\n  try {\n    response = await fetch(requestUrl, options)\n  }\n  catch (error) {\n    const details = getErrorMessage(error)\n    throw new Error(\n      [\n        `Failed to reach API at ${requestUrl.origin}.`,\n        'Start massCode first (for example: \"pnpm dev\") or pass a different URL with --base-url.',\n        `Details: ${details}`,\n      ].join(' '),\n    )\n  }\n\n  if (!response.ok) {\n    const errorBody = await response.text()\n    throw new Error(\n      `Request failed (${response.status}) ${pathname}: ${errorBody || response.statusText}`,\n    )\n  }\n\n  if (response.status === 204) {\n    return null\n  }\n\n  return response.json()\n}\n\nasync function measure(name, callback) {\n  const startedAt = performance.now()\n  const result = await callback()\n\n  return {\n    duration: performance.now() - startedAt,\n    name,\n    result,\n  }\n}\n\nfunction formatDuration(duration) {\n  return `${duration.toFixed(2)}ms`\n}\n\nfunction printMetrics(metrics) {\n  console.log('\\nLoad Test Results')\n  console.log('-----------------')\n\n  metrics.forEach((metric) => {\n    const payload\n      = metric.result && typeof metric.result === 'object'\n        ? ` ${JSON.stringify(metric.result)}`\n        : ''\n\n    console.log(`${metric.name}: ${formatDuration(metric.duration)}${payload}`)\n  })\n}\n\nasync function createSnippet(baseUrl, name) {\n  const createdSnippet = await requestJson(baseUrl, '/snippets/', {\n    body: JSON.stringify({ name }),\n    headers: {\n      'content-type': 'application/json',\n    },\n    method: 'POST',\n  })\n\n  return createdSnippet.id\n}\n\nasync function createSnippetContent(baseUrl, snippetId, label, value) {\n  await requestJson(baseUrl, `/snippets/${snippetId}/contents`, {\n    body: JSON.stringify({\n      label,\n      language: 'typescript',\n      value,\n    }),\n    headers: {\n      'content-type': 'application/json',\n    },\n    method: 'POST',\n  })\n}\n\nasync function deleteSnippet(baseUrl, snippetId) {\n  try {\n    await requestJson(baseUrl, `/snippets/${snippetId}`, {\n      method: 'DELETE',\n    })\n  }\n  catch {\n    // ignore cleanup errors\n  }\n}\n\nasync function getSnippets(baseUrl, query) {\n  const searchParams = new URLSearchParams()\n\n  Object.entries(query || {}).forEach(([key, value]) => {\n    if (value === undefined || value === null || value === '') {\n      return\n    }\n\n    searchParams.set(key, String(value))\n  })\n\n  const pathWithQuery = searchParams.size\n    ? `/snippets/?${searchParams.toString()}`\n    : '/snippets/'\n\n  return requestJson(baseUrl, pathWithQuery, {\n    method: 'GET',\n  })\n}\n\nasync function resetStorageCache(baseUrl) {\n  await requestJson(baseUrl, '/system/storage-cache/reset', {\n    method: 'POST',\n  })\n}\n\nasync function main() {\n  const options = parseArgs(process.argv.slice(2))\n  const baseUrl = options.baseUrl.endsWith('/')\n    ? options.baseUrl\n    : `${options.baseUrl}/`\n\n  const engineResponse = await requestJson(baseUrl, '/system/storage-engine', {\n    method: 'GET',\n  })\n\n  const runToken = Date.now()\n  const snippetPrefix = `load-test-${runToken}`\n  const createdSnippetIds = []\n\n  console.log(`API: ${baseUrl}`)\n  console.log(`Engine: ${engineResponse.engine}`)\n  console.log(\n    `Preparing snippets: ${options.snippets} x ${options.fragments} fragments`,\n  )\n\n  for (\n    let snippetIndex = 1;\n    snippetIndex <= options.snippets;\n    snippetIndex += 1\n  ) {\n    const snippetId = await createSnippet(\n      baseUrl,\n      `${snippetPrefix}-snippet-${snippetIndex}`,\n    )\n    createdSnippetIds.push(snippetId)\n\n    for (\n      let fragmentIndex = 1;\n      fragmentIndex <= options.fragments;\n      fragmentIndex += 1\n    ) {\n      const contentToken = `${snippetPrefix}-f-${snippetIndex}-${fragmentIndex}`\n\n      await createSnippetContent(\n        baseUrl,\n        snippetId,\n        `Fragment ${fragmentIndex}`,\n        `export const token = '${contentToken}'`,\n      )\n    }\n  }\n\n  const defaultSearchQuery\n    = options.query\n      || `${snippetPrefix}-f-${Math.max(1, Math.floor(options.snippets / 2))}-1`\n\n  const metrics = []\n\n  metrics.push(\n    await measure('coldStart(getSnippets after cache reset)', async () => {\n      await resetStorageCache(baseUrl)\n      const snippets = await getSnippets(baseUrl, {\n        search: defaultSearchQuery,\n      })\n\n      return {\n        matches: snippets.length,\n      }\n    }),\n  )\n\n  metrics.push(\n    await measure('hotStart(getSnippets repeated)', async () => {\n      const snippets = await getSnippets(baseUrl, {\n        search: defaultSearchQuery,\n      })\n\n      return {\n        matches: snippets.length,\n      }\n    }),\n  )\n\n  metrics.push(\n    await measure('uncachedSearch(reset + search)', async () => {\n      await resetStorageCache(baseUrl)\n      const snippets = await getSnippets(baseUrl, {\n        search: defaultSearchQuery,\n      })\n\n      return {\n        matches: snippets.length,\n      }\n    }),\n  )\n\n  metrics.push(\n    await measure('cachedSearch(repeated same query)', async () => {\n      const snippets = await getSnippets(baseUrl, {\n        search: defaultSearchQuery,\n      })\n\n      return {\n        matches: snippets.length,\n      }\n    }),\n  )\n\n  printMetrics(metrics)\n\n  if (!options.keep) {\n    for (const snippetId of createdSnippetIds) {\n      await deleteSnippet(baseUrl, snippetId)\n    }\n  }\n}\n\nmain().catch((error) => {\n  console.error(getErrorMessage(error))\n  process.exitCode = 1\n})\n"
  },
  {
    "path": "scripts/bench-seed.js",
    "content": "#!/usr/bin/env node\n\nconst { performance } = require('node:perf_hooks')\nconst process = require('node:process')\n\nconst ALLOWED_SNIPPETS = [1000, 5000, 10000]\nconst ALLOWED_FRAGMENTS = [3, 4]\nconst DEFAULT_BASE_URL\n  = process.env.MASSCODE_API_URL || 'http://localhost:4321'\nconst DEFAULT_CONCURRENCY = 6\nconst DEFAULT_PREFIX = 'seed'\n\nfunction getErrorMessage(error) {\n  if (error instanceof Error) {\n    const cause = error.cause\n    if (cause && typeof cause === 'object' && 'message' in cause) {\n      const causeMessage = String(cause.message || '').trim()\n      if (causeMessage) {\n        return `${error.message} (${causeMessage})`\n      }\n    }\n\n    return error.message\n  }\n\n  return String(error)\n}\n\nfunction parseInteger(value, fallback) {\n  const parsed = Number(value)\n\n  if (!Number.isFinite(parsed)) {\n    return fallback\n  }\n\n  const integer = Math.trunc(parsed)\n  return integer > 0 ? integer : fallback\n}\n\nfunction parseArgs(argv) {\n  const options = {\n    all: false,\n    baseUrl: DEFAULT_BASE_URL,\n    concurrency: DEFAULT_CONCURRENCY,\n    fragments: 3,\n    help: false,\n    prefix: DEFAULT_PREFIX,\n    profiles: '',\n    snippets: 1000,\n    token: Date.now().toString(36),\n  }\n\n  for (let index = 0; index < argv.length; index += 1) {\n    const argument = argv[index]\n\n    if (argument === '--help' || argument === '-h') {\n      options.help = true\n      continue\n    }\n\n    if (argument === '--all') {\n      options.all = true\n      continue\n    }\n\n    if (argument === '--base-url') {\n      options.baseUrl = String(argv[index + 1] || options.baseUrl)\n      index += 1\n      continue\n    }\n\n    if (argument === '--snippets') {\n      options.snippets = parseInteger(argv[index + 1], options.snippets)\n      index += 1\n      continue\n    }\n\n    if (argument === '--fragments') {\n      options.fragments = parseInteger(argv[index + 1], options.fragments)\n      index += 1\n      continue\n    }\n\n    if (argument === '--concurrency') {\n      options.concurrency = parseInteger(argv[index + 1], options.concurrency)\n      index += 1\n      continue\n    }\n\n    if (argument === '--prefix') {\n      options.prefix\n        = String(argv[index + 1] || options.prefix).trim() || options.prefix\n      index += 1\n      continue\n    }\n\n    if (argument === '--token') {\n      options.token\n        = String(argv[index + 1] || options.token).trim() || options.token\n      index += 1\n      continue\n    }\n\n    if (argument === '--profiles') {\n      options.profiles = String(argv[index + 1] || '')\n      index += 1\n      continue\n    }\n  }\n\n  options.concurrency = Math.max(1, options.concurrency)\n\n  return options\n}\n\nfunction printHelp() {\n  console.log(`\nFake snippets seed for benchmarking.\n\nUsage:\n  node scripts/bench-seed.js [options]\n\nOptions:\n  --snippets <count>       Allowed: ${ALLOWED_SNIPPETS.join(', ')} (default: 1000)\n  --fragments <count>      Allowed: ${ALLOWED_FRAGMENTS.join(', ')} (default: 3)\n  --profiles <list>        Comma-separated profiles: \"1000x3,5000x4\"\n  --all                    Generate all profiles: 1000/5000/10000 x 3/4\n  --concurrency <count>    Parallel workers (default: ${DEFAULT_CONCURRENCY})\n  --base-url <url>         API base URL (default: ${DEFAULT_BASE_URL})\n  --prefix <value>         Name prefix (default: ${DEFAULT_PREFIX})\n  --token <value>          Dataset token (default: generated from timestamp)\n  --help                   Show this help\n`)\n}\n\nfunction validateProfile(profile) {\n  if (!ALLOWED_SNIPPETS.includes(profile.snippets)) {\n    throw new Error(\n      `Unsupported snippets count \"${profile.snippets}\". Allowed values: ${ALLOWED_SNIPPETS.join(', ')}`,\n    )\n  }\n\n  if (!ALLOWED_FRAGMENTS.includes(profile.fragments)) {\n    throw new Error(\n      `Unsupported fragments count \"${profile.fragments}\". Allowed values: ${ALLOWED_FRAGMENTS.join(', ')}`,\n    )\n  }\n}\n\nfunction parseProfile(value) {\n  const match = value.trim().match(/^(\\d+)x(\\d+)$/i)\n  if (!match) {\n    throw new Error(\n      `Invalid profile \"${value}\". Expected format: <snippets>x<fragments>, for example 1000x3`,\n    )\n  }\n\n  const profile = {\n    snippets: Number(match[1]),\n    fragments: Number(match[2]),\n  }\n\n  validateProfile(profile)\n  return profile\n}\n\nfunction resolveProfiles(options) {\n  if (options.all) {\n    return ALLOWED_SNIPPETS.flatMap(snippets =>\n      ALLOWED_FRAGMENTS.map(fragments => ({ fragments, snippets })),\n    )\n  }\n\n  if (options.profiles.trim()) {\n    const uniqueProfiles = new Map()\n\n    options.profiles\n      .split(',')\n      .map(item => item.trim())\n      .filter(Boolean)\n      .forEach((item) => {\n        const profile = parseProfile(item)\n        uniqueProfiles.set(`${profile.snippets}x${profile.fragments}`, profile)\n      })\n\n    if (uniqueProfiles.size === 0) {\n      throw new Error('No valid profiles provided')\n    }\n\n    return [...uniqueProfiles.values()]\n  }\n\n  const profile = {\n    fragments: options.fragments,\n    snippets: options.snippets,\n  }\n\n  validateProfile(profile)\n  return [profile]\n}\n\nfunction normalizeBaseUrl(value) {\n  return value.endsWith('/') ? value : `${value}/`\n}\n\nasync function requestJson(baseUrl, pathname, options) {\n  const requestUrl = new URL(pathname, baseUrl)\n  let response\n\n  try {\n    response = await fetch(requestUrl, options)\n  }\n  catch (error) {\n    throw new Error(\n      `Failed to reach API at ${requestUrl.origin}. Start massCode first (for example: \"pnpm dev\"). Details: ${getErrorMessage(error)}`,\n    )\n  }\n\n  if (!response.ok) {\n    const errorBody = await response.text()\n    throw new Error(\n      `Request failed (${response.status}) ${pathname}: ${errorBody || response.statusText}`,\n    )\n  }\n\n  if (response.status === 204) {\n    return null\n  }\n\n  return response.json()\n}\n\nasync function createSnippet(baseUrl, name) {\n  const createdSnippet = await requestJson(baseUrl, '/snippets/', {\n    body: JSON.stringify({ name }),\n    headers: {\n      'content-type': 'application/json',\n    },\n    method: 'POST',\n  })\n\n  return createdSnippet.id\n}\n\nasync function createSnippetContent(baseUrl, snippetId, label, value) {\n  await requestJson(baseUrl, `/snippets/${snippetId}/contents`, {\n    body: JSON.stringify({\n      label,\n      language: 'typescript',\n      value,\n    }),\n    headers: {\n      'content-type': 'application/json',\n    },\n    method: 'POST',\n  })\n}\n\nfunction formatDuration(durationMs) {\n  if (durationMs < 1_000) {\n    return `${durationMs.toFixed(0)}ms`\n  }\n\n  const seconds = durationMs / 1_000\n  if (seconds < 60) {\n    return `${seconds.toFixed(2)}s`\n  }\n\n  return `${(seconds / 60).toFixed(2)}m`\n}\n\nfunction buildSnippetName(options, profile, snippetIndex) {\n  return [\n    options.prefix,\n    options.token,\n    `${profile.snippets}x${profile.fragments}`,\n    'snippet',\n    String(snippetIndex).padStart(5, '0'),\n  ].join('-')\n}\n\nfunction buildFragmentBody(options, profile, snippetIndex, fragmentIndex) {\n  const token = [\n    options.prefix,\n    options.token,\n    profile.snippets,\n    profile.fragments,\n    snippetIndex,\n    fragmentIndex,\n  ].join('-')\n\n  return [\n    '// Generated by bench-seed.js',\n    `export const seedToken = '${token}'`,\n    `export const profile = '${profile.snippets}x${profile.fragments}'`,\n    `export const snippetIndex = ${snippetIndex}`,\n    `export const fragmentIndex = ${fragmentIndex}`,\n  ].join('\\n')\n}\n\nasync function runProfile(baseUrl, options, profile) {\n  const total = profile.snippets\n  const workerCount = Math.min(total, options.concurrency)\n  const profileLabel = `${profile.snippets}x${profile.fragments}`\n  const startedAt = performance.now()\n\n  let completed = 0\n  let nextSnippetIndex = 1\n  let workerError = null\n\n  console.log(`\\n[${profileLabel}] Start seeding`)\n  console.log(`[${profileLabel}] Snippets: ${profile.snippets}`)\n  console.log(`[${profileLabel}] Fragments per snippet: ${profile.fragments}`)\n  console.log(`[${profileLabel}] Workers: ${workerCount}`)\n  console.log(`[${profileLabel}] Prefix: ${options.prefix}`)\n  console.log(`[${profileLabel}] Token: ${options.token}`)\n\n  const progressTimer = setInterval(() => {\n    const percent = ((completed / total) * 100).toFixed(1)\n    console.log(\n      `[${profileLabel}] Progress: ${completed}/${total} (${percent}%)`,\n    )\n  }, 5_000)\n\n  async function worker() {\n    while (!workerError) {\n      const snippetIndex = nextSnippetIndex\n      nextSnippetIndex += 1\n\n      if (snippetIndex > total) {\n        return\n      }\n\n      const snippetName = buildSnippetName(options, profile, snippetIndex)\n\n      try {\n        const snippetId = await createSnippet(baseUrl, snippetName)\n\n        for (\n          let fragmentIndex = 1;\n          fragmentIndex <= profile.fragments;\n          fragmentIndex += 1\n        ) {\n          const fragmentBody = buildFragmentBody(\n            options,\n            profile,\n            snippetIndex,\n            fragmentIndex,\n          )\n          await createSnippetContent(\n            baseUrl,\n            snippetId,\n            `Fragment ${fragmentIndex}`,\n            fragmentBody,\n          )\n        }\n      }\n      catch (error) {\n        workerError = new Error(\n          `Profile ${profileLabel}: failed at snippet #${snippetIndex} (\"${snippetName}\"). ${getErrorMessage(error)}`,\n        )\n      }\n      finally {\n        completed += 1\n      }\n    }\n  }\n\n  await Promise.all(Array.from({ length: workerCount }, () => worker()))\n  clearInterval(progressTimer)\n\n  if (workerError) {\n    throw workerError\n  }\n\n  const durationMs = performance.now() - startedAt\n  console.log(`[${profileLabel}] Completed in ${formatDuration(durationMs)}`)\n\n  return {\n    durationMs,\n    fragments: profile.fragments,\n    snippets: profile.snippets,\n  }\n}\n\nasync function main() {\n  const options = parseArgs(process.argv.slice(2))\n\n  if (options.help) {\n    printHelp()\n    return\n  }\n\n  const profiles = resolveProfiles(options)\n  const baseUrl = normalizeBaseUrl(options.baseUrl)\n\n  const engineResponse = await requestJson(baseUrl, '/system/storage-engine', {\n    method: 'GET',\n  })\n\n  console.log(`API: ${baseUrl}`)\n  console.log(`Engine: ${engineResponse.engine}`)\n  console.log(\n    `Profiles: ${profiles.map(p => `${p.snippets}x${p.fragments}`).join(', ')}`,\n  )\n\n  const summary = []\n\n  for (const profile of profiles) {\n    summary.push(await runProfile(baseUrl, options, profile))\n  }\n\n  console.log('\\nSeeding summary')\n  console.log('--------------')\n  summary.forEach((result) => {\n    console.log(\n      `${result.snippets}x${result.fragments}: ${formatDuration(result.durationMs)}`,\n    )\n  })\n}\n\nmain().catch((error) => {\n  console.error(getErrorMessage(error))\n  process.exitCode = 1\n})\n"
  },
  {
    "path": "scripts/copy-locales.js",
    "content": "const fs = require('node:fs')\nconst path = require('node:path')\nconst { styleText } = require('node:util')\n\nconst sourceDir = path.join(__dirname, '../src/main/i18n/locales')\nconst targetDir = path.join(__dirname, '../build/main/i18n/locales')\n\nfunction copyDirRecursive(sourceDir, targetDir) {\n  if (!fs.existsSync(targetDir)) {\n    fs.mkdirSync(targetDir, { recursive: true })\n  }\n\n  const files = fs.readdirSync(sourceDir)\n\n  for (const file of files) {\n    const sourcePath = path.join(sourceDir, file)\n    const targetPath = path.join(targetDir, file)\n\n    const stat = fs.statSync(sourcePath)\n\n    if (stat.isDirectory()) {\n      copyDirRecursive(sourcePath, targetPath)\n    }\n    else {\n      fs.copyFileSync(sourcePath, targetPath)\n    }\n  }\n}\n\nconsole.log(styleText('blue', 'Localization files copying...'))\ncopyDirRecursive(sourceDir, targetDir)\nconsole.log(styleText('green', 'Localization files copying completed'))\n"
  },
  {
    "path": "src/main/api/dto/common/query.ts",
    "content": "import { t } from 'elysia'\n\nconst Order = {\n  ASC: 'ASC',\n  DESC: 'DESC',\n} as const\n\nexport const commonQuery = t.Optional(\n  t.Object({\n    search: t.Optional(t.String()),\n    sort: t.Optional(t.String()),\n    order: t.Optional(t.Enum(Order)),\n  }),\n)\n"
  },
  {
    "path": "src/main/api/dto/common/response.ts",
    "content": "import { t } from 'elysia'\n\nexport const commonAddResponse = t.Object({\n  id: t.Union([t.Number(), t.BigInt()]),\n})\n"
  },
  {
    "path": "src/main/api/dto/folders.ts",
    "content": "import Elysia, { t } from 'elysia'\n\nconst foldersAdd = t.Object({\n  name: t.String(),\n  parentId: t.Optional(t.Union([t.Number(), t.Null()])),\n})\n\nconst foldersUpdate = t.Object({\n  name: t.Optional(t.String()),\n  icon: t.Optional(t.Union([t.String(), t.Null()])),\n  defaultLanguage: t.Optional(t.String()),\n  parentId: t.Optional(t.Union([t.Number(), t.Null()])),\n  isOpen: t.Optional(t.Number({ minimum: 0, maximum: 1 })),\n  orderIndex: t.Optional(t.Number()),\n})\n\nconst foldersItem = t.Object({\n  id: t.Number(),\n  name: t.String(),\n  createdAt: t.Number(),\n  updatedAt: t.Number(),\n  icon: t.Union([t.String(), t.Null()]),\n  parentId: t.Union([t.Number(), t.Null()]),\n  isOpen: t.Number(),\n  defaultLanguage: t.String(),\n  orderIndex: t.Number(),\n})\n\nconst foldersItemWithChildren = t.Recursive(This =>\n  t.Object({\n    ...foldersItem.properties,\n    children: t.Array(This),\n  }),\n)\n\nconst foldersResponse = t.Array(foldersItem)\nconst foldersTreeResponse = t.Array(foldersItemWithChildren)\n\nexport const foldersDTO = new Elysia().model({\n  foldersAdd,\n  foldersResponse,\n  foldersUpdate,\n  foldersTreeResponse,\n})\n\nexport type FoldersAdd = typeof foldersAdd.static\nexport type FoldersResponse = typeof foldersResponse.static\nexport type FoldersTree = typeof foldersTreeResponse.static\nexport type FoldersItem = typeof foldersItem.static\n"
  },
  {
    "path": "src/main/api/dto/snippet-contents.ts",
    "content": "import Elysia, { t } from 'elysia'\n\nconst snippetContentsAdd = t.Object({\n  snippetId: t.Number(),\n  label: t.Union([t.String(), t.Null()]),\n  value: t.Union([t.String(), t.Null()]),\n  language: t.String(),\n})\n\nexport const snippetContentsDTO = new Elysia().model({\n  snippetContentsAdd,\n})\n\nexport type SnippetContentsAdd = typeof snippetContentsAdd.static\n"
  },
  {
    "path": "src/main/api/dto/snippets.ts",
    "content": "import Elysia, { t } from 'elysia'\nimport { commonQuery } from './common/query'\n\nconst snippetsAdd = t.Object({\n  name: t.String(),\n  folderId: t.Optional(t.Union([t.Number(), t.Null()])),\n})\n\nconst snippetsUpdate = t.Object({\n  name: t.Optional(t.String()),\n  folderId: t.Optional(t.Union([t.Number(), t.Null()])),\n  description: t.Optional(t.Union([t.String(), t.Null()])),\n  isDeleted: t.Optional(t.Number({ minimum: 0, maximum: 1 })),\n  isFavorites: t.Optional(t.Number({ minimum: 0, maximum: 1 })),\n})\n\nconst snippetContentsAdd = t.Object({\n  label: t.String(),\n  value: t.Union([t.String(), t.Null()]),\n  language: t.String(), // TODO: enum\n})\n\nconst snippetContentsUpdate = t.Object({\n  label: t.Optional(t.String()),\n  value: t.Optional(t.Union([t.String(), t.Null()])),\n  language: t.Optional(t.String()), // TODO: enum\n})\n\nconst snippetItem = t.Object({\n  id: t.Number(),\n  name: t.String(),\n  description: t.Union([t.String(), t.Null()]),\n  tags: t.Array(\n    t.Object({\n      id: t.Number(),\n      name: t.String(),\n    }),\n  ),\n  folder: t.Nullable(\n    t.Object({\n      id: t.Number(),\n      name: t.String(),\n    }),\n  ),\n  contents: t.Array(\n    t.Object({\n      id: t.Number(),\n      label: t.String(),\n      value: t.Union([t.String(), t.Null()]),\n      language: t.String(),\n    }),\n  ),\n  isFavorites: t.Number(),\n  isDeleted: t.Number(),\n  createdAt: t.Number(),\n  updatedAt: t.Number(),\n})\n\nconst snippetsResponse = t.Array(snippetItem)\n\nconst snippetsCountsResponse = t.Object({\n  total: t.Number(),\n  trash: t.Number(),\n})\n\nexport const snippetsDTO = new Elysia().model({\n  snippetContentsAdd,\n  snippetContentsUpdate,\n  snippetsAdd,\n  snippetsUpdate,\n  snippetsCountsResponse,\n  snippetsQuery: t.Object({\n    ...commonQuery.properties,\n    folderId: t.Optional(t.Number()),\n    tagId: t.Optional(t.Number()),\n    isFavorites: t.Optional(t.Number({ minimum: 0, maximum: 1 })),\n    isDeleted: t.Optional(t.Number({ minimum: 0, maximum: 1 })),\n    isInbox: t.Optional(t.Number({ minimum: 0, maximum: 1 })),\n  }),\n  snippetsResponse,\n})\n\nexport type SnippetsAdd = typeof snippetsAdd.static\nexport type SnippetsResponse = typeof snippetsResponse.static\nexport type SnippetsCountsResponse = typeof snippetsCountsResponse.static\n"
  },
  {
    "path": "src/main/api/dto/tags.ts",
    "content": "import Elysia, { t } from 'elysia'\n\nconst tagsAdd = t.Object({\n  name: t.String(),\n})\n\nconst tagsItem = t.Object({\n  id: t.Number(),\n  name: t.String(),\n})\n\nexport const tagsResponse = t.Array(tagsItem)\nexport const tagsAddResponse = t.Object({\n  id: t.Number(),\n})\n\nexport const tagsDTO = new Elysia().model({\n  tagsAdd,\n  tagsResponse,\n  tagsAddResponse,\n})\n\nexport type TagsAdd = typeof tagsAdd.static\nexport type TagsResponse = typeof tagsResponse.static\n"
  },
  {
    "path": "src/main/api/index.ts",
    "content": "import { cors } from '@elysiajs/cors'\nimport { swagger } from '@elysiajs/swagger'\nimport { app as electronApp } from 'electron'\nimport { Elysia } from 'elysia'\nimport { store } from '../store'\nimport { importEsm } from '../utils'\nimport folders from './routes/folders'\nimport snippets from './routes/snippets'\nimport system from './routes/system'\nimport tags from './routes/tags'\n\nexport async function initApi() {\n  // поскольку @elysiajs/node использует crossws, который работает только в ESM среде,\n  // то делаем хак с динамическим импортом\n  const { node } = await importEsm('@elysiajs/node')\n\n  const app = new Elysia({ adapter: node() })\n  const port = store.preferences.get('apiPort')\n\n  app\n    .use(cors({ origin: '*' }))\n    .use(\n      swagger({\n        documentation: {\n          info: {\n            title: 'massCode API',\n            version: electronApp.getVersion(),\n          },\n        },\n      }),\n    )\n    .use(snippets)\n    .use(folders)\n    .use(system)\n    .use(tags)\n    .listen(port)\n\n  // eslint-disable-next-line no-console\n  console.log(`\\nAPI started on port ${port}\\n`)\n}\n"
  },
  {
    "path": "src/main/api/routes/folders.ts",
    "content": "import type { FoldersResponse, FoldersTree } from '../dto/folders'\nimport { Elysia } from 'elysia'\nimport { useStorage } from '../../storage'\nimport { commonAddResponse } from '../dto/common/response'\nimport { foldersDTO } from '../dto/folders'\n\nconst app = new Elysia({ prefix: '/folders' })\n\nfunction parseStorageError(\n  error: unknown,\n): { code: string, message: string } | null {\n  if (!(error instanceof Error)) {\n    return null\n  }\n\n  const separatorIndex = error.message.indexOf(':')\n  if (separatorIndex <= 0) {\n    return null\n  }\n\n  return {\n    code: error.message.slice(0, separatorIndex),\n    message: error.message.slice(separatorIndex + 1).trim(),\n  }\n}\n\nfunction mapStorageError(status: unknown, error: unknown): never {\n  const setStatus = status as (\n    code: number,\n    payload: { message: string },\n  ) => never\n  const parsedError = parseStorageError(error)\n\n  if (!parsedError) {\n    return setStatus(500, { message: 'Internal storage error' })\n  }\n\n  if (parsedError.code === 'NAME_CONFLICT') {\n    return setStatus(409, { message: parsedError.message })\n  }\n\n  if (parsedError.code === 'FOLDER_NOT_FOUND') {\n    return setStatus(404, { message: parsedError.message })\n  }\n\n  if (\n    parsedError.code === 'INVALID_NAME'\n    || parsedError.code === 'RESERVED_NAME'\n  ) {\n    return setStatus(400, { message: parsedError.message })\n  }\n\n  return setStatus(500, {\n    message: parsedError.message || 'Internal storage error',\n  })\n}\n\napp\n  .use(foldersDTO)\n  // Получение списка папок\n  .get(\n    '/',\n    () => {\n      const storage = useStorage()\n      const result = storage.folders.getFolders()\n\n      return result as FoldersResponse\n    },\n    {\n      response: 'foldersResponse',\n      detail: {\n        tags: ['Folders'],\n      },\n    },\n  )\n  // Получение папок в виде древовидной структуры\n  .get(\n    '/tree',\n    (): any => {\n      const storage = useStorage()\n\n      return storage.folders.getFoldersTree() as FoldersTree\n    },\n    {\n      response: 'foldersTreeResponse',\n      detail: {\n        tags: ['Folders'],\n      },\n    },\n  )\n  // Добавление папки\n  .post(\n    '/',\n    ({ body, status }) => {\n      const storage = useStorage()\n      try {\n        const { id } = storage.folders.createFolder(body)\n\n        return { id }\n      }\n      catch (error) {\n        return mapStorageError(status, error)\n      }\n    },\n    {\n      body: 'foldersAdd',\n      response: commonAddResponse,\n      detail: {\n        tags: ['Folders'],\n      },\n    },\n  )\n  // Обновление папки\n  .patch(\n    '/:id',\n    ({ params, body, status }) => {\n      const storage = useStorage()\n      try {\n        const { invalidInput, notFound } = storage.folders.updateFolder(\n          Number(params.id),\n          body,\n        )\n\n        if (invalidInput) {\n          return status(400, { message: 'Need at least one field to update' })\n        }\n\n        if (notFound) {\n          return status(404, { message: 'Folder not found' })\n        }\n\n        return { message: 'Folder updated' }\n      }\n      catch (error) {\n        return mapStorageError(status, error)\n      }\n    },\n    {\n      body: 'foldersUpdate',\n      detail: {\n        tags: ['Folders'],\n      },\n    },\n  )\n  // Удаление папки\n  .delete(\n    '/:id',\n    ({ params, status }) => {\n      const storage = useStorage()\n      try {\n        const { deleted } = storage.folders.deleteFolder(Number(params.id))\n\n        if (!deleted) {\n          return status(404, { message: 'Folder not found' })\n        }\n\n        return { message: 'Folder deleted' }\n      }\n      catch (error) {\n        return mapStorageError(status, error)\n      }\n    },\n    {\n      detail: {\n        tags: ['Folders'],\n      },\n    },\n  )\n\nexport default app\n"
  },
  {
    "path": "src/main/api/routes/snippets.ts",
    "content": "import type { SnippetsCountsResponse, SnippetsResponse } from '../dto/snippets'\nimport Elysia from 'elysia'\nimport { useStorage } from '../../storage'\nimport { commonAddResponse } from '../dto/common/response'\nimport { snippetsDTO } from '../dto/snippets'\n\nconst app = new Elysia({ prefix: '/snippets' })\n\nfunction parseStorageError(\n  error: unknown,\n): { code: string, message: string } | null {\n  if (!(error instanceof Error)) {\n    return null\n  }\n\n  const separatorIndex = error.message.indexOf(':')\n  if (separatorIndex <= 0) {\n    return null\n  }\n\n  return {\n    code: error.message.slice(0, separatorIndex),\n    message: error.message.slice(separatorIndex + 1).trim(),\n  }\n}\n\nfunction mapStorageError(status: unknown, error: unknown): never {\n  const setStatus = status as (\n    code: number,\n    payload: { message: string },\n  ) => never\n  const parsedError = parseStorageError(error)\n\n  if (!parsedError) {\n    return setStatus(500, { message: 'Internal storage error' })\n  }\n\n  if (parsedError.code === 'NAME_CONFLICT') {\n    return setStatus(409, { message: parsedError.message })\n  }\n\n  if (\n    parsedError.code === 'FOLDER_NOT_FOUND'\n    || parsedError.code === 'SNIPPET_NOT_FOUND'\n  ) {\n    return setStatus(404, { message: parsedError.message })\n  }\n\n  if (\n    parsedError.code === 'INVALID_NAME'\n    || parsedError.code === 'RESERVED_NAME'\n  ) {\n    return setStatus(400, { message: parsedError.message })\n  }\n\n  return setStatus(500, {\n    message: parsedError.message || 'Internal storage error',\n  })\n}\n\napp\n  .use(snippetsDTO)\n  // Получение списка сниппетов c возможностью фильтрации\n  .get(\n    '/',\n    ({ query }) => {\n      const storage = useStorage()\n      const result = storage.snippets.getSnippets(query)\n\n      return result as SnippetsResponse\n    },\n    {\n      query: 'snippetsQuery',\n      response: 'snippetsResponse',\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Получение кол-ва сниппетов\n  .get(\n    '/counts',\n    () => {\n      const storage = useStorage()\n      return storage.snippets.getSnippetsCounts() as SnippetsCountsResponse\n    },\n    {\n      response: 'snippetsCountsResponse',\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Создание сниппета\n  .post(\n    '/',\n    ({ body, status }) => {\n      const storage = useStorage()\n      try {\n        const { id } = storage.snippets.createSnippet(body)\n\n        return { id }\n      }\n      catch (error) {\n        return mapStorageError(status, error)\n      }\n    },\n    {\n      body: 'snippetsAdd',\n      response: commonAddResponse,\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Добавление содержимого сниппета\n  .post(\n    '/:id/contents',\n    ({ params, body, status }) => {\n      const storage = useStorage()\n      try {\n        const { id } = storage.snippets.createSnippetContent(\n          Number(params.id),\n          body,\n        )\n\n        return { id }\n      }\n      catch (error) {\n        return mapStorageError(status, error)\n      }\n    },\n    {\n      body: 'snippetContentsAdd',\n      response: commonAddResponse,\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Обновление сниппета\n  .patch(\n    '/:id',\n    ({ params, body, status }) => {\n      const storage = useStorage()\n      try {\n        const { invalidInput, notFound } = storage.snippets.updateSnippet(\n          Number(params.id),\n          body,\n        )\n\n        if (invalidInput) {\n          return status(400, { message: 'Need at least one field to update' })\n        }\n\n        if (notFound) {\n          return status(404, { message: 'Snippet not found' })\n        }\n\n        return { message: 'Snippet updated' }\n      }\n      catch (error) {\n        return mapStorageError(status, error)\n      }\n    },\n    {\n      body: 'snippetsUpdate',\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Обновление содержимого сниппета\n  .patch(\n    '/:id/contents/:contentId',\n    ({ params, body, status }) => {\n      const storage = useStorage()\n      const { invalidInput, notFound, parentNotFound }\n        = storage.snippets.updateSnippetContent(\n          Number(params.id),\n          Number(params.contentId),\n          body,\n        )\n\n      if (invalidInput) {\n        return status(400, { message: 'Need at least one field to update' })\n      }\n\n      if (notFound) {\n        return status(404, { message: 'Snippet content not found' })\n      }\n\n      if (parentNotFound) {\n        return status(404, { message: 'Snippet not found' })\n      }\n\n      return { message: 'Snippet content updated' }\n    },\n    {\n      body: 'snippetContentsUpdate',\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Добавление тега к сниппету\n  .post(\n    '/:id/tags/:tagId',\n    ({ params, status }) => {\n      const storage = useStorage()\n      const { snippetFound, tagFound } = storage.snippets.addTagToSnippet(\n        Number(params.id),\n        Number(params.tagId),\n      )\n\n      if (!snippetFound) {\n        return status(404, { message: 'Snippet not found' })\n      }\n\n      if (!tagFound) {\n        return status(404, { message: 'Tag not found' })\n      }\n\n      return { message: 'Tag added to snippet' }\n    },\n    {\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Удаление тега из сниппета\n  .delete(\n    '/:id/tags/:tagId',\n    ({ params, status }) => {\n      const storage = useStorage()\n      const { snippetFound, tagFound, relationFound }\n        = storage.snippets.deleteTagFromSnippet(\n          Number(params.id),\n          Number(params.tagId),\n        )\n\n      if (!snippetFound) {\n        return status(404, { message: 'Snippet not found' })\n      }\n\n      if (!tagFound) {\n        return status(404, { message: 'Tag not found' })\n      }\n\n      if (!relationFound) {\n        return status(404, {\n          message: 'Tag is not associated with this snippet',\n        })\n      }\n\n      return { message: 'Tag removed from snippet' }\n    },\n    {\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Удаление сниппета\n  .delete(\n    '/:id',\n    ({ params, status }) => {\n      const storage = useStorage()\n      const { deleted } = storage.snippets.deleteSnippet(Number(params.id))\n\n      if (!deleted) {\n        return status(404, { message: 'Snippet not found' })\n      }\n\n      return { message: 'Snippet deleted' }\n    },\n    {\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Удаление всех сниппетов в корзине\n  .delete(\n    '/trash',\n    ({ status }) => {\n      const storage = useStorage()\n      const { deletedCount } = storage.snippets.emptyTrash()\n\n      if (!deletedCount) {\n        return status(404, { message: 'No snippets in trash' })\n      }\n\n      return {\n        message: `Successfully emptied trash: ${deletedCount} snippet(s) deleted`,\n      }\n    },\n    {\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n  // Удаление содержимого сниппета\n  .delete(\n    '/:id/contents/:contentId',\n    ({ params, status }) => {\n      const storage = useStorage()\n      const { deleted } = storage.snippets.deleteSnippetContent(\n        Number(params.contentId),\n      )\n\n      if (!deleted) {\n        return status(404, { message: 'Snippet content not found' })\n      }\n\n      return { message: 'Snippet content deleted' }\n    },\n    {\n      detail: {\n        tags: ['Snippets'],\n      },\n    },\n  )\n\nexport default app\n"
  },
  {
    "path": "src/main/api/routes/system.ts",
    "content": "import { Elysia } from 'elysia'\nimport { resetRuntimeCache } from '../../storage/providers/markdown'\nimport { getVaultPath } from '../../storage/providers/markdown/runtime'\nimport { store } from '../../store'\n\nconst app = new Elysia({ prefix: '/system' })\n\napp.get(\n  '/storage-engine',\n  () => {\n    const engine = store.preferences.get('storage.engine')\n\n    return { engine }\n  },\n  {\n    detail: {\n      tags: ['System'],\n    },\n  },\n)\n\napp.get(\n  '/storage-vault-path',\n  () => {\n    return {\n      vaultPath: getVaultPath(),\n    }\n  },\n  {\n    detail: {\n      tags: ['System'],\n    },\n  },\n)\n\napp.post(\n  '/storage-cache/reset',\n  () => {\n    if (store.preferences.get('storage.engine') === 'markdown') {\n      resetRuntimeCache()\n    }\n\n    return {\n      reset: true,\n    }\n  },\n  {\n    detail: {\n      tags: ['System'],\n    },\n  },\n)\n\nexport default app\n"
  },
  {
    "path": "src/main/api/routes/tags.ts",
    "content": "import type { TagsResponse } from '../dto/tags'\nimport Elysia from 'elysia'\nimport { useStorage } from '../../storage'\nimport { tagsDTO } from '../dto/tags'\n\nconst app = new Elysia({ prefix: '/tags' })\n\napp\n  .use(tagsDTO)\n  // Получение списка тегов\n  .get(\n    '/',\n    () => {\n      const storage = useStorage()\n      const result = storage.tags.getTags()\n\n      return result as TagsResponse\n    },\n    {\n      response: 'tagsResponse',\n      detail: {\n        tags: ['Tags'],\n      },\n    },\n  )\n  // Добавление тега\n  .post(\n    '/',\n    ({ body }) => {\n      const storage = useStorage()\n      const { id } = storage.tags.createTag(body.name)\n\n      return { id }\n    },\n    {\n      body: 'tagsAdd',\n      response: 'tagsAddResponse',\n      detail: {\n        tags: ['Tags'],\n      },\n    },\n  )\n  // Удаление тега и удаление его из всех сниппетов\n  .delete(\n    '/:id',\n    ({ params, status }) => {\n      const storage = useStorage()\n      const { deleted } = storage.tags.deleteTag(Number(params.id))\n\n      if (!deleted) {\n        return status(404, { message: 'Tag not found' })\n      }\n\n      return { message: 'Tag deleted' }\n    },\n    {\n      detail: {\n        tags: ['Tags'],\n      },\n    },\n  )\n\nexport default app\n"
  },
  {
    "path": "src/main/currencyRates.ts",
    "content": "import { store } from './store'\n\nconst CACHE_TTL = 1000 * 60 * 60\n\ninterface CurrencyRatesApiResponse {\n  result?: string\n  rates?: Record<string, number>\n  time_last_update_unix?: number\n}\n\nexport interface CurrencyRatesPayload {\n  rates: Record<string, number>\n  fetchedAt: number\n  source: 'live' | 'cache' | 'unavailable'\n}\n\nfunction normalizeRates(rates: Record<string, number>) {\n  const normalized: Record<string, number> = { USD: 1 }\n\n  Object.entries(rates).forEach(([code, value]) => {\n    if (typeof value === 'number' && Number.isFinite(value)) {\n      normalized[code] = value\n    }\n  })\n\n  normalized.USD = 1\n\n  return normalized\n}\n\nexport async function getCurrencyRates(): Promise<CurrencyRatesPayload> {\n  const cached = store.currencyRates.get('cache')\n\n  if (cached && Date.now() - cached.fetchedAt < CACHE_TTL) {\n    return {\n      ...cached,\n      source: 'cache',\n    }\n  }\n\n  try {\n    const response = await fetch('https://open.er-api.com/v6/latest/USD')\n    if (!response.ok) {\n      throw new Error(\n        `Currency rates request failed with status ${response.status}`,\n      )\n    }\n\n    const data = (await response.json()) as CurrencyRatesApiResponse\n    if (data.result !== 'success' || !data.rates) {\n      throw new Error('Currency rates response is invalid')\n    }\n\n    const payload = {\n      rates: normalizeRates(data.rates),\n      fetchedAt: data.time_last_update_unix\n        ? data.time_last_update_unix * 1000\n        : Date.now(),\n    }\n\n    store.currencyRates.set('cache', payload)\n\n    return {\n      ...payload,\n      source: 'live',\n    }\n  }\n  catch {\n    if (cached) {\n      return {\n        ...cached,\n        source: 'cache',\n      }\n    }\n\n    return {\n      rates: {},\n      fetchedAt: 0,\n      source: 'unavailable',\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/db/index.ts",
    "content": "/* eslint-disable node/prefer-global/process */\nimport type { Backup } from './types'\nimport path from 'node:path'\nimport Database from 'better-sqlite3'\nimport { format } from 'date-fns'\nimport fs from 'fs-extra'\nimport { store } from '../store'\nimport { log } from '../utils'\n\nconst DB_NAME = 'massCode.db'\nconst isDev = process.env.NODE_ENV === 'development'\n\nlet db: Database.Database | null = null\nlet backupTimer: NodeJS.Timeout | null = null\n\nfunction isSqliteStorageEngine(): boolean {\n  return store.preferences.get('storage.engine') === 'sqlite'\n}\n\nfunction isSqliteFile(dbPath: string): boolean {\n  try {\n    if (!fs.existsSync(dbPath))\n      return false\n\n    const buffer = fs.readFileSync(dbPath).subarray(0, 16)\n    return buffer.toString('ascii') === 'SQLite format 3\\x00'\n  }\n  catch {\n    return false\n  }\n}\n\nfunction tableExists(db: Database.Database, table: string): boolean {\n  const row = db\n    .prepare(\n      `\n    SELECT name \n    FROM sqlite_master \n    WHERE type='table' AND name=?\n  `,\n    )\n    .get(table)\n  return !!row\n}\n\nexport function useDB() {\n  if (db)\n    return db\n\n  const dbPath = `${store.preferences.get('storagePath')}/${DB_NAME}`\n  const dbDir = path.dirname(dbPath)\n\n  if (!fs.existsSync(dbDir)) {\n    fs.mkdirSync(dbDir, { recursive: true })\n  }\n\n  if (fs.existsSync(dbPath) && !isSqliteFile(dbPath)) {\n    const backupPath = `${dbPath}.old`\n    try {\n      fs.moveSync(dbPath, backupPath)\n    }\n    catch {}\n  }\n\n  try {\n    db = new Database(dbPath, {\n      // eslint-disable-next-line no-console\n      verbose: isDev ? console.log : undefined,\n    })\n\n    db.pragma('journal_mode = WAL')\n    db.pragma('foreign_keys = ON')\n\n    // Поскольку из коробки в SQLite регистронезависимый поиск возможен только для ASCII,\n    // то добавляем самостоятельно функцию для сравнения строк без учета регистра\n    db.function('unicode_lower', (str: unknown) => {\n      if (typeof str !== 'string')\n        return str\n      return str.toLowerCase()\n    })\n\n    // Таблица для папок\n    db.exec(`\n      CREATE TABLE IF NOT EXISTS folders (\n        id INTEGER PRIMARY KEY AUTOINCREMENT,\n        name TEXT NOT NULL,\n        defaultLanguage TEXT NOT NULL,\n        parentId INTEGER,\n        isOpen INTEGER NOT NULL,\n        orderIndex INTEGER NOT NULL DEFAULT 0,\n        icon TEXT,\n        createdAt INTEGER NOT NULL,\n        updatedAt INTEGER NOT NULL,\n        FOREIGN KEY(parentId) REFERENCES folders(id)\n      )\n    `)\n\n    // Таблица для сниппетов\n    db.exec(`\n      CREATE TABLE IF NOT EXISTS snippets (\n        id INTEGER PRIMARY KEY AUTOINCREMENT,\n        name TEXT NOT NULL,\n        description TEXT,\n        folderId INTEGER,\n        isDeleted INTEGER NOT NULL,\n        isFavorites INTEGER NOT NULL,\n        createdAt INTEGER NOT NULL,\n        updatedAt INTEGER NOT NULL,\n        FOREIGN KEY(folderId) REFERENCES folders(id)\n      )\n    `)\n\n    // Таблица для содержимого (фрагментов) сниппетов\n    db.exec(`\n      CREATE TABLE IF NOT EXISTS snippet_contents (\n        id INTEGER PRIMARY KEY AUTOINCREMENT,\n        snippetId INTEGER NOT NULL,\n        label TEXT,\n        value TEXT,\n        language TEXT,\n        FOREIGN KEY(snippetId) REFERENCES snippets(id)\n      )\n    `)\n\n    // Таблица для тегов\n    db.exec(`\n      CREATE TABLE IF NOT EXISTS tags (\n        id INTEGER PRIMARY KEY AUTOINCREMENT,\n        name TEXT NOT NULL UNIQUE,\n        createdAt INTEGER NOT NULL,\n        updatedAt INTEGER NOT NULL\n      )\n    `)\n\n    // Таблица для связи сниппетов с тегами (многие ко многим)\n    db.exec(`\n      CREATE TABLE IF NOT EXISTS snippet_tags (\n        snippetId INTEGER NOT NULL,\n        tagId INTEGER NOT NULL,\n        PRIMARY KEY(snippetId, tagId),\n        FOREIGN KEY(snippetId) REFERENCES snippets(id),\n        FOREIGN KEY(tagId) REFERENCES tags(id)\n      )\n    `)\n\n    return db\n  }\n  catch (error) {\n    log('Database initialization failed', error)\n    throw error\n  }\n}\n\nexport function reloadDB() {\n  try {\n    // Закрываем текущую базу данных, если она открыта\n    if (db) {\n      db.close()\n      db = null\n      // eslint-disable-next-line no-console\n      console.log('Current database has been closed')\n    }\n\n    // Определяем путь к новой базе данных\n    const dbPath = `${store.preferences.get('storagePath')}/${DB_NAME}`\n\n    // Создаем новое соединение с базой данных\n    db = new Database(dbPath, {\n      // eslint-disable-next-line no-console\n      verbose: isDev ? console.log : undefined,\n    })\n\n    db.pragma('journal_mode = WAL')\n    db.pragma('foreign_keys = ON')\n\n    // eslint-disable-next-line no-console\n    console.log(`Database successfully reloaded: ${dbPath}`)\n  }\n  catch (error) {\n    log('Error while reloading the database', error)\n    throw error\n  }\n}\n\nexport function clearDB() {\n  try {\n    const db = useDB()\n    const stmt = db.transaction(() => {\n      const tables = [\n        // Таблицы со внешними ключами должны быть первыми\n        'snippet_tags',\n        'snippet_contents',\n        'snippets',\n        // Остальные таблицы можно удалить в любом порядке\n        'tags',\n        'folders',\n      ]\n\n      for (const table of tables) {\n        if (tableExists(db, table)) {\n          db.prepare(`DELETE FROM ${table}`).run()\n        }\n      }\n\n      // Сброс автоинкремента — тоже только если таблица есть\n      if (tableExists(db, 'sqlite_sequence')) {\n        db.prepare('DELETE FROM sqlite_sequence').run()\n      }\n    })\n\n    stmt()\n  }\n  catch (error) {\n    log('Error while clearing the database', error)\n    throw error\n  }\n}\n\nexport async function moveDB(path: string) {\n  try {\n    const currentPath = `${store.preferences.get('storagePath')}/${DB_NAME}`\n    const newPath = `${path}/${DB_NAME}`\n\n    const isExists = await fs.exists(newPath)\n\n    if (isExists) {\n      throw new Error(`Database already exists at the new path: ${newPath}`)\n    }\n\n    if (db) {\n      db.close()\n      db = null\n    }\n\n    await fs.move(currentPath, newPath, { overwrite: true })\n    store.preferences.set('storagePath', path)\n\n    reloadDB()\n  }\n  catch (error) {\n    log('Error while moving the database', error)\n    throw error\n  }\n}\n\nexport async function createBackup(manual = false) {\n  try {\n    if (!isSqliteStorageEngine()) {\n      return null\n    }\n\n    const db = useDB()\n    const backupSettings = store.preferences.get('backup')\n\n    await fs.ensureDir(backupSettings.path)\n\n    const date = format(Date.now(), 'yyyy-MM-dd_HH-mm-ss-SSS')\n    const backupFileName = manual\n      ? `massCode-manual-backup-${date}.db`\n      : `massCode-backup-${date}.db`\n    const backupFilePath = path.join(backupSettings.path, backupFileName)\n\n    const stmt = db.prepare(`VACUUM INTO ?`)\n    stmt.run(backupFilePath)\n\n    store.preferences.set('backup.lastBackupTime', Date.now())\n\n    await cleanupOldBackups()\n\n    return backupFilePath\n  }\n  catch (error) {\n    log('Error creating database backup', error)\n    throw error\n  }\n}\n\nasync function cleanupOldBackups() {\n  try {\n    const backupSettings = store.preferences.get('backup')\n\n    const files = await fs.readdir(backupSettings.path)\n    const backupFiles = files\n      .filter(\n        file => file.startsWith('massCode-backup-') && file.endsWith('.db'),\n      )\n      .map(file => ({\n        name: file,\n        path: path.join(backupSettings.path, file),\n        stat: fs.statSync(path.join(backupSettings.path, file)),\n      }))\n      .sort((a, b) => b.stat.mtime.getTime() - a.stat.mtime.getTime())\n\n    if (backupFiles.length > backupSettings.maxBackups) {\n      const filesToDelete = backupFiles.slice(backupSettings.maxBackups)\n\n      for (const file of filesToDelete) {\n        await fs.remove(file.path)\n      }\n    }\n  }\n  catch (error) {\n    console.error('Error cleaning up old backups:', error)\n  }\n}\n\nexport async function deleteBackup(backupPath: string) {\n  await fs.remove(backupPath)\n}\n\nfunction shouldCreateBackup() {\n  if (!isSqliteStorageEngine()) {\n    return false\n  }\n\n  const backupSettings = store.preferences.get('backup')\n\n  if (!backupSettings.enabled) {\n    return false\n  }\n\n  const lastBackupTime = backupSettings.lastBackupTime\n\n  if (!lastBackupTime) {\n    return true // Если бекап никогда не создавался\n  }\n\n  const now = Date.now()\n  const intervalMs = backupSettings.interval * 60 * 60 * 1000 // Конвертируем часы в миллисекунды\n\n  return now - lastBackupTime >= intervalMs\n}\n\nexport async function startAutoBackup() {\n  try {\n    if (backupTimer) {\n      clearInterval(backupTimer)\n      backupTimer = null\n    }\n\n    if (!isSqliteStorageEngine()) {\n      return\n    }\n\n    const backupSettings = store.preferences.get('backup')\n\n    if (!backupSettings.enabled) {\n      return\n    }\n\n    if (shouldCreateBackup()) {\n      await createBackup()\n    }\n\n    const intervalMs = backupSettings.interval * 60 * 60 * 1000 // Конвертируем часы в миллисекунды\n\n    backupTimer = setInterval(async () => {\n      try {\n        if (shouldCreateBackup()) {\n          await createBackup()\n        }\n      }\n      catch (error) {\n        log('Error during scheduled backup', error)\n      }\n    }, intervalMs)\n  }\n  catch (error) {\n    log('Error starting auto backup', error)\n  }\n}\n\nexport function stopAutoBackup() {\n  if (backupTimer) {\n    clearInterval(backupTimer)\n    backupTimer = null\n  }\n}\n\nexport async function restoreFromBackup(backupFilePath: string) {\n  try {\n    const storagePath = store.preferences.get('storagePath')\n    const currentDbPath = path.join(storagePath, DB_NAME)\n\n    const backupExists = await fs.exists(backupFilePath)\n\n    if (!backupExists) {\n      throw new Error(`Backup file does not exist: ${backupFilePath}`)\n    }\n\n    if (db) {\n      db.close()\n      db = null\n    }\n\n    await fs.copy(backupFilePath, currentDbPath, { overwrite: true })\n\n    reloadDB()\n\n    console.warn(`Database restored from backup: ${backupFilePath}`)\n  }\n  catch (error) {\n    log('Error restoring database from backup', error)\n    throw error\n  }\n}\n\nexport async function getBackupList() {\n  try {\n    const backupSettings = store.preferences.get('backup')\n\n    if (!(await fs.exists(backupSettings.path))) {\n      return []\n    }\n\n    const files = await fs.readdir(backupSettings.path)\n    const backupFiles: Backup[] = []\n\n    for (const file of files) {\n      if (\n        file.startsWith('massCode-backup-')\n        || (file.startsWith('massCode-manual-backup-') && file.endsWith('.db'))\n      ) {\n        const filePath = path.join(backupSettings.path, file)\n        const stat = await fs.stat(filePath)\n\n        backupFiles.push({\n          name: file,\n          path: filePath,\n          size: stat.size,\n          createdAt: stat.mtime,\n        })\n      }\n    }\n\n    return backupFiles.sort(\n      (a, b) => b.createdAt.getTime() - a.createdAt.getTime(),\n    )\n  }\n  catch (error) {\n    log('Error getting backup list', error)\n    return []\n  }\n}\n\nexport async function moveBackupStorage(newPath: string) {\n  try {\n    const backupSettings = store.preferences.get('backup')\n\n    const newPathExists = await fs.exists(newPath)\n\n    if (!newPathExists) {\n      throw new Error(`Target directory does not exist: ${newPath}`)\n    }\n\n    const newPathStat = await fs.stat(newPath)\n\n    if (!newPathStat.isDirectory()) {\n      throw new Error(`Target path is not a directory: ${newPath}`)\n    }\n\n    const files = await fs.readdir(backupSettings.path)\n    const backupFiles = files.filter(\n      file =>\n        (file.startsWith('massCode-backup-')\n          || file.startsWith('massCode-manual-backup-'))\n        && file.endsWith('.db'),\n    )\n\n    for (const file of backupFiles) {\n      const sourcePath = path.join(backupSettings.path, file)\n      const targetPath = path.join(newPath, file)\n\n      await fs.move(sourcePath, targetPath, { overwrite: true })\n    }\n\n    store.preferences.set('backup.path', newPath)\n  }\n  catch (error) {\n    log('Error while moving backup storage', error)\n    throw error\n  }\n}\n"
  },
  {
    "path": "src/main/db/migrate.ts",
    "content": "// import type Database from 'better-sqlite3'\nimport type { JSONDB } from './types'\nimport { clearDB, useDB } from '.'\n\nexport function migrateJsonToSqlite(jsonData: JSONDB) {\n  return new Promise((resolve, reject) => {\n    try {\n      const db = useDB()\n      clearDB()\n\n      // Подготовленные выражения для вставки данных\n      const insertFolderStmt = db.prepare(`\n        INSERT INTO folders (name, defaultLanguage, parentId, isOpen, createdAt, updatedAt, icon, orderIndex)\n        VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n      `)\n\n      const updateFolderParentStmt = db.prepare(`\n        UPDATE folders SET parentId = ? WHERE id = ?\n      `)\n\n      const insertTagStmt = db.prepare(`\n        INSERT INTO tags (name, createdAt, updatedAt)\n        VALUES (?, ?, ?)\n      `)\n\n      const insertSnippetStmt = db.prepare(`\n        INSERT INTO snippets (name, description, folderId, isDeleted, isFavorites, createdAt, updatedAt)\n        VALUES (?, ?, ?, ?, ?, ?, ?)\n      `)\n\n      const insertSnippetContentStmt = db.prepare(`\n        INSERT INTO snippet_contents (snippetId, label, value, language)\n        VALUES (?, ?, ?, ?)\n      `)\n\n      const insertSnippetTagStmt = db.prepare(`\n        INSERT INTO snippet_tags (snippetId, tagId)\n        VALUES (?, ?)\n      `)\n\n      // Словари для сопоставления оригинальных string id с новыми числовыми id\n      const folderIdMap: Record<string, number> = {}\n      const tagIdMap: Record<string, number> = {}\n      const snippetIdMap: Record<string, number> = {}\n\n      // Транзакция для миграции данных\n      const transaction = db.transaction(() => {\n        // Миграция папок\n        jsonData.folders.forEach((folder) => {\n          const result = insertFolderStmt.run(\n            folder.name || 'Untitled Folder',\n            folder.defaultLanguage || 'plain_text',\n            null, // parentId обновим позже\n            folder.isOpen ? 1 : 0,\n            folder.createdAt || Date.now(),\n            folder.updatedAt || Date.now(),\n            folder.icon || null,\n            folder.index ?? 0,\n          )\n          folderIdMap[folder.id] = Number(result.lastInsertRowid)\n        })\n\n        // Обновляем поле parentId для папок, у которых оно задано\n        jsonData.folders.forEach((folder) => {\n          if (folder.parentId) {\n            const newId = folderIdMap[folder.id]\n            const parentNewId = folderIdMap[folder.parentId]\n            if (parentNewId) {\n              updateFolderParentStmt.run(parentNewId, newId)\n            }\n          }\n        })\n\n        // Миграция тегов\n        jsonData.tags.forEach((tag) => {\n          const result = insertTagStmt.run(\n            tag.name || 'Untitled Tag',\n            tag.createdAt || Date.now(),\n            tag.updatedAt || Date.now(),\n          )\n          tagIdMap[tag.id] = Number(result.lastInsertRowid)\n        })\n\n        // Миграция сниппетов, их содержимого и связей с тегами\n        jsonData.snippets.forEach((snippet) => {\n          // Определяем новый id папки для сниппета\n          const mappedFolderId = folderIdMap[snippet.folderId] || null\n          const result = insertSnippetStmt.run(\n            snippet.name || 'Untitled Snippet',\n            snippet.description || null,\n            mappedFolderId,\n            snippet.isDeleted ? 1 : 0,\n            snippet.isFavorites ? 1 : 0,\n            snippet.createdAt || Date.now(),\n            snippet.updatedAt || Date.now(),\n          )\n          const newSnippetId = Number(result.lastInsertRowid)\n          snippetIdMap[snippet.id] = newSnippetId\n\n          // Устанавливаем содержимое сниппета\n          snippet.content.forEach((content) => {\n            insertSnippetContentStmt.run(\n              newSnippetId,\n              content.label || null,\n              content.value || null,\n              content.language || null,\n            )\n          })\n\n          // Устанавливаем связи сниппета с тегами\n          if (snippet.tagsIds && snippet.tagsIds.length > 0) {\n            snippet.tagsIds.forEach((tagOrigId) => {\n              const mappedTagId = tagIdMap[tagOrigId]\n              if (mappedTagId) {\n                insertSnippetTagStmt.run(newSnippetId, mappedTagId)\n              }\n            })\n          }\n        })\n      })\n\n      transaction()\n      resolve(true)\n    }\n    catch (error) {\n      reject(error)\n    }\n  })\n}\n"
  },
  {
    "path": "src/main/db/types/index.ts",
    "content": "interface Folder {\n  id: string\n  name: string\n  defaultLanguage: string | null\n  parentId: string | null\n  isOpen: boolean\n  isSystem: boolean\n  index: number\n  createdAt: number\n  updatedAt: number\n  icon: string | null\n}\n\ninterface SnippetContent {\n  label: string\n  value: string\n  language: string\n}\n\ninterface Snippet {\n  id: string\n  name: string\n  content: SnippetContent[]\n  description: string | null\n  folderId: string\n  tagsIds: string[]\n  isDeleted: boolean\n  isFavorites: boolean\n  createdAt: number\n  updatedAt: number\n}\n\ninterface Tag {\n  id: string\n  name: string\n  createdAt: number\n  updatedAt: number\n}\n\nexport interface JSONDB {\n  folders: Folder[]\n  snippets: Snippet[]\n  tags: Tag[]\n}\n\nexport interface Backup {\n  name: string\n  path: string\n  size: number\n  createdAt: Date\n}\n"
  },
  {
    "path": "src/main/i18n/index.ts",
    "content": "import { lstatSync, readdirSync } from 'node:fs'\nimport { join } from 'node:path'\nimport i18next from 'i18next'\nimport Backend from 'i18next-fs-backend'\nimport { store } from '../store'\nimport { language } from './language'\n\nconst storedLng = store.preferences.get('language')\n\nconst lng\n  = storedLng && Object.keys(language).includes(storedLng) ? storedLng : 'en_US'\n\ni18next.use(Backend).init({\n  fallbackLng: 'en_US',\n  lng,\n  debug: false,\n  ns: ['devtools', 'menu', 'messages', 'preferences', 'special', 'ui'],\n  defaultNS: 'ui',\n  initImmediate: false,\n  preload: readdirSync(join(__dirname, './locales')).filter((fileName) => {\n    const joinedPath = join(join(__dirname, './locales'), fileName)\n    const isDirectory = lstatSync(joinedPath).isDirectory()\n    return isDirectory\n  }),\n  backend: {\n    loadPath: join(__dirname, './locales/{{lng}}/{{ns}}.json'),\n  },\n})\n\ni18next.addResourceBundle(lng, 'language', language)\n\nexport default i18next\n"
  },
  {
    "path": "src/main/i18n/language.ts",
    "content": "export const language = {\n  cs_CZ: 'Čeština',\n  de_DE: 'Deutsch',\n  el_GR: 'Ελληνικά',\n  en_US: 'English',\n  es_ES: 'Español',\n  fa_IR: 'فارسی',\n  fr_FR: 'French',\n  ja_JP: '日本語',\n  pl_PL: 'Polski',\n  pt_BR: 'Português (Brasil)',\n  ro_RO: 'Română',\n  ru_RU: 'Русский',\n  tr_TR: 'Türkçe',\n  uk_UA: 'Українська',\n  zh_CN: '中文 (简体)',\n  zh_HK: '中文 (繁體 香港特別行政區)',\n  zh_TW: '中文 (繁體)',\n} as const\n"
  },
  {
    "path": "src/main/i18n/locales/README.md",
    "content": "# Locales\n\n## File Structure\n\nLocales are stored in directories named according to the [BCP 47 language tag standard](https://en.wikipedia.org/wiki/IETF_language_tag) which uses ISO 639 language codes and ISO 3166-1 country codes.\n\nWe use the format: `language_REGION` where:\n- `language` is a two-letter [ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (lowercase)\n- `REGION` is a two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1) (uppercase)\n\nExamples:\n- `en_US` - English (United States)\n- `en_GB` - English (United Kingdom)\n- `pt_BR` - Portuguese (Brazil)\n- `pt_PT` - Portuguese (Portugal)\n- `ru_RU` - Russian (Russia)\n- `zh_CN` - Chinese (China)\n\n### Main Files:\n\n- **ui.json** - User interface elements\n- **menu.json** - Application menus\n- **messages.json** - Dialogs, confirmation prompts, warnings, errors, and descriptions\n- **preferences.json** - Application settings and preferences\n- **devtools.json** - Developer tools and utilities\n\n## Organization Principles\n\n1. **Modularity**: Separate keys by functional blocks\n2. **Hierarchy**: Use nested objects to group related keys\n3. **Consistency**: Maintain the same structure across files\n4. **Context**: Place keys in context-appropriate files\n\n## Adding New Keys\n\nWhen adding new localization keys:\n\n1. Determine which functional block your key belongs to\n2. Choose the appropriate file based on the content type\n3. Follow the existing structure and naming conventions\n4. Add the key to all language packs\n\n## Adding New Languages\n\n1. Make a duplicate of the `en_US` (or other base language) directory, then rename it according to the language_REGION format (e.g., `ru_RU`, `pt_BR`)\n2. Translate all values in all files\n3. Add a new property to i18n where the property name corresponds to the directory name:\n\n```javascript\n// Property name should match directory name\nexport const language = {\n  en_US: 'English',\n  ru_RU: 'Русский',\n  pt_BR: 'Português (Brasil)',\n  // new language\n}\n```\n\n4. Create a PR\n\nWhen creating a PR, please follow this commit message format:\n```\nfeat(i18n): add <language_code> translation\n```\n\nFor example:\n```\nfeat(i18n): add zh_CN translation\nfix(i18n): pt_BR translation\n```\n\n## Translation Guidelines\n\n1. Preserve the original formatting and placeholders (e.g., `{{count}}`, `{{name}}`)\n2. Consider the context in which the phrase is used\n3. Maintain a consistent style and terminology throughout the translation\n4. Verify that your translation fits the UI components (text length, line breaks)\n5. For narrow navigation areas such as the space rail, keep product labels short and stable. If a locale would make the label too long, it is acceptable to omit that locale-specific label and rely on the `en_US` fallback while adding localized tooltip keys instead.\n"
  },
  {
    "path": "src/main/i18n/locales/cs_CZ/devtools.json",
    "content": "{\n  \"label\": \"Vývojářské nástroje\",\n  \"generators\": {\n    \"label\": \"Generátory\",\n    \"lorem\": {\n      \"label\": \"Generátor Lorem Ipsum\",\n      \"description\": \"Generovat zástupný text\",\n      \"selectType\": \"Vybrat typ\",\n      \"maxCount\": \"Max {{count}}\",\n      \"types\": {\n        \"words\": \"Slova\",\n        \"sentences\": \"Věty\",\n        \"paragraphs\": \"Odstavce\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON generátor\",\n      \"description\": \"Generovat náhodná JSON data s různými typy polí\",\n      \"fields\": \"Pole\",\n      \"fieldName\": \"Název pole\",\n      \"selectType\": \"Vybrat typ\",\n      \"addField\": \"Přidat pole\",\n      \"rowCount\": \"Počet řádků\",\n      \"maxRows\": \"Max 1000\",\n      \"categories\": {\n        \"general\": \"Obecné\",\n        \"person\": \"Osoba\",\n        \"internet\": \"Internet\",\n        \"location\": \"Umístění\",\n        \"finance\": \"Finance\",\n        \"commerce\": \"Obchod\",\n        \"company\": \"Společnost\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Datum\",\n        \"number\": \"Číslo\",\n        \"phone\": \"Telefon\",\n        \"image\": \"Obrázek\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Číslo řádku\",\n        \"firstName\": \"Křestní jméno\",\n        \"lastName\": \"Příjmení\",\n        \"fullName\": \"Celé jméno\",\n        \"gender\": \"Pohlaví\",\n        \"jobTitle\": \"Pracovní pozice\",\n        \"email\": \"E-mailová adresa\",\n        \"username\": \"Uživatelské jméno\",\n        \"password\": \"Heslo\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP adresa v4\",\n        \"ipv6\": \"IP adresa v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Město\",\n        \"country\": \"Země\",\n        \"streetAddress\": \"Adresa\",\n        \"zipCode\": \"PSČ\",\n        \"latitude\": \"Zeměpisná šířka\",\n        \"longitude\": \"Zeměpisná délka\",\n        \"amount\": \"Částka\",\n        \"currencyCode\": \"Kód měny\",\n        \"creditCardNumber\": \"Číslo kreditní karty\",\n        \"productName\": \"Název produktu\",\n        \"price\": \"Cena\",\n        \"department\": \"Oddělení\",\n        \"companyName\": \"Název společnosti\",\n        \"catchPhrase\": \"Slogan\",\n        \"word\": \"Slovo\",\n        \"sentence\": \"Věta\",\n        \"paragraph\": \"Odstavec\",\n        \"past\": \"Minulé datum\",\n        \"future\": \"Budoucí datum\",\n        \"recent\": \"Nedávné datum\",\n        \"birthdate\": \"Datum narození\",\n        \"int\": \"Celé číslo\",\n        \"float\": \"Desetinné číslo\",\n        \"boolean\": \"Boolean\",\n        \"phoneNumber\": \"Telefonní číslo\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL avatara\",\n        \"imageUrl\": \"URL obrázku\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Převodníky\",\n    \"caseConverter\": {\n      \"label\": \"Převodník velikosti písmen\",\n      \"description\": \"Transformace textu do různých velikostí písmen\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Text na Unicode\",\n      \"description\": \"Převod textu na Unicode a naopak\",\n      \"modes\": {\n        \"textToUnicode\": \"Text → Unicode\",\n        \"unicodeToText\": \"Unicode → Text\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Text na ASCII Binary\",\n      \"description\": \"Převod textu na ASCII binary a naopak\",\n      \"modes\": {\n        \"textToAscii\": \"Text → ASCII\",\n        \"asciiToText\": \"ASCII → Text\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Kódování nebo dekódování textu do Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Text → Base64\",\n        \"base64ToText\": \"Base64 → Text\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON na YAML\",\n      \"description\": \"Převod JSON na YAML a naopak\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON na TOML\",\n      \"description\": \"Převod JSON na TOML a naopak\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON na XML\",\n      \"description\": \"Převod JSON na XML a naopak\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Převodník barev\",\n      \"description\": \"Převod barev mezi různými formáty\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Kryptografie / Bezpečnost\",\n    \"hash\": {\n      \"label\": \"Generátor hash\",\n      \"description\": \"Generování hashů z textu\"\n    },\n    \"hmac\": {\n      \"label\": \"Generátor HMAC\",\n      \"description\": \"Generování autentizačního kódu zprávy založeného na hash (HMAC) složeného z klíče a zprávy\"\n    },\n    \"password\": {\n      \"label\": \"Generátor hesel\",\n      \"description\": \"Generování bezpečného hesla\"\n    },\n    \"uuid\": {\n      \"label\": \"Generátor UUID\",\n      \"description\": \"Generování univerzálního jedinečného identifikátoru (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Web\",\n    \"urlParser\": {\n      \"label\": \"Parser URL\",\n      \"description\": \"Parsování URL na komponenty\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Kódování nebo dekódování URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Převod textu na URL-přátelský slug\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Vstup\",\n    \"output\": \"Výstup\",\n    \"inputString\": \"Vstupní řetězec\",\n    \"outputString\": \"Výstupní řetězec\",\n    \"inputUrl\": \"Vstupní URL\",\n    \"outputUrl\": \"Výstupní URL\",\n    \"parsedUrl\": \"Parsovaná URL\",\n    \"splitQueryString\": \"Rozdělit Query String\",\n    \"key\": \"Klíč\",\n    \"value\": \"Hodnota\",\n    \"component\": \"Komponenta\",\n    \"result\": \"Výsledek\",\n    \"secretKey\": \"Tajný klíč\",\n    \"algorithm\": \"Algoritmus\",\n    \"version\": \"Verze\",\n    \"amount\": \"Množství\",\n    \"type\": \"Typ\",\n    \"length\": \"Délka\",\n    \"options\": \"Možnosti\",\n    \"numbers\": \"Čísla\",\n    \"symbols\": \"Symboly\",\n    \"lowercase\": \"Malá písmena\",\n    \"uppercase\": \"Velká písmena\",\n    \"placeholder\": {\n      \"text\": \"Zadejte text\",\n      \"value\": \"Zadejte hodnotu\",\n      \"secretKey\": \"Zadejte tajný klíč\",\n      \"url\": \"Zadejte URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/cs_CZ/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Nastavení\",\n    \"devtools\": \"Vývojářské nástroje\",\n    \"update\": \"Zkontrolovat aktualizace...\",\n    \"quit\": \"Ukončit massCode\",\n    \"about\": \"O aplikaci massCode\",\n    \"hide\": \"Skrýt massCode\"\n  },\n  \"help\": {\n    \"label\": \"Nápověda\",\n    \"website\": \"Webové stránky\",\n    \"documentation\": \"Dokumentace\",\n    \"viewInGitHub\": \"Zobrazit na GitHubu\",\n    \"changeLog\": \"Seznam změn\",\n    \"reportIssue\": \"Nahlásit problém\",\n    \"giveStar\": \"Dát hvězdičku\",\n    \"extension\": {\n      \"vscode\": \"VS Code rozšíření\",\n      \"raycast\": \"Raycast rozšíření\",\n      \"alfred\": \"Alfred rozšíření\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Přispět na Open Collective\",\n      \"payPal\": \"Přispět přes PayPal\",\n      \"gumroad\": \"Přispět přes Gumroad (Visa, Mastercard, atd.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Přepnout vývojářské nástroje\",\n    \"links\": {\n      \"snippets\": \"Kolekce snippetů\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Upravit\",\n    \"find\": \"Najít\"\n  },\n  \"view\": {\n    \"label\": \"Zobrazení\",\n    \"sortBy\": {\n      \"label\": \"Seřadit snippety podle\",\n      \"dateModified\": \"Data úpravy\",\n      \"dateCreated\": \"Data vytvoření\",\n      \"name\": \"Názvu\"\n    },\n    \"compactMode\": \"Kompaktní režim\",\n    \"showSidebar\": \"Zobrazit/skrýt postranní panel\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"copy\": \"Kopírovat snippet do schránky\",\n    \"format\": \"Formátovat\",\n    \"previewCode\": \"Náhled kódu\",\n    \"previewScreenshot\": \"Náhled snímku obrazovky\",\n    \"previewJson\": \"Náhled JSON\",\n    \"fontSizeIncrease\": \"Zvětšit velikost písma\",\n    \"fontSizeDecrease\": \"Zmenšit velikost písma\",\n    \"fontSizeReset\": \"Obnovit velikost písma\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Prezentační režim\",\n    \"preview\": \"Náhled\",\n    \"previewMarkdown\": \"Náhled Markdownu\",\n    \"previewMindmap\": \"Náhled myšlenkové mapy\"\n  },\n  \"history\": {\n    \"label\": \"Historie\",\n    \"back\": \"Zpět\",\n    \"forward\": \"Vpřed\"\n  },\n  \"devtools\": {\n    \"label\": \"Vývojářské nástroje\"\n  },\n  \"window\": {\n    \"label\": \"Okno\",\n    \"minimize\": \"Minimalizovat\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/cs_CZ/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Opravdu chcete smazat \\\"{{name}}\\\"?\",\n    \"deletePermanently\": \"Opravdu chcete trvale smazat \\\"{{name}}\\\"?\",\n    \"deleteConfirmMultipleSnippets\": \"Opravdu chcete trvale smazat {{count}} vybraných snippetů?\",\n    \"emptyTrash\": \"Opravdu chcete trvale smazat všechny snippety v Koši?\",\n    \"clearDb\": \"Opravdu chcete vymazat databázi?\",\n    \"migrateDb\": [\n      \"Opravdu chcete provést migraci?\",\n      \"Během migrace bude současná knihovna přepsána.\"\n    ],\n    \"backup\": {\n      \"restore\": \"Opravdu chcete obnovit ze zálohy?\",\n      \"delete\": \"Opravdu chcete smazat tuto zálohu?\"\n    }\n  },\n  \"success\": {\n    \"copied\": \"Zkopírováno do schránky\",\n    \"migrate\": \"Databáze byla úspěšně migrována.\",\n    \"backup\": {\n      \"created\": \"Záloha byla úspěšně vytvořena.\",\n      \"restored\": \"Záloha byla úspěšně obnovena.\",\n      \"deleted\": \"Záloha byla úspěšně smazána.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Tuto akci nelze vrátit zpět.\",\n    \"allSnippetsMoveToTrash\": \"Všechny snippety v této složce budou přesunuty do koše.\",\n    \"deleteTag\": \"Toto také způsobí odstranění tohoto tagu ze všech snippetů.\",\n    \"createDb\": \"Prosím vyberte jinou složku\",\n    \"clearDb\": \"Toto trvale smaže všechny Snippety, Složky a Tagy z databáze.\",\n    \"htmlCssPreview\": \"Přidejte HTML fragment pro zobrazení výsledku. Přidejte CSS pro stylování a JavaScript pro interaktivitu.\",\n    \"codeBlockRenderer\": [\n      \"Při použití Codemirror musí jazyk nastavený pro blok kódu odpovídat jedné z hodnot\",\n      \"languages\"\n    ]\n  },\n  \"error\": {\n    \"backup\": \"Operace zálohování selhala\"\n  },\n  \"description\": {\n    \"storage\": \"Pro použití synchronizačních služeb jako iCloud Drive, Google Drive nebo Dropbox jednoduše přesuňte úložiště do odpovídajících synchronizovaných složek\",\n    \"migrate\": {\n      \"fromV3\": \"Pro migraci z massCode v3 vyberte složku obsahující JSON soubor.\",\n      \"fromSnippetsLab\": \"Pro migraci ze SnippetsLab vyberte JSON soubor.\",\n      \"snippetsLabLimitations\": [\n        \"Některá omezení. Během migrace ze SnippetsLab:\",\n        \"Všechny složky budou na první úrovni, protože JSON soubor (pod v2.1) nepodporuje vnořené složky.\",\n        \"Snippety s nepodporovanými jazyky budou nastaveny na výchozí Plain Text.\"\n      ]\n    },\n    \"language\": \"Pro aplikaci změny jazyka je nutné aplikaci znovu načíst.\",\n    \"backup\": {\n      \"manual\": \"Manuální záloha nebude automaticky smazána, když počet záloh překročí limit.\"\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Ahoj, tady Anton 👋<br><br>\\nDěkuji za používání massCode. Pokud vám tato aplikace přijde užitečná, prosím {{-tagStart}}přispějte{{-tagEnd}}. Bude mě to motivovat k dalšímu vývoji projektu.\",\n    \"unsponsored\": \"Bez sponzorů\"\n  },\n  \"update\": {\n    \"available\": \"Verze {{newVersion}} je nyní k dispozici ke stažení.\\nVaše verze je {{oldVersion}}.\",\n    \"noAvailable\": \"V současné době nejsou k dispozici žádné aktualizace.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/cs_CZ/preferences.json",
    "content": "{\n  \"label\": \"Předvolby\",\n  \"storage\": {\n    \"section\": {\n      \"main\": \"Hlavní\",\n      \"backup\": \"Záloha\"\n    },\n    \"label\": \"Úložiště\",\n    \"migrate\": \"Migrovat\",\n    \"count\": \"Počet\",\n    \"clearDatabase\": \"Vymazat databázi\",\n    \"backup\": {\n      \"label\": \"Záloha\",\n      \"enabled\": \"Automatická záloha\",\n      \"interval\": {\n        \"label\": \"Interval\",\n        \"1\": \"Každou hodinu\",\n        \"6\": \"Každých 6 hodin\",\n        \"12\": \"Každých 12 hodin\",\n        \"24\": \"Každých 24 hodin\"\n      },\n      \"maxBackups\": \"Maximální počet záloh\",\n      \"createNow\": \"Vytvořit zálohu nyní\",\n      \"restore\": \"Obnovit ze zálohy\",\n      \"list\": \"Seznam záloh\",\n      \"lastBackup\": \"Poslední záloha\",\n      \"noBackups\": \"Nebyly nalezeny žádné zálohy\"\n    }\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"fontSize\": \"Velikost písma\",\n    \"fontFamily\": \"Rodina písma\",\n    \"wrap\": {\n      \"label\": \"Zalamování\",\n      \"wordWrap\": \"Zalamování slov\",\n      \"off\": \"Vypnuto\"\n    },\n    \"tabSize\": \"Velikost tabulátoru\",\n    \"showInvisibles\": \"Zobrazit neviditelné znaky\",\n    \"highlightLine\": \"Zvýraznit řádek\",\n    \"highlightGutter\": \"Zvýraznit okraj\",\n    \"matchBrackets\": \"Párové závorky\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Koncová čárka\",\n        \"none\": \"Žádná\",\n        \"all\": \"Všude\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Středník\",\n      \"singleQuote\": \"Jednoduché uvozovky\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Vzhled\",\n    \"theme\": {\n      \"label\": \"Motiv\",\n      \"light\": \"Světlý\",\n      \"dark\": \"Tmavý\",\n      \"system\": \"Systémový\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Jazyk\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Renderer bloků kódu\"\n  },\n  \"api\": {\n    \"label\": \"API Port\",\n    \"port\": {\n      \"label\": \"API Port\",\n      \"description\": \"Číslo portu pro API server (vyžaduje restart aplikace). Platný rozsah: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/cs_CZ/ui.json",
    "content": "{\n  \"total\": \"Celkem\",\n  \"line\": \"Řádek\",\n  \"column\": \"Sloupec\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Cesta\",\n  \"button\": {\n    \"back\": \"Zpět\",\n    \"cancel\": \"Zrušit\",\n    \"clear\": \"Vymazat\",\n    \"confirm\": \"Potvrdit\",\n    \"copy\": \"Kopírovat\",\n    \"fit\": \"Přizpůsobit\",\n    \"generate\": \"Generovat\",\n    \"ok\": \"OK\",\n    \"revers\": \"Obrátit\",\n    \"saveAs\": \"Uložit jako\",\n    \"sort\": \"Seřadit\",\n    \"update\": [\"Přejít na GitHub\", \"OK\"],\n    \"zoomIn\": \"Přiblížit\",\n    \"zoomOut\": \"Oddálit\",\n    \"darkMode\": \"Tmavý režim\",\n    \"toggleDarkMode\": \"Přepnout tmavý režim\",\n    \"background\": \"Pozadí\",\n    \"goToDownload\": \"Přejít ke stažení\",\n    \"refreshPreview\": \"Obnovit náhled\",\n    \"laserPointer\": \"Laserové ukazovátko\",\n    \"fullscreen\": \"Celá obrazovka\",\n    \"prev\": \"Předchozí\",\n    \"next\": \"Další\"\n  },\n  \"action\": {\n    \"close\": \"Zavřít\",\n    \"defaultLanguage\": \"Výchozí jazyk\",\n    \"duplicate\": \"Duplikovat\",\n    \"rename\": \"Přejmenovat\",\n    \"restore\": \"Obnovit\",\n    \"setCustomIcon\": \"Nastavit ikonu\",\n    \"removeCustomIcon\": \"Odebrat ikonu\",\n    \"show\": \"Zobrazit\",\n    \"hide\": \"Skrýt\",\n    \"showSidebar\": \"Zobrazit postranní panel\",\n    \"hideSidebar\": \"Skrýt postranní panel\",\n    \"new\": {\n      \"storage\": \"Nové úložiště\",\n      \"folder\": \"Nová složka\",\n      \"snippet\": \"Nový snippet\",\n      \"fragment\": \"Nový fragment\"\n    },\n    \"add\": {\n      \"description\": \"Přidat popis\",\n      \"tag\": \"Přidat tag\",\n      \"toFavorites\": \"Přidat do oblíbených\"\n    },\n    \"open\": {\n      \"storage\": \"Otevřít úložiště\"\n    },\n    \"move\": {\n      \"storage\": \"Přesunout úložiště\",\n      \"toTrash\": \"Přesunout do koše\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Odebrat z oblíbených\"\n    },\n    \"reload\": {\n      \"storage\": \"Znovu načíst úložiště\",\n      \"app\": \"Znovu načíst aplikaci\"\n    },\n    \"delete\": {\n      \"common\": \"Smazat\",\n      \"now\": \"Smazat nyní\",\n      \"allData\": \"Smazat všechna data\",\n      \"trash\": \"Vyprázdnit koš\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Ze SnippetsLab\",\n      \"fromV3\": \"Z massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Exportovat do HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Kopírovat odkaz na snippet\"\n    },\n    \"backup\": {\n      \"create\": \"Vytvořit zálohu\",\n      \"restore\": \"Obnovit ze zálohy\",\n      \"delete\": \"Smazat zálohu\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Doručené\",\n    \"favorites\": \"Oblíbené\",\n    \"allSnippets\": \"Všechny snippety\",\n    \"trash\": \"Koš\",\n    \"folders\": \"Složky\",\n    \"library\": \"Knihovna\",\n    \"tags\": \"Tagy\"\n  },\n  \"folder\": {\n    \"untitled\": \"Nepojmenovaná složka\",\n    \"plural\": \"Složky\",\n    \"collapseAll\": \"Sbalit vše\",\n    \"expandAll\": \"Rozbalit vše\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Nepojmenovaný snippet\",\n    \"plural\": \"Snippety\",\n    \"emptyName\": \"Zadejte název snippetu\",\n    \"selectedMultiple\": \"{{count}} vybraných snippetů\",\n    \"noSelected\": \"Není vybrán žádný snippet\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Přidejte tagy ke snippetům, aby se zde zobrazily\",\n    \"emptyFoldersList\": \"Žádné složky\",\n    \"emptySnippetsList\": \"Žádné snippety\",\n    \"search\": \"Hledat\",\n    \"addTag\": \"Přidat tag\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/de_DE/devtools.json",
    "content": "{\n  \"label\": \"Entwicklertools\",\n  \"generators\": {\n    \"label\": \"Generatoren\",\n    \"lorem\": {\n      \"label\": \"Lorem Ipsum Generator\",\n      \"description\": \"Platzhalter-Text generieren\",\n      \"selectType\": \"Typ auswählen\",\n      \"maxCount\": \"Max {{count}}\",\n      \"types\": {\n        \"words\": \"Wörter\",\n        \"sentences\": \"Sätze\",\n        \"paragraphs\": \"Absätze\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON Generator\",\n      \"description\": \"Zufällige JSON-Daten mit verschiedenen Feldtypen generieren\",\n      \"fields\": \"Felder\",\n      \"fieldName\": \"Feldname\",\n      \"selectType\": \"Typ auswählen\",\n      \"addField\": \"Feld hinzufügen\",\n      \"rowCount\": \"Anzahl der Zeilen\",\n      \"maxRows\": \"Max 1000\",\n      \"categories\": {\n        \"general\": \"Allgemein\",\n        \"person\": \"Person\",\n        \"internet\": \"Internet\",\n        \"location\": \"Standort\",\n        \"finance\": \"Finanzen\",\n        \"commerce\": \"Handel\",\n        \"company\": \"Unternehmen\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Datum\",\n        \"number\": \"Zahl\",\n        \"phone\": \"Telefon\",\n        \"image\": \"Bild\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Zeilennummer\",\n        \"firstName\": \"Vorname\",\n        \"lastName\": \"Nachname\",\n        \"fullName\": \"Vollständiger Name\",\n        \"gender\": \"Geschlecht\",\n        \"jobTitle\": \"Berufsbezeichnung\",\n        \"email\": \"E-Mail-Adresse\",\n        \"username\": \"Benutzername\",\n        \"password\": \"Passwort\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP-Adresse v4\",\n        \"ipv6\": \"IP-Adresse v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Stadt\",\n        \"country\": \"Land\",\n        \"streetAddress\": \"Straßenadresse\",\n        \"zipCode\": \"Postleitzahl\",\n        \"latitude\": \"Breitengrad\",\n        \"longitude\": \"Längengrad\",\n        \"amount\": \"Betrag\",\n        \"currencyCode\": \"Währungscode\",\n        \"creditCardNumber\": \"Kreditkartennummer\",\n        \"productName\": \"Produktname\",\n        \"price\": \"Preis\",\n        \"department\": \"Abteilung\",\n        \"companyName\": \"Firmenname\",\n        \"catchPhrase\": \"Slogan\",\n        \"word\": \"Wort\",\n        \"sentence\": \"Satz\",\n        \"paragraph\": \"Absatz\",\n        \"past\": \"Vergangenes Datum\",\n        \"future\": \"Zukünftiges Datum\",\n        \"recent\": \"Kürzliches Datum\",\n        \"birthdate\": \"Geburtsdatum\",\n        \"int\": \"Ganzzahl\",\n        \"float\": \"Gleitkommazahl\",\n        \"boolean\": \"Boolesch\",\n        \"phoneNumber\": \"Telefonnummer\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"Avatar-URL\",\n        \"imageUrl\": \"Bild-URL\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Konverter\",\n    \"caseConverter\": {\n      \"label\": \"Case Converter\",\n      \"description\": \"Text in verschiedene Schreibweisen umwandeln\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Text zu Unicode\",\n      \"description\": \"Text zu Unicode konvertieren und umgekehrt\",\n      \"modes\": {\n        \"textToUnicode\": \"Text → Unicode\",\n        \"unicodeToText\": \"Unicode → Text\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Text zu ASCII Binary\",\n      \"description\": \"Text zu ASCII Binary konvertieren und umgekehrt\",\n      \"modes\": {\n        \"textToAscii\": \"Text → ASCII\",\n        \"asciiToText\": \"ASCII → Text\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Text zu Base64 kodieren oder dekodieren\",\n      \"modes\": {\n        \"textToBase64\": \"Text → Base64\",\n        \"base64ToText\": \"Base64 → Text\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON zu YAML\",\n      \"description\": \"JSON zu YAML konvertieren und umgekehrt\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON zu TOML\",\n      \"description\": \"JSON zu TOML konvertieren und umgekehrt\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON zu XML\",\n      \"description\": \"JSON zu XML konvertieren und umgekehrt\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Farbkonverter\",\n      \"description\": \"Farben zwischen verschiedenen Formaten konvertieren\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Kryptographie / Sicherheit\",\n    \"hash\": {\n      \"label\": \"Hash Generator\",\n      \"description\": \"Hashes aus Text generieren\"\n    },\n    \"hmac\": {\n      \"label\": \"HMAC Generator\",\n      \"description\": \"Hash-basierten Nachrichtenauthentifizierungscode (HMAC) aus Schlüssel und Nachricht generieren\"\n    },\n    \"password\": {\n      \"label\": \"Passwort Generator\",\n      \"description\": \"Sicheres Passwort generieren\"\n    },\n    \"uuid\": {\n      \"label\": \"UUID Generator\",\n      \"description\": \"Universell eindeutige Kennung (UUID) generieren\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Web\",\n    \"urlParser\": {\n      \"label\": \"URL Parser\",\n      \"description\": \"URL in ihre Komponenten zerlegen\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"URL kodieren oder dekodieren\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Text in URL-freundlichen Slug umwandeln\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Eingabe\",\n    \"output\": \"Ausgabe\",\n    \"inputString\": \"Eingabestring\",\n    \"outputString\": \"Ausgabestring\",\n    \"inputUrl\": \"Eingabe-URL\",\n    \"outputUrl\": \"Ausgabe-URL\",\n    \"parsedUrl\": \"Geparste URL\",\n    \"splitQueryString\": \"Query String aufteilen\",\n    \"key\": \"Schlüssel\",\n    \"value\": \"Wert\",\n    \"component\": \"Komponente\",\n    \"result\": \"Ergebnis\",\n    \"secretKey\": \"Geheimer Schlüssel\",\n    \"algorithm\": \"Algorithmus\",\n    \"version\": \"Version\",\n    \"amount\": \"Anzahl\",\n    \"type\": \"Typ\",\n    \"length\": \"Länge\",\n    \"options\": \"Optionen\",\n    \"numbers\": \"Zahlen\",\n    \"symbols\": \"Symbole\",\n    \"lowercase\": \"Kleinbuchstaben\",\n    \"uppercase\": \"Großbuchstaben\",\n    \"placeholder\": {\n      \"text\": \"Text eingeben\",\n      \"value\": \"Wert eingeben\",\n      \"secretKey\": \"Geheimen Schlüssel eingeben\",\n      \"url\": \"URL eingeben\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/de_DE/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Einstellungen\",\n    \"devtools\": \"Entwicklerwerkzeuge\",\n    \"update\": \"Nach Updates suchen...\",\n    \"quit\": \"massCode beenden\",\n    \"about\": \"Über massCode\",\n    \"hide\": \"massCode ausblenden\"\n  },\n  \"help\": {\n    \"label\": \"Hilfe\",\n    \"website\": \"Website\",\n    \"documentation\": \"Dokumentation\",\n    \"viewInGitHub\": \"In GitHub anzeigen\",\n    \"changeLog\": \"Änderungsprotokoll\",\n    \"reportIssue\": \"Problem melden\",\n    \"giveStar\": \"Stern geben\",\n    \"extension\": {\n      \"vscode\": \"VS Code Erweiterung\",\n      \"raycast\": \"Raycast Erweiterung\",\n      \"alfred\": \"Alfred Erweiterung\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Über Open Collective spenden\",\n      \"payPal\": \"Über PayPal spenden\",\n      \"gumroad\": \"Über Gumroad spenden (Visa, Mastercard, etc.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Entwicklerwerkzeuge ein-/ausblenden\",\n    \"links\": {\n      \"snippets\": \"Snippet-Sammlung\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Bearbeiten\",\n    \"find\": \"Suchen\"\n  },\n  \"view\": {\n    \"label\": \"Ansicht\",\n    \"sortBy\": {\n      \"label\": \"Snippets sortieren nach\",\n      \"dateModified\": \"Änderungsdatum\",\n      \"dateCreated\": \"Erstellungsdatum\",\n      \"name\": \"Name\"\n    },\n    \"compactMode\": \"Kompakter Modus\",\n    \"showSidebar\": \"Seitenleiste ein-/ausblenden\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"copy\": \"Snippet in Zwischenablage kopieren\",\n    \"format\": \"Formatieren\",\n    \"previewCode\": \"Code-Vorschau\",\n    \"previewScreenshot\": \"Screenshot-Vorschau\",\n    \"previewJson\": \"JSON-Vorschau\",\n    \"fontSizeIncrease\": \"Schriftgröße erhöhen\",\n    \"fontSizeDecrease\": \"Schriftgröße verringern\",\n    \"fontSizeReset\": \"Schriftgröße zurücksetzen\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Präsentationsmodus\",\n    \"preview\": \"Vorschau\",\n    \"previewMarkdown\": \"Markdown-Vorschau\",\n    \"previewMindmap\": \"Mindmap-Vorschau\"\n  },\n  \"history\": {\n    \"label\": \"Verlauf\",\n    \"back\": \"Zurück\",\n    \"forward\": \"Vorwärts\"\n  },\n  \"devtools\": {\n    \"label\": \"Entwicklerwerkzeuge\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/de_DE/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Sind Sie sicher, dass Sie \\\"{{name}}\\\" löschen möchten?\",\n    \"deletePermanently\": \"Sind Sie sicher, dass Sie \\\"{{name}}\\\" endgültig löschen möchten?\",\n    \"deleteConfirmMultipleSnippets\": \"Sind Sie sicher, dass Sie {{count}} ausgewählte Snippets endgültig löschen möchten?\",\n    \"emptyTrash\": \"Sind Sie sicher, dass Sie alle Snippets im Papierkorb endgültig löschen möchten?\",\n    \"clearDb\": \"Sind Sie sicher, dass Sie die Datenbank leeren möchten?\",\n    \"migrateDb\": [\n      \"Sind Sie sicher, dass Sie migrieren möchten?\",\n      \"Während der Migration wird die aktuelle Bibliothek überschrieben.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"In die Zwischenablage kopiert\",\n    \"migrate\": \"Datenbank erfolgreich migriert.\",\n    \"backup\": {\n      \"created\": \"Sicherung erfolgreich erstellt.\",\n      \"restored\": \"Sicherung erfolgreich wiederhergestellt.\",\n      \"deleted\": \"Sicherung erfolgreich gelöscht.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Diese Aktion kann nicht rückgängig gemacht werden.\",\n    \"allSnippetsMoveToTrash\": \"Alle Snippets in diesem Ordner werden in den Papierkorb verschoben.\",\n    \"deleteTag\": \"Dies führt auch dazu, dass dieser Tag von allen Snippets entfernt wird.\",\n    \"createDb\": \"Bitte wählen Sie einen anderen Ordner\",\n    \"clearDb\": \"Dadurch werden alle Snippets, Ordner und Tags dauerhaft aus der Datenbank gelöscht.\",\n    \"htmlCssPreview\": \"Fügen Sie ein HTML-Fragment hinzu, um das Ergebnis zu sehen. Fügen Sie CSS für das Styling und JavaScript für Interaktivität hinzu.\",\n    \"codeBlockRenderer\": [\n      \"Bei Verwendung von Codemirror muss die für den Codeblock einzustellende Sprache einem der Werte der\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"Um Sync-Dienste wie iCloud Drive, Google Drive oder Dropbox zu nutzen, verschieben Sie den Speicher einfach in die entsprechenden synchronisierten Ordner\",\n    \"migrate\": {\n      \"fromV3\": \"Um von massCode v3 zu migrieren, wählen Sie den Ordner mit der JSON-Datei aus.\",\n      \"fromSnippetsLab\": \"Um von SnippetsLab zu migrieren, wählen Sie die JSON-Datei aus.\",\n      \"snippetsLabLimitations\": [\n        \"Einige Einschränkungen bei der Migration von SnippetsLab:\",\n        \"Alle Ordner werden auf der ersten Ebene sein, da die JSON-Datei (unter v2.1) keine verschachtelten Ordner darstellt.\",\n        \"Snippets mit nicht unterstützten Sprachen werden auf Standard Plain Text gesetzt.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Hallo, hier ist Anton 👋<br><br>\\nDanke, dass Sie massCode nutzen. Wenn Sie diese App nützlich finden, bitte {{-tagStart}}spenden{{-tagEnd}} Sie. Es wird mich inspirieren, die Entwicklung des Projekts fortzusetzen.\",\n    \"unsponsored\": \"Nicht gesponsert\"\n  },\n  \"update\": {\n    \"available\": \"Version {{newVersion}} steht jetzt zum Download bereit.\\nIhre Version ist {{oldVersion}}.\",\n    \"noAvailable\": \"Derzeit sind keine Updates verfügbar.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/de_DE/preferences.json",
    "content": "{\n  \"label\": \"Einstellungen\",\n  \"storage\": {\n    \"label\": \"Speicher\",\n    \"migrate\": \"Migrieren\",\n    \"count\": \"Anzahl\",\n    \"clearDatabase\": \"Datenbank leeren\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"fontSize\": \"Schriftgröße\",\n    \"fontFamily\": \"Schriftart\",\n    \"wrap\": {\n      \"label\": \"Umbruch\",\n      \"wordWrap\": \"Zeilenumbruch\",\n      \"off\": \"Aus\"\n    },\n    \"tabSize\": \"Tabgröße\",\n    \"showInvisibles\": \"Unsichtbare Zeichen anzeigen\",\n    \"highlightLine\": \"Zeile hervorheben\",\n    \"highlightGutter\": \"Zeilennummern hervorheben\",\n    \"matchBrackets\": \"Klammern hervorheben\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Abschließendes Komma\",\n        \"none\": \"Keins\",\n        \"all\": \"Alle\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Semikolon\",\n      \"singleQuote\": \"Einfache Anführungszeichen\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Erscheinungsbild\",\n    \"theme\": {\n      \"label\": \"Theme\",\n      \"light\": \"Hell\",\n      \"dark\": \"Dunkel\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Sprache\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Code-Block Renderer\"\n  },\n  \"api\": {\n    \"label\": \"API-Port\",\n    \"port\": {\n      \"label\": \"API-Port\",\n      \"description\": \"Portnummer für den API-Server (erfordert Neustart der App). Gültiger Bereich: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/de_DE/ui.json",
    "content": "{\n  \"total\": \"Gesamt\",\n  \"line\": \"Zeile\",\n  \"column\": \"Spalte\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Pfad\",\n  \"button\": {\n    \"back\": \"Zurück\",\n    \"cancel\": \"Abbrechen\",\n    \"clear\": \"Löschen\",\n    \"confirm\": \"Bestätigen\",\n    \"copy\": \"Kopieren\",\n    \"fit\": \"Anpassen\",\n    \"generate\": \"Generieren\",\n    \"ok\": \"OK\",\n    \"revers\": \"Umkehren\",\n    \"saveAs\": \"Speichern unter\",\n    \"sort\": \"Sortieren\",\n    \"update\": [\"Zu GitHub\", \"OK\"],\n    \"zoomIn\": \"Vergrößern\",\n    \"zoomOut\": \"Verkleinern\",\n    \"darkMode\": \"Dunkler Modus\",\n    \"toggleDarkMode\": \"Dunkelmodus umschalten\",\n    \"background\": \"Hintergrund\",\n    \"goToDownload\": \"Zum Download\",\n    \"refreshPreview\": \"Vorschau aktualisieren\",\n    \"laserPointer\": \"Laserpointer\",\n    \"fullscreen\": \"Vollbild\",\n    \"prev\": \"Zurück\",\n    \"next\": \"Weiter\"\n  },\n  \"action\": {\n    \"close\": \"Schließen\",\n    \"defaultLanguage\": \"Standardsprache\",\n    \"duplicate\": \"Duplizieren\",\n    \"rename\": \"Umbenennen\",\n    \"restore\": \"Wiederherstellen\",\n    \"setCustomIcon\": \"Icon festlegen\",\n    \"removeCustomIcon\": \"Icon entfernen\",\n    \"show\": \"Anzeigen\",\n    \"hide\": \"Ausblenden\",\n    \"showSidebar\": \"Seitenleiste anzeigen\",\n    \"hideSidebar\": \"Seitenleiste ausblenden\",\n    \"new\": {\n      \"storage\": \"Neuer Speicher\",\n      \"folder\": \"Neuer Ordner\",\n      \"snippet\": \"Neues Snippet\",\n      \"fragment\": \"Neues Fragment\"\n    },\n    \"add\": {\n      \"description\": \"Beschreibung hinzufügen\",\n      \"tag\": \"Tag hinzufügen\",\n      \"toFavorites\": \"Zu Favoriten hinzufügen\"\n    },\n    \"open\": {\n      \"storage\": \"Speicher öffnen\"\n    },\n    \"move\": {\n      \"storage\": \"Speicher verschieben\",\n      \"toTrash\": \"In Papierkorb verschieben\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Aus Favoriten entfernen\"\n    },\n    \"reload\": {\n      \"storage\": \"Speicher neu laden\"\n    },\n    \"delete\": {\n      \"common\": \"Löschen\",\n      \"now\": \"Jetzt löschen\",\n      \"allData\": \"Alle Daten löschen\",\n      \"trash\": \"Papierkorb leeren\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Von SnippetsLab\",\n      \"fromV3\": \"Von massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Als HTML exportieren\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Snippet-Link kopieren\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Posteingang\",\n    \"favorites\": \"Favoriten\",\n    \"allSnippets\": \"Alle Snippets\",\n    \"trash\": \"Papierkorb\",\n    \"folders\": \"Ordner\",\n    \"library\": \"Bibliothek\",\n    \"tags\": \"Tags\"\n  },\n  \"folder\": {\n    \"untitled\": \"Unbenannter Ordner\",\n    \"plural\": \"Ordner\",\n    \"collapseAll\": \"Alle einklappen\",\n    \"expandAll\": \"Alle ausklappen\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Unbenanntes Snippet\",\n    \"plural\": \"Snippets\",\n    \"emptyName\": \"Snippet-Namen eingeben\",\n    \"selectedMultiple\": \"{{count}} Snippets ausgewählt\",\n    \"noSelected\": \"Kein Snippet ausgewählt\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Fügen Sie Tags zu Snippets hinzu, um sie hier zu sehen\",\n    \"emptyFoldersList\": \"Keine Ordner\",\n    \"emptySnippetsList\": \"Keine Snippets\",\n    \"search\": \"Suchen\",\n    \"addTag\": \"Tag hinzufügen\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/el_GR/devtools.json",
    "content": "{\n  \"label\": \"Εργαλεία Προγραμματιστή\",\n  \"generators\": {\n    \"label\": \"Γεννήτριες\",\n    \"lorem\": {\n      \"label\": \"Γεννήτρια Lorem Ipsum\",\n      \"description\": \"Δημιουργία κειμένου κράτησης θέσης\",\n      \"selectType\": \"Επιλέξτε τύπο\",\n      \"maxCount\": \"Μέγιστο {{count}}\",\n      \"types\": {\n        \"words\": \"Λέξεις\",\n        \"sentences\": \"Προτάσεις\",\n        \"paragraphs\": \"Παράγραφοι\"\n      }\n    },\n    \"json\": {\n      \"label\": \"Γεννήτρια JSON\",\n      \"description\": \"Δημιουργία τυχαίων δεδομένων JSON με διάφορους τύπους πεδίων\",\n      \"fields\": \"Πεδία\",\n      \"fieldName\": \"Όνομα πεδίου\",\n      \"selectType\": \"Επιλέξτε τύπο\",\n      \"addField\": \"Προσθήκη πεδίου\",\n      \"rowCount\": \"Αριθμός γραμμών\",\n      \"maxRows\": \"Μέγιστο 1000\",\n      \"categories\": {\n        \"general\": \"Γενικά\",\n        \"person\": \"Άτομο\",\n        \"internet\": \"Διαδίκτυο\",\n        \"location\": \"Τοποθεσία\",\n        \"finance\": \"Οικονομικά\",\n        \"commerce\": \"Εμπόριο\",\n        \"company\": \"Εταιρεία\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Ημερομηνία\",\n        \"number\": \"Αριθμός\",\n        \"phone\": \"Τηλέφωνο\",\n        \"image\": \"Εικόνα\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Αριθμός γραμμής\",\n        \"firstName\": \"Όνομα\",\n        \"lastName\": \"Επώνυμο\",\n        \"fullName\": \"Πλήρες όνομα\",\n        \"gender\": \"Φύλο\",\n        \"jobTitle\": \"Τίτλος εργασίας\",\n        \"email\": \"Διεύθυνση email\",\n        \"username\": \"Όνομα χρήστη\",\n        \"password\": \"Κωδικός πρόσβασης\",\n        \"url\": \"URL\",\n        \"ipv4\": \"Διεύθυνση IP v4\",\n        \"ipv6\": \"Διεύθυνση IP v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Πόλη\",\n        \"country\": \"Χώρα\",\n        \"streetAddress\": \"Διεύθυνση\",\n        \"zipCode\": \"Ταχυδρομικός κώδικας\",\n        \"latitude\": \"Γεωγραφικό πλάτος\",\n        \"longitude\": \"Γεωγραφικό μήκος\",\n        \"amount\": \"Ποσό\",\n        \"currencyCode\": \"Κωδικός νομίσματος\",\n        \"creditCardNumber\": \"Αριθμός πιστωτικής κάρτας\",\n        \"productName\": \"Όνομα προϊόντος\",\n        \"price\": \"Τιμή\",\n        \"department\": \"Τμήμα\",\n        \"companyName\": \"Όνομα εταιρείας\",\n        \"catchPhrase\": \"Σλόγκαν\",\n        \"word\": \"Λέξη\",\n        \"sentence\": \"Πρόταση\",\n        \"paragraph\": \"Παράγραφος\",\n        \"past\": \"Προηγούμενη ημερομηνία\",\n        \"future\": \"Μελλοντική ημερομηνία\",\n        \"recent\": \"Πρόσφατη ημερομηνία\",\n        \"birthdate\": \"Ημερομηνία γέννησης\",\n        \"int\": \"Ακέραιος\",\n        \"float\": \"Δεκαδικός\",\n        \"boolean\": \"Boolean\",\n        \"phoneNumber\": \"Αριθμός τηλεφώνου\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL avatar\",\n        \"imageUrl\": \"URL εικόνας\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Μετατροπείς\",\n    \"caseConverter\": {\n      \"label\": \"Μετατροπέας Κεφαλαίων\",\n      \"description\": \"Μετατροπή κειμένου σε διαφορετικές μορφές κεφαλαίων\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Κείμενο σε Unicode\",\n      \"description\": \"Μετατροπή κειμένου σε Unicode και αντίστροφα\",\n      \"modes\": {\n        \"textToUnicode\": \"Κείμενο → Unicode\",\n        \"unicodeToText\": \"Unicode → Κείμενο\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Κείμενο σε ASCII Binary\",\n      \"description\": \"Μετατροπή κειμένου σε ASCII binary και αντίστροφα\",\n      \"modes\": {\n        \"textToAscii\": \"Κείμενο → ASCII\",\n        \"asciiToText\": \"ASCII → Κείμενο\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Κωδικοποίηση ή αποκωδικοποίηση κειμένου σε Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Κείμενο → Base64\",\n        \"base64ToText\": \"Base64 → Κείμενο\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON σε YAML\",\n      \"description\": \"Μετατροπή JSON σε YAML και αντίστροφα\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON σε TOML\",\n      \"description\": \"Μετατροπή JSON σε TOML και αντίστροφα\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON σε XML\",\n      \"description\": \"Μετατροπή JSON σε XML και αντίστροφα\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Μετατροπέας Χρωμάτων\",\n      \"description\": \"Μετατροπή χρωμάτων μεταξύ διαφορετικών μορφών\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Κρυπτογραφία / Ασφάλεια\",\n    \"hash\": {\n      \"label\": \"Γεννήτρια Hash\",\n      \"description\": \"Δημιουργία hash από κείμενο\"\n    },\n    \"hmac\": {\n      \"label\": \"Γεννήτρια HMAC\",\n      \"description\": \"Δημιουργία κώδικα πιστοποίησης μηνύματος βασισμένου σε hash (HMAC) που αποτελείται από κλειδί και μήνυμα\"\n    },\n    \"password\": {\n      \"label\": \"Γεννήτρια Κωδικών\",\n      \"description\": \"Δημιουργία ασφαλούς κωδικού\"\n    },\n    \"uuid\": {\n      \"label\": \"Γεννήτρια UUID\",\n      \"description\": \"Δημιουργία παγκόσμιου μοναδικού αναγνωριστικού (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Ιστός\",\n    \"urlParser\": {\n      \"label\": \"Αναλυτής URL\",\n      \"description\": \"Ανάλυση URL στα στοιχεία του\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Κωδικοποίηση ή αποκωδικοποίηση URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Μετατροπή κειμένου σε φιλικό προς URL slug\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Είσοδος\",\n    \"output\": \"Έξοδος\",\n    \"inputString\": \"Συμβολοσειρά Εισόδου\",\n    \"outputString\": \"Συμβολοσειρά Εξόδου\",\n    \"inputUrl\": \"URL Εισόδου\",\n    \"outputUrl\": \"URL Εξόδου\",\n    \"parsedUrl\": \"Αναλυμένο URL\",\n    \"splitQueryString\": \"Διαχωρισμός Query String\",\n    \"key\": \"Κλειδί\",\n    \"value\": \"Τιμή\",\n    \"component\": \"Στοιχείο\",\n    \"result\": \"Αποτέλεσμα\",\n    \"secretKey\": \"Μυστικό Κλειδί\",\n    \"algorithm\": \"Αλγόριθμος\",\n    \"version\": \"Έκδοση\",\n    \"amount\": \"Ποσότητα\",\n    \"type\": \"Τύπος\",\n    \"length\": \"Μήκος\",\n    \"options\": \"Επιλογές\",\n    \"numbers\": \"Αριθμοί\",\n    \"symbols\": \"Σύμβολα\",\n    \"lowercase\": \"Πεζά\",\n    \"uppercase\": \"Κεφαλαία\",\n    \"placeholder\": {\n      \"text\": \"Εισάγετε κείμενο\",\n      \"value\": \"Εισάγετε τιμή\",\n      \"secretKey\": \"Εισάγετε μυστικό κλειδί\",\n      \"url\": \"Εισάγετε URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/el_GR/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Προτιμήσεις\",\n    \"devtools\": \"Developer Tools\",\n    \"update\": \"Έλεγχος για Ενημερώσεις...\",\n    \"quit\": \"Έξοδος από το massCode\",\n    \"about\": \"Σχετικά με το massCode\",\n    \"hide\": \"Απόκρυψη massCode\"\n  },\n  \"help\": {\n    \"label\": \"Βοήθεια\",\n    \"website\": \"Ιστοσελίδα\",\n    \"documentation\": \"Τεκμηρίωση\",\n    \"viewInGitHub\": \"Προβολή στο GitHub\",\n    \"changeLog\": \"Αρχείο Αλλαγών\",\n    \"reportIssue\": \"Αναφορά Προβλήματος\",\n    \"giveStar\": \"Δώστε ένα Αστέρι\",\n    \"extension\": {\n      \"vscode\": \"VS Code Extension\",\n      \"raycast\": \"Raycast Extension\",\n      \"alfred\": \"Alfred Extension\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Δωρεά στο Open Collective\",\n      \"payPal\": \"Δωρεά μέσω PayPal\",\n      \"gumroad\": \"Δωρεά μέσω Gumroad (Visa, Mastercard, κλπ.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Εναλλαγή Developer Tools\",\n    \"links\": {\n      \"snippets\": \"Συλλογή Snippets\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Επεξεργασία\",\n    \"find\": \"Εύρεση\"\n  },\n  \"view\": {\n    \"label\": \"Προβολή\",\n    \"sortBy\": {\n      \"label\": \"Ταξινόμηση Snippets κατά\",\n      \"dateModified\": \"Ημερομηνία Τροποποίησης\",\n      \"dateCreated\": \"Ημερομηνία Δημιουργίας\",\n      \"name\": \"Όνομα\"\n    },\n    \"compactMode\": \"Συμπαγής Λειτουργία\",\n    \"showSidebar\": \"Εμφάνιση/απόκρυψη πλαϊνής γραμμής\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"copy\": \"Αντιγραφή Snippet στο Πρόχειρο\",\n    \"format\": \"Μορφοποίηση\",\n    \"previewCode\": \"Προεπισκόπηση Κώδικα\",\n    \"previewScreenshot\": \"Προεπισκόπηση Screenshot\",\n    \"previewJson\": \"Προεπισκόπηση JSON\",\n    \"fontSizeIncrease\": \"Αύξηση Μεγέθους Γραμματοσειράς\",\n    \"fontSizeDecrease\": \"Μείωση Μεγέθους Γραμματοσειράς\",\n    \"fontSizeReset\": \"Επαναφορά Μεγέθους Γραμματοσειράς\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Λειτουργία Παρουσίασης\",\n    \"preview\": \"Προεπισκόπηση\",\n    \"previewMarkdown\": \"Προεπισκόπηση Markdown\",\n    \"previewMindmap\": \"Προεπισκόπηση Mindmap\"\n  },\n  \"history\": {\n    \"label\": \"Ιστορικό\",\n    \"back\": \"Πίσω\",\n    \"forward\": \"Μπροστά\"\n  },\n  \"devtools\": {\n    \"label\": \"Developer Tools\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/el_GR/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Είστε βέβαιοι ότι θέλετε να διαγράψετε το \\\"{{name}}\\\"?\",\n    \"deletePermanently\": \"Είστε βέβαιοι ότι θέλετε να διαγράψετε οριστικά το \\\"{{name}}\\\"?\",\n    \"deleteConfirmMultipleSnippets\": \"Είστε βέβαιοι ότι θέλετε να διαγράψετε οριστικά τα {{count}} επιλεγμένα snippets;\",\n    \"emptyTrash\": \"Είστε βέβαιοι ότι θέλετε να διαγράψετε οριστικά όλα τα snippets στον Κάδο Απορριμμάτων;\",\n    \"clearDb\": \"Είστε βέβαιοι ότι θέλετε να καθαρίσετε τη database;\",\n    \"migrateDb\": [\n      \"Είστε βέβαιοι ότι θέλετε να κάνετε migrate;\",\n      \"Κατά τη διάρκεια του migrate, η τρέχουσα βιβλιοθήκη θα αντικατασταθεί.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"Αντιγράφηκε στο πρόχειρο\",\n    \"migrate\": \"Η DB μετέφερε επιτυχώς τα δεδομένα.\",\n    \"backup\": {\n      \"created\": \"Το αντίγραφο ασφαλείας δημιουργήθηκε επιτυχώς.\",\n      \"restored\": \"Το αντίγραφο ασφαλείας αποκαταστάθηκε επιτυχώς.\",\n      \"deleted\": \"Το αντίγραφο ασφαλείας διαγράφηκε επιτυχώς.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Δεν μπορείτε να αναιρέσετε αυτήν την ενέργεια.\",\n    \"allSnippetsMoveToTrash\": \"Όλα τα snippets σε αυτόν τον φάκελο θα μεταφερθούν στον κάδο απορριμμάτων.\",\n    \"deleteTag\": \"Αυτό θα προκαλέσει επίσης την αφαίρεση αυτού του tag από όλα τα snippets.\",\n    \"createDb\": \"Παρακαλώ επιλέξτε άλλο φάκελο\",\n    \"clearDb\": \"Αυτό θα διαγράψει οριστικά όλα τα Snippets, Folders και Tags από τη database.\",\n    \"htmlCssPreview\": \"Προσθέστε ένα τμήμα HTML για να δείτε το αποτέλεσμα. Προσθέστε CSS για στυλ και JavaScript για διαδραστικότητα.\",\n    \"codeBlockRenderer\": [\n      \"Όταν χρησιμοποιείτε το Codemirror, η γλώσσα που θα οριστεί για το code block πρέπει να αντιστοιχεί σε μία από τις τιμές των\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"Για να χρησιμοποιήσετε υπηρεσίες συγχρονισμού όπως iCloud Drive, Google Drive ή Dropbox, απλά μετακινήστε το storage στους αντίστοιχους συγχρονισμένους φακέλους\",\n    \"migrate\": {\n      \"fromV3\": \"Για να κάνετε migrate από το massCode v3 επιλέξτε τον φάκελο που περιέχει το JSON αρχείο.\",\n      \"fromSnippetsLab\": \"Για να κάνετε migrate από το SnippetsLab επιλέξτε το JSON αρχείο.\",\n      \"snippetsLabLimitations\": [\n        \"Μερικοί Περιορισμοί. Κατά τη διάρκεια του migration από το SnippetsLab:\",\n        \"Όλοι οι φάκελοι θα είναι πρώτου επιπέδου καθώς το JSON αρχείο (κάτω από v2.1) δεν υποστηρίζει ένθετους φακέλους.\",\n        \"Τα snippets με μη υποστηριζόμενες γλώσσες θα οριστούν ως Plain Text.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Γεια σας, ο Anton εδώ 👋<br><br>\\nΕυχαριστώ που χρησιμοποιείτε το massCode. Αν βρίσκετε χρήσιμη την εφαρμογή, παρακαλώ {{-tagStart}}κάντε μια δωρεά{{-tagEnd}}. Θα με εμπνεύσει να συνεχίσω την ανάπτυξη του project.\",\n    \"unsponsored\": \"Χωρίς χορηγία\"\n  },\n  \"update\": {\n    \"available\": \"Η έκδοση {{newVersion}} είναι διαθέσιμη για λήψη.\\nΗ έκδοσή σας είναι {{oldVersion}}.\",\n    \"noAvailable\": \"Δεν υπάρχουν διαθέσιμες ενημερώσεις αυτή τη στιγμή.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/el_GR/preferences.json",
    "content": "{\n  \"label\": \"Προτιμήσεις\",\n  \"storage\": {\n    \"label\": \"Storage\",\n    \"migrate\": \"Μετεγκατάσταση\",\n    \"count\": \"Πλήθος\",\n    \"clearDatabase\": \"Εκκαθάριση Database\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"fontSize\": \"Μέγεθος Γραμματοσειράς\",\n    \"fontFamily\": \"Οικογένεια Γραμματοσειράς\",\n    \"wrap\": {\n      \"label\": \"Αναδίπλωση\",\n      \"wordWrap\": \"Αναδίπλωση Λέξεων\",\n      \"off\": \"Απενεργοποίηση\"\n    },\n    \"tabSize\": \"Μέγεθος Tab\",\n    \"showInvisibles\": \"Εμφάνιση Αόρατων Χαρακτήρων\",\n    \"highlightLine\": \"Επισήμανση Γραμμής\",\n    \"highlightGutter\": \"Επισήμανση Gutter\",\n    \"matchBrackets\": \"Αντιστοίχιση Παρενθέσεων\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Κόμμα στο Τέλος\",\n        \"none\": \"Κανένα\",\n        \"all\": \"Όλα\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Ερωτηματικό\",\n      \"singleQuote\": \"Μονά Εισαγωγικά\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Εμφάνιση\",\n    \"theme\": {\n      \"label\": \"Θέμα\",\n      \"light\": \"Φωτεινό\",\n      \"dark\": \"Σκοτεινό\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Γλώσσα\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Code block Renderer\"\n  },\n  \"api\": {\n    \"label\": \"Θύρα API\",\n    \"port\": {\n      \"label\": \"Θύρα API\",\n      \"description\": \"Αριθμός θύρας για τον διακομιστή API (απαιτείται επανεκκίνηση της εφαρμογής). Έγκυρο εύρος: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/el_GR/ui.json",
    "content": "{\n  \"total\": \"Σύνολο\",\n  \"line\": \"Γραμμή\",\n  \"column\": \"Στήλη\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Διαδρομή\",\n  \"button\": {\n    \"back\": \"Πίσω\",\n    \"cancel\": \"Ακύρωση\",\n    \"clear\": \"Καθαρισμός\",\n    \"confirm\": \"Επιβεβαίωση\",\n    \"copy\": \"Αντιγραφή\",\n    \"fit\": \"Προσαρμογή\",\n    \"generate\": \"Δημιουργία\",\n    \"ok\": \"OK\",\n    \"revers\": \"Αντιστροφή\",\n    \"saveAs\": \"Αποθήκευση ως\",\n    \"sort\": \"Ταξινόμηση\",\n    \"update\": [\"Μετάβαση στο GitHub\", \"OK\"],\n    \"zoomIn\": \"Μεγέθυνση\",\n    \"zoomOut\": \"Σμίκρυνση\",\n    \"darkMode\": \"Σκοτεινή Λειτουργία\",\n    \"toggleDarkMode\": \"Εναλλαγή σκοτεινής λειτουργίας\",\n    \"background\": \"Φόντο\",\n    \"goToDownload\": \"Μετάβαση στη Λήψη\",\n    \"refreshPreview\": \"Ανανέωση προεπισκόπησης\",\n    \"laserPointer\": \"Δείκτης λέιζερ\",\n    \"fullscreen\": \"Πλήρης οθόνη\",\n    \"prev\": \"Προηγούμενο\",\n    \"next\": \"Επόμενο\"\n  },\n  \"action\": {\n    \"close\": \"Κλείσιμο\",\n    \"defaultLanguage\": \"Προεπιλεγμένη Γλώσσα\",\n    \"duplicate\": \"Αντίγραφο\",\n    \"rename\": \"Μετονομασία\",\n    \"restore\": \"Επαναφορά\",\n    \"setCustomIcon\": \"Ορισμός Εικονιδίου\",\n    \"removeCustomIcon\": \"Αφαίρεση Εικονιδίου\",\n    \"show\": \"Εμφάνιση\",\n    \"hide\": \"Απόκρυψη\",\n    \"showSidebar\": \"Εμφάνιση πλευρικής γραμμής\",\n    \"hideSidebar\": \"Απόκρυψη πλευρικής γραμμής\",\n    \"new\": {\n      \"storage\": \"Νέο Storage\",\n      \"folder\": \"Νέος Φάκελος\",\n      \"snippet\": \"Νέο Snippet\",\n      \"fragment\": \"Νέο Fragment\"\n    },\n    \"add\": {\n      \"description\": \"Προσθήκη Περιγραφής\",\n      \"tag\": \"Προσθήκη Tag\",\n      \"toFavorites\": \"Προσθήκη στα Αγαπημένα\"\n    },\n    \"open\": {\n      \"storage\": \"Άνοιγμα Storage\"\n    },\n    \"move\": {\n      \"storage\": \"Μετακίνηση Storage\",\n      \"toTrash\": \"Μετακίνηση στον Κάδο\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Αφαίρεση από τα Αγαπημένα\"\n    },\n    \"reload\": {\n      \"storage\": \"Επαναφόρτωση Storage\"\n    },\n    \"delete\": {\n      \"common\": \"Διαγραφή\",\n      \"now\": \"Διαγραφή Τώρα\",\n      \"allData\": \"Διαγραφή Όλων των Δεδομένων\",\n      \"trash\": \"Άδειασμα Κάδου\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Από SnippetsLab\",\n      \"fromV3\": \"Από massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Εξαγωγή σε HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Αντιγραφή Συνδέσμου Snippet\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Εισερχόμενα\",\n    \"favorites\": \"Αγαπημένα\",\n    \"allSnippets\": \"Όλα τα Snippets\",\n    \"trash\": \"Κάδος\",\n    \"folders\": \"Φάκελοι\",\n    \"library\": \"Βιβλιοθήκη\",\n    \"tags\": \"Tags\"\n  },\n  \"folder\": {\n    \"untitled\": \"Φάκελος χωρίς τίτλο\",\n    \"plural\": \"Φάκελοι\",\n    \"collapseAll\": \"Σύμπτυξη Όλων\",\n    \"expandAll\": \"Ανάπτυξη Όλων\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Snippet χωρίς τίτλο\",\n    \"plural\": \"Snippets\",\n    \"emptyName\": \"Πληκτρολογήστε όνομα snippet\",\n    \"selectedMultiple\": \"{{count}} Επιλεγμένα Snippets\",\n    \"noSelected\": \"Δεν έχει επιλεγεί Snippet\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Προσθέστε tags στα snippets για να τα δείτε εδώ\",\n    \"emptyFoldersList\": \"Κανένας φάκελος\",\n    \"emptySnippetsList\": \"Κανένα απόσπασμα\",\n    \"search\": \"Αναζήτηση\",\n    \"addTag\": \"Προσθήκη Tag\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/en_US/devtools.json",
    "content": "{\n  \"label\": \"Developer Tools\",\n  \"generators\": {\n    \"label\": \"Generators\",\n    \"lorem\": {\n      \"label\": \"Lorem Ipsum Generator\",\n      \"description\": \"Generate placeholder text\",\n      \"selectType\": \"Select type\",\n      \"maxCount\": \"Max {{count}}\",\n      \"types\": {\n        \"words\": \"Words\",\n        \"sentences\": \"Sentences\",\n        \"paragraphs\": \"Paragraphs\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON Generator\",\n      \"description\": \"Generate random JSON data with various field types\",\n      \"fields\": \"Fields\",\n      \"fieldName\": \"Field name\",\n      \"selectType\": \"Select type\",\n      \"addField\": \"Add Field\",\n      \"rowCount\": \"Number of Rows\",\n      \"maxRows\": \"Max 1000\",\n      \"categories\": {\n        \"general\": \"General\",\n        \"person\": \"Person\",\n        \"internet\": \"Internet\",\n        \"location\": \"Location\",\n        \"finance\": \"Finance\",\n        \"commerce\": \"Commerce\",\n        \"company\": \"Company\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Date\",\n        \"number\": \"Number\",\n        \"phone\": \"Phone\",\n        \"image\": \"Image\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Row Number\",\n        \"firstName\": \"First Name\",\n        \"lastName\": \"Last Name\",\n        \"fullName\": \"Full Name\",\n        \"gender\": \"Gender\",\n        \"jobTitle\": \"Job Title\",\n        \"email\": \"Email Address\",\n        \"username\": \"Username\",\n        \"password\": \"Password\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP Address v4\",\n        \"ipv6\": \"IP Address v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"City\",\n        \"country\": \"Country\",\n        \"streetAddress\": \"Street Address\",\n        \"zipCode\": \"Zip Code\",\n        \"latitude\": \"Latitude\",\n        \"longitude\": \"Longitude\",\n        \"amount\": \"Amount\",\n        \"currencyCode\": \"Currency Code\",\n        \"creditCardNumber\": \"Credit Card Number\",\n        \"productName\": \"Product Name\",\n        \"price\": \"Price\",\n        \"department\": \"Department\",\n        \"companyName\": \"Company Name\",\n        \"catchPhrase\": \"Catch Phrase\",\n        \"word\": \"Word\",\n        \"sentence\": \"Sentence\",\n        \"paragraph\": \"Paragraph\",\n        \"past\": \"Past Date\",\n        \"future\": \"Future Date\",\n        \"recent\": \"Recent Date\",\n        \"birthdate\": \"Birthdate\",\n        \"int\": \"Integer\",\n        \"float\": \"Float\",\n        \"boolean\": \"Boolean\",\n        \"phoneNumber\": \"Phone Number\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"Avatar URL\",\n        \"imageUrl\": \"Image URL\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Converters\",\n    \"caseConverter\": {\n      \"label\": \"Case Converter\",\n      \"description\": \"Transform text to different cases\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Text to Unicode\",\n      \"description\": \"Convert text to Unicode and vice versa\",\n      \"modes\": {\n        \"textToUnicode\": \"Text → Unicode\",\n        \"unicodeToText\": \"Unicode → Text\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Text to ASCII Binary\",\n      \"description\": \"Convert text to ASCII binary and vice versa\",\n      \"modes\": {\n        \"textToAscii\": \"Text → ASCII\",\n        \"asciiToText\": \"ASCII → Text\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Encode or decode text to Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Text → Base64\",\n        \"base64ToText\": \"Base64 → Text\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON to YAML\",\n      \"description\": \"Convert JSON to YAML and vice versa\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON to TOML\",\n      \"description\": \"Convert JSON to TOML and vice versa\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON to XML\",\n      \"description\": \"Convert JSON to XML and vice versa\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Color Converter\",\n      \"description\": \"Convert color between different formats\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Cryptography / Security\",\n    \"hash\": {\n      \"label\": \"Hash Generator\",\n      \"description\": \"Generate hashes from text\"\n    },\n    \"hmac\": {\n      \"label\": \"HMAC Generator\",\n      \"description\": \"Generate hash-based message authentication code (HMAC) composed of a key and a message\"\n    },\n    \"password\": {\n      \"label\": \"Password Generator\",\n      \"description\": \"Generate a secure password\"\n    },\n    \"uuid\": {\n      \"label\": \"UUID Generator\",\n      \"description\": \"Generate a universal unique identifier (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Web\",\n    \"urlParser\": {\n      \"label\": \"URL Parser\",\n      \"description\": \"Parse a URL into its components\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Encode or decode URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Convert text to a URL-friendly slug\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Input\",\n    \"output\": \"Output\",\n    \"inputString\": \"Input String\",\n    \"outputString\": \"Output String\",\n    \"inputUrl\": \"Input URL\",\n    \"outputUrl\": \"Output URL\",\n    \"parsedUrl\": \"Parsed URL\",\n    \"splitQueryString\": \"Split Query String\",\n    \"key\": \"Key\",\n    \"value\": \"Value\",\n    \"component\": \"Component\",\n    \"result\": \"Result\",\n    \"secretKey\": \"Secret Key\",\n    \"algorithm\": \"Algorithm\",\n    \"version\": \"Version\",\n    \"amount\": \"Amount\",\n    \"type\": \"Type\",\n    \"length\": \"Length\",\n    \"options\": \"Options\",\n    \"numbers\": \"Numbers\",\n    \"symbols\": \"Symbols\",\n    \"lowercase\": \"Lowercase\",\n    \"uppercase\": \"Uppercase\",\n    \"placeholder\": {\n      \"text\": \"Enter a text\",\n      \"value\": \"Enter a value\",\n      \"secretKey\": \"Enter a secret key\",\n      \"url\": \"Enter a URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/en_US/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Preferences\",\n    \"devtools\": \"Developer Tools\",\n    \"update\": \"Check for Updates...\",\n    \"quit\": \"Quit massCode\",\n    \"about\": \"About massCode\",\n    \"hide\": \"Hide massCode\",\n    \"mathNotebook\": \"Math Notebook\"\n  },\n  \"help\": {\n    \"label\": \"Help\",\n    \"website\": \"Website\",\n    \"documentation\": \"Documentation\",\n    \"viewInGitHub\": \"View in GitHub\",\n    \"changeLog\": \"Change Log\",\n    \"reportIssue\": \"Report Issue\",\n    \"giveStar\": \"Give a Star\",\n    \"extension\": {\n      \"vscode\": \"VS Code Extension\",\n      \"raycast\": \"Raycast Extension\",\n      \"alfred\": \"Alfred Extension\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Donate on Open Collective\",\n      \"payPal\": \"Donate via PayPal\",\n      \"gumroad\": \"Donate via Gumroad (Visa, Mastercard, etc.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Toggle Developer Tools\",\n    \"links\": {\n      \"snippets\": \"Snippet Collection\"\n    }\n  },\n  \"view\": {\n    \"label\": \"View\",\n    \"showSidebar\": \"Show/Hide Sidebar\",\n    \"sortBy\": {\n      \"label\": \"Sort Snippets By\",\n      \"dateModified\": \"Date Modified\",\n      \"dateCreated\": \"Date Created\",\n      \"name\": \"Name\"\n    },\n    \"compactMode\": \"Compact Mode\"\n  },\n  \"edit\": {\n    \"label\": \"Edit\",\n    \"find\": \"Find\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"copy\": \"Copy Snippet to Clipboard\",\n    \"format\": \"Format\",\n    \"previewCode\": \"Preview Code\",\n    \"previewScreenshot\": \"Preview Screenshot\",\n    \"previewJson\": \"Preview JSON\",\n    \"fontSizeIncrease\": \"Font Size Increase\",\n    \"fontSizeDecrease\": \"Font Size Decrease\",\n    \"fontSizeReset\": \"Font Size Reset\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"preview\": \"Preview\",\n    \"previewMarkdown\": \"Preview Markdown\",\n    \"presentationMode\": \"Presentation Mode\",\n    \"previewMindmap\": \"Preview Mindmap\"\n  },\n  \"history\": {\n    \"label\": \"History\",\n    \"back\": \"Back\",\n    \"forward\": \"Forward\"\n  },\n  \"devtools\": {\n    \"label\": \"Developer Tools\"\n  },\n  \"window\": {\n    \"label\": \"Window\",\n    \"minimize\": \"Minimize\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/en_US/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Are you sure you want to delete \\\"{{name}}\\\"?\",\n    \"deletePermanently\": \"Are you sure you want to permanently delete \\\"{{name}}\\\"?\",\n    \"deleteConfirmMultipleSnippets\": \"Are you sure you want to permanently delete {{count}} selected snippets?\",\n    \"emptyTrash\": \"Are you sure you want to permanently delete all snippets in Trash?\",\n    \"clearDb\": \"Are you sure you want to clear the database?\",\n    \"migrateDb\": [\n      \"Are you sure you want to migrate?\",\n      \"During migrate, the current library will be overwritten.\"\n    ],\n    \"migrateToMarkdown\": [\n      \"Migrate to Markdown Vault?\",\n      \"The selected vault will be overwritten with the current SQLite library.\"\n    ],\n    \"migrateToSqlite\": [\n      \"Rollback to SQLite?\",\n      \"Current SQLite data will be replaced with data from markdown vault.\"\n    ],\n    \"backup\": {\n      \"restore\": \"Are you sure you want to restore from this backup?\",\n      \"delete\": \"Are you sure you want to delete this backup?\"\n    }\n  },\n  \"success\": {\n    \"copied\": \"Copied to clipboard\",\n    \"migrate\": \"DB successfully migrated.\",\n    \"migrateToMarkdown\": \"Migrated to Markdown Vault. Folders: {{folders}}, snippets: {{snippets}}, tags: {{tags}}.\",\n    \"migrateToSqlite\": \"Rolled back to SQLite. Folders: {{folders}}, snippets: {{snippets}}, tags: {{tags}}.\",\n    \"vaultLoaded\": \"Vault successfully loaded.\",\n    \"backup\": {\n      \"created\": \"Backup successfully created.\",\n      \"restored\": \"Backup successfully restored.\",\n      \"deleted\": \"Backup successfully deleted.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"You cannot undo this action.\",\n    \"allSnippetsMoveToTrash\": \"All snippets in this folder will be moved to trash.\",\n    \"deleteTag\": \"This will also cause all snippets to have that tag removed.\",\n    \"createDb\": \"Please select another folder\",\n    \"clearDb\": \"This will permanently delete all Snippets, Folders, and Tags from the database.\",\n    \"htmlCssPreview\": \"Add HTML fragment to see the result. Add CSS for styling and JavaScript for interactivity.\",\n    \"codeBlockRenderer\": [\n      \"When using Codemirror, the language to be set for the code block must correspond to one of the values of the\",\n      \"languages\"\n    ]\n  },\n  \"error\": {\n    \"backup\": \"Backup operation failed\"\n  },\n  \"description\": {\n    \"storage\": \"The directory where the SQLite database is stored.\",\n    \"storageEngine\": \"Markdown Vault is the new recommended storage format. SQLite remains available for compatibility and rollback.\",\n    \"storageVault\": \"Choose the vault directory. To sync between devices, select a folder in iCloud Drive, Google Drive or Dropbox.\",\n    \"migrate\": {\n      \"fromV3\": \"To migrate from massCode v3 select the folder containing the JSON file.\",\n      \"fromSnippetsLab\": \"To migrate from SnippetsLab select JSON file.\",\n      \"snippetsLabLimitations\": [\n        \"Some Limitations. During migration from SnippetsLab:\",\n        \"All folders will be first level as JSON file (below v2.1) does not represent nested folders.\",\n        \"Snippets with unsupported languages will be set to default Plain Text.\"\n      ]\n    },\n    \"language\": \"To apply language changes, you need to reload the app.\",\n    \"backup\": {\n      \"manual\": \"Manual backup will not be deleted automatically when the number of backups exceeds the limit.\"\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Hi, Anton here 👋<br><br>\\nThanks for using massCode. If you find this app useful, please {{-tagStart}}donate{{-tagEnd}}. It will inspire me to continue development on the project.\",\n    \"unsponsored\": \"Unsponsored\"\n  },\n  \"release\": {\n    \"mdVaultAvailable\": \"New: Markdown Vault storage is now available! SQLite will be removed in v{{sqliteSunsetVersion}}.\"\n  },\n  \"update\": {\n    \"available\": \"Version {{newVersion}} is now available for download.\\nYour version is {{oldVersion}}.\",\n    \"noAvailable\": \"There are currently no updates available.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/en_US/preferences.json",
    "content": "{\n  \"label\": \"Preferences\",\n  \"storage\": {\n    \"section\": {\n      \"main\": \"Main\",\n      \"migration\": \"Migration\",\n      \"dangerZone\": \"Danger Zone\",\n      \"backup\": \"Backup\"\n    },\n    \"label\": \"Storage\",\n    \"migrate\": \"Migrate\",\n    \"migrateMarkdownToSqlite\": \"Rollback to SQLite\",\n    \"migrateSqliteToMarkdown\": \"Migrate to Markdown Vault\",\n    \"count\": \"Count\",\n    \"vaultPath\": \"Vault Path\",\n    \"engine\": {\n      \"label\": \"Storage Engine\",\n      \"sqlite\": \"SQLite (Legacy)\",\n      \"markdown\": \"Markdown Vault (Recommended)\"\n    },\n    \"clearDatabase\": \"Clear Database\",\n    \"backup\": {\n      \"label\": \"Backup\",\n      \"enabled\": \"Auto Backup\",\n      \"interval\": {\n        \"label\": \"Interval\",\n        \"1\": \"Every hour\",\n        \"6\": \"Every 6 hours\",\n        \"12\": \"Every 12 hours\",\n        \"24\": \"Every 24 hours\"\n      },\n      \"maxBackups\": \"Maximum Backups\",\n      \"createNow\": \"Create Backup Now\",\n      \"restore\": \"Restore from Backup\",\n      \"list\": \"Backup List\",\n      \"lastBackup\": \"Last Backup\",\n      \"noBackups\": \"No backups found\"\n    }\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"fontSize\": \"Font Size\",\n    \"fontFamily\": \"Font Family\",\n    \"wrap\": {\n      \"label\": \"Wrap\",\n      \"wordWrap\": \"Word Wrap\",\n      \"off\": \"Off\"\n    },\n    \"tabSize\": \"Tab Size\",\n    \"showInvisibles\": \"Show Invisibles\",\n    \"highlightLine\": \"Highlight Line\",\n    \"highlightGutter\": \"Highlight Gutter\",\n    \"matchBrackets\": \"Match Brackets\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Trailing Comma\",\n        \"none\": \"None\",\n        \"all\": \"All\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Semi\",\n      \"singleQuote\": \"Single Quote\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Appearance\",\n    \"theme\": {\n      \"label\": \"Theme\",\n      \"builtIn\": \"Built-in\",\n      \"custom\": \"Custom\",\n      \"themesDir\": \"Themes Directory\",\n      \"openDir\": \"Open Themes Directory\",\n      \"createTemplate\": \"Create Theme Template\",\n      \"dirDescription\": \"Place your JSON theme files in this folder.\",\n      \"light\": \"Light\",\n      \"dark\": \"Dark\",\n      \"system\": \"System\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Language\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Code block Renderer\"\n  },\n  \"api\": {\n    \"label\": \"API Port\",\n    \"port\": {\n      \"label\": \"API Port\",\n      \"description\": \"Port number for the API server (requires app restart to take effect). Valid range: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/en_US/ui.json",
    "content": "{\n  \"total\": \"Total\",\n  \"line\": \"Line\",\n  \"column\": \"Column\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Path\",\n  \"button\": {\n    \"back\": \"Back\",\n    \"cancel\": \"Cancel\",\n    \"clear\": \"Clear\",\n    \"confirm\": \"Confirm\",\n    \"copy\": \"Copy\",\n    \"fit\": \"Fit\",\n    \"generate\": \"Generate\",\n    \"ok\": \"OK\",\n    \"revers\": \"Revers\",\n    \"saveAs\": \"Save as\",\n    \"sort\": \"Sort\",\n    \"update\": [\"Go to GitHub\", \"OK\"],\n    \"zoomIn\": \"Zoom In\",\n    \"zoomOut\": \"Zoom Out\",\n    \"darkMode\": \"Dark Mode\",\n    \"toggleDarkMode\": \"Toggle Dark Mode\",\n    \"background\": \"Background\",\n    \"goToDownload\": \"Go to Download\",\n    \"goToSettings\": \"Go to Settings\",\n    \"refreshPreview\": \"Refresh Preview\",\n    \"laserPointer\": \"Laser Pointer\",\n    \"fullscreen\": \"Full Screen\",\n    \"prev\": \"Prev\",\n    \"next\": \"Next\"\n  },\n  \"action\": {\n    \"close\": \"Close\",\n    \"defaultLanguage\": \"Default Language\",\n    \"duplicate\": \"Duplicate\",\n    \"rename\": \"Rename\",\n    \"restore\": \"Restore\",\n    \"setCustomIcon\": \"Set Icon\",\n    \"removeCustomIcon\": \"Remove Icon\",\n    \"show\": \"Show\",\n    \"hide\": \"Hide\",\n    \"showSidebar\": \"Show Sidebar\",\n    \"hideSidebar\": \"Hide Sidebar\",\n    \"new\": {\n      \"storage\": \"New Storage\",\n      \"folder\": \"New Folder\",\n      \"snippet\": \"New Snippet\",\n      \"fragment\": \"New Fragment\"\n    },\n    \"add\": {\n      \"description\": \"Add Description\",\n      \"tag\": \"Add Tag\",\n      \"toFavorites\": \"Add to Favorites\"\n    },\n    \"open\": {\n      \"storage\": \"Open Storage\"\n    },\n    \"move\": {\n      \"storage\": \"Move Storage\",\n      \"toTrash\": \"Move to Trash\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Remove from Favorites\"\n    },\n    \"reload\": {\n      \"storage\": \"Reload Storage\",\n      \"app\": \"Reload massCode\"\n    },\n    \"delete\": {\n      \"common\": \"Delete\",\n      \"now\": \"Delete Now\",\n      \"allData\": \"Delete All Data\",\n      \"trash\": \"Empty Trash\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"From SnippetsLab\",\n      \"fromV3\": \"From massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Export to HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Copy Snippet Link\"\n    },\n    \"backup\": {\n      \"create\": \"Create Backup\",\n      \"restore\": \"Restore from Backup\",\n      \"showList\": \"Show List\"\n    },\n    \"select\": {\n      \"directory\": \"Select Directory\"\n    }\n  },\n  \"sidebar\": {\n    \"title\": \"Code Snippets\",\n    \"inbox\": \"Inbox\",\n    \"favorites\": \"Favorites\",\n    \"allSnippets\": \"All Snippets\",\n    \"trash\": \"Trash\",\n    \"folders\": \"Folders\",\n    \"library\": \"Library\",\n    \"tags\": \"Tags\"\n  },\n  \"folder\": {\n    \"untitled\": \"Untitled folder\",\n    \"plural\": \"Folders\",\n    \"collapseAll\": \"Collapse All\",\n    \"expandAll\": \"Expand All\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Untitled snippet\",\n    \"plural\": \"Snippets\",\n    \"emptyName\": \"Type snippet name\",\n    \"selectedMultiple\": \"{{count}} Snippets Selected\",\n    \"noSelected\": \"No Snippet Selected\"\n  },\n  \"mathNotebook\": {\n    \"label\": \"Math Notebook\",\n    \"sheetList\": \"Sheet List\",\n    \"newSheet\": \"New Sheet\",\n    \"untitled\": \"Untitled\",\n    \"copied\": \"Copied\",\n    \"currencyUnavailable\": \"Currency rates service unavailable\"\n  },\n  \"spaces\": {\n    \"label\": \"Spaces\",\n    \"code\": \"Code\",\n    \"tools\": \"Tools\",\n    \"math\": \"Math\",\n    \"codeTooltip\": \"Code snippets\",\n    \"toolsTooltip\": \"Developer tools\",\n    \"mathTooltip\": \"Math notebook\"\n  },\n  \"loading\": \"App loading...\",\n  \"placeholder\": {\n    \"emptyTagList\": \"Add tags to snippets to see them here\",\n    \"emptyFoldersList\": \"No Folders\",\n    \"emptySnippetsList\": \"No Snippets\",\n    \"emptySheetList\": \"No Sheets\",\n    \"search\": \"Search\",\n    \"addTag\": \"Add Tag\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/es_ES/devtools.json",
    "content": "{\n  \"label\": \"Herramientas de desarrollo\",\n  \"generators\": {\n    \"label\": \"Generadores\",\n    \"lorem\": {\n      \"label\": \"Generador Lorem Ipsum\",\n      \"description\": \"Generar texto de marcador de posición\",\n      \"selectType\": \"Seleccionar tipo\",\n      \"maxCount\": \"Máx {{count}}\",\n      \"types\": {\n        \"words\": \"Palabras\",\n        \"sentences\": \"Oraciones\",\n        \"paragraphs\": \"Párrafos\"\n      }\n    },\n    \"json\": {\n      \"label\": \"Generador JSON\",\n      \"description\": \"Generar datos JSON aleatorios con varios tipos de campos\",\n      \"fields\": \"Campos\",\n      \"fieldName\": \"Nombre del campo\",\n      \"selectType\": \"Seleccionar tipo\",\n      \"addField\": \"Agregar campo\",\n      \"rowCount\": \"Número de filas\",\n      \"maxRows\": \"Máx 1000\",\n      \"categories\": {\n        \"general\": \"General\",\n        \"person\": \"Persona\",\n        \"internet\": \"Internet\",\n        \"location\": \"Ubicación\",\n        \"finance\": \"Finanzas\",\n        \"commerce\": \"Comercio\",\n        \"company\": \"Empresa\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Fecha\",\n        \"number\": \"Número\",\n        \"phone\": \"Teléfono\",\n        \"image\": \"Imagen\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Número de fila\",\n        \"firstName\": \"Nombre\",\n        \"lastName\": \"Apellido\",\n        \"fullName\": \"Nombre completo\",\n        \"gender\": \"Género\",\n        \"jobTitle\": \"Título del trabajo\",\n        \"email\": \"Dirección de correo electrónico\",\n        \"username\": \"Nombre de usuario\",\n        \"password\": \"Contraseña\",\n        \"url\": \"URL\",\n        \"ipv4\": \"Dirección IP v4\",\n        \"ipv6\": \"Dirección IP v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Ciudad\",\n        \"country\": \"País\",\n        \"streetAddress\": \"Dirección\",\n        \"zipCode\": \"Código postal\",\n        \"latitude\": \"Latitud\",\n        \"longitude\": \"Longitud\",\n        \"amount\": \"Cantidad\",\n        \"currencyCode\": \"Código de moneda\",\n        \"creditCardNumber\": \"Número de tarjeta de crédito\",\n        \"productName\": \"Nombre del producto\",\n        \"price\": \"Precio\",\n        \"department\": \"Departamento\",\n        \"companyName\": \"Nombre de la empresa\",\n        \"catchPhrase\": \"Eslogan\",\n        \"word\": \"Palabra\",\n        \"sentence\": \"Oración\",\n        \"paragraph\": \"Párrafo\",\n        \"past\": \"Fecha pasada\",\n        \"future\": \"Fecha futura\",\n        \"recent\": \"Fecha reciente\",\n        \"birthdate\": \"Fecha de nacimiento\",\n        \"int\": \"Entero\",\n        \"float\": \"Flotante\",\n        \"boolean\": \"Booleano\",\n        \"phoneNumber\": \"Número de teléfono\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL del avatar\",\n        \"imageUrl\": \"URL de la imagen\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Convertidores\",\n    \"caseConverter\": {\n      \"label\": \"Convertidor de mayúsculas\",\n      \"description\": \"Transformar texto a diferentes casos\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Texto a Unicode\",\n      \"description\": \"Convertir texto a Unicode y viceversa\",\n      \"modes\": {\n        \"textToUnicode\": \"Texto → Unicode\",\n        \"unicodeToText\": \"Unicode → Texto\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Texto a ASCII Binary\",\n      \"description\": \"Convertir texto a ASCII binary y viceversa\",\n      \"modes\": {\n        \"textToAscii\": \"Texto → ASCII\",\n        \"asciiToText\": \"ASCII → Texto\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Codificar o decodificar texto a Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Texto → Base64\",\n        \"base64ToText\": \"Base64 → Texto\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON a YAML\",\n      \"description\": \"Convertir JSON a YAML y viceversa\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON a TOML\",\n      \"description\": \"Convertir JSON a TOML y viceversa\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON a XML\",\n      \"description\": \"Convertir JSON a XML y viceversa\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Convertidor de colores\",\n      \"description\": \"Convertir colores entre diferentes formatos\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Criptografía / Seguridad\",\n    \"hash\": {\n      \"label\": \"Generador de hash\",\n      \"description\": \"Generar hashes a partir de texto\"\n    },\n    \"hmac\": {\n      \"label\": \"Generador HMAC\",\n      \"description\": \"Generar código de autenticación de mensaje basado en hash (HMAC) compuesto por una clave y un mensaje\"\n    },\n    \"password\": {\n      \"label\": \"Generador de contraseñas\",\n      \"description\": \"Generar una contraseña segura\"\n    },\n    \"uuid\": {\n      \"label\": \"Generador UUID\",\n      \"description\": \"Generar un identificador único universal (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Web\",\n    \"urlParser\": {\n      \"label\": \"Analizador URL\",\n      \"description\": \"Analizar una URL en sus componentes\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Codificar o decodificar URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Convertir texto a un slug compatible con URL\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Entrada\",\n    \"output\": \"Salida\",\n    \"inputString\": \"Cadena de entrada\",\n    \"outputString\": \"Cadena de salida\",\n    \"inputUrl\": \"URL de entrada\",\n    \"outputUrl\": \"URL de salida\",\n    \"parsedUrl\": \"URL analizada\",\n    \"splitQueryString\": \"Dividir Query String\",\n    \"key\": \"Clave\",\n    \"value\": \"Valor\",\n    \"component\": \"Componente\",\n    \"result\": \"Resultado\",\n    \"secretKey\": \"Clave secreta\",\n    \"algorithm\": \"Algoritmo\",\n    \"version\": \"Versión\",\n    \"amount\": \"Cantidad\",\n    \"type\": \"Tipo\",\n    \"length\": \"Longitud\",\n    \"options\": \"Opciones\",\n    \"numbers\": \"Números\",\n    \"symbols\": \"Símbolos\",\n    \"lowercase\": \"Minúsculas\",\n    \"uppercase\": \"Mayúsculas\",\n    \"placeholder\": {\n      \"text\": \"Ingrese un texto\",\n      \"value\": \"Ingrese un valor\",\n      \"secretKey\": \"Ingrese una clave secreta\",\n      \"url\": \"Ingrese una URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/es_ES/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Preferencias\",\n    \"devtools\": \"Herramientas de Desarrollo\",\n    \"update\": \"Buscar Actualizaciones...\",\n    \"quit\": \"Salir de massCode\",\n    \"about\": \"Acerca de massCode\",\n    \"hide\": \"Ocultar massCode\"\n  },\n  \"help\": {\n    \"label\": \"Ayuda\",\n    \"website\": \"Sitio Web\",\n    \"documentation\": \"Documentación\",\n    \"viewInGitHub\": \"Ver en GitHub\",\n    \"changeLog\": \"Registro de Cambios\",\n    \"reportIssue\": \"Reportar Problema\",\n    \"giveStar\": \"Dar una Estrella\",\n    \"extension\": {\n      \"vscode\": \"Extensión VS Code\",\n      \"raycast\": \"Extensión Raycast\",\n      \"alfred\": \"Extensión Alfred\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Donar en Open Collective\",\n      \"payPal\": \"Donar vía PayPal\",\n      \"gumroad\": \"Donar vía Gumroad (Visa, Mastercard, etc.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Alternar Herramientas de Desarrollo\",\n    \"links\": {\n      \"snippets\": \"Colección de Snippets\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Editar\",\n    \"find\": \"Buscar\"\n  },\n  \"view\": {\n    \"label\": \"Vista\",\n    \"sortBy\": {\n      \"label\": \"Ordenar Snippets Por\",\n      \"dateModified\": \"Fecha de Modificación\",\n      \"dateCreated\": \"Fecha de Creación\",\n      \"name\": \"Nombre\"\n    },\n    \"compactMode\": \"Modo Compacto\",\n    \"showSidebar\": \"Mostrar/ocultar barra lateral\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"copy\": \"Copiar Snippet al Portapapeles\",\n    \"format\": \"Formatear\",\n    \"previewCode\": \"Vista Previa del Código\",\n    \"previewScreenshot\": \"Vista Previa de Captura\",\n    \"previewJson\": \"Vista previa JSON\",\n    \"fontSizeIncrease\": \"Aumentar Tamaño de Fuente\",\n    \"fontSizeDecrease\": \"Disminuir Tamaño de Fuente\",\n    \"fontSizeReset\": \"Restablecer Tamaño de Fuente\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Modo Presentación\",\n    \"preview\": \"Vista Previa\",\n    \"previewMarkdown\": \"Vista Previa de Markdown\",\n    \"previewMindmap\": \"Vista Previa de Mapa Mental\"\n  },\n  \"history\": {\n    \"label\": \"Historial\",\n    \"back\": \"Atrás\",\n    \"forward\": \"Adelante\"\n  },\n  \"devtools\": {\n    \"label\": \"Herramientas de Desarrollo\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/es_ES/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"¿Estás seguro de que quieres eliminar \\\"{{name}}\\\"?\",\n    \"deletePermanently\": \"¿Estás seguro de que quieres eliminar permanentemente \\\"{{name}}\\\"?\",\n    \"deleteConfirmMultipleSnippets\": \"¿Estás seguro de que quieres eliminar permanentemente {{count}} snippets seleccionados?\",\n    \"emptyTrash\": \"¿Estás seguro de que quieres eliminar permanentemente todos los snippets de la Papelera?\",\n    \"clearDb\": \"¿Estás seguro de que quieres limpiar la base de datos?\",\n    \"migrateDb\": [\n      \"¿Estás seguro de que quieres migrar?\",\n      \"Durante la migración, la biblioteca actual será sobrescrita.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"Copiado al portapapeles\",\n    \"migrate\": \"Base de datos migrada exitosamente.\",\n    \"backup\": {\n      \"created\": \"Copia de seguridad creada exitosamente.\",\n      \"restored\": \"Copia de seguridad restaurada exitosamente.\",\n      \"deleted\": \"Copia de seguridad eliminada exitosamente.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"No podrás deshacer esta acción.\",\n    \"allSnippetsMoveToTrash\": \"Todos los snippets en esta carpeta se moverán a la papelera.\",\n    \"deleteTag\": \"Esto también causará que se elimine la etiqueta de todos los snippets.\",\n    \"createDb\": \"Por favor selecciona otra carpeta\",\n    \"clearDb\": \"Esto eliminará permanentemente todos los Snippets, Carpetas y Etiquetas de la base de datos.\",\n    \"htmlCssPreview\": \"Agregue un fragmento HTML para ver el resultado. Agregue CSS para el estilo y JavaScript para la interactividad.\",\n    \"codeBlockRenderer\": [\n      \"Al usar Codemirror, el lenguaje a establecer para el bloque de código debe corresponder a uno de los valores de los\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"Para usar servicios de sincronización como iCloud Drive, Google Drive o Dropbox, simplemente mueve el almacenamiento a las carpetas sincronizadas correspondientes\",\n    \"migrate\": {\n      \"fromV3\": \"Para migrar desde massCode v3 selecciona la carpeta que contiene el archivo JSON.\",\n      \"fromSnippetsLab\": \"Para migrar desde SnippetsLab selecciona el archivo JSON.\",\n      \"snippetsLabLimitations\": [\n        \"Algunas limitaciones. Durante la migración desde SnippetsLab:\",\n        \"Todas las carpetas serán de primer nivel ya que el archivo JSON (inferior a v2.1) no representa carpetas anidadas.\",\n        \"Los snippets con lenguajes no soportados se establecerán como Plain Text por defecto.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Hola, soy Anton 👋<br><br>\\nGracias por usar massCode. Si encuentras útil esta aplicación, por favor {{-tagStart}}dona{{-tagEnd}}. Me inspirará a continuar el desarrollo del proyecto.\",\n    \"unsponsored\": \"Sin patrocinio\"\n  },\n  \"update\": {\n    \"available\": \"La versión {{newVersion}} está disponible para descargar.\\nTu versión es {{oldVersion}}.\",\n    \"noAvailable\": \"Actualmente no hay actualizaciones disponibles.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/es_ES/preferences.json",
    "content": "{\n  \"label\": \"Preferencias\",\n  \"storage\": {\n    \"label\": \"Almacenamiento\",\n    \"migrate\": \"Migrar\",\n    \"count\": \"Cantidad\",\n    \"clearDatabase\": \"Limpiar Base de Datos\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"fontSize\": \"Tamaño de Fuente\",\n    \"fontFamily\": \"Familia de Fuente\",\n    \"wrap\": {\n      \"label\": \"Ajuste\",\n      \"wordWrap\": \"Ajuste de Texto\",\n      \"off\": \"Desactivado\"\n    },\n    \"tabSize\": \"Tamaño de Tabulación\",\n    \"showInvisibles\": \"Mostrar Invisibles\",\n    \"highlightLine\": \"Resaltar Línea\",\n    \"highlightGutter\": \"Resaltar Margen\",\n    \"matchBrackets\": \"Emparejar Corchetes\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Coma Final\",\n        \"none\": \"Ninguna\",\n        \"all\": \"Todas\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Punto y Coma\",\n      \"singleQuote\": \"Comilla Simple\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Apariencia\",\n    \"theme\": {\n      \"label\": \"Tema\",\n      \"light\": \"Claro\",\n      \"dark\": \"Oscuro\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Idioma\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Renderizador de Bloques de Código\"\n  },\n  \"api\": {\n    \"label\": \"Puerto API\",\n    \"port\": {\n      \"label\": \"Puerto API\",\n      \"description\": \"Número de puerto para el servidor API (requiere reiniciar la aplicación). Rango válido: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/es_ES/ui.json",
    "content": "{\n  \"total\": \"Total\",\n  \"line\": \"Línea\",\n  \"column\": \"Columna\",\n  \"fragment\": \"Fragmento\",\n  \"path\": \"Ruta\",\n  \"button\": {\n    \"back\": \"Atrás\",\n    \"cancel\": \"Cancelar\",\n    \"clear\": \"Limpiar\",\n    \"confirm\": \"Confirmar\",\n    \"copy\": \"Copiar\",\n    \"fit\": \"Ajustar\",\n    \"generate\": \"Generar\",\n    \"ok\": \"OK\",\n    \"revers\": \"Invertir\",\n    \"saveAs\": \"Guardar como\",\n    \"sort\": \"Ordenar\",\n    \"update\": [\"Ir a GitHub\", \"OK\"],\n    \"zoomIn\": \"Acercar\",\n    \"zoomOut\": \"Alejar\",\n    \"darkMode\": \"Modo Oscuro\",\n    \"toggleDarkMode\": \"Alternar modo oscuro\",\n    \"background\": \"Fondo\",\n    \"goToDownload\": \"Ir a Descargar\",\n    \"refreshPreview\": \"Actualizar vista previa\",\n    \"laserPointer\": \"Puntero láser\",\n    \"fullscreen\": \"Pantalla completa\",\n    \"prev\": \"Anterior\",\n    \"next\": \"Siguiente\"\n  },\n  \"action\": {\n    \"close\": \"Cerrar\",\n    \"defaultLanguage\": \"Lenguaje Predeterminado\",\n    \"duplicate\": \"Duplicar\",\n    \"rename\": \"Renombrar\",\n    \"restore\": \"Restaurar\",\n    \"setCustomIcon\": \"Establecer Icono\",\n    \"removeCustomIcon\": \"Eliminar Icono\",\n    \"show\": \"Mostrar\",\n    \"hide\": \"Ocultar\",\n    \"showSidebar\": \"Mostrar barra lateral\",\n    \"hideSidebar\": \"Ocultar barra lateral\",\n    \"new\": {\n      \"storage\": \"Nuevo Almacenamiento\",\n      \"folder\": \"Nueva Carpeta\",\n      \"snippet\": \"Nuevo Snippet\",\n      \"fragment\": \"Nuevo Fragmento\"\n    },\n    \"add\": {\n      \"description\": \"Agregar Descripción\",\n      \"tag\": \"Agregar Etiqueta\",\n      \"toFavorites\": \"Agregar a Favoritos\"\n    },\n    \"open\": {\n      \"storage\": \"Abrir Almacenamiento\"\n    },\n    \"move\": {\n      \"storage\": \"Mover Almacenamiento\",\n      \"toTrash\": \"Mover a la Papelera\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Eliminar de Favoritos\"\n    },\n    \"reload\": {\n      \"storage\": \"Recargar Almacenamiento\"\n    },\n    \"delete\": {\n      \"common\": \"Eliminar\",\n      \"now\": \"Eliminar Ahora\",\n      \"allData\": \"Eliminar Todos los Datos\",\n      \"trash\": \"Vaciar Papelera\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Desde SnippetsLab\",\n      \"fromV3\": \"Desde massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Exportar a HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Copiar Enlace del Snippet\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Bandeja de entrada\",\n    \"favorites\": \"Favoritos\",\n    \"allSnippets\": \"Todos los Snippets\",\n    \"trash\": \"Papelera\",\n    \"folders\": \"Carpetas\",\n    \"library\": \"Biblioteca\",\n    \"tags\": \"Etiquetas\"\n  },\n  \"folder\": {\n    \"untitled\": \"Carpeta sin título\",\n    \"plural\": \"Carpetas\",\n    \"collapseAll\": \"Contraer Todo\",\n    \"expandAll\": \"Expandir Todo\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Snippet sin título\",\n    \"plural\": \"Snippets\",\n    \"emptyName\": \"Escriba el nombre del snippet\",\n    \"selectedMultiple\": \"{{count}} Snippets Seleccionados\",\n    \"noSelected\": \"Ningún Snippet Seleccionado\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Agregue etiquetas a los snippets para verlos aquí\",\n    \"emptyFoldersList\": \"Sin carpetas\",\n    \"emptySnippetsList\": \"Sin fragmentos\",\n    \"search\": \"Buscar\",\n    \"addTag\": \"Agregar Etiqueta\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fa_IR/devtools.json",
    "content": "{\n  \"label\": \"ابزارهای توسعه‌دهنده\",\n  \"generators\": {\n    \"label\": \"تولیدکننده‌ها\",\n    \"lorem\": {\n      \"label\": \"تولیدکننده Lorem Ipsum\",\n      \"description\": \"تولید متن نگهدارنده\",\n      \"selectType\": \"نوع را انتخاب کنید\",\n      \"maxCount\": \"حداکثر {{count}}\",\n      \"types\": {\n        \"words\": \"کلمات\",\n        \"sentences\": \"جمله‌ها\",\n        \"paragraphs\": \"پاراگراف‌ها\"\n      }\n    },\n    \"json\": {\n      \"label\": \"تولیدکننده JSON\",\n      \"description\": \"تولید داده‌های JSON تصادفی با انواع مختلف فیلد\",\n      \"fields\": \"فیلدها\",\n      \"fieldName\": \"نام فیلد\",\n      \"selectType\": \"انتخاب نوع\",\n      \"addField\": \"افزودن فیلد\",\n      \"rowCount\": \"تعداد ردیف‌ها\",\n      \"maxRows\": \"حداکثر ۱۰۰۰\",\n      \"categories\": {\n        \"general\": \"عمومی\",\n        \"person\": \"شخص\",\n        \"internet\": \"اینترنت\",\n        \"location\": \"مکان\",\n        \"finance\": \"مالی\",\n        \"commerce\": \"تجارت\",\n        \"company\": \"شرکت\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"تاریخ\",\n        \"number\": \"عدد\",\n        \"phone\": \"تلفن\",\n        \"image\": \"تصویر\"\n      },\n      \"types\": {\n        \"rowNumber\": \"شماره ردیف\",\n        \"firstName\": \"نام\",\n        \"lastName\": \"نام خانوادگی\",\n        \"fullName\": \"نام کامل\",\n        \"gender\": \"جنسیت\",\n        \"jobTitle\": \"عنوان شغلی\",\n        \"email\": \"آدرس ایمیل\",\n        \"username\": \"نام کاربری\",\n        \"password\": \"رمز عبور\",\n        \"url\": \"URL\",\n        \"ipv4\": \"آدرس IP v4\",\n        \"ipv6\": \"آدرس IP v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"شهر\",\n        \"country\": \"کشور\",\n        \"streetAddress\": \"آدرس خیابان\",\n        \"zipCode\": \"کد پستی\",\n        \"latitude\": \"عرض جغرافیایی\",\n        \"longitude\": \"طول جغرافیایی\",\n        \"amount\": \"مقدار\",\n        \"currencyCode\": \"کد ارز\",\n        \"creditCardNumber\": \"شماره کارت اعتباری\",\n        \"productName\": \"نام محصول\",\n        \"price\": \"قیمت\",\n        \"department\": \"بخش\",\n        \"companyName\": \"نام شرکت\",\n        \"catchPhrase\": \"شعار\",\n        \"word\": \"کلمه\",\n        \"sentence\": \"جمله\",\n        \"paragraph\": \"پاراگراف\",\n        \"past\": \"تاریخ گذشته\",\n        \"future\": \"تاریخ آینده\",\n        \"recent\": \"تاریخ اخیر\",\n        \"birthdate\": \"تاریخ تولد\",\n        \"int\": \"عدد صحیح\",\n        \"float\": \"عدد اعشاری\",\n        \"boolean\": \"بولی\",\n        \"phoneNumber\": \"شماره تلفن\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL آواتار\",\n        \"imageUrl\": \"URL تصویر\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"مبدل‌ها\",\n    \"caseConverter\": {\n      \"label\": \"مبدل حروف بزرگ و کوچک\",\n      \"description\": \"تبدیل متن به فرمت‌های مختلف حروف\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"متن به Unicode\",\n      \"description\": \"تبدیل متن به Unicode و برعکس\",\n      \"modes\": {\n        \"textToUnicode\": \"متن ← Unicode\",\n        \"unicodeToText\": \"Unicode ← متن\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"متن به ASCII Binary\",\n      \"description\": \"تبدیل متن به ASCII binary و برعکس\",\n      \"modes\": {\n        \"textToAscii\": \"متن ← ASCII\",\n        \"asciiToText\": \"ASCII ← متن\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"رمزگذاری یا رمزگشایی متن به Base64\",\n      \"modes\": {\n        \"textToBase64\": \"متن ← Base64\",\n        \"base64ToText\": \"Base64 ← متن\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON به YAML\",\n      \"description\": \"تبدیل JSON به YAML و برعکس\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON ← YAML\",\n        \"yamlToJson\": \"YAML ← JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON به TOML\",\n      \"description\": \"تبدیل JSON به TOML و برعکس\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON ← TOML\",\n        \"tomlToJson\": \"TOML ← JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON به XML\",\n      \"description\": \"تبدیل JSON به XML و برعکس\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON ← XML\",\n        \"xmlToJson\": \"XML ← JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"مبدل رنگ\",\n      \"description\": \"تبدیل رنگ‌ها بین فرمت‌های مختلف\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"رمزنگاری / امنیت\",\n    \"hash\": {\n      \"label\": \"تولیدکننده Hash\",\n      \"description\": \"تولید hash از متن\"\n    },\n    \"hmac\": {\n      \"label\": \"تولیدکننده HMAC\",\n      \"description\": \"تولید کد احراز هویت پیام مبتنی بر hash (HMAC) متشکل از کلید و پیام\"\n    },\n    \"password\": {\n      \"label\": \"تولیدکننده رمز عبور\",\n      \"description\": \"تولید رمز عبور امن\"\n    },\n    \"uuid\": {\n      \"label\": \"تولیدکننده UUID\",\n      \"description\": \"تولید شناسه منحصر به فرد جهانی (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"وب\",\n    \"urlParser\": {\n      \"label\": \"تجزیه‌کننده URL\",\n      \"description\": \"تجزیه URL به اجزای آن\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"رمزگذاری یا رمزگشایی URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"تبدیل متن به slug سازگار با URL\"\n    }\n  },\n  \"form\": {\n    \"input\": \"ورودی\",\n    \"output\": \"خروجی\",\n    \"inputString\": \"رشته ورودی\",\n    \"outputString\": \"رشته خروجی\",\n    \"inputUrl\": \"URL ورودی\",\n    \"outputUrl\": \"URL خروجی\",\n    \"parsedUrl\": \"URL تجزیه شده\",\n    \"splitQueryString\": \"تقسیم Query String\",\n    \"key\": \"کلید\",\n    \"value\": \"مقدار\",\n    \"component\": \"جزء\",\n    \"result\": \"نتیجه\",\n    \"secretKey\": \"کلید مخفی\",\n    \"algorithm\": \"الگوریتم\",\n    \"version\": \"نسخه\",\n    \"amount\": \"مقدار\",\n    \"type\": \"نوع\",\n    \"length\": \"طول\",\n    \"options\": \"گزینه‌ها\",\n    \"numbers\": \"اعداد\",\n    \"symbols\": \"نمادها\",\n    \"lowercase\": \"حروف کوچک\",\n    \"uppercase\": \"حروف بزرگ\",\n    \"placeholder\": {\n      \"text\": \"متن وارد کنید\",\n      \"value\": \"مقدار وارد کنید\",\n      \"secretKey\": \"کلید مخفی وارد کنید\",\n      \"url\": \"URL وارد کنید\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fa_IR/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"تنظیمات\",\n    \"devtools\": \"ابزارهای توسعه\",\n    \"update\": \"بررسی به‌روزرسانی‌ها...\",\n    \"quit\": \"خروج از massCode\",\n    \"about\": \"درباره massCode\",\n    \"hide\": \"مخفی کردن massCode\"\n  },\n  \"help\": {\n    \"label\": \"راهنما\",\n    \"website\": \"وب‌سایت\",\n    \"documentation\": \"مستندات\",\n    \"viewInGitHub\": \"مشاهده در GitHub\",\n    \"changeLog\": \"تغییرات\",\n    \"reportIssue\": \"گزارش مشکل\",\n    \"giveStar\": \"دادن ستاره\",\n    \"extension\": {\n      \"vscode\": \"افزونه VS Code\",\n      \"raycast\": \"افزونه Raycast\",\n      \"alfred\": \"افزونه Alfred\"\n    },\n    \"donate\": {\n      \"openCollective\": \"حمایت مالی در Open Collective\",\n      \"payPal\": \"حمایت مالی از طریق PayPal\",\n      \"gumroad\": \"حمایت مالی از طریق Gumroad (Visa، Mastercard و غیره)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"تغییر وضعیت ابزارهای توسعه\",\n    \"links\": {\n      \"snippets\": \"مجموعه Snippet\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"ویرایش\",\n    \"find\": \"جستجو\"\n  },\n  \"view\": {\n    \"label\": \"نمایش\",\n    \"sortBy\": {\n      \"label\": \"مرتب‌سازی Snippetها بر اساس\",\n      \"dateModified\": \"تاریخ ویرایش\",\n      \"dateCreated\": \"تاریخ ایجاد\",\n      \"name\": \"نام\"\n    },\n    \"compactMode\": \"حالت فشرده\",\n    \"showSidebar\": \"نمایش/پنهان کردن نوار کناری\"\n  },\n  \"editor\": {\n    \"label\": \"ویرایشگر\",\n    \"copy\": \"کپی Snippet به کلیپ‌بورد\",\n    \"format\": \"قالب‌بندی\",\n    \"previewCode\": \"پیش‌نمایش کد\",\n    \"previewScreenshot\": \"پیش‌نمایش تصویر\",\n    \"previewJson\": \"پیش‌نمایش JSON\",\n    \"fontSizeIncrease\": \"افزایش اندازه فونت\",\n    \"fontSizeDecrease\": \"کاهش اندازه فونت\",\n    \"fontSizeReset\": \"بازنشانی اندازه فونت\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"حالت ارائه\",\n    \"preview\": \"پیش‌نمایش\",\n    \"previewMarkdown\": \"پیش‌نمایش Markdown\",\n    \"previewMindmap\": \"پیش‌نمایش نقشه ذهنی\"\n  },\n  \"history\": {\n    \"label\": \"تاریخچه\",\n    \"back\": \"عقب\",\n    \"forward\": \"جلو\"\n  },\n  \"devtools\": {\n    \"label\": \"ابزارهای توسعه\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fa_IR/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"آیا مطمئن هستید که می‌خواهید \\\"{{name}}\\\" را حذف کنید؟\",\n    \"deletePermanently\": \"آیا مطمئن هستید که می‌خواهید \\\"{{name}}\\\" را به طور دائم حذف کنید؟\",\n    \"deleteConfirmMultipleSnippets\": \"آیا مطمئن هستید که می‌خواهید {{count}} snippet انتخاب شده را به طور دائم حذف کنید؟\",\n    \"emptyTrash\": \"آیا مطمئن هستید که می‌خواهید تمام snippets موجود در سطل زباله را به طور دائم حذف کنید؟\",\n    \"clearDb\": \"آیا مطمئن هستید که می‌خواهید پایگاه داده را پاک کنید؟\",\n    \"migrateDb\": [\n      \"آیا مطمئن هستید که می‌خواهید مهاجرت کنید؟\",\n      \"در طول مهاجرت، کتابخانه فعلی بازنویسی خواهد شد.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"در کلیپ‌بورد کپی شد\",\n    \"migrate\": \"پایگاه داده با موفقیت مهاجرت کرد.\",\n    \"backup\": {\n      \"created\": \"پشتیبان با موفقیت ایجاد شد.\",\n      \"restored\": \"پشتیبان با موفقیت بازیابی شد.\",\n      \"deleted\": \"پشتیبان با موفقیت حذف شد.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"شما نمی‌توانید این عمل را برگردانید.\",\n    \"allSnippetsMoveToTrash\": \"تمام snippets در این پوشه به سطل زباله منتقل خواهند شد.\",\n    \"deleteTag\": \"این کار باعث حذف برچسب از تمام snippets خواهد شد.\",\n    \"createDb\": \"لطفاً پوشه دیگری را انتخاب کنید\",\n    \"clearDb\": \"این کار تمام Snippets، پوشه‌ها و برچسب‌ها را از پایگاه داده به طور دائم حذف خواهد کرد.\",\n    \"htmlCssPreview\": \"برای دیدن نتیجه، یک قطعه HTML اضافه کنید. برای استایل‌دهی CSS و برای تعامل JavaScript اضافه کنید.\",\n    \"codeBlockRenderer\": [\n      \"هنگام استفاده از Codemirror، زبان تنظیم شده برای بلوک کد باید با یکی از مقادیر\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"برای استفاده از سرویس‌های همگام‌سازی مانند iCloud Drive، Google Drive یا Dropbox، کافیست محل ذخیره‌سازی را به پوشه‌های همگام‌سازی شده مربوطه منتقل کنید\",\n    \"migrate\": {\n      \"fromV3\": \"برای مهاجرت از massCode v3 پوشه حاوی فایل JSON را انتخاب کنید.\",\n      \"fromSnippetsLab\": \"برای مهاجرت از SnippetsLab فایل JSON را انتخاب کنید.\",\n      \"snippetsLabLimitations\": [\n        \"برخی محدودیت‌ها. در طول مهاجرت از SnippetsLab:\",\n        \"تمام پوشه‌ها در سطح اول خواهند بود زیرا فایل JSON (نسخه زیر 2.1) پوشه‌های تو در تو را نمایش نمی‌دهد.\",\n        \"Snippets با زبان‌های پشتیبانی نشده به صورت پیش‌فرض به Plain Text تنظیم خواهند شد.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"سلام، من Anton هستم 👋<br><br>\\nممنون از استفاده شما از massCode. اگر این برنامه را مفید می‌دانید، لطفاً {{-tagStart}}حمایت مالی کنید{{-tagEnd}}. این کار به من انگیزه می‌دهد تا به توسعه پروژه ادامه دهم.\",\n    \"unsponsored\": \"بدون حامی مالی\"\n  },\n  \"update\": {\n    \"available\": \"نسخه {{newVersion}} برای دانلود در دسترس است.\\nنسخه شما {{oldVersion}} است.\",\n    \"noAvailable\": \"در حال حاضر به‌روزرسانی در دسترس نیست.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fa_IR/preferences.json",
    "content": "{\n  \"label\": \"تنظیمات\",\n  \"storage\": {\n    \"label\": \"ذخیره‌سازی\",\n    \"migrate\": \"مهاجرت\",\n    \"count\": \"تعداد\",\n    \"clearDatabase\": \"پاک کردن پایگاه داده\"\n  },\n  \"editor\": {\n    \"label\": \"ویرایشگر\",\n    \"fontSize\": \"اندازه فونت\",\n    \"fontFamily\": \"خانواده فونت\",\n    \"wrap\": {\n      \"label\": \"شکستن خط\",\n      \"wordWrap\": \"شکستن کلمه\",\n      \"off\": \"خاموش\"\n    },\n    \"tabSize\": \"اندازه تب\",\n    \"showInvisibles\": \"نمایش نامرئی‌ها\",\n    \"highlightLine\": \"برجسته کردن خط\",\n    \"highlightGutter\": \"برجسته کردن حاشیه\",\n    \"matchBrackets\": \"تطبیق پرانتزها\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"کاما انتهایی\",\n        \"none\": \"هیچ\",\n        \"all\": \"همه\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"نقطه‌ویرگول\",\n      \"singleQuote\": \"تک کوتیشن\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"ظاهر\",\n    \"theme\": {\n      \"label\": \"تم\",\n      \"light\": \"روشن\",\n      \"dark\": \"تاریک\"\n    }\n  },\n  \"language\": {\n    \"label\": \"زبان\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"رندرکننده بلوک کد\"\n  },\n  \"api\": {\n    \"label\": \"پورت API\",\n    \"port\": {\n      \"label\": \"پورت API\",\n      \"description\": \"شماره پورت برای سرور API (نیاز به راه‌اندازی مجدد برنامه دارد). محدوده معتبر: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fa_IR/ui.json",
    "content": "{\n  \"total\": \"مجموع\",\n  \"line\": \"خط\",\n  \"column\": \"ستون\",\n  \"fragment\": \"قطعه\",\n  \"path\": \"مسیر\",\n  \"button\": {\n    \"back\": \"بازگشت\",\n    \"cancel\": \"لغو\",\n    \"clear\": \"پاک کردن\",\n    \"confirm\": \"تایید\",\n    \"copy\": \"کپی\",\n    \"fit\": \"متناسب\",\n    \"generate\": \"تولید\",\n    \"ok\": \"تایید\",\n    \"revers\": \"معکوس\",\n    \"saveAs\": \"ذخیره به عنوان\",\n    \"sort\": \"مرتب‌سازی\",\n    \"update\": [\"رفتن به GitHub\", \"تایید\"],\n    \"zoomIn\": \"بزرگنمایی\",\n    \"zoomOut\": \"کوچک‌نمایی\",\n    \"darkMode\": \"حالت تاریک\",\n    \"toggleDarkMode\": \"تغییر حالت تاریک\",\n    \"background\": \"پس‌زمینه\",\n    \"goToDownload\": \"رفتن به دانلود\",\n    \"refreshPreview\": \"به‌روزرسانی پیش‌نمایش\",\n    \"laserPointer\": \"اشاره‌گر لیزری\",\n    \"fullscreen\": \"تمام صفحه\",\n    \"prev\": \"قبلی\",\n    \"next\": \"بعدی\"\n  },\n  \"action\": {\n    \"close\": \"بستن\",\n    \"defaultLanguage\": \"زبان پیش‌فرض\",\n    \"duplicate\": \"تکثیر\",\n    \"rename\": \"تغییر نام\",\n    \"restore\": \"بازیابی\",\n    \"setCustomIcon\": \"تنظیم آیکون\",\n    \"removeCustomIcon\": \"حذف آیکون\",\n    \"show\": \"نمایش\",\n    \"hide\": \"پنهان\",\n    \"showSidebar\": \"نمایش نوار کناری\",\n    \"hideSidebar\": \"مخفی کردن نوار کناری\",\n    \"new\": {\n      \"storage\": \"فضای ذخیره‌سازی جدید\",\n      \"folder\": \"پوشه جدید\",\n      \"snippet\": \"Snippet جدید\",\n      \"fragment\": \"قطعه جدید\"\n    },\n    \"add\": {\n      \"description\": \"افزودن توضیحات\",\n      \"tag\": \"افزودن برچسب\",\n      \"toFavorites\": \"افزودن به علاقه‌مندی‌ها\"\n    },\n    \"open\": {\n      \"storage\": \"باز کردن فضای ذخیره‌سازی\"\n    },\n    \"move\": {\n      \"storage\": \"انتقال فضای ذخیره‌سازی\",\n      \"toTrash\": \"انتقال به سطل زباله\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"حذف از علاقه‌مندی‌ها\"\n    },\n    \"reload\": {\n      \"storage\": \"بارگذاری مجدد فضای ذخیره‌سازی\"\n    },\n    \"delete\": {\n      \"common\": \"حذف\",\n      \"now\": \"حذف اکنون\",\n      \"allData\": \"حذف تمام داده‌ها\",\n      \"trash\": \"خالی کردن سطل زباله\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"از SnippetsLab\",\n      \"fromV3\": \"از massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"خروجی به HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"کپی لینک Snippet\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"صندوق ورودی\",\n    \"favorites\": \"علاقه‌مندی‌ها\",\n    \"allSnippets\": \"همه Snippetها\",\n    \"trash\": \"سطل زباله\",\n    \"folders\": \"پوشه‌ها\",\n    \"library\": \"کتابخانه\",\n    \"tags\": \"برچسب‌ها\"\n  },\n  \"folder\": {\n    \"untitled\": \"پوشه بدون عنوان\",\n    \"plural\": \"پوشه‌ها\",\n    \"collapseAll\": \"بستن همه\",\n    \"expandAll\": \"باز کردن همه\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Snippet بدون عنوان\",\n    \"plural\": \"Snippetها\",\n    \"emptyName\": \"نام snippet را وارد کنید\",\n    \"selectedMultiple\": \"{{count}} Snippet انتخاب شده\",\n    \"noSelected\": \"هیچ Snippet انتخاب نشده\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"برای مشاهده snippetها در اینجا، به آنها برچسب اضافه کنید\",\n    \"emptyFoldersList\": \"بدون پوشه\",\n    \"emptySnippetsList\": \"بدون اسنیپت\",\n    \"search\": \"جستجو\",\n    \"addTag\": \"افزودن برچسب\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fr_FR/devtools.json",
    "content": "{\n  \"label\": \"Outils de développement\",\n  \"generators\": {\n    \"label\": \"Générateurs\",\n    \"lorem\": {\n      \"label\": \"Générateur Lorem Ipsum\",\n      \"description\": \"Générer du texte d'espace réservé\",\n      \"selectType\": \"Sélectionner le type\",\n      \"maxCount\": \"Max {{count}}\",\n      \"types\": {\n        \"words\": \"Mots\",\n        \"sentences\": \"Phrases\",\n        \"paragraphs\": \"Paragraphes\"\n      }\n    },\n    \"json\": {\n      \"label\": \"Générateur JSON\",\n      \"description\": \"Générer des données JSON aléatoires avec différents types de champs\",\n      \"fields\": \"Champs\",\n      \"fieldName\": \"Nom du champ\",\n      \"selectType\": \"Sélectionner le type\",\n      \"addField\": \"Ajouter un champ\",\n      \"rowCount\": \"Nombre de lignes\",\n      \"maxRows\": \"Max 1000\",\n      \"categories\": {\n        \"general\": \"Général\",\n        \"person\": \"Personne\",\n        \"internet\": \"Internet\",\n        \"location\": \"Localisation\",\n        \"finance\": \"Finance\",\n        \"commerce\": \"Commerce\",\n        \"company\": \"Entreprise\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Date\",\n        \"number\": \"Nombre\",\n        \"phone\": \"Téléphone\",\n        \"image\": \"Image\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Numéro de ligne\",\n        \"firstName\": \"Prénom\",\n        \"lastName\": \"Nom de famille\",\n        \"fullName\": \"Nom complet\",\n        \"gender\": \"Genre\",\n        \"jobTitle\": \"Titre du poste\",\n        \"email\": \"Adresse e-mail\",\n        \"username\": \"Nom d'utilisateur\",\n        \"password\": \"Mot de passe\",\n        \"url\": \"URL\",\n        \"ipv4\": \"Adresse IP v4\",\n        \"ipv6\": \"Adresse IP v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Ville\",\n        \"country\": \"Pays\",\n        \"streetAddress\": \"Adresse\",\n        \"zipCode\": \"Code postal\",\n        \"latitude\": \"Latitude\",\n        \"longitude\": \"Longitude\",\n        \"amount\": \"Montant\",\n        \"currencyCode\": \"Code de devise\",\n        \"creditCardNumber\": \"Numéro de carte de crédit\",\n        \"productName\": \"Nom du produit\",\n        \"price\": \"Prix\",\n        \"department\": \"Département\",\n        \"companyName\": \"Nom de l'entreprise\",\n        \"catchPhrase\": \"Slogan\",\n        \"word\": \"Mot\",\n        \"sentence\": \"Phrase\",\n        \"paragraph\": \"Paragraphe\",\n        \"past\": \"Date passée\",\n        \"future\": \"Date future\",\n        \"recent\": \"Date récente\",\n        \"birthdate\": \"Date de naissance\",\n        \"int\": \"Entier\",\n        \"float\": \"Flottant\",\n        \"boolean\": \"Booléen\",\n        \"phoneNumber\": \"Numéro de téléphone\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL de l'avatar\",\n        \"imageUrl\": \"URL de l'image\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Convertisseurs\",\n    \"caseConverter\": {\n      \"label\": \"Convertisseur de casse\",\n      \"description\": \"Transformer le texte en différentes casses\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Texte vers Unicode\",\n      \"description\": \"Convertir le texte en Unicode et vice versa\",\n      \"modes\": {\n        \"textToUnicode\": \"Texte → Unicode\",\n        \"unicodeToText\": \"Unicode → Texte\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Texte vers ASCII Binary\",\n      \"description\": \"Convertir le texte en ASCII binary et vice versa\",\n      \"modes\": {\n        \"textToAscii\": \"Texte → ASCII\",\n        \"asciiToText\": \"ASCII → Texte\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Encoder ou décoder le texte en Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Texte → Base64\",\n        \"base64ToText\": \"Base64 → Texte\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON vers YAML\",\n      \"description\": \"Convertir JSON en YAML et vice versa\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON vers TOML\",\n      \"description\": \"Convertir JSON en TOML et vice versa\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON vers XML\",\n      \"description\": \"Convertir JSON en XML et vice versa\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Convertisseur de couleurs\",\n      \"description\": \"Convertir les couleurs entre différents formats\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Cryptographie / Sécurité\",\n    \"hash\": {\n      \"label\": \"Générateur de hash\",\n      \"description\": \"Générer des hashes à partir de texte\"\n    },\n    \"hmac\": {\n      \"label\": \"Générateur HMAC\",\n      \"description\": \"Générer un code d'authentification de message basé sur le hash (HMAC) composé d'une clé et d'un message\"\n    },\n    \"password\": {\n      \"label\": \"Générateur de mot de passe\",\n      \"description\": \"Générer un mot de passe sécurisé\"\n    },\n    \"uuid\": {\n      \"label\": \"Générateur UUID\",\n      \"description\": \"Générer un identifiant unique universel (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Web\",\n    \"urlParser\": {\n      \"label\": \"Analyseur URL\",\n      \"description\": \"Analyser une URL en ses composants\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Encoder ou décoder une URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Convertir le texte en slug compatible URL\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Entrée\",\n    \"output\": \"Sortie\",\n    \"inputString\": \"Chaîne d'entrée\",\n    \"outputString\": \"Chaîne de sortie\",\n    \"inputUrl\": \"URL d'entrée\",\n    \"outputUrl\": \"URL de sortie\",\n    \"parsedUrl\": \"URL analysée\",\n    \"splitQueryString\": \"Diviser Query String\",\n    \"key\": \"Clé\",\n    \"value\": \"Valeur\",\n    \"component\": \"Composant\",\n    \"result\": \"Résultat\",\n    \"secretKey\": \"Clé secrète\",\n    \"algorithm\": \"Algorithme\",\n    \"version\": \"Version\",\n    \"amount\": \"Quantité\",\n    \"type\": \"Type\",\n    \"length\": \"Longueur\",\n    \"options\": \"Options\",\n    \"numbers\": \"Chiffres\",\n    \"symbols\": \"Symboles\",\n    \"lowercase\": \"Minuscules\",\n    \"uppercase\": \"Majuscules\",\n    \"placeholder\": {\n      \"text\": \"Entrez un texte\",\n      \"value\": \"Entrez une valeur\",\n      \"secretKey\": \"Entrez une clé secrète\",\n      \"url\": \"Entrez une URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fr_FR/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Préférences\",\n    \"devtools\": \"Outils de développement\",\n    \"update\": \"Rechercher des mises à jour...\",\n    \"quit\": \"Quitter massCode\",\n    \"about\": \"À propos de massCode\",\n    \"hide\": \"Masquer massCode\"\n  },\n  \"help\": {\n    \"label\": \"Aide\",\n    \"website\": \"Site Web\",\n    \"documentation\": \"Documentation\",\n    \"viewInGitHub\": \"Voir sur GitHub\",\n    \"changeLog\": \"Journal des modifications\",\n    \"reportIssue\": \"Signaler un problème\",\n    \"giveStar\": \"Donner une étoile\",\n    \"extension\": {\n      \"vscode\": \"Extension VS Code\",\n      \"raycast\": \"Extension Raycast\",\n      \"alfred\": \"Extension Alfred\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Faire un don sur Open Collective\",\n      \"payPal\": \"Faire un don via PayPal\",\n      \"gumroad\": \"Faire un don via Gumroad (Visa, Mastercard, etc.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Basculer les outils de développement\",\n    \"links\": {\n      \"snippets\": \"Collection de snippets\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Édition\",\n    \"find\": \"Rechercher\"\n  },\n  \"view\": {\n    \"label\": \"Affichage\",\n    \"sortBy\": {\n      \"label\": \"Trier les snippets par\",\n      \"dateModified\": \"Date de modification\",\n      \"dateCreated\": \"Date de création\",\n      \"name\": \"Nom\"\n    },\n    \"compactMode\": \"Mode compact\",\n    \"showSidebar\": \"Afficher/masquer la barre latérale\"\n  },\n  \"editor\": {\n    \"label\": \"Éditeur\",\n    \"copy\": \"Copier le snippet dans le presse-papiers\",\n    \"format\": \"Formater\",\n    \"previewCode\": \"Aperçu du code\",\n    \"previewScreenshot\": \"Aperçu de la capture d'écran\",\n    \"previewJson\": \"Aperçu JSON\",\n    \"fontSizeIncrease\": \"Augmenter la taille de la police\",\n    \"fontSizeDecrease\": \"Diminuer la taille de la police\",\n    \"fontSizeReset\": \"Réinitialiser la taille de la police\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Mode présentation\",\n    \"preview\": \"Aperçu\",\n    \"previewMarkdown\": \"Aperçu Markdown\",\n    \"previewMindmap\": \"Aperçu de la carte mentale\"\n  },\n  \"history\": {\n    \"label\": \"Historique\",\n    \"back\": \"Retour\",\n    \"forward\": \"Suivant\"\n  },\n  \"devtools\": {\n    \"label\": \"Outils de développement\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fr_FR/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Êtes-vous sûr de vouloir supprimer \\\"{{name}}\\\" ?\",\n    \"deletePermanently\": \"Êtes-vous sûr de vouloir supprimer définitivement \\\"{{name}}\\\" ?\",\n    \"deleteConfirmMultipleSnippets\": \"Êtes-vous sûr de vouloir supprimer définitivement les {{count}} snippets sélectionnés ?\",\n    \"emptyTrash\": \"Êtes-vous sûr de vouloir supprimer définitivement tous les snippets de la Corbeille ?\",\n    \"clearDb\": \"Êtes-vous sûr de vouloir effacer la base de données ?\",\n    \"migrateDb\": [\n      \"Êtes-vous sûr de vouloir migrer ?\",\n      \"Pendant la migration, la bibliothèque actuelle sera écrasée.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"Copié dans le presse-papiers\",\n    \"migrate\": \"Base de données migrée avec succès.\",\n    \"backup\": {\n      \"created\": \"Sauvegarde créée avec succès.\",\n      \"restored\": \"Sauvegarde restaurée avec succès.\",\n      \"deleted\": \"Sauvegarde supprimée avec succès.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Vous ne pouvez pas annuler cette action.\",\n    \"allSnippetsMoveToTrash\": \"Tous les snippets de ce dossier seront déplacés dans la corbeille.\",\n    \"deleteTag\": \"Cela supprimera également cette étiquette de tous les snippets.\",\n    \"createDb\": \"Veuillez sélectionner un autre dossier\",\n    \"clearDb\": \"Cela supprimera définitivement tous les Snippets, Dossiers et Étiquettes de la base de données.\",\n    \"htmlCssPreview\": \"Ajoutez un fragment HTML pour voir le résultat. Ajoutez du CSS pour le style et JavaScript pour l'interactivité.\",\n    \"codeBlockRenderer\": [\n      \"Lors de l'utilisation de Codemirror, le langage à définir pour le bloc de code doit correspondre à l'une des valeurs des\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"Pour utiliser des services de synchronisation comme iCloud Drive, Google Drive ou Dropbox, déplacez simplement le stockage vers les dossiers synchronisés correspondants\",\n    \"migrate\": {\n      \"fromV3\": \"Pour migrer depuis massCode v3, sélectionnez le dossier contenant le fichier JSON.\",\n      \"fromSnippetsLab\": \"Pour migrer depuis SnippetsLab, sélectionnez le fichier JSON.\",\n      \"snippetsLabLimitations\": [\n        \"Quelques limitations. Pendant la migration depuis SnippetsLab :\",\n        \"Tous les dossiers seront au premier niveau car le fichier JSON (inférieur à v2.1) ne représente pas les dossiers imbriqués.\",\n        \"Les snippets avec des langages non supportés seront définis par défaut en Plain Text.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Salut, c'est Anton 👋<br><br>\\nMerci d'utiliser massCode. Si vous trouvez cette application utile, veuillez {{-tagStart}}faire un don{{-tagEnd}}. Cela m'inspirera à continuer le développement du projet.\",\n    \"unsponsored\": \"Non sponsorisé\"\n  },\n  \"update\": {\n    \"available\": \"La version {{newVersion}} est maintenant disponible au téléchargement.\\nVotre version est {{oldVersion}}.\",\n    \"noAvailable\": \"Il n'y a actuellement aucune mise à jour disponible.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fr_FR/preferences.json",
    "content": "{\n  \"label\": \"Préférences\",\n  \"storage\": {\n    \"label\": \"Stockage\",\n    \"migrate\": \"Migrer\",\n    \"count\": \"Nombre\",\n    \"clearDatabase\": \"Effacer la base de données\"\n  },\n  \"editor\": {\n    \"label\": \"Éditeur\",\n    \"fontSize\": \"Taille de police\",\n    \"fontFamily\": \"Famille de police\",\n    \"wrap\": {\n      \"label\": \"Retour à la ligne\",\n      \"wordWrap\": \"Retour à la ligne automatique\",\n      \"off\": \"Désactivé\"\n    },\n    \"tabSize\": \"Taille de tabulation\",\n    \"showInvisibles\": \"Afficher les caractères invisibles\",\n    \"highlightLine\": \"Surligner la ligne\",\n    \"highlightGutter\": \"Surligner la gouttière\",\n    \"matchBrackets\": \"Correspondance des parenthèses\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Virgule finale\",\n        \"none\": \"Aucune\",\n        \"all\": \"Toutes\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Point-virgule\",\n      \"singleQuote\": \"Guillemet simple\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Apparence\",\n    \"theme\": {\n      \"label\": \"Thème\",\n      \"light\": \"Clair\",\n      \"dark\": \"Sombre\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Langue\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Rendu des blocs de code\"\n  },\n  \"api\": {\n    \"label\": \"Port API\",\n    \"port\": {\n      \"label\": \"Port API\",\n      \"description\": \"Numéro de port pour le serveur API (nécessite un redémarrage de l'application). Plage valide: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/fr_FR/ui.json",
    "content": "{\n  \"total\": \"Total\",\n  \"line\": \"Ligne\",\n  \"column\": \"Colonne\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Chemin\",\n  \"button\": {\n    \"back\": \"Retour\",\n    \"cancel\": \"Annuler\",\n    \"clear\": \"Effacer\",\n    \"confirm\": \"Confirmer\",\n    \"copy\": \"Copier\",\n    \"fit\": \"Ajuster\",\n    \"generate\": \"Générer\",\n    \"ok\": \"OK\",\n    \"revers\": \"Inverser\",\n    \"saveAs\": \"Enregistrer sous\",\n    \"sort\": \"Trier\",\n    \"update\": [\"Aller sur GitHub\", \"OK\"],\n    \"zoomIn\": \"Zoom avant\",\n    \"zoomOut\": \"Zoom arrière\",\n    \"darkMode\": \"Mode sombre\",\n    \"toggleDarkMode\": \"Basculer le mode sombre\",\n    \"background\": \"Arrière-plan\",\n    \"goToDownload\": \"Aller au téléchargement\",\n    \"refreshPreview\": \"Actualiser l'aperçu\",\n    \"laserPointer\": \"Pointeur laser\",\n    \"fullscreen\": \"Plein écran\",\n    \"prev\": \"Précédent\",\n    \"next\": \"Suivant\"\n  },\n  \"action\": {\n    \"close\": \"Fermer\",\n    \"defaultLanguage\": \"Langue par défaut\",\n    \"duplicate\": \"Dupliquer\",\n    \"rename\": \"Renommer\",\n    \"restore\": \"Restaurer\",\n    \"setCustomIcon\": \"Définir une icône\",\n    \"removeCustomIcon\": \"Supprimer l'icône\",\n    \"show\": \"Afficher\",\n    \"hide\": \"Masquer\",\n    \"showSidebar\": \"Afficher la barre latérale\",\n    \"hideSidebar\": \"Masquer la barre latérale\",\n    \"new\": {\n      \"storage\": \"Nouveau stockage\",\n      \"folder\": \"Nouveau dossier\",\n      \"snippet\": \"Nouveau snippet\",\n      \"fragment\": \"Nouveau fragment\"\n    },\n    \"add\": {\n      \"description\": \"Ajouter une description\",\n      \"tag\": \"Ajouter un tag\",\n      \"toFavorites\": \"Ajouter aux favoris\"\n    },\n    \"open\": {\n      \"storage\": \"Ouvrir le stockage\"\n    },\n    \"move\": {\n      \"storage\": \"Déplacer le stockage\",\n      \"toTrash\": \"Déplacer vers la corbeille\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Retirer des favoris\"\n    },\n    \"reload\": {\n      \"storage\": \"Recharger le stockage\"\n    },\n    \"delete\": {\n      \"common\": \"Supprimer\",\n      \"now\": \"Supprimer maintenant\",\n      \"allData\": \"Supprimer toutes les données\",\n      \"trash\": \"Vider la corbeille\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Depuis SnippetsLab\",\n      \"fromV3\": \"Depuis massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Exporter en HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Copier le lien du snippet\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Boîte de réception\",\n    \"favorites\": \"Favoris\",\n    \"allSnippets\": \"Tous les snippets\",\n    \"trash\": \"Corbeille\",\n    \"folders\": \"Dossiers\",\n    \"library\": \"Bibliothèque\",\n    \"tags\": \"Tags\"\n  },\n  \"folder\": {\n    \"untitled\": \"Dossier sans titre\",\n    \"plural\": \"Dossiers\",\n    \"collapseAll\": \"Tout réduire\",\n    \"expandAll\": \"Tout développer\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Snippet sans titre\",\n    \"plural\": \"Snippets\",\n    \"emptyName\": \"Saisissez le nom du snippet\",\n    \"selectedMultiple\": \"{{count}} snippets sélectionnés\",\n    \"noSelected\": \"Aucun snippet sélectionné\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Ajoutez des tags aux snippets pour les voir ici\",\n    \"emptyFoldersList\": \"Aucun dossier\",\n    \"emptySnippetsList\": \"Aucun snippet\",\n    \"search\": \"Rechercher\",\n    \"addTag\": \"Ajouter un tag\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ja_JP/devtools.json",
    "content": "{\n  \"label\": \"開発者ツール\",\n  \"generators\": {\n    \"label\": \"ジェネレーター\",\n    \"lorem\": {\n      \"label\": \"Lorem Ipsum ジェネレーター\",\n      \"description\": \"プレースホルダーテキストを生成\",\n      \"selectType\": \"タイプを選択\",\n      \"maxCount\": \"最大 {{count}}\",\n      \"types\": {\n        \"words\": \"単語\",\n        \"sentences\": \"文\",\n        \"paragraphs\": \"段落\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON ジェネレーター\",\n      \"description\": \"さまざまなフィールドタイプでランダムな JSON データを生成\",\n      \"fields\": \"フィールド\",\n      \"fieldName\": \"フィールド名\",\n      \"selectType\": \"タイプを選択\",\n      \"addField\": \"フィールドを追加\",\n      \"rowCount\": \"行数\",\n      \"maxRows\": \"最大 1000\",\n      \"categories\": {\n        \"general\": \"一般\",\n        \"person\": \"人物\",\n        \"internet\": \"インターネット\",\n        \"location\": \"場所\",\n        \"finance\": \"財務\",\n        \"commerce\": \"商取引\",\n        \"company\": \"会社\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"日付\",\n        \"number\": \"数字\",\n        \"phone\": \"電話\",\n        \"image\": \"画像\"\n      },\n      \"types\": {\n        \"rowNumber\": \"行番号\",\n        \"firstName\": \"名\",\n        \"lastName\": \"姓\",\n        \"fullName\": \"フルネーム\",\n        \"gender\": \"性別\",\n        \"jobTitle\": \"職種\",\n        \"email\": \"メールアドレス\",\n        \"username\": \"ユーザー名\",\n        \"password\": \"パスワード\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP アドレス v4\",\n        \"ipv6\": \"IP アドレス v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"都市\",\n        \"country\": \"国\",\n        \"streetAddress\": \"住所\",\n        \"zipCode\": \"郵便番号\",\n        \"latitude\": \"緯度\",\n        \"longitude\": \"経度\",\n        \"amount\": \"金額\",\n        \"currencyCode\": \"通貨コード\",\n        \"creditCardNumber\": \"クレジットカード番号\",\n        \"productName\": \"製品名\",\n        \"price\": \"価格\",\n        \"department\": \"部門\",\n        \"companyName\": \"会社名\",\n        \"catchPhrase\": \"キャッチフレーズ\",\n        \"word\": \"単語\",\n        \"sentence\": \"文\",\n        \"paragraph\": \"段落\",\n        \"past\": \"過去の日付\",\n        \"future\": \"未来の日付\",\n        \"recent\": \"最近の日付\",\n        \"birthdate\": \"生年月日\",\n        \"int\": \"整数\",\n        \"float\": \"浮動小数点\",\n        \"boolean\": \"ブール値\",\n        \"phoneNumber\": \"電話番号\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"アバター URL\",\n        \"imageUrl\": \"画像 URL\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"コンバーター\",\n    \"caseConverter\": {\n      \"label\": \"ケースコンバーター\",\n      \"description\": \"テキストを異なるケースに変換\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"テキストからUnicode\",\n      \"description\": \"テキストをUnicodeに変換、またはその逆\",\n      \"modes\": {\n        \"textToUnicode\": \"テキスト → Unicode\",\n        \"unicodeToText\": \"Unicode → テキスト\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"テキストからASCII Binary\",\n      \"description\": \"テキストをASCII binaryに変換、またはその逆\",\n      \"modes\": {\n        \"textToAscii\": \"テキスト → ASCII\",\n        \"asciiToText\": \"ASCII → テキスト\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"テキストをBase64にエンコード、またはデコード\",\n      \"modes\": {\n        \"textToBase64\": \"テキスト → Base64\",\n        \"base64ToText\": \"Base64 → テキスト\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSONからYAML\",\n      \"description\": \"JSONをYAMLに変換、またはその逆\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSONからTOML\",\n      \"description\": \"JSONをTOMLに変換、またはその逆\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSONからXML\",\n      \"description\": \"JSONをXMLに変換、またはその逆\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"カラーコンバーター\",\n      \"description\": \"色を異なるフォーマット間で変換\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"暗号化 / セキュリティ\",\n    \"hash\": {\n      \"label\": \"ハッシュジェネレーター\",\n      \"description\": \"テキストからハッシュを生成\"\n    },\n    \"hmac\": {\n      \"label\": \"HMACジェネレーター\",\n      \"description\": \"キーとメッセージから構成されるハッシュベースメッセージ認証コード（HMAC）を生成\"\n    },\n    \"password\": {\n      \"label\": \"パスワードジェネレーター\",\n      \"description\": \"安全なパスワードを生成\"\n    },\n    \"uuid\": {\n      \"label\": \"UUIDジェネレーター\",\n      \"description\": \"汎用一意識別子（UUID）を生成\"\n    }\n  },\n  \"web\": {\n    \"label\": \"ウェブ\",\n    \"urlParser\": {\n      \"label\": \"URLパーサー\",\n      \"description\": \"URLをコンポーネントに解析\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"URLをエンコード、またはデコード\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"テキストをURL対応のslugに変換\"\n    }\n  },\n  \"form\": {\n    \"input\": \"入力\",\n    \"output\": \"出力\",\n    \"inputString\": \"入力文字列\",\n    \"outputString\": \"出力文字列\",\n    \"inputUrl\": \"入力URL\",\n    \"outputUrl\": \"出力URL\",\n    \"parsedUrl\": \"解析されたURL\",\n    \"splitQueryString\": \"Query Stringを分割\",\n    \"key\": \"キー\",\n    \"value\": \"値\",\n    \"component\": \"コンポーネント\",\n    \"result\": \"結果\",\n    \"secretKey\": \"秘密キー\",\n    \"algorithm\": \"アルゴリズム\",\n    \"version\": \"バージョン\",\n    \"amount\": \"数量\",\n    \"type\": \"タイプ\",\n    \"length\": \"長さ\",\n    \"options\": \"オプション\",\n    \"numbers\": \"数字\",\n    \"symbols\": \"記号\",\n    \"lowercase\": \"小文字\",\n    \"uppercase\": \"大文字\",\n    \"placeholder\": {\n      \"text\": \"テキストを入力\",\n      \"value\": \"値を入力\",\n      \"secretKey\": \"秘密キーを入力\",\n      \"url\": \"URLを入力\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ja_JP/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"環境設定\",\n    \"devtools\": \"開発者ツール\",\n    \"update\": \"アップデートを確認...\",\n    \"quit\": \"massCodeを終了\",\n    \"about\": \"massCodeについて\",\n    \"hide\": \"massCodeを隠す\"\n  },\n  \"help\": {\n    \"label\": \"ヘルプ\",\n    \"website\": \"ウェブサイト\",\n    \"documentation\": \"ドキュメント\",\n    \"viewInGitHub\": \"GitHubで表示\",\n    \"changeLog\": \"変更履歴\",\n    \"reportIssue\": \"問題を報告\",\n    \"giveStar\": \"スターを付ける\",\n    \"extension\": {\n      \"vscode\": \"VS Code拡張機能\",\n      \"raycast\": \"Raycast拡張機能\",\n      \"alfred\": \"Alfred拡張機能\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Open Collectiveで寄付\",\n      \"payPal\": \"PayPalで寄付\",\n      \"gumroad\": \"Gumroadで寄付（Visa、Mastercard等）\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"開発者ツールの切り替え\",\n    \"links\": {\n      \"snippets\": \"スニペットコレクション\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"編集\",\n    \"find\": \"検索\"\n  },\n  \"view\": {\n    \"label\": \"表示\",\n    \"sortBy\": {\n      \"label\": \"スニペットの並び替え\",\n      \"dateModified\": \"更新日時\",\n      \"dateCreated\": \"作成日時\",\n      \"name\": \"名前\"\n    },\n    \"compactMode\": \"コンパクトモード\",\n    \"showSidebar\": \"サイドバーの表示/非表示\"\n  },\n  \"editor\": {\n    \"label\": \"エディタ\",\n    \"copy\": \"スニペットをクリップボードにコピー\",\n    \"format\": \"フォーマット\",\n    \"previewCode\": \"コードのプレビュー\",\n    \"previewScreenshot\": \"スクリーンショットのプレビュー\",\n    \"previewJson\": \"JSON プレビュー\",\n    \"fontSizeIncrease\": \"フォントサイズを大きく\",\n    \"fontSizeDecrease\": \"フォントサイズを小さく\",\n    \"fontSizeReset\": \"フォントサイズをリセット\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"プレゼンテーションモード\",\n    \"preview\": \"プレビュー\",\n    \"previewMarkdown\": \"Markdownのプレビュー\",\n    \"previewMindmap\": \"マインドマップのプレビュー\"\n  },\n  \"history\": {\n    \"label\": \"履歴\",\n    \"back\": \"戻る\",\n    \"forward\": \"進む\"\n  },\n  \"devtools\": {\n    \"label\": \"開発者ツール\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ja_JP/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"「{{name}}」を削除してもよろしいですか？\",\n    \"deletePermanently\": \"「{{name}}」を完全に削除してもよろしいですか？\",\n    \"deleteConfirmMultipleSnippets\": \"選択された{{count}}個のスニペットを完全に削除してもよろしいですか？\",\n    \"emptyTrash\": \"ゴミ箱内のすべてのスニペットを完全に削除してもよろしいですか？\",\n    \"clearDb\": \"データベースをクリアしてもよろしいですか？\",\n    \"migrateDb\": [\n      \"移行してもよろしいですか？\",\n      \"移行中、現在のライブラリは上書きされます。\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"クリップボードにコピーしました\",\n    \"migrate\": \"データベースの移行が完了しました。\",\n    \"backup\": {\n      \"created\": \"バックアップが正常に作成されました。\",\n      \"restored\": \"バックアップが正常に復元されました。\",\n      \"deleted\": \"バックアップが正常に削除されました。\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"この操作は取り消せません。\",\n    \"allSnippetsMoveToTrash\": \"このフォルダ内のすべてのスニペットはゴミ箱に移動されます。\",\n    \"deleteTag\": \"このタグを持つすべてのスニペットからタグが削除されます。\",\n    \"createDb\": \"別のフォルダを選択してください\",\n    \"clearDb\": \"これによりデータベースからすべてのスニペット、フォルダ、タグが完全に削除されます。\",\n    \"htmlCssPreview\": \"結果を表示するにはHTMLフラグメントを追加してください。スタイリングにはCSSを、インタラクティブ性にはJavaScriptを追加してください。\",\n    \"codeBlockRenderer\": [\n      \"Codemirrorを使用する場合、コードブロックに設定する言語は\",\n      \"languagesの値の1つに対応している必要があります\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"iCloud Drive、Google Drive、Dropboxなどの同期サービスを使用するには、対応する同期フォルダにストレージを移動するだけです\",\n    \"migrate\": {\n      \"fromV3\": \"massCode v3から移行するには、JSONファイルを含むフォルダを選択してください。\",\n      \"fromSnippetsLab\": \"SnippetsLabから移行するには、JSONファイルを選択してください。\",\n      \"snippetsLabLimitations\": [\n        \"移行時の制限事項：\",\n        \"JSONファイル（v2.1以下）はネストされたフォルダを表現できないため、すべてのフォルダは第一階層になります。\",\n        \"サポートされていない言語のスニペットはデフォルトのPlain Textに設定されます。\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"こんにちは、Antonです 👋<br><br>\\nmassCodeをご利用いただきありがとうございます。このアプリが役立つと感じられましたら、{{-tagStart}}寄付{{-tagEnd}}をご検討ください。プロジェクトの開発を継続する励みになります。\",\n    \"unsponsored\": \"未スポンサー\"\n  },\n  \"update\": {\n    \"available\": \"バージョン{{newVersion}}がダウンロード可能です。\\n現在のバージョンは{{oldVersion}}です。\",\n    \"noAvailable\": \"現在利用可能なアップデートはありません。\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ja_JP/preferences.json",
    "content": "{\n  \"label\": \"環境設定\",\n  \"storage\": {\n    \"label\": \"ストレージ\",\n    \"migrate\": \"移行\",\n    \"count\": \"カウント\",\n    \"clearDatabase\": \"データベースをクリア\"\n  },\n  \"editor\": {\n    \"label\": \"エディタ\",\n    \"fontSize\": \"フォントサイズ\",\n    \"fontFamily\": \"フォントファミリー\",\n    \"wrap\": {\n      \"label\": \"折り返し\",\n      \"wordWrap\": \"ワードラップ\",\n      \"off\": \"オフ\"\n    },\n    \"tabSize\": \"タブサイズ\",\n    \"showInvisibles\": \"不可視文字を表示\",\n    \"highlightLine\": \"現在行をハイライト\",\n    \"highlightGutter\": \"ガッターをハイライト\",\n    \"matchBrackets\": \"括弧の対応を表示\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"末尾のカンマ\",\n        \"none\": \"なし\",\n        \"all\": \"すべて\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"セミコロン\",\n      \"singleQuote\": \"シングルクォート\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"外観\",\n    \"theme\": {\n      \"label\": \"テーマ\",\n      \"light\": \"ライト\",\n      \"dark\": \"ダーク\"\n    }\n  },\n  \"language\": {\n    \"label\": \"言語\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"コードブロックレンダラー\"\n  },\n  \"api\": {\n    \"label\": \"APIポート\",\n    \"port\": {\n      \"label\": \"APIポート\",\n      \"description\": \"APIサーバーのポート番号（アプリの再起動が必要です）。有効範囲：1024-65535。\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ja_JP/ui.json",
    "content": "{\n  \"total\": \"合計\",\n  \"line\": \"行\",\n  \"column\": \"列\",\n  \"fragment\": \"フラグメント\",\n  \"path\": \"パス\",\n  \"button\": {\n    \"back\": \"戻る\",\n    \"cancel\": \"キャンセル\",\n    \"clear\": \"クリア\",\n    \"confirm\": \"確認\",\n    \"copy\": \"コピー\",\n    \"fit\": \"フィット\",\n    \"generate\": \"生成\",\n    \"ok\": \"OK\",\n    \"revers\": \"反転\",\n    \"saveAs\": \"名前を付けて保存\",\n    \"sort\": \"並べ替え\",\n    \"update\": [\"GitHubへ移動\", \"OK\"],\n    \"zoomIn\": \"拡大\",\n    \"zoomOut\": \"縮小\",\n    \"darkMode\": \"ダークモード\",\n    \"toggleDarkMode\": \"ダークモードの切り替え\",\n    \"background\": \"背景\",\n    \"goToDownload\": \"ダウンロードへ\",\n    \"refreshPreview\": \"プレビューを更新\",\n    \"laserPointer\": \"レーザーポインター\",\n    \"fullscreen\": \"フルスクリーン\",\n    \"prev\": \"前へ\",\n    \"next\": \"次へ\"\n  },\n  \"action\": {\n    \"close\": \"閉じる\",\n    \"defaultLanguage\": \"デフォルト言語\",\n    \"duplicate\": \"複製\",\n    \"rename\": \"名前変更\",\n    \"restore\": \"復元\",\n    \"setCustomIcon\": \"アイコンを設定\",\n    \"removeCustomIcon\": \"アイコンを削除\",\n    \"show\": \"表示\",\n    \"hide\": \"非表示\",\n    \"showSidebar\": \"サイドバーを表示\",\n    \"hideSidebar\": \"サイドバーを非表示\",\n    \"new\": {\n      \"storage\": \"新規ストレージ\",\n      \"folder\": \"新規フォルダ\",\n      \"snippet\": \"新規スニペット\",\n      \"fragment\": \"新規フラグメント\"\n    },\n    \"add\": {\n      \"description\": \"説明を追加\",\n      \"tag\": \"タグを追加\",\n      \"toFavorites\": \"お気に入りに追加\"\n    },\n    \"open\": {\n      \"storage\": \"ストレージを開く\"\n    },\n    \"move\": {\n      \"storage\": \"ストレージを移動\",\n      \"toTrash\": \"ゴミ箱へ移動\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"お気に入りから削除\"\n    },\n    \"reload\": {\n      \"storage\": \"ストレージを再読み込み\"\n    },\n    \"delete\": {\n      \"common\": \"削除\",\n      \"now\": \"今すぐ削除\",\n      \"allData\": \"すべてのデータを削除\",\n      \"trash\": \"ゴミ箱を空にする\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"SnippetsLabから\",\n      \"fromV3\": \"massCode v3から\"\n    },\n    \"export\": {\n      \"toHtml\": \"HTMLにエクスポート\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"スニペットリンクをコピー\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"受信トレイ\",\n    \"favorites\": \"お気に入り\",\n    \"allSnippets\": \"すべてのスニペット\",\n    \"trash\": \"ゴミ箱\",\n    \"folders\": \"フォルダ\",\n    \"library\": \"ライブラリ\",\n    \"tags\": \"タグ\"\n  },\n  \"folder\": {\n    \"untitled\": \"無題のフォルダ\",\n    \"plural\": \"フォルダ\",\n    \"collapseAll\": \"すべて折りたたむ\",\n    \"expandAll\": \"すべて展開\"\n  },\n  \"snippet\": {\n    \"untitled\": \"無題のスニペット\",\n    \"plural\": \"スニペット\",\n    \"emptyName\": \"スニペット名を入力\",\n    \"selectedMultiple\": \"{{count}}個のスニペットを選択\",\n    \"noSelected\": \"スニペットが選択されていません\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"タグを追加するとここに表示されます\",\n    \"emptyFoldersList\": \"フォルダーなし\",\n    \"emptySnippetsList\": \"スニペットなし\",\n    \"search\": \"検索\",\n    \"addTag\": \"タグを追加\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pl_PL/devtools.json",
    "content": "{\n  \"label\": \"Narzędzia deweloperskie\",\n  \"generators\": {\n    \"label\": \"Generatory\",\n    \"lorem\": {\n      \"label\": \"Generator Lorem Ipsum\",\n      \"description\": \"Generuj tekst zastępczy\",\n      \"selectType\": \"Wybierz typ\",\n      \"maxCount\": \"Maks {{count}}\",\n      \"types\": {\n        \"words\": \"Słowa\",\n        \"sentences\": \"Zdania\",\n        \"paragraphs\": \"Akapity\"\n      }\n    },\n    \"json\": {\n      \"label\": \"Generator JSON\",\n      \"description\": \"Generuj losowe dane JSON z różnymi typami pól\",\n      \"fields\": \"Pola\",\n      \"fieldName\": \"Nazwa pola\",\n      \"selectType\": \"Wybierz typ\",\n      \"addField\": \"Dodaj pole\",\n      \"rowCount\": \"Liczba wierszy\",\n      \"maxRows\": \"Maks 1000\",\n      \"categories\": {\n        \"general\": \"Ogólne\",\n        \"person\": \"Osoba\",\n        \"internet\": \"Internet\",\n        \"location\": \"Lokalizacja\",\n        \"finance\": \"Finanse\",\n        \"commerce\": \"Handel\",\n        \"company\": \"Firma\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Data\",\n        \"number\": \"Liczba\",\n        \"phone\": \"Telefon\",\n        \"image\": \"Obraz\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Numer wiersza\",\n        \"firstName\": \"Imię\",\n        \"lastName\": \"Nazwisko\",\n        \"fullName\": \"Pełne imię\",\n        \"gender\": \"Płeć\",\n        \"jobTitle\": \"Stanowisko\",\n        \"email\": \"Adres e-mail\",\n        \"username\": \"Nazwa użytkownika\",\n        \"password\": \"Hasło\",\n        \"url\": \"URL\",\n        \"ipv4\": \"Adres IP v4\",\n        \"ipv6\": \"Adres IP v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Miasto\",\n        \"country\": \"Kraj\",\n        \"streetAddress\": \"Adres\",\n        \"zipCode\": \"Kod pocztowy\",\n        \"latitude\": \"Szerokość geograficzna\",\n        \"longitude\": \"Długość geograficzna\",\n        \"amount\": \"Kwota\",\n        \"currencyCode\": \"Kod waluty\",\n        \"creditCardNumber\": \"Numer karty kredytowej\",\n        \"productName\": \"Nazwa produktu\",\n        \"price\": \"Cena\",\n        \"department\": \"Dział\",\n        \"companyName\": \"Nazwa firmy\",\n        \"catchPhrase\": \"Hasło reklamowe\",\n        \"word\": \"Słowo\",\n        \"sentence\": \"Zdanie\",\n        \"paragraph\": \"Akapit\",\n        \"past\": \"Przeszła data\",\n        \"future\": \"Przyszła data\",\n        \"recent\": \"Ostatnia data\",\n        \"birthdate\": \"Data urodzenia\",\n        \"int\": \"Liczba całkowita\",\n        \"float\": \"Liczba zmiennoprzecinkowa\",\n        \"boolean\": \"Wartość logiczna\",\n        \"phoneNumber\": \"Numer telefonu\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL awatara\",\n        \"imageUrl\": \"URL obrazu\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Konwertery\",\n    \"caseConverter\": {\n      \"label\": \"Konwerter wielkości liter\",\n      \"description\": \"Przekształcanie tekstu do różnych formatów\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Tekst na Unicode\",\n      \"description\": \"Konwertowanie tekstu na Unicode i odwrotnie\",\n      \"modes\": {\n        \"textToUnicode\": \"Tekst → Unicode\",\n        \"unicodeToText\": \"Unicode → Tekst\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Tekst na ASCII Binary\",\n      \"description\": \"Konwertowanie tekstu na ASCII binary i odwrotnie\",\n      \"modes\": {\n        \"textToAscii\": \"Tekst → ASCII\",\n        \"asciiToText\": \"ASCII → Tekst\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Kodowanie lub dekodowanie tekstu do Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Tekst → Base64\",\n        \"base64ToText\": \"Base64 → Tekst\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON na YAML\",\n      \"description\": \"Konwertowanie JSON na YAML i odwrotnie\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON na TOML\",\n      \"description\": \"Konwertowanie JSON na TOML i odwrotnie\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON na XML\",\n      \"description\": \"Konwertowanie JSON na XML i odwrotnie\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Konwerter kolorów\",\n      \"description\": \"Konwertowanie kolorów między różnymi formatami\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Kryptografia / Bezpieczeństwo\",\n    \"hash\": {\n      \"label\": \"Generator hash\",\n      \"description\": \"Generowanie hashy z tekstu\"\n    },\n    \"hmac\": {\n      \"label\": \"Generator HMAC\",\n      \"description\": \"Generowanie kodu uwierzytelniania wiadomości opartego na hash (HMAC) złożonego z klucza i wiadomości\"\n    },\n    \"password\": {\n      \"label\": \"Generator haseł\",\n      \"description\": \"Generowanie bezpiecznego hasła\"\n    },\n    \"uuid\": {\n      \"label\": \"Generator UUID\",\n      \"description\": \"Generowanie uniwersalnego unikalnego identyfikatora (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Web\",\n    \"urlParser\": {\n      \"label\": \"Parser URL\",\n      \"description\": \"Parsowanie URL na komponenty\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Kodowanie lub dekodowanie URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Konwertowanie tekstu na slug przyjazny URL\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Wejście\",\n    \"output\": \"Wyjście\",\n    \"inputString\": \"Ciąg wejściowy\",\n    \"outputString\": \"Ciąg wyjściowy\",\n    \"inputUrl\": \"URL wejściowy\",\n    \"outputUrl\": \"URL wyjściowy\",\n    \"parsedUrl\": \"Sparsowany URL\",\n    \"splitQueryString\": \"Podziel Query String\",\n    \"key\": \"Klucz\",\n    \"value\": \"Wartość\",\n    \"component\": \"Komponent\",\n    \"result\": \"Wynik\",\n    \"secretKey\": \"Klucz tajny\",\n    \"algorithm\": \"Algorytm\",\n    \"version\": \"Wersja\",\n    \"amount\": \"Ilość\",\n    \"type\": \"Typ\",\n    \"length\": \"Długość\",\n    \"options\": \"Opcje\",\n    \"numbers\": \"Cyfry\",\n    \"symbols\": \"Symbole\",\n    \"lowercase\": \"Małe litery\",\n    \"uppercase\": \"Wielkie litery\",\n    \"placeholder\": {\n      \"text\": \"Wprowadź tekst\",\n      \"value\": \"Wprowadź wartość\",\n      \"secretKey\": \"Wprowadź klucz tajny\",\n      \"url\": \"Wprowadź URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pl_PL/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Preferencje\",\n    \"devtools\": \"Narzędzia deweloperskie\",\n    \"update\": \"Sprawdź aktualizacje...\",\n    \"quit\": \"Zakończ massCode\",\n    \"about\": \"O massCode\",\n    \"hide\": \"Ukryj massCode\"\n  },\n  \"help\": {\n    \"label\": \"Pomoc\",\n    \"website\": \"Strona internetowa\",\n    \"documentation\": \"Dokumentacja\",\n    \"viewInGitHub\": \"Zobacz na GitHub\",\n    \"changeLog\": \"Lista zmian\",\n    \"reportIssue\": \"Zgłoś problem\",\n    \"giveStar\": \"Dodaj gwiazdkę\",\n    \"extension\": {\n      \"vscode\": \"Rozszerzenie VS Code\",\n      \"raycast\": \"Rozszerzenie Raycast\",\n      \"alfred\": \"Rozszerzenie Alfred\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Wesprzyj przez Open Collective\",\n      \"payPal\": \"Wesprzyj przez PayPal\",\n      \"gumroad\": \"Wesprzyj przez Gumroad (Visa, Mastercard, itp.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Przełącz narzędzia deweloperskie\",\n    \"links\": {\n      \"snippets\": \"Kolekcja fragmentów\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Edycja\",\n    \"find\": \"Znajdź\"\n  },\n  \"view\": {\n    \"label\": \"Widok\",\n    \"sortBy\": {\n      \"label\": \"Sortuj fragmenty według\",\n      \"dateModified\": \"Data modyfikacji\",\n      \"dateCreated\": \"Data utworzenia\",\n      \"name\": \"Nazwa\"\n    },\n    \"compactMode\": \"Tryb kompaktowy\",\n    \"showSidebar\": \"Pokaż/ukryj pasek boczny\"\n  },\n  \"editor\": {\n    \"label\": \"Edytor\",\n    \"copy\": \"Kopiuj fragment do schowka\",\n    \"format\": \"Formatuj\",\n    \"previewCode\": \"Podgląd kodu\",\n    \"previewScreenshot\": \"Podgląd zrzutu ekranu\",\n    \"previewJson\": \"Podgląd JSON\",\n    \"fontSizeIncrease\": \"Zwiększ rozmiar czcionki\",\n    \"fontSizeDecrease\": \"Zmniejsz rozmiar czcionki\",\n    \"fontSizeReset\": \"Resetuj rozmiar czcionki\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Tryb prezentacji\",\n    \"preview\": \"Podgląd\",\n    \"previewMarkdown\": \"Podgląd Markdown\",\n    \"previewMindmap\": \"Podgląd mapy myśli\"\n  },\n  \"history\": {\n    \"label\": \"Historia\",\n    \"back\": \"Wstecz\",\n    \"forward\": \"Dalej\"\n  },\n  \"devtools\": {\n    \"label\": \"Narzędzia deweloperskie\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pl_PL/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Czy na pewno chcesz usunąć \\\"{{name}}\\\"?\",\n    \"deletePermanently\": \"Czy na pewno chcesz trwale usunąć \\\"{{name}}\\\"?\",\n    \"deleteConfirmMultipleSnippets\": \"Czy na pewno chcesz trwale usunąć {{count}} wybranych fragmentów?\",\n    \"emptyTrash\": \"Czy na pewno chcesz trwale usunąć wszystkie fragmenty z Kosza?\",\n    \"clearDb\": \"Czy na pewno chcesz wyczyścić bazę danych?\",\n    \"migrateDb\": [\n      \"Czy na pewno chcesz przeprowadzić migrację?\",\n      \"Podczas migracji obecna biblioteka zostanie nadpisana.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"Skopiowano do schowka\",\n    \"migrate\": \"Pomyślnie przeprowadzono migrację bazy danych.\",\n    \"backup\": {\n      \"created\": \"Kopia zapasowa została pomyślnie utworzona.\",\n      \"restored\": \"Kopia zapasowa została pomyślnie przywrócona.\",\n      \"deleted\": \"Kopia zapasowa została pomyślnie usunięta.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Tej operacji nie można cofnąć.\",\n    \"allSnippetsMoveToTrash\": \"Wszystkie fragmenty z tego folderu zostaną przeniesione do kosza.\",\n    \"deleteTag\": \"Spowoduje to również usunięcie tego tagu ze wszystkich fragmentów.\",\n    \"createDb\": \"Proszę wybrać inny folder\",\n    \"clearDb\": \"Spowoduje to trwałe usunięcie wszystkich Fragmentów, Folderów i Tagów z bazy danych.\",\n    \"htmlCssPreview\": \"Dodaj fragment HTML, aby zobaczyć wynik. Dodaj CSS do stylizacji i JavaScript do interaktywności.\",\n    \"codeBlockRenderer\": [\n      \"Podczas używania Codemirror, język ustawiony dla bloku kodu musi odpowiadać jednej z wartości\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"Aby korzystać z usług synchronizacji takich jak iCloud Drive, Google Drive lub Dropbox, wystarczy przenieść magazyn do odpowiednich folderów synchronizacji\",\n    \"migrate\": {\n      \"fromV3\": \"Aby przeprowadzić migrację z massCode v3, wybierz folder zawierający plik JSON.\",\n      \"fromSnippetsLab\": \"Aby przeprowadzić migrację ze SnippetsLab, wybierz plik JSON.\",\n      \"snippetsLabLimitations\": [\n        \"Pewne ograniczenia podczas migracji ze SnippetsLab:\",\n        \"Wszystkie foldery będą na pierwszym poziomie, ponieważ plik JSON (poniżej v2.1) nie obsługuje zagnieżdżonych folderów.\",\n        \"Fragmenty z nieobsługiwanymi językami zostaną ustawione na domyślny Plain Text.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Cześć, tu Anton 👋<br><br>\\nDziękuję za korystanie z massCode. Jeśli uważasz, że ta aplikacja jest przydatna, proszę rozważ {{-tagStart}}wsparcie{{-tagEnd}}. To zmotywuje mnie do dalszego rozwoju projektu.\",\n    \"unsponsored\": \"Bez sponsora\"\n  },\n  \"update\": {\n    \"available\": \"Wersja {{newVersion}} jest dostępna do pobrania.\\nTwoja wersja to {{oldVersion}}.\",\n    \"noAvailable\": \"Obecnie nie ma dostępnych aktualizacji.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pl_PL/preferences.json",
    "content": "{\n  \"label\": \"Preferencje\",\n  \"storage\": {\n    \"label\": \"Magazyn\",\n    \"migrate\": \"Migruj\",\n    \"count\": \"Liczba\",\n    \"clearDatabase\": \"Wyczyść bazę danych\"\n  },\n  \"editor\": {\n    \"label\": \"Edytor\",\n    \"fontSize\": \"Rozmiar czcionki\",\n    \"fontFamily\": \"Rodzina czcionek\",\n    \"wrap\": {\n      \"label\": \"Zawijanie\",\n      \"wordWrap\": \"Zawijanie wierszy\",\n      \"off\": \"Wyłączone\"\n    },\n    \"tabSize\": \"Rozmiar tabulacji\",\n    \"showInvisibles\": \"Pokaż niewidoczne znaki\",\n    \"highlightLine\": \"Podświetl linię\",\n    \"highlightGutter\": \"Podświetl marginesy\",\n    \"matchBrackets\": \"Dopasuj nawiasy\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Końcowy przecinek\",\n        \"none\": \"Brak\",\n        \"all\": \"Wszystkie\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Średnik\",\n      \"singleQuote\": \"Pojedynczy cudzysłów\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Wygląd\",\n    \"theme\": {\n      \"label\": \"Motyw\",\n      \"light\": \"Jasny\",\n      \"dark\": \"Ciemny\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Język\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Renderer bloków kodu\"\n  },\n  \"api\": {\n    \"label\": \"Port API\",\n    \"port\": {\n      \"label\": \"Port API\",\n      \"description\": \"Numer portu dla serwera API (wymaga ponownego uruchomienia aplikacji). Prawidłowy zakres: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pl_PL/ui.json",
    "content": "{\n  \"total\": \"Łącznie\",\n  \"line\": \"Wiersz\",\n  \"column\": \"Kolumna\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Ścieżka\",\n  \"button\": {\n    \"back\": \"Wstecz\",\n    \"cancel\": \"Anuluj\",\n    \"clear\": \"Wyczyść\",\n    \"confirm\": \"Potwierdź\",\n    \"copy\": \"Kopiuj\",\n    \"fit\": \"Dopasuj\",\n    \"generate\": \"Generuj\",\n    \"ok\": \"OK\",\n    \"revers\": \"Odwróć\",\n    \"saveAs\": \"Zapisz jako\",\n    \"sort\": \"Sortuj\",\n    \"update\": [\"Przejdź do GitHub\", \"OK\"],\n    \"zoomIn\": \"Powiększ\",\n    \"zoomOut\": \"Pomniejsz\",\n    \"darkMode\": \"Tryb ciemny\",\n    \"toggleDarkMode\": \"Przełącz tryb ciemny\",\n    \"background\": \"Tło\",\n    \"goToDownload\": \"Przejdź do pobierania\",\n    \"refreshPreview\": \"Odśwież podgląd\",\n    \"laserPointer\": \"Wskaźnik laserowy\",\n    \"fullscreen\": \"Pełny ekran\",\n    \"prev\": \"Poprzedni\",\n    \"next\": \"Następny\"\n  },\n  \"action\": {\n    \"close\": \"Zamknij\",\n    \"defaultLanguage\": \"Domyślny język\",\n    \"duplicate\": \"Duplikuj\",\n    \"rename\": \"Zmień nazwę\",\n    \"restore\": \"Przywróć\",\n    \"setCustomIcon\": \"Ustaw ikonę\",\n    \"removeCustomIcon\": \"Usuń ikonę\",\n    \"show\": \"Pokaż\",\n    \"hide\": \"Ukryj\",\n    \"showSidebar\": \"Pokaż pasek boczny\",\n    \"hideSidebar\": \"Ukryj pasek boczny\",\n    \"new\": {\n      \"storage\": \"Nowy magazyn\",\n      \"folder\": \"Nowy folder\",\n      \"snippet\": \"Nowy fragment kodu\",\n      \"fragment\": \"Nowy fragment\"\n    },\n    \"add\": {\n      \"description\": \"Dodaj opis\",\n      \"tag\": \"Dodaj tag\",\n      \"toFavorites\": \"Dodaj do ulubionych\"\n    },\n    \"open\": {\n      \"storage\": \"Otwórz magazyn\"\n    },\n    \"move\": {\n      \"storage\": \"Przenieś magazyn\",\n      \"toTrash\": \"Przenieś do kosza\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Usuń z ulubionych\"\n    },\n    \"reload\": {\n      \"storage\": \"Przeładuj magazyn\"\n    },\n    \"delete\": {\n      \"common\": \"Usuń\",\n      \"now\": \"Usuń teraz\",\n      \"allData\": \"Usuń wszystkie dane\",\n      \"trash\": \"Opróżnij kosz\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Ze SnippetsLab\",\n      \"fromV3\": \"Z massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Eksportuj do HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Kopiuj link do fragmentu\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Skrzynka odbiorcza\",\n    \"favorites\": \"Ulubione\",\n    \"allSnippets\": \"Wszystkie fragmenty\",\n    \"trash\": \"Kosz\",\n    \"folders\": \"Foldery\",\n    \"library\": \"Biblioteka\",\n    \"tags\": \"Tagi\"\n  },\n  \"folder\": {\n    \"untitled\": \"Folder bez nazwy\",\n    \"plural\": \"Foldery\",\n    \"collapseAll\": \"Zwiń wszystkie\",\n    \"expandAll\": \"Rozwiń wszystkie\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Fragment bez nazwy\",\n    \"plural\": \"Fragmenty\",\n    \"emptyName\": \"Wpisz nazwę fragmentu\",\n    \"selectedMultiple\": \"Wybrano {{count}} fragmentów\",\n    \"noSelected\": \"Nie wybrano fragmentu\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Dodaj tagi do fragmentów, aby zobaczyć je tutaj\",\n    \"emptyFoldersList\": \"Brak folderów\",\n    \"emptySnippetsList\": \"Brak snippetów\",\n    \"search\": \"Szukaj\",\n    \"addTag\": \"Dodaj tag\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pt_BR/devtools.json",
    "content": "{\n  \"label\": \"Ferramentas de Desenvolvimento\",\n  \"generators\": {\n    \"label\": \"Geradores\",\n    \"lorem\": {\n      \"label\": \"Gerador Lorem Ipsum\",\n      \"description\": \"Gerar texto de espaço reservado\",\n      \"selectType\": \"Selecionar tipo\",\n      \"maxCount\": \"Máx {{count}}\",\n      \"types\": {\n        \"words\": \"Palavras\",\n        \"sentences\": \"Frases\",\n        \"paragraphs\": \"Parágrafos\"\n      }\n    },\n    \"json\": {\n      \"label\": \"Gerador JSON\",\n      \"description\": \"Gerar dados JSON aleatórios com vários tipos de campos\",\n      \"fields\": \"Campos\",\n      \"fieldName\": \"Nome do campo\",\n      \"selectType\": \"Selecionar tipo\",\n      \"addField\": \"Adicionar campo\",\n      \"rowCount\": \"Número de linhas\",\n      \"maxRows\": \"Máx 1000\",\n      \"categories\": {\n        \"general\": \"Geral\",\n        \"person\": \"Pessoa\",\n        \"internet\": \"Internet\",\n        \"location\": \"Localização\",\n        \"finance\": \"Finanças\",\n        \"commerce\": \"Comércio\",\n        \"company\": \"Empresa\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Data\",\n        \"number\": \"Número\",\n        \"phone\": \"Telefone\",\n        \"image\": \"Imagem\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Número da linha\",\n        \"firstName\": \"Primeiro nome\",\n        \"lastName\": \"Sobrenome\",\n        \"fullName\": \"Nome completo\",\n        \"gender\": \"Gênero\",\n        \"jobTitle\": \"Cargo\",\n        \"email\": \"Endereço de e-mail\",\n        \"username\": \"Nome de usuário\",\n        \"password\": \"Senha\",\n        \"url\": \"URL\",\n        \"ipv4\": \"Endereço IP v4\",\n        \"ipv6\": \"Endereço IP v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Cidade\",\n        \"country\": \"País\",\n        \"streetAddress\": \"Endereço\",\n        \"zipCode\": \"CEP\",\n        \"latitude\": \"Latitude\",\n        \"longitude\": \"Longitude\",\n        \"amount\": \"Valor\",\n        \"currencyCode\": \"Código da moeda\",\n        \"creditCardNumber\": \"Número do cartão de crédito\",\n        \"productName\": \"Nome do produto\",\n        \"price\": \"Preço\",\n        \"department\": \"Departamento\",\n        \"companyName\": \"Nome da empresa\",\n        \"catchPhrase\": \"Slogan\",\n        \"word\": \"Palavra\",\n        \"sentence\": \"Frase\",\n        \"paragraph\": \"Parágrafo\",\n        \"past\": \"Data passada\",\n        \"future\": \"Data futura\",\n        \"recent\": \"Data recente\",\n        \"birthdate\": \"Data de nascimento\",\n        \"int\": \"Inteiro\",\n        \"float\": \"Ponto flutuante\",\n        \"boolean\": \"Booleano\",\n        \"phoneNumber\": \"Número de telefone\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL do avatar\",\n        \"imageUrl\": \"URL da imagem\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Conversores\",\n    \"caseConverter\": {\n      \"label\": \"Conversor de Maiúsculas\",\n      \"description\": \"Transformar texto em diferentes casos\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Texto para Unicode\",\n      \"description\": \"Converter texto para Unicode e vice-versa\",\n      \"modes\": {\n        \"textToUnicode\": \"Texto → Unicode\",\n        \"unicodeToText\": \"Unicode → Texto\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Texto para ASCII Binary\",\n      \"description\": \"Converter texto para ASCII binary e vice-versa\",\n      \"modes\": {\n        \"textToAscii\": \"Texto → ASCII\",\n        \"asciiToText\": \"ASCII → Texto\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Codificar ou decodificar texto para Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Texto → Base64\",\n        \"base64ToText\": \"Base64 → Texto\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON para YAML\",\n      \"description\": \"Converter JSON para YAML e vice-versa\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON para TOML\",\n      \"description\": \"Converter JSON para TOML e vice-versa\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON para XML\",\n      \"description\": \"Converter JSON para XML e vice-versa\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Conversor de Cores\",\n      \"description\": \"Converter cores entre diferentes formatos\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Criptografia / Segurança\",\n    \"hash\": {\n      \"label\": \"Gerador de Hash\",\n      \"description\": \"Gerar hashes a partir de texto\"\n    },\n    \"hmac\": {\n      \"label\": \"Gerador HMAC\",\n      \"description\": \"Gerar código de autenticação de mensagem baseado em hash (HMAC) composto por uma chave e uma mensagem\"\n    },\n    \"password\": {\n      \"label\": \"Gerador de Senhas\",\n      \"description\": \"Gerar uma senha segura\"\n    },\n    \"uuid\": {\n      \"label\": \"Gerador UUID\",\n      \"description\": \"Gerar um identificador único universal (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Web\",\n    \"urlParser\": {\n      \"label\": \"Analisador de URL\",\n      \"description\": \"Analisar uma URL em seus componentes\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Codificar ou decodificar URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Converter texto em um slug amigável para URL\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Entrada\",\n    \"output\": \"Saída\",\n    \"inputString\": \"String de Entrada\",\n    \"outputString\": \"String de Saída\",\n    \"inputUrl\": \"URL de Entrada\",\n    \"outputUrl\": \"URL de Saída\",\n    \"parsedUrl\": \"URL Analisada\",\n    \"splitQueryString\": \"Dividir Query String\",\n    \"key\": \"Chave\",\n    \"value\": \"Valor\",\n    \"component\": \"Componente\",\n    \"result\": \"Resultado\",\n    \"secretKey\": \"Chave Secreta\",\n    \"algorithm\": \"Algoritmo\",\n    \"version\": \"Versão\",\n    \"amount\": \"Quantidade\",\n    \"type\": \"Tipo\",\n    \"length\": \"Comprimento\",\n    \"options\": \"Opções\",\n    \"numbers\": \"Números\",\n    \"symbols\": \"Símbolos\",\n    \"lowercase\": \"Minúsculas\",\n    \"uppercase\": \"Maiúsculas\",\n    \"placeholder\": {\n      \"text\": \"Digite um texto\",\n      \"value\": \"Digite um valor\",\n      \"secretKey\": \"Digite uma chave secreta\",\n      \"url\": \"Digite uma URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pt_BR/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Preferências\",\n    \"devtools\": \"Ferramentas de Desenvolvedor\",\n    \"update\": \"Verificar Atualizações...\",\n    \"quit\": \"Sair do massCode\",\n    \"about\": \"Sobre o massCode\",\n    \"hide\": \"Ocultar massCode\"\n  },\n  \"help\": {\n    \"label\": \"Ajuda\",\n    \"website\": \"Website\",\n    \"documentation\": \"Documentação\",\n    \"viewInGitHub\": \"Ver no GitHub\",\n    \"changeLog\": \"Log de Alterações\",\n    \"reportIssue\": \"Reportar Problema\",\n    \"giveStar\": \"Dar uma Estrela\",\n    \"extension\": {\n      \"vscode\": \"Extensão VS Code\",\n      \"raycast\": \"Extensão Raycast\",\n      \"alfred\": \"Extensão Alfred\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Doar no Open Collective\",\n      \"payPal\": \"Doar via PayPal\",\n      \"gumroad\": \"Doar via Gumroad (Visa, Mastercard, etc.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Alternar Ferramentas de Desenvolvedor\",\n    \"links\": {\n      \"snippets\": \"Coleção de Snippets\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Editar\",\n    \"find\": \"Procurar\"\n  },\n  \"view\": {\n    \"label\": \"Visualizar\",\n    \"sortBy\": {\n      \"label\": \"Ordenar Snippets Por\",\n      \"dateModified\": \"Data de Modificação\",\n      \"dateCreated\": \"Data de Criação\",\n      \"name\": \"Nome\"\n    },\n    \"compactMode\": \"Modo Compacto\",\n    \"showSidebar\": \"Mostrar/ocultar barra lateral\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"copy\": \"Copiar Snippet para Área de Transferência\",\n    \"format\": \"Formatar\",\n    \"previewCode\": \"Visualizar Código\",\n    \"previewScreenshot\": \"Visualizar Screenshot\",\n    \"previewJson\": \"Prévia do JSON\",\n    \"fontSizeIncrease\": \"Aumentar Tamanho da Fonte\",\n    \"fontSizeDecrease\": \"Diminuir Tamanho da Fonte\",\n    \"fontSizeReset\": \"Redefinir Tamanho da Fonte\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Modo de Apresentação\",\n    \"preview\": \"Visualizar\",\n    \"previewMarkdown\": \"Visualizar Markdown\",\n    \"previewMindmap\": \"Visualizar Mindmap\"\n  },\n  \"history\": {\n    \"label\": \"Histórico\",\n    \"back\": \"Voltar\",\n    \"forward\": \"Avançar\"\n  },\n  \"devtools\": {\n    \"label\": \"Ferramentas de Desenvolvedor\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pt_BR/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Tem certeza que deseja excluir \\\"{{name}}\\\"?\",\n    \"deletePermanently\": \"Tem certeza que deseja excluir permanentemente \\\"{{name}}\\\"?\",\n    \"deleteConfirmMultipleSnippets\": \"Tem certeza que deseja excluir permanentemente {{count}} snippets selecionados?\",\n    \"emptyTrash\": \"Tem certeza que deseja excluir permanentemente todos os snippets na Lixeira?\",\n    \"clearDb\": \"Tem certeza que deseja limpar o database?\",\n    \"migrateDb\": [\n      \"Tem certeza que deseja migrar?\",\n      \"Durante a migração, a biblioteca atual será sobrescrita.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"Copiado para a área de transferência\",\n    \"migrate\": \"DB migrado com sucesso.\",\n    \"backup\": {\n      \"created\": \"Backup criado com sucesso.\",\n      \"restored\": \"Backup restaurado com sucesso.\",\n      \"deleted\": \"Backup excluído com sucesso.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Você não pode desfazer esta ação.\",\n    \"allSnippetsMoveToTrash\": \"Todos os snippets nesta pasta serão movidos para a lixeira.\",\n    \"deleteTag\": \"Isso também fará com que todas as tags sejam removidas dos snippets.\",\n    \"createDb\": \"Por favor, selecione outra pasta\",\n    \"clearDb\": \"Isso excluirá permanentemente todos os Snippets, Pastas e Tags do database.\",\n    \"htmlCssPreview\": \"Adicione um fragmento HTML para ver o resultado. Adicione CSS para estilização e JavaScript para interatividade.\",\n    \"codeBlockRenderer\": [\n      \"Ao usar Codemirror, a linguagem a ser definida para o bloco de código deve corresponder a um dos valores das\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"Para usar serviços de sincronização como iCloud Drive, Google Drive ou Dropbox, simplesmente mova o armazenamento para as pastas sincronizadas correspondentes\",\n    \"migrate\": {\n      \"fromV3\": \"Para migrar do massCode v3, selecione a pasta contendo o arquivo JSON.\",\n      \"fromSnippetsLab\": \"Para migrar do SnippetsLab, selecione o arquivo JSON.\",\n      \"snippetsLabLimitations\": [\n        \"Algumas Limitações. Durante a migração do SnippetsLab:\",\n        \"Todas as pastas serão de primeiro nível, pois o arquivo JSON (abaixo da v2.1) não representa pastas aninhadas.\",\n        \"Snippets com linguagens não suportadas serão definidos como Plain Text padrão.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Olá, aqui é o Anton 👋<br><br>\\nObrigado por usar o massCode. Se você achar este app útil, por favor {{-tagStart}}doe{{-tagEnd}}. Isso me inspirará a continuar o desenvolvimento do projeto.\",\n    \"unsponsored\": \"Sem patrocínio\"\n  },\n  \"update\": {\n    \"available\": \"A versão {{newVersion}} está disponível para download.\\nSua versão é {{oldVersion}}.\",\n    \"noAvailable\": \"Não há atualizações disponíveis no momento.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pt_BR/preferences.json",
    "content": "{\n  \"label\": \"Preferências\",\n  \"storage\": {\n    \"label\": \"Storage\",\n    \"migrate\": \"Migrar\",\n    \"count\": \"Contagem\",\n    \"clearDatabase\": \"Limpar Database\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"fontSize\": \"Tamanho da Fonte\",\n    \"fontFamily\": \"Família da Fonte\",\n    \"wrap\": {\n      \"label\": \"Quebra\",\n      \"wordWrap\": \"Quebra de Palavra\",\n      \"off\": \"Desligado\"\n    },\n    \"tabSize\": \"Tamanho do Tab\",\n    \"showInvisibles\": \"Mostrar Invisíveis\",\n    \"highlightLine\": \"Destacar Linha\",\n    \"highlightGutter\": \"Destacar Gutter\",\n    \"matchBrackets\": \"Corresponder Colchetes\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Vírgula Final\",\n        \"none\": \"Nenhum\",\n        \"all\": \"Todos\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Ponto e Vírgula\",\n      \"singleQuote\": \"Aspas Simples\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Aparência\",\n    \"theme\": {\n      \"label\": \"Tema\",\n      \"light\": \"Claro\",\n      \"dark\": \"Escuro\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Idioma\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Renderizador de Bloco de Código\"\n  },\n  \"api\": {\n    \"label\": \"Porta API\",\n    \"port\": {\n      \"label\": \"Porta API\",\n      \"description\": \"Número da porta para o servidor API (requer reinicialização do aplicativo). Faixa válida: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/pt_BR/ui.json",
    "content": "{\n  \"total\": \"Total\",\n  \"line\": \"Linha\",\n  \"column\": \"Coluna\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Caminho\",\n  \"button\": {\n    \"back\": \"Voltar\",\n    \"cancel\": \"Cancelar\",\n    \"clear\": \"Limpar\",\n    \"confirm\": \"Confirmar\",\n    \"copy\": \"Copiar\",\n    \"fit\": \"Ajustar\",\n    \"generate\": \"Gerar\",\n    \"ok\": \"OK\",\n    \"revers\": \"Reverter\",\n    \"saveAs\": \"Salvar como\",\n    \"sort\": \"Ordenar\",\n    \"update\": [\"Ir para GitHub\", \"OK\"],\n    \"zoomIn\": \"Aumentar Zoom\",\n    \"zoomOut\": \"Diminuir Zoom\",\n    \"darkMode\": \"Modo Escuro\",\n    \"toggleDarkMode\": \"Alternar modo escuro\",\n    \"background\": \"Plano de Fundo\",\n    \"goToDownload\": \"Ir para Download\",\n    \"refreshPreview\": \"Atualizar visualização\",\n    \"laserPointer\": \"Ponteiro laser\",\n    \"fullscreen\": \"Tela cheia\",\n    \"prev\": \"Anterior\",\n    \"next\": \"Próximo\"\n  },\n  \"action\": {\n    \"close\": \"Fechar\",\n    \"defaultLanguage\": \"Linguagem Padrão\",\n    \"duplicate\": \"Duplicar\",\n    \"rename\": \"Renomear\",\n    \"restore\": \"Restaurar\",\n    \"setCustomIcon\": \"Definir Ícone\",\n    \"removeCustomIcon\": \"Remover Ícone\",\n    \"show\": \"Mostrar\",\n    \"hide\": \"Ocultar\",\n    \"showSidebar\": \"Mostrar barra lateral\",\n    \"hideSidebar\": \"Ocultar barra lateral\",\n    \"new\": {\n      \"storage\": \"Novo Storage\",\n      \"folder\": \"Nova Pasta\",\n      \"snippet\": \"Novo Snippet\",\n      \"fragment\": \"Novo Fragment\"\n    },\n    \"add\": {\n      \"description\": \"Adicionar Descrição\",\n      \"tag\": \"Adicionar Tag\",\n      \"toFavorites\": \"Adicionar aos Favoritos\"\n    },\n    \"open\": {\n      \"storage\": \"Abrir Storage\"\n    },\n    \"move\": {\n      \"storage\": \"Mover Storage\",\n      \"toTrash\": \"Mover para Lixeira\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Remover dos Favoritos\"\n    },\n    \"reload\": {\n      \"storage\": \"Recarregar Storage\"\n    },\n    \"delete\": {\n      \"common\": \"Excluir\",\n      \"now\": \"Excluir Agora\",\n      \"allData\": \"Excluir Todos os Dados\",\n      \"trash\": \"Esvaziar Lixeira\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Do SnippetsLab\",\n      \"fromV3\": \"Do massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Exportar para HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Copiar Link do Snippet\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Caixa de Entrada\",\n    \"favorites\": \"Favoritos\",\n    \"allSnippets\": \"Todos os Snippets\",\n    \"trash\": \"Lixeira\",\n    \"folders\": \"Pastas\",\n    \"library\": \"Biblioteca\",\n    \"tags\": \"Tags\"\n  },\n  \"folder\": {\n    \"untitled\": \"Pasta sem título\",\n    \"plural\": \"Pastas\",\n    \"collapseAll\": \"Recolher Tudo\",\n    \"expandAll\": \"Expandir Tudo\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Snippet sem título\",\n    \"plural\": \"Snippets\",\n    \"emptyName\": \"Digite o nome do snippet\",\n    \"selectedMultiple\": \"{{count}} Snippets Selecionados\",\n    \"noSelected\": \"Nenhum Snippet Selecionado\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Adicione tags aos snippets para vê-las aqui\",\n    \"emptyFoldersList\": \"Sem pastas\",\n    \"emptySnippetsList\": \"Sem snippets\",\n    \"search\": \"Pesquisar\",\n    \"addTag\": \"Adicionar Tag\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ro_RO/devtools.json",
    "content": "{\n  \"label\": \"Instrumente pentru Dezvoltatori\",\n  \"generators\": {\n    \"label\": \"Generatoare\",\n    \"lorem\": {\n      \"label\": \"Generator Lorem Ipsum\",\n      \"description\": \"Generează text substituent\",\n      \"selectType\": \"Selectează tipul\",\n      \"maxCount\": \"Max {{count}}\",\n      \"types\": {\n        \"words\": \"Cuvinte\",\n        \"sentences\": \"Propoziții\",\n        \"paragraphs\": \"Paragrafe\"\n      }\n    },\n    \"json\": {\n      \"label\": \"Generator JSON\",\n      \"description\": \"Generează date JSON aleatorii cu diferite tipuri de câmpuri\",\n      \"fields\": \"Câmpuri\",\n      \"fieldName\": \"Nume câmp\",\n      \"selectType\": \"Selectează tipul\",\n      \"addField\": \"Adaugă câmp\",\n      \"rowCount\": \"Număr de rânduri\",\n      \"maxRows\": \"Max 1000\",\n      \"categories\": {\n        \"general\": \"General\",\n        \"person\": \"Persoană\",\n        \"internet\": \"Internet\",\n        \"location\": \"Locație\",\n        \"finance\": \"Finanțe\",\n        \"commerce\": \"Comerț\",\n        \"company\": \"Companie\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Dată\",\n        \"number\": \"Număr\",\n        \"phone\": \"Telefon\",\n        \"image\": \"Imagine\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Număr rând\",\n        \"firstName\": \"Prenume\",\n        \"lastName\": \"Nume de familie\",\n        \"fullName\": \"Nume complet\",\n        \"gender\": \"Gen\",\n        \"jobTitle\": \"Titlu job\",\n        \"email\": \"Adresă email\",\n        \"username\": \"Nume utilizator\",\n        \"password\": \"Parolă\",\n        \"url\": \"URL\",\n        \"ipv4\": \"Adresă IP v4\",\n        \"ipv6\": \"Adresă IP v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Oraș\",\n        \"country\": \"Țară\",\n        \"streetAddress\": \"Adresă stradă\",\n        \"zipCode\": \"Cod poștal\",\n        \"latitude\": \"Latitudine\",\n        \"longitude\": \"Longitudine\",\n        \"amount\": \"Sumă\",\n        \"currencyCode\": \"Cod monedă\",\n        \"creditCardNumber\": \"Număr card credit\",\n        \"productName\": \"Nume produs\",\n        \"price\": \"Preț\",\n        \"department\": \"Departament\",\n        \"companyName\": \"Nume companie\",\n        \"catchPhrase\": \"Slogan\",\n        \"word\": \"Cuvânt\",\n        \"sentence\": \"Propoziție\",\n        \"paragraph\": \"Paragraf\",\n        \"past\": \"Dată trecută\",\n        \"future\": \"Dată viitoare\",\n        \"recent\": \"Dată recentă\",\n        \"birthdate\": \"Dată naștere\",\n        \"int\": \"Întreg\",\n        \"float\": \"Zecimal\",\n        \"boolean\": \"Boolean\",\n        \"phoneNumber\": \"Număr telefon\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL avatar\",\n        \"imageUrl\": \"URL imagine\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Convertoare\",\n    \"caseConverter\": {\n      \"label\": \"Convertor de Majuscule\",\n      \"description\": \"Transformă textul în diferite formate de majuscule\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Text în Unicode\",\n      \"description\": \"Convertește textul în Unicode și invers\",\n      \"modes\": {\n        \"textToUnicode\": \"Text → Unicode\",\n        \"unicodeToText\": \"Unicode → Text\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Text în ASCII Binary\",\n      \"description\": \"Convertește textul în ASCII binary și invers\",\n      \"modes\": {\n        \"textToAscii\": \"Text → ASCII\",\n        \"asciiToText\": \"ASCII → Text\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Codifică sau decodifică textul în Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Text → Base64\",\n        \"base64ToText\": \"Base64 → Text\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON în YAML\",\n      \"description\": \"Convertește JSON în YAML și invers\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON în TOML\",\n      \"description\": \"Convertește JSON în TOML și invers\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON în XML\",\n      \"description\": \"Convertește JSON în XML și invers\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Convertor de Culori\",\n      \"description\": \"Convertește culorile între diferite formate\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Criptografie / Securitate\",\n    \"hash\": {\n      \"label\": \"Generator Hash\",\n      \"description\": \"Generează hash-uri din text\"\n    },\n    \"hmac\": {\n      \"label\": \"Generator HMAC\",\n      \"description\": \"Generează cod de autentificare a mesajului bazat pe hash (HMAC) compus dintr-o cheie și un mesaj\"\n    },\n    \"password\": {\n      \"label\": \"Generator de Parole\",\n      \"description\": \"Generează o parolă sigură\"\n    },\n    \"uuid\": {\n      \"label\": \"Generator UUID\",\n      \"description\": \"Generează un identificator unic universal (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Web\",\n    \"urlParser\": {\n      \"label\": \"Analizor URL\",\n      \"description\": \"Analizează un URL în componentele sale\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Codifică sau decodifică URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Convertește textul într-un slug prietenos cu URL\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Intrare\",\n    \"output\": \"Ieșire\",\n    \"inputString\": \"Șir de Intrare\",\n    \"outputString\": \"Șir de Ieșire\",\n    \"inputUrl\": \"URL de Intrare\",\n    \"outputUrl\": \"URL de Ieșire\",\n    \"parsedUrl\": \"URL Analizat\",\n    \"splitQueryString\": \"Împarte Query String\",\n    \"key\": \"Cheie\",\n    \"value\": \"Valoare\",\n    \"component\": \"Componentă\",\n    \"result\": \"Rezultat\",\n    \"secretKey\": \"Cheie Secretă\",\n    \"algorithm\": \"Algoritm\",\n    \"version\": \"Versiune\",\n    \"amount\": \"Cantitate\",\n    \"type\": \"Tip\",\n    \"length\": \"Lungime\",\n    \"options\": \"Opțiuni\",\n    \"numbers\": \"Numere\",\n    \"symbols\": \"Simboluri\",\n    \"lowercase\": \"Minuscule\",\n    \"uppercase\": \"Majuscule\",\n    \"placeholder\": {\n      \"text\": \"Introduceți un text\",\n      \"value\": \"Introduceți o valoare\",\n      \"secretKey\": \"Introduceți o cheie secretă\",\n      \"url\": \"Introduceți un URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ro_RO/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Preferințe\",\n    \"devtools\": \"Instrumente pentru Dezvoltatori\",\n    \"update\": \"Verifică Actualizări...\",\n    \"quit\": \"Închide massCode\",\n    \"about\": \"Despre massCode\",\n    \"hide\": \"Ascunde massCode\"\n  },\n  \"help\": {\n    \"label\": \"Ajutor\",\n    \"website\": \"Website\",\n    \"documentation\": \"Documentație\",\n    \"viewInGitHub\": \"Vezi pe GitHub\",\n    \"changeLog\": \"Jurnal de Modificări\",\n    \"reportIssue\": \"Raportează o Problemă\",\n    \"giveStar\": \"Dă o Stea\",\n    \"extension\": {\n      \"vscode\": \"Extensie VS Code\",\n      \"raycast\": \"Extensie Raycast\",\n      \"alfred\": \"Extensie Alfred\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Donează pe Open Collective\",\n      \"payPal\": \"Donează prin PayPal\",\n      \"gumroad\": \"Donează prin Gumroad (Visa, Mastercard, etc.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Comută Instrumentele de Dezvoltare\",\n    \"links\": {\n      \"snippets\": \"Colecție de Snippets\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Editare\",\n    \"find\": \"Căutare\"\n  },\n  \"view\": {\n    \"label\": \"Vizualizare\",\n    \"sortBy\": {\n      \"label\": \"Sortează Snippets După\",\n      \"dateModified\": \"Data Modificării\",\n      \"dateCreated\": \"Data Creării\",\n      \"name\": \"Nume\"\n    },\n    \"compactMode\": \"Mod Compact\",\n    \"showSidebar\": \"Afișează/ascunde bara laterală\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"copy\": \"Copiază Snippet în Clipboard\",\n    \"format\": \"Formatare\",\n    \"previewCode\": \"Previzualizare Cod\",\n    \"previewScreenshot\": \"Previzualizare Screenshot\",\n    \"previewJson\": \"Previzualizare JSON\",\n    \"fontSizeIncrease\": \"Mărește Dimensiunea Fontului\",\n    \"fontSizeDecrease\": \"Micșorează Dimensiunea Fontului\",\n    \"fontSizeReset\": \"Resetează Dimensiunea Fontului\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Mod Prezentare\",\n    \"preview\": \"Previzualizare\",\n    \"previewMarkdown\": \"Previzualizare Markdown\",\n    \"previewMindmap\": \"Previzualizare Mindmap\"\n  },\n  \"history\": {\n    \"label\": \"Istoric\",\n    \"back\": \"Înapoi\",\n    \"forward\": \"Înainte\"\n  },\n  \"devtools\": {\n    \"label\": \"Instrumente pentru Dezvoltatori\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ro_RO/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Sigur doriți să ștergeți \\\"{{name}}\\\"?\",\n    \"deletePermanently\": \"Sigur doriți să ștergeți definitiv \\\"{{name}}\\\"?\",\n    \"deleteConfirmMultipleSnippets\": \"Sigur doriți să ștergeți definitiv {{count}} snippets selectate?\",\n    \"emptyTrash\": \"Sigur doriți să ștergeți definitiv toate snippets din Coșul de gunoi?\",\n    \"clearDb\": \"Sigur doriți să ștergeți database-ul?\",\n    \"migrateDb\": [\n      \"Sigur doriți să migrați?\",\n      \"În timpul migrării, biblioteca curentă va fi suprascrisă.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"Copiat în clipboard\",\n    \"migrate\": \"DB a fost migrat cu succes.\",\n    \"backup\": {\n      \"created\": \"Backup creat cu succes.\",\n      \"restored\": \"Backup restaurat cu succes.\",\n      \"deleted\": \"Backup șters cu succes.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Nu puteți anula această acțiune.\",\n    \"allSnippetsMoveToTrash\": \"Toate snippets din acest folder vor fi mutate în coșul de gunoi.\",\n    \"deleteTag\": \"Acest lucru va determina și eliminarea tuturor tag-urilor din snippets.\",\n    \"createDb\": \"Vă rugăm să selectați un alt folder\",\n    \"clearDb\": \"Aceasta va șterge definitiv toate Snippets, Folders și Tags din database.\",\n    \"htmlCssPreview\": \"Adăugați un fragment HTML pentru a vedea rezultatul. Adăugați CSS pentru stilizare și JavaScript pentru interactivitate.\",\n    \"codeBlockRenderer\": [\n      \"Când utilizați Codemirror, limbajul setat pentru blocul de cod trebuie să corespundă uneia dintre valorile\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"Pentru a utiliza servicii de sincronizare precum iCloud Drive, Google Drive sau Dropbox, mutați storage-ul în folderele sincronizate corespunzătoare\",\n    \"migrate\": {\n      \"fromV3\": \"Pentru a migra de la massCode v3, selectați folderul care conține fișierul JSON.\",\n      \"fromSnippetsLab\": \"Pentru a migra de la SnippetsLab, selectați fișierul JSON.\",\n      \"snippetsLabLimitations\": [\n        \"Câteva limitări. În timpul migrării de la SnippetsLab:\",\n        \"Toate folderele vor fi de primul nivel, deoarece fișierul JSON (sub v2.1) nu reprezintă foldere imbricate.\",\n        \"Snippets cu limbaje neacceptate vor fi setate la Plain Text implicit.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Bună, sunt Anton 👋<br><br>\\nMulțumesc că folosești massCode. Dacă găsești această aplicație utilă, te rog {{-tagStart}}donează{{-tagEnd}}. Mă va inspira să continui dezvoltarea proiectului.\",\n    \"unsponsored\": \"Nesponsorizat\"\n  },\n  \"update\": {\n    \"available\": \"Versiunea {{newVersion}} este disponibilă pentru descărcare.\\nVersiunea ta este {{oldVersion}}.\",\n    \"noAvailable\": \"Nu există actualizări disponibile în prezent.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ro_RO/preferences.json",
    "content": "{\n  \"label\": \"Preferințe\",\n  \"storage\": {\n    \"label\": \"Storage\",\n    \"migrate\": \"Migrare\",\n    \"count\": \"Număr\",\n    \"clearDatabase\": \"Șterge Database\"\n  },\n  \"editor\": {\n    \"label\": \"Editor\",\n    \"fontSize\": \"Dimensiune Font\",\n    \"fontFamily\": \"Familie Font\",\n    \"wrap\": {\n      \"label\": \"Încadrare\",\n      \"wordWrap\": \"Încadrare Cuvinte\",\n      \"off\": \"Oprit\"\n    },\n    \"tabSize\": \"Dimensiune Tab\",\n    \"showInvisibles\": \"Arată Caractere Invizibile\",\n    \"highlightLine\": \"Evidențiere Linie\",\n    \"highlightGutter\": \"Evidențiere Gutter\",\n    \"matchBrackets\": \"Potrivire Paranteze\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Virgulă la Final\",\n        \"none\": \"Niciuna\",\n        \"all\": \"Toate\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Punct și Virgulă\",\n      \"singleQuote\": \"Ghilimele Simple\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Aspect\",\n    \"theme\": {\n      \"label\": \"Temă\",\n      \"light\": \"Luminos\",\n      \"dark\": \"Întunecat\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Limbă\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Renderer Bloc de Cod\"\n  },\n  \"api\": {\n    \"label\": \"Port API\",\n    \"port\": {\n      \"label\": \"Port API\",\n      \"description\": \"Numărul portului pentru serverul API (necesită repornirea aplicației). Interval valid: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ro_RO/ui.json",
    "content": "{\n  \"total\": \"Total\",\n  \"line\": \"Linie\",\n  \"column\": \"Coloană\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Cale\",\n  \"button\": {\n    \"back\": \"Înapoi\",\n    \"cancel\": \"Anulare\",\n    \"clear\": \"Șterge\",\n    \"confirm\": \"Confirmă\",\n    \"copy\": \"Copiază\",\n    \"fit\": \"Potrivește\",\n    \"generate\": \"Generează\",\n    \"ok\": \"OK\",\n    \"revers\": \"Inversează\",\n    \"saveAs\": \"Salvează ca\",\n    \"sort\": \"Sortează\",\n    \"update\": [\"Mergi la GitHub\", \"OK\"],\n    \"zoomIn\": \"Mărește\",\n    \"zoomOut\": \"Micșorează\",\n    \"darkMode\": \"Mod Întunecat\",\n    \"toggleDarkMode\": \"Comută modul întunecat\",\n    \"background\": \"Fundal\",\n    \"goToDownload\": \"Mergi la Descărcare\",\n    \"refreshPreview\": \"Reîmprospătează previzualizarea\",\n    \"laserPointer\": \"Pointer laser\",\n    \"fullscreen\": \"Ecran complet\",\n    \"prev\": \"Anterior\",\n    \"next\": \"Următor\"\n  },\n  \"action\": {\n    \"close\": \"Închide\",\n    \"defaultLanguage\": \"Limbaj Implicit\",\n    \"duplicate\": \"Duplică\",\n    \"rename\": \"Redenumește\",\n    \"restore\": \"Restaurează\",\n    \"setCustomIcon\": \"Setează Iconiță\",\n    \"removeCustomIcon\": \"Elimină Iconița\",\n    \"show\": \"Arată\",\n    \"hide\": \"Ascunde\",\n    \"showSidebar\": \"Afișează bara laterală\",\n    \"hideSidebar\": \"Ascunde bara laterală\",\n    \"new\": {\n      \"storage\": \"Storage Nou\",\n      \"folder\": \"Folder Nou\",\n      \"snippet\": \"Snippet Nou\",\n      \"fragment\": \"Fragment Nou\"\n    },\n    \"add\": {\n      \"description\": \"Adaugă Descriere\",\n      \"tag\": \"Adaugă Tag\",\n      \"toFavorites\": \"Adaugă la Favorite\"\n    },\n    \"open\": {\n      \"storage\": \"Deschide Storage\"\n    },\n    \"move\": {\n      \"storage\": \"Mută Storage\",\n      \"toTrash\": \"Mută la Coșul de Gunoi\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Elimină din Favorite\"\n    },\n    \"reload\": {\n      \"storage\": \"Reîncarcă Storage\"\n    },\n    \"delete\": {\n      \"common\": \"Șterge\",\n      \"now\": \"Șterge Acum\",\n      \"allData\": \"Șterge Toate Datele\",\n      \"trash\": \"Golește Coșul de Gunoi\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Din SnippetsLab\",\n      \"fromV3\": \"Din massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Exportă în HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Copiază Link-ul Snippet-ului\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Inbox\",\n    \"favorites\": \"Favorite\",\n    \"allSnippets\": \"Toate Snippets\",\n    \"trash\": \"Coș de Gunoi\",\n    \"folders\": \"Foldere\",\n    \"library\": \"Bibliotecă\",\n    \"tags\": \"Tags\"\n  },\n  \"folder\": {\n    \"untitled\": \"Folder fără titlu\",\n    \"plural\": \"Foldere\",\n    \"collapseAll\": \"Restrânge Tot\",\n    \"expandAll\": \"Extinde Tot\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Snippet fără titlu\",\n    \"plural\": \"Snippets\",\n    \"emptyName\": \"Introduceți numele snippet-ului\",\n    \"selectedMultiple\": \"{{count}} Snippets Selectate\",\n    \"noSelected\": \"Niciun Snippet Selectat\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Adăugați tags la snippets pentru a le vedea aici\",\n    \"emptyFoldersList\": \"Fără foldere\",\n    \"emptySnippetsList\": \"Fără fragmente\",\n    \"search\": \"Caută\",\n    \"addTag\": \"Adaugă Tag\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ru_RU/devtools.json",
    "content": "{\n  \"label\": \"Инструменты разработчика\",\n  \"generators\": {\n    \"label\": \"Генераторы\",\n    \"lorem\": {\n      \"label\": \"Lorem Ipsum генератор\",\n      \"description\": \"Генерация текста-заполнителя\",\n      \"selectType\": \"Выберите тип\",\n      \"maxCount\": \"Максимум {{count}}\",\n      \"types\": {\n        \"words\": \"Слова\",\n        \"sentences\": \"Предложения\",\n        \"paragraphs\": \"Параграфы\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON генератор\",\n      \"description\": \"Генерация случайных JSON данных с различными типами полей\",\n      \"fields\": \"Поля\",\n      \"fieldName\": \"Имя поля\",\n      \"selectType\": \"Выберите тип\",\n      \"addField\": \"Добавить поле\",\n      \"rowCount\": \"Количество строк\",\n      \"maxRows\": \"Максимум 1000\",\n      \"categories\": {\n        \"general\": \"Общие\",\n        \"person\": \"Персона\",\n        \"internet\": \"Интернет\",\n        \"location\": \"Локация\",\n        \"finance\": \"Финансы\",\n        \"commerce\": \"Торговля\",\n        \"company\": \"Компания\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Дата\",\n        \"number\": \"Число\",\n        \"phone\": \"Телефон\",\n        \"image\": \"Изображение\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Номер строки\",\n        \"firstName\": \"Имя\",\n        \"lastName\": \"Фамилия\",\n        \"fullName\": \"Полное имя\",\n        \"gender\": \"Пол\",\n        \"jobTitle\": \"Должность\",\n        \"email\": \"Email адрес\",\n        \"username\": \"Имя пользователя\",\n        \"password\": \"Пароль\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP адрес v4\",\n        \"ipv6\": \"IP адрес v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Город\",\n        \"country\": \"Страна\",\n        \"streetAddress\": \"Адрес\",\n        \"zipCode\": \"Почтовый индекс\",\n        \"latitude\": \"Широта\",\n        \"longitude\": \"Долгота\",\n        \"amount\": \"Сумма\",\n        \"currencyCode\": \"Код валюты\",\n        \"creditCardNumber\": \"Номер кредитной карты\",\n        \"productName\": \"Название товара\",\n        \"price\": \"Цена\",\n        \"department\": \"Отдел\",\n        \"companyName\": \"Название компании\",\n        \"catchPhrase\": \"Слоган\",\n        \"word\": \"Слово\",\n        \"sentence\": \"Предложение\",\n        \"paragraph\": \"Параграф\",\n        \"past\": \"Прошедшая дата\",\n        \"future\": \"Будущая дата\",\n        \"recent\": \"Недавняя дата\",\n        \"birthdate\": \"Дата рождения\",\n        \"int\": \"Целое число\",\n        \"float\": \"Дробное число\",\n        \"boolean\": \"Булево\",\n        \"phoneNumber\": \"Номер телефона\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL аватара\",\n        \"imageUrl\": \"URL изображения\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Конвертеры\",\n    \"caseConverter\": {\n      \"label\": \"Конвертер регистра\",\n      \"description\": \"Преобразование текста в различные регистры\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Текст в Unicode\",\n      \"description\": \"Конвертация текста в Unicode и обратно\",\n      \"modes\": {\n        \"textToUnicode\": \"Текст → Unicode\",\n        \"unicodeToText\": \"Unicode → Текст\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Текст в ASCII Binary\",\n      \"description\": \"Конвертация текста в ASCII binary и обратно\",\n      \"modes\": {\n        \"textToAscii\": \"Текст → ASCII\",\n        \"asciiToText\": \"ASCII → Текст\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Кодирование или декодирование текста в Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Текст → Base64\",\n        \"base64ToText\": \"Base64 → Текст\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON в YAML\",\n      \"description\": \"Конвертация JSON в YAML и обратно\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON в TOML\",\n      \"description\": \"Конвертация JSON в TOML и обратно\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON в XML\",\n      \"description\": \"Конвертация JSON в XML и обратно\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Конвертер цветов\",\n      \"description\": \"Конвертация цветов между различными форматами\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Криптография / Безопасность\",\n    \"hash\": {\n      \"label\": \"Генератор хешей\",\n      \"description\": \"Генерация хешей из текста\"\n    },\n    \"hmac\": {\n      \"label\": \"HMAC Генератор\",\n      \"description\": \"Генерация кода аутентификации сообщений на основе хеша (HMAC) из ключа и сообщения\"\n    },\n    \"password\": {\n      \"label\": \"Генератор паролей\",\n      \"description\": \"Генерация безопасного пароля\"\n    },\n    \"uuid\": {\n      \"label\": \"UUID Генератор\",\n      \"description\": \"Генерация универсального уникального идентификатора (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Веб\",\n    \"urlParser\": {\n      \"label\": \"URL Парсер\",\n      \"description\": \"Разбор URL на компоненты\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Кодирование или декодирование URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Преобразование текста в URL-совместимый slug\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Ввод\",\n    \"output\": \"Вывод\",\n    \"inputString\": \"Входная строка\",\n    \"outputString\": \"Выходная строка\",\n    \"inputUrl\": \"Входной URL\",\n    \"outputUrl\": \"Выходной URL\",\n    \"parsedUrl\": \"Разобранный URL\",\n    \"splitQueryString\": \"Разделить Query String\",\n    \"key\": \"Ключ\",\n    \"value\": \"Значение\",\n    \"component\": \"Компонент\",\n    \"result\": \"Результат\",\n    \"secretKey\": \"Секретный ключ\",\n    \"algorithm\": \"Алгоритм\",\n    \"version\": \"Версия\",\n    \"amount\": \"Количество\",\n    \"type\": \"Тип\",\n    \"length\": \"Длина\",\n    \"options\": \"Опции\",\n    \"numbers\": \"Числа\",\n    \"symbols\": \"Символы\",\n    \"lowercase\": \"Строчные\",\n    \"uppercase\": \"Заглавные\",\n    \"placeholder\": {\n      \"text\": \"Введите текст\",\n      \"value\": \"Введите значение\",\n      \"secretKey\": \"Введите секретный ключ\",\n      \"url\": \"Введите URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ru_RU/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Настройки\",\n    \"devtools\": \"Инструменты разработчика\",\n    \"update\": \"Проверить обновления...\",\n    \"quit\": \"Выйти из massCode\",\n    \"about\": \"О massCode\",\n    \"hide\": \"Скрыть massCode\"\n  },\n  \"help\": {\n    \"label\": \"Помощь\",\n    \"website\": \"Веб-сайт\",\n    \"documentation\": \"Документация\",\n    \"viewInGitHub\": \"Открыть на GitHub\",\n    \"changeLog\": \"История изменений\",\n    \"reportIssue\": \"Сообщить о проблеме\",\n    \"giveStar\": \"Поставить звезду\",\n    \"extension\": {\n      \"vscode\": \"Расширение VS Code\",\n      \"raycast\": \"Расширение Raycast\",\n      \"alfred\": \"Расширение Alfred\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Поддержать через Open Collective\",\n      \"payPal\": \"Поддержать через PayPal\",\n      \"gumroad\": \"Поддержать через Gumroad (Visa, Mastercard и др.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Инструменты разработчика\",\n    \"links\": {\n      \"snippets\": \"Коллекция сниппетов\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Правка\",\n    \"find\": \"Найти\"\n  },\n  \"view\": {\n    \"label\": \"Вид\",\n    \"sortBy\": {\n      \"label\": \"Сортировать сниппеты по\",\n      \"dateModified\": \"Дате изменения\",\n      \"dateCreated\": \"Дате создания\",\n      \"name\": \"Имени\"\n    },\n    \"compactMode\": \"Компактный режим\",\n    \"showSidebar\": \"Показать/скрыть боковую панель\"\n  },\n  \"editor\": {\n    \"label\": \"Редактор\",\n    \"copy\": \"Копировать сниппет в буфер обмена\",\n    \"format\": \"Форматировать\",\n    \"previewCode\": \"Предпросмотр кода\",\n    \"previewScreenshot\": \"Предпросмотр скриншота\",\n    \"previewJson\": \"Предпросмотр JSON\",\n    \"fontSizeIncrease\": \"Увеличить размер шрифта\",\n    \"fontSizeDecrease\": \"Уменьшить размер шрифта\",\n    \"fontSizeReset\": \"Сбросить размер шрифта\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Режим презентации\",\n    \"preview\": \"Предпросмотр\",\n    \"previewMarkdown\": \"Предпросмотр Markdown\",\n    \"previewMindmap\": \"Предпросмотр диаграммы связей\"\n  },\n  \"history\": {\n    \"label\": \"История\",\n    \"back\": \"Назад\",\n    \"forward\": \"Вперед\"\n  },\n  \"devtools\": {\n    \"label\": \"Инструменты разработчика\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ru_RU/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Вы уверены, что хотите удалить \\\"{{name}}\\\"?\",\n    \"deletePermanently\": \"Вы уверены, что хотите навсегда удалить \\\"{{name}}\\\"?\",\n    \"deleteConfirmMultipleSnippets\": \"Вы уверены, что хотите навсегда удалить {{count}} выбранных сниппетов?\",\n    \"emptyTrash\": \"Вы уверены, что хотите навсегда удалить все сниппеты из Корзины?\",\n    \"clearDb\": \"Вы уверены, что хотите очистить базу данных?\",\n    \"migrateDb\": [\n      \"Вы уверены, что хотите выполнить миграцию?\",\n      \"Во время миграции текущая библиотека будет перезаписана.\"\n    ],\n    \"migrateToMarkdown\": [\n      \"Мигрировать в Markdown Vault?\",\n      \"Выбранный vault будет перезаписан текущей библиотекой SQLite.\"\n    ],\n    \"migrateToSqlite\": [\n      \"Откатиться на SQLite?\",\n      \"Текущие данные SQLite будут заменены данными из markdown vault.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"Скопировано в буфер обмена\",\n    \"migrate\": \"База данных успешно мигрирована.\",\n    \"migrateToMarkdown\": \"Выполнена миграция в Markdown Vault. Папок: {{folders}}, сниппетов: {{snippets}}, тегов: {{tags}}.\",\n    \"migrateToSqlite\": \"Выполнен откат на SQLite. Папок: {{folders}}, сниппетов: {{snippets}}, тегов: {{tags}}.\",\n    \"vaultLoaded\": \"Хранилище успешно загружено.\",\n    \"backup\": {\n      \"created\": \"Резервная копия успешно создана.\",\n      \"restored\": \"Резервная копия успешно восстановлена.\",\n      \"deleted\": \"Резервная копия успешно удалена.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Это действие нельзя отменить.\",\n    \"allSnippetsMoveToTrash\": \"Все сниппеты в этой папке будут перемещены в корзину.\",\n    \"deleteTag\": \"Это также приведет к удалению этого тега со всех сниппетов.\",\n    \"createDb\": \"Пожалуйста, выберите другую папку\",\n    \"clearDb\": \"Это навсегда удалит все Сниппеты, Папки и Теги из базы данных.\",\n    \"htmlCssPreview\": \"Добавьте HTML-фрагмент, чтобы увидеть результат. Добавьте CSS для стилизации и JavaScript для интерактивности.\",\n    \"codeBlockRenderer\": [\n      \"При использовании Codemirror язык, который будет установлен для блока кода, должен соответствовать одному из значений\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"Директория, в которой хранится база данных SQLite.\",\n    \"storageEngine\": \"Markdown Vault теперь является рекомендуемым форматом хранения. SQLite пока доступен для совместимости и отката.\",\n    \"storageVault\": \"Выберите директорию для хранилища. Для синхронизации между устройствами выберите папку в iCloud Drive, Google Drive или Dropbox.\",\n    \"migrate\": {\n      \"fromV3\": \"Для миграции с massCode v3 выберите папку, содержащую файл JSON.\",\n      \"fromSnippetsLab\": \"Для миграции из SnippetsLab выберите файл JSON.\",\n      \"snippetsLabLimitations\": [\n        \"Некоторые ограничения. При миграции из SnippetsLab:\",\n        \"Все папки будут первого уровня, так как JSON файл (ниже v2.1) не поддерживает вложенные папки.\",\n        \"Сниппеты с неподдерживаемыми языками будут установлены в Plain Text по умолчанию.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Привет, это Антон 👋<br><br>\\nСпасибо за использование massCode. Если вы находите это приложение полезным, пожалуйста, {{-tagStart}}поддержите проект{{-tagEnd}}. Это вдохновит меня на продолжение разработки проекта.\",\n    \"unsponsored\": \"Без спонсорства\"\n  },\n  \"update\": {\n    \"available\": \"Версия {{newVersion}} доступна для загрузки.\\nВаша версия {{oldVersion}}.\",\n    \"noAvailable\": \"В настоящее время обновления недоступны.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ru_RU/preferences.json",
    "content": "{\n  \"label\": \"Настройки\",\n  \"storage\": {\n    \"label\": \"Хранилище\",\n    \"section\": {\n      \"migration\": \"Миграция\",\n      \"dangerZone\": \"Опасная зона\"\n    },\n    \"migrate\": \"Миграция\",\n    \"migrateMarkdownToSqlite\": \"Откатиться на SQLite\",\n    \"migrateSqliteToMarkdown\": \"Мигрировать в Markdown Vault\",\n    \"count\": \"Количество\",\n    \"vaultPath\": \"Путь к vault\",\n    \"engine\": {\n      \"label\": \"Движок хранилища\",\n      \"sqlite\": \"SQLite (устаревающий)\",\n      \"markdown\": \"Markdown Vault (рекомендуется)\"\n    },\n    \"clearDatabase\": \"Очистить базу данных\"\n  },\n  \"editor\": {\n    \"label\": \"Редактор\",\n    \"fontSize\": \"Размер шрифта\",\n    \"fontFamily\": \"Семейство шрифтов\",\n    \"wrap\": {\n      \"label\": \"Перенос\",\n      \"wordWrap\": \"Перенос слов\",\n      \"off\": \"Выключен\"\n    },\n    \"tabSize\": \"Размер отступа\",\n    \"showInvisibles\": \"Показывать невидимые символы\",\n    \"highlightLine\": \"Подсветка строки\",\n    \"highlightGutter\": \"Подсветка номеров строк\",\n    \"matchBrackets\": \"Подсветка скобок\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Замыкающая запятая\",\n        \"none\": \"Нет\",\n        \"all\": \"Везде\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Точка с запятой\",\n      \"singleQuote\": \"Одинарные кавычки\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Внешний вид\",\n    \"theme\": {\n      \"label\": \"Тема\",\n      \"light\": \"Светлая\",\n      \"dark\": \"Темная\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Язык\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Рендер блоков кода\"\n  },\n  \"api\": {\n    \"label\": \"Порт API\",\n    \"port\": {\n      \"label\": \"Порт API\",\n      \"description\": \"Номер порта для API-сервера (требуется перезапуск приложения). Допустимый диапазон: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/ru_RU/ui.json",
    "content": "{\n  \"total\": \"Всего\",\n  \"line\": \"Строка\",\n  \"column\": \"Столбец\",\n  \"fragment\": \"Фрагмент\",\n  \"path\": \"Путь\",\n  \"button\": {\n    \"back\": \"Назад\",\n    \"cancel\": \"Отмена\",\n    \"clear\": \"Очистить\",\n    \"confirm\": \"Подтвердить\",\n    \"copy\": \"Копировать\",\n    \"fit\": \"По размеру\",\n    \"generate\": \"Сгенерировать\",\n    \"ok\": \"OK\",\n    \"revers\": \"Обратить\",\n    \"saveAs\": \"Сохранить как\",\n    \"sort\": \"Сортировать\",\n    \"update\": [\"Перейти на GitHub\", \"OK\"],\n    \"zoomIn\": \"Увеличить\",\n    \"zoomOut\": \"Уменьшить\",\n    \"darkMode\": \"Темная тема\",\n    \"toggleDarkMode\": \"Переключить тёмную тему\",\n    \"background\": \"Фон\",\n    \"goToDownload\": \"Перейти к загрузке\",\n    \"refreshPreview\": \"Обновить предпросмотр\",\n    \"laserPointer\": \"Лазерная указка\",\n    \"fullscreen\": \"Полный экран\",\n    \"prev\": \"Назад\",\n    \"next\": \"Далее\"\n  },\n  \"action\": {\n    \"close\": \"Закрыть\",\n    \"defaultLanguage\": \"Язык по умолчанию\",\n    \"duplicate\": \"Дублировать\",\n    \"rename\": \"Переименовать\",\n    \"restore\": \"Восстановить\",\n    \"setCustomIcon\": \"Установить иконку\",\n    \"removeCustomIcon\": \"Удалить иконку\",\n    \"show\": \"Показать\",\n    \"hide\": \"Скрыть\",\n    \"showSidebar\": \"Показать боковую панель\",\n    \"hideSidebar\": \"Скрыть боковую панель\",\n    \"new\": {\n      \"storage\": \"Новое хранилище\",\n      \"folder\": \"Новая папка\",\n      \"snippet\": \"Новый сниппет\",\n      \"fragment\": \"Новый фрагмент\"\n    },\n    \"add\": {\n      \"description\": \"Добавить описание\",\n      \"tag\": \"Добавить тег\",\n      \"toFavorites\": \"Добавить в избранное\"\n    },\n    \"open\": {\n      \"storage\": \"Открыть хранилище\"\n    },\n    \"move\": {\n      \"storage\": \"Переместить хранилище\",\n      \"toTrash\": \"Переместить в корзину\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Удалить из избранного\"\n    },\n    \"reload\": {\n      \"storage\": \"Перезагрузить хранилище\"\n    },\n    \"delete\": {\n      \"common\": \"Удалить\",\n      \"now\": \"Удалить сейчас\",\n      \"allData\": \"Удалить все данные\",\n      \"trash\": \"Очистить корзину\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Из SnippetsLab\",\n      \"fromV3\": \"Из massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Экспорт в HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Копировать ссылку на сниппет\"\n    },\n    \"select\": {\n      \"directory\": \"Выбрать директорию\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Входящие\",\n    \"favorites\": \"Избранное\",\n    \"allSnippets\": \"Все сниппеты\",\n    \"trash\": \"Корзина\",\n    \"folders\": \"Папки\",\n    \"library\": \"Библиотека\",\n    \"tags\": \"Теги\"\n  },\n  \"folder\": {\n    \"untitled\": \"Папка без названия\",\n    \"plural\": \"Папки\",\n    \"collapseAll\": \"Свернуть все\",\n    \"expandAll\": \"Развернуть все\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Сниппет без названия\",\n    \"plural\": \"Сниппеты\",\n    \"emptyName\": \"Введите название сниппета\",\n    \"selectedMultiple\": \"Выбрано сниппетов: {{count}}\",\n    \"noSelected\": \"Нет выбранных сниппетов\"\n  },\n  \"mathNotebook\": {\n    \"label\": \"Математический блокнот\",\n    \"sheetList\": \"Список листов\",\n    \"newSheet\": \"Новый лист\",\n    \"untitled\": \"Без названия\",\n    \"copied\": \"Скопировано\",\n    \"currencyUnavailable\": \"Сервис курсов валют недоступен\"\n  },\n  \"spaces\": {\n    \"label\": \"Пространства\",\n    \"codeTooltip\": \"Сниппеты кода\",\n    \"toolsTooltip\": \"Инструменты разработчика\",\n    \"mathTooltip\": \"Математический блокнот\"\n  },\n  \"loading\": \"Загрузка приложения...\",\n  \"placeholder\": {\n    \"emptyTagList\": \"Добавьте теги к сниппетам, чтобы увидеть их здесь\",\n    \"emptyFoldersList\": \"Нет папок\",\n    \"emptySnippetsList\": \"Нет сниппетов\",\n    \"emptySheetList\": \"Нет листов\",\n    \"search\": \"Поиск\",\n    \"addTag\": \"Добавить тег\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/tr_TR/devtools.json",
    "content": "{\n  \"label\": \"Geliştirici Araçları\",\n  \"generators\": {\n    \"label\": \"Üreteçler\",\n    \"lorem\": {\n      \"label\": \"Lorem Ipsum Üreteci\",\n      \"description\": \"Lorem Ipsum yer tutucu metni oluştur\",\n      \"selectType\": \"Tür seç\",\n      \"maxCount\": \"Maks {{count}}\",\n      \"types\": {\n        \"words\": \"Kelimeler\",\n        \"sentences\": \"Cümleler\",\n        \"paragraphs\": \"Paragraflar\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON Üreteci\",\n      \"description\": \"Çeşitli alan türleriyle rastgele JSON verileri oluştur\",\n      \"fields\": \"Alanlar\",\n      \"fieldName\": \"Alan adı\",\n      \"selectType\": \"Tür seç\",\n      \"addField\": \"Alan ekle\",\n      \"rowCount\": \"Satır sayısı\",\n      \"maxRows\": \"Maks 1000\",\n      \"categories\": {\n        \"general\": \"Genel\",\n        \"person\": \"Kişi\",\n        \"internet\": \"İnternet\",\n        \"location\": \"Konum\",\n        \"finance\": \"Finans\",\n        \"commerce\": \"Ticaret\",\n        \"company\": \"Şirket\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Tarih\",\n        \"number\": \"Sayı\",\n        \"phone\": \"Telefon\",\n        \"image\": \"Resim\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Satır numarası\",\n        \"firstName\": \"Ad\",\n        \"lastName\": \"Soyad\",\n        \"fullName\": \"Tam ad\",\n        \"gender\": \"Cinsiyet\",\n        \"jobTitle\": \"İş unvanı\",\n        \"email\": \"E-posta adresi\",\n        \"username\": \"Kullanıcı adı\",\n        \"password\": \"Şifre\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP adresi v4\",\n        \"ipv6\": \"IP adresi v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Şehir\",\n        \"country\": \"Ülke\",\n        \"streetAddress\": \"Adres\",\n        \"zipCode\": \"Posta kodu\",\n        \"latitude\": \"Enlem\",\n        \"longitude\": \"Boylam\",\n        \"amount\": \"Miktar\",\n        \"currencyCode\": \"Para birimi kodu\",\n        \"creditCardNumber\": \"Kredi kartı numarası\",\n        \"productName\": \"Ürün adı\",\n        \"price\": \"Fiyat\",\n        \"department\": \"Departman\",\n        \"companyName\": \"Şirket adı\",\n        \"catchPhrase\": \"Slogan\",\n        \"word\": \"Kelime\",\n        \"sentence\": \"Cümle\",\n        \"paragraph\": \"Paragraf\",\n        \"past\": \"Geçmiş tarih\",\n        \"future\": \"Gelecek tarih\",\n        \"recent\": \"Son tarih\",\n        \"birthdate\": \"Doğum tarihi\",\n        \"int\": \"Tamsayı\",\n        \"float\": \"Ondalık sayı\",\n        \"boolean\": \"Boolean\",\n        \"phoneNumber\": \"Telefon numarası\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"Avatar URL'si\",\n        \"imageUrl\": \"Resim URL'si\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Dönüştürücüler\",\n    \"caseConverter\": {\n      \"label\": \"Büyük/Küçük Harf Dönüştürücü\",\n      \"description\": \"Metni farklı büyük/küçük harf biçimlerine dönüştür\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Metin Unicode'a\",\n      \"description\": \"Metni Unicode'a dönüştür ve tersi\",\n      \"modes\": {\n        \"textToUnicode\": \"Metin → Unicode\",\n        \"unicodeToText\": \"Unicode → Metin\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Metin ASCII Binary'ye\",\n      \"description\": \"Metni ASCII binary'ye dönüştür ve tersi\",\n      \"modes\": {\n        \"textToAscii\": \"Metin → ASCII\",\n        \"asciiToText\": \"ASCII → Metin\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Metni Base64'e kodla veya çöz\",\n      \"modes\": {\n        \"textToBase64\": \"Metin → Base64\",\n        \"base64ToText\": \"Base64 → Metin\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON'dan YAML'a\",\n      \"description\": \"JSON'u YAML'a dönüştür ve tersi\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON'dan TOML'a\",\n      \"description\": \"JSON'u TOML'a dönüştür ve tersi\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON'dan XML'e\",\n      \"description\": \"JSON'u XML'e dönüştür ve tersi\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Renk Dönüştürücü\",\n      \"description\": \"Renkleri farklı formatlar arasında dönüştür\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Kriptografi / Güvenlik\",\n    \"hash\": {\n      \"label\": \"Hash Üretici\",\n      \"description\": \"Metinden hash üret\"\n    },\n    \"hmac\": {\n      \"label\": \"HMAC Üretici\",\n      \"description\": \"Anahtar ve mesajdan oluşan hash tabanlı mesaj kimlik doğrulama kodu (HMAC) üret\"\n    },\n    \"password\": {\n      \"label\": \"Şifre Üretici\",\n      \"description\": \"Güvenli şifre üret\"\n    },\n    \"uuid\": {\n      \"label\": \"UUID Üretici\",\n      \"description\": \"Evrensel benzersiz tanımlayıcı (UUID) üret\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Web\",\n    \"urlParser\": {\n      \"label\": \"URL Ayrıştırıcı\",\n      \"description\": \"URL'yi bileşenlerine ayrıştır\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"URL'yi kodla veya çöz\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Metni URL dostu slug'a dönüştür\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Giriş\",\n    \"output\": \"Çıkış\",\n    \"inputString\": \"Giriş Dizesi\",\n    \"outputString\": \"Çıkış Dizesi\",\n    \"inputUrl\": \"Giriş URL\",\n    \"outputUrl\": \"Çıkış URL\",\n    \"parsedUrl\": \"Ayrıştırılmış URL\",\n    \"splitQueryString\": \"Query String'i Böl\",\n    \"key\": \"Anahtar\",\n    \"value\": \"Değer\",\n    \"component\": \"Bileşen\",\n    \"result\": \"Sonuç\",\n    \"secretKey\": \"Gizli Anahtar\",\n    \"algorithm\": \"Algoritma\",\n    \"version\": \"Sürüm\",\n    \"amount\": \"Miktar\",\n    \"type\": \"Tür\",\n    \"length\": \"Uzunluk\",\n    \"options\": \"Seçenekler\",\n    \"numbers\": \"Sayılar\",\n    \"symbols\": \"Semboller\",\n    \"lowercase\": \"Küçük harf\",\n    \"uppercase\": \"Büyük harf\",\n    \"placeholder\": {\n      \"text\": \"Metin girin\",\n      \"value\": \"Değer girin\",\n      \"secretKey\": \"Gizli anahtar girin\",\n      \"url\": \"URL girin\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/tr_TR/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Tercihler\",\n    \"devtools\": \"Geliştirici Araçları\",\n    \"update\": \"Güncellemeleri Kontrol Et...\",\n    \"quit\": \"massCode'dan Çık\",\n    \"about\": \"massCode Hakkında\",\n    \"hide\": \"massCode'u Gizle\"\n  },\n  \"help\": {\n    \"label\": \"Yardım\",\n    \"website\": \"Web Sitesi\",\n    \"documentation\": \"Dokümantasyon\",\n    \"viewInGitHub\": \"GitHub'da Görüntüle\",\n    \"changeLog\": \"Değişiklik Günlüğü\",\n    \"reportIssue\": \"Sorun Bildir\",\n    \"giveStar\": \"Yıldız Ver\",\n    \"extension\": {\n      \"vscode\": \"VS Code Eklentisi\",\n      \"raycast\": \"Raycast Eklentisi\",\n      \"alfred\": \"Alfred Eklentisi\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Open Collective'de Bağış Yap\",\n      \"payPal\": \"PayPal ile Bağış Yap\",\n      \"gumroad\": \"Gumroad ile Bağış Yap (Visa, Mastercard, vb.)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Geliştirici Araçlarını Aç/Kapat\",\n    \"links\": {\n      \"snippets\": \"Snippet Koleksiyonu\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Düzenle\",\n    \"find\": \"Bul\"\n  },\n  \"view\": {\n    \"label\": \"Görünüm\",\n    \"sortBy\": {\n      \"label\": \"Snippet'leri Sırala\",\n      \"dateModified\": \"Değiştirilme Tarihi\",\n      \"dateCreated\": \"Oluşturulma Tarihi\",\n      \"name\": \"İsim\"\n    },\n    \"compactMode\": \"Kompakt Mod\",\n    \"showSidebar\": \"Kenar Çubuğunu Göster/Gizle\"\n  },\n  \"editor\": {\n    \"label\": \"Editör\",\n    \"copy\": \"Snippet'i Panoya Kopyala\",\n    \"format\": \"Biçimlendir\",\n    \"previewCode\": \"Kodu Önizle\",\n    \"previewScreenshot\": \"Ekran Görüntüsünü Önizle\",\n    \"previewJson\": \"JSON Önizleme\",\n    \"fontSizeIncrease\": \"Yazı Boyutunu Artır\",\n    \"fontSizeDecrease\": \"Yazı Boyutunu Azalt\",\n    \"fontSizeReset\": \"Yazı Boyutunu Sıfırla\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Sunum Modu\",\n    \"preview\": \"Önizleme\",\n    \"previewMarkdown\": \"Markdown Önizle\",\n    \"previewMindmap\": \"Mindmap Önizle\"\n  },\n  \"history\": {\n    \"label\": \"Geçmiş\",\n    \"back\": \"Geri\",\n    \"forward\": \"İleri\"\n  },\n  \"devtools\": {\n    \"label\": \"Geliştirici Araçları\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/tr_TR/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"\\\"{{name}}\\\" öğesini silmek istediğinizden emin misiniz?\",\n    \"deletePermanently\": \"\\\"{{name}}\\\" öğesini kalıcı olarak silmek istediğinizden emin misiniz?\",\n    \"deleteConfirmMultipleSnippets\": \"{{count}} seçili snippet'i kalıcı olarak silmek istediğinizden emin misiniz?\",\n    \"emptyTrash\": \"Çöp Kutusu'ndaki tüm snippet'leri kalıcı olarak silmek istediğinizden emin misiniz?\",\n    \"clearDb\": \"Database'i temizlemek istediğinizden emin misiniz?\",\n    \"migrateDb\": [\n      \"Taşımak istediğinizden emin misiniz?\",\n      \"Taşıma sırasında mevcut kütüphane üzerine yazılacaktır.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"Panoya kopyalandı\",\n    \"migrate\": \"Database başarıyla taşındı.\",\n    \"backup\": {\n      \"created\": \"Yedek başarıyla oluşturuldu.\",\n      \"restored\": \"Yedek başarıyla geri yüklendi.\",\n      \"deleted\": \"Yedek başarıyla silindi.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Bu işlemi geri alamazsınız.\",\n    \"allSnippetsMoveToTrash\": \"Bu klasördeki tüm snippet'ler çöp kutusuna taşınacak.\",\n    \"deleteTag\": \"Bu, tüm snippet'lerden bu etiketin kaldırılmasına neden olacaktır.\",\n    \"createDb\": \"Lütfen başka bir klasör seçin\",\n    \"clearDb\": \"Bu, database'deki tüm Snippet'leri, Klasörleri ve Etiketleri kalıcı olarak silecektir.\",\n    \"htmlCssPreview\": \"Sonucu görmek için HTML parçası ekleyin. Stil için CSS ve etkileşim için JavaScript ekleyin.\",\n    \"codeBlockRenderer\": [\n      \"Codemirror kullanırken, kod bloğu için ayarlanacak dilin\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"iCloud Drive, Google Drive veya Dropbox gibi senkronizasyon servislerini kullanmak için depolamayı ilgili senkronize klasörlere taşımanız yeterlidir\",\n    \"migrate\": {\n      \"fromV3\": \"massCode v3'ten taşımak için JSON dosyasını içeren klasörü seçin.\",\n      \"fromSnippetsLab\": \"SnippetsLab'den taşımak için JSON dosyasını seçin.\",\n      \"snippetsLabLimitations\": [\n        \"Bazı Sınırlamalar. SnippetsLab'den taşıma sırasında:\",\n        \"JSON dosyası (v2.1'in altında) iç içe klasörleri temsil etmediğinden tüm klasörler birinci seviye olacaktır.\",\n        \"Desteklenmeyen dillere sahip snippet'ler varsayılan Plain Text olarak ayarlanacaktır.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Merhaba, ben Anton 👋<br><br>\\nmassCode'u kullandığınız için teşekkürler. Bu uygulamayı faydalı buluyorsanız, lütfen {{-tagStart}}bağış yapın{{-tagEnd}}. Bu beni projenin geliştirilmesine devam etmem için teşvik edecektir.\",\n    \"unsponsored\": \"Sponsorsuz\"\n  },\n  \"update\": {\n    \"available\": \"{{newVersion}} sürümü artık indirilebilir.\\nSizin sürümünüz {{oldVersion}}.\",\n    \"noAvailable\": \"Şu anda mevcut güncelleme yok.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/tr_TR/preferences.json",
    "content": "{\n  \"label\": \"Tercihler\",\n  \"storage\": {\n    \"label\": \"Depolama\",\n    \"migrate\": \"Taşı\",\n    \"count\": \"Sayı\",\n    \"clearDatabase\": \"Database'i Temizle\"\n  },\n  \"editor\": {\n    \"label\": \"Editör\",\n    \"fontSize\": \"Yazı Boyutu\",\n    \"fontFamily\": \"Yazı Tipi\",\n    \"wrap\": {\n      \"label\": \"Kaydırma\",\n      \"wordWrap\": \"Kelime Kaydırma\",\n      \"off\": \"Kapalı\"\n    },\n    \"tabSize\": \"Sekme Boyutu\",\n    \"showInvisibles\": \"Görünmezleri Göster\",\n    \"highlightLine\": \"Satırı Vurgula\",\n    \"highlightGutter\": \"Kenar Boşluğunu Vurgula\",\n    \"matchBrackets\": \"Parantezleri Eşleştir\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Sondaki Virgül\",\n        \"none\": \"Yok\",\n        \"all\": \"Hepsi\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Noktalı Virgül\",\n      \"singleQuote\": \"Tek Tırnak\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Görünüm\",\n    \"theme\": {\n      \"label\": \"Tema\",\n      \"light\": \"Açık\",\n      \"dark\": \"Koyu\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Dil\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Kod Bloğu Görüntüleyici\"\n  },\n  \"api\": {\n    \"label\": \"API Portu\",\n    \"port\": {\n      \"label\": \"API Portu\",\n      \"description\": \"API sunucusu için port numarası (uygulamayı yeniden başlatmak gerekir). Geçerli aralık: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/tr_TR/ui.json",
    "content": "{\n  \"total\": \"Toplam\",\n  \"line\": \"Satır\",\n  \"column\": \"Sütun\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Yol\",\n  \"button\": {\n    \"back\": \"Geri\",\n    \"cancel\": \"İptal\",\n    \"clear\": \"Temizle\",\n    \"confirm\": \"Onayla\",\n    \"copy\": \"Kopyala\",\n    \"fit\": \"Sığdır\",\n    \"generate\": \"Oluştur\",\n    \"ok\": \"Tamam\",\n    \"revers\": \"Ters Çevir\",\n    \"saveAs\": \"Farklı Kaydet\",\n    \"sort\": \"Sırala\",\n    \"update\": [\"GitHub'a Git\", \"Tamam\"],\n    \"zoomIn\": \"Yakınlaştır\",\n    \"zoomOut\": \"Uzaklaştır\",\n    \"darkMode\": \"Karanlık Mod\",\n    \"toggleDarkMode\": \"Karanlık modu değiştir\",\n    \"background\": \"Arka Plan\",\n    \"goToDownload\": \"İndirmeye Git\",\n    \"refreshPreview\": \"Önizlemeyi yenile\",\n    \"laserPointer\": \"Lazer işaretçi\",\n    \"fullscreen\": \"Tam ekran\",\n    \"prev\": \"Önceki\",\n    \"next\": \"Sonraki\"\n  },\n  \"action\": {\n    \"close\": \"Kapat\",\n    \"defaultLanguage\": \"Varsayılan Dil\",\n    \"duplicate\": \"Çoğalt\",\n    \"rename\": \"Yeniden Adlandır\",\n    \"restore\": \"Geri Yükle\",\n    \"setCustomIcon\": \"İkon Ayarla\",\n    \"removeCustomIcon\": \"İkonu Kaldır\",\n    \"show\": \"Göster\",\n    \"hide\": \"Gizle\",\n    \"showSidebar\": \"Kenar Çubuğunu Göster\",\n    \"hideSidebar\": \"Kenar Çubuğunu Gizle\",\n    \"new\": {\n      \"storage\": \"Yeni Depolama\",\n      \"folder\": \"Yeni Klasör\",\n      \"snippet\": \"Yeni Snippet\",\n      \"fragment\": \"Yeni Fragment\"\n    },\n    \"add\": {\n      \"description\": \"Açıklama Ekle\",\n      \"tag\": \"Etiket Ekle\",\n      \"toFavorites\": \"Favorilere Ekle\"\n    },\n    \"open\": {\n      \"storage\": \"Depolama Aç\"\n    },\n    \"move\": {\n      \"storage\": \"Depolamayı Taşı\",\n      \"toTrash\": \"Çöp Kutusuna Taşı\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Favorilerden Kaldır\"\n    },\n    \"reload\": {\n      \"storage\": \"Depolamayı Yenile\"\n    },\n    \"delete\": {\n      \"common\": \"Sil\",\n      \"now\": \"Şimdi Sil\",\n      \"allData\": \"Tüm Verileri Sil\",\n      \"trash\": \"Çöp Kutusunu Boşalt\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"SnippetsLab'den\",\n      \"fromV3\": \"massCode v3'ten\"\n    },\n    \"export\": {\n      \"toHtml\": \"HTML Olarak Dışa Aktar\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Snippet Bağlantısını Kopyala\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Gelen Kutusu\",\n    \"favorites\": \"Favoriler\",\n    \"allSnippets\": \"Tüm Snippet'ler\",\n    \"trash\": \"Çöp Kutusu\",\n    \"folders\": \"Klasörler\",\n    \"library\": \"Kütüphane\",\n    \"tags\": \"Etiketler\"\n  },\n  \"folder\": {\n    \"untitled\": \"İsimsiz klasör\",\n    \"plural\": \"Klasörler\",\n    \"collapseAll\": \"Tümünü Daralt\",\n    \"expandAll\": \"Tümünü Genişlet\"\n  },\n  \"snippet\": {\n    \"untitled\": \"İsimsiz snippet\",\n    \"plural\": \"Snippet'ler\",\n    \"emptyName\": \"Snippet adını yazın\",\n    \"selectedMultiple\": \"{{count}} Snippet Seçildi\",\n    \"noSelected\": \"Snippet Seçilmedi\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Burada görmek için snippet'lere etiket ekleyin\",\n    \"emptyFoldersList\": \"Klasör yok\",\n    \"emptySnippetsList\": \"Snippet yok\",\n    \"search\": \"Ara\",\n    \"addTag\": \"Etiket Ekle\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/uk_UA/devtools.json",
    "content": "{\n  \"label\": \"Інструменти розробника\",\n  \"generators\": {\n    \"label\": \"Генератори\",\n    \"lorem\": {\n      \"label\": \"Генератор Lorem Ipsum\",\n      \"description\": \"Генерація тексту-заповнювача\",\n      \"selectType\": \"Виберіть тип\",\n      \"maxCount\": \"Макс {{count}}\",\n      \"types\": {\n        \"words\": \"Слова\",\n        \"sentences\": \"Речення\",\n        \"paragraphs\": \"Параграфи\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON генератор\",\n      \"description\": \"Генерувати випадкові JSON дані з різними типами полів\",\n      \"fields\": \"Поля\",\n      \"fieldName\": \"Назва поля\",\n      \"selectType\": \"Обрати тип\",\n      \"addField\": \"Додати поле\",\n      \"rowCount\": \"Кількість рядків\",\n      \"maxRows\": \"Макс 1000\",\n      \"categories\": {\n        \"general\": \"Загальне\",\n        \"person\": \"Особа\",\n        \"internet\": \"Інтернет\",\n        \"location\": \"Місцезнаходження\",\n        \"finance\": \"Фінанси\",\n        \"commerce\": \"Торгівля\",\n        \"company\": \"Компанія\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"Дата\",\n        \"number\": \"Число\",\n        \"phone\": \"Телефон\",\n        \"image\": \"Зображення\"\n      },\n      \"types\": {\n        \"rowNumber\": \"Номер рядка\",\n        \"firstName\": \"Ім'я\",\n        \"lastName\": \"Прізвище\",\n        \"fullName\": \"Повне ім'я\",\n        \"gender\": \"Стать\",\n        \"jobTitle\": \"Посада\",\n        \"email\": \"Адреса електронної пошти\",\n        \"username\": \"Ім'я користувача\",\n        \"password\": \"Пароль\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP адреса v4\",\n        \"ipv6\": \"IP адреса v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"Місто\",\n        \"country\": \"Країна\",\n        \"streetAddress\": \"Адреса\",\n        \"zipCode\": \"Поштовий індекс\",\n        \"latitude\": \"Широта\",\n        \"longitude\": \"Довгота\",\n        \"amount\": \"Сума\",\n        \"currencyCode\": \"Код валюти\",\n        \"creditCardNumber\": \"Номер кредитної картки\",\n        \"productName\": \"Назва товару\",\n        \"price\": \"Ціна\",\n        \"department\": \"Відділ\",\n        \"companyName\": \"Назва компанії\",\n        \"catchPhrase\": \"Слоган\",\n        \"word\": \"Слово\",\n        \"sentence\": \"Речення\",\n        \"paragraph\": \"Абзац\",\n        \"past\": \"Минула дата\",\n        \"future\": \"Майбутня дата\",\n        \"recent\": \"Недавня дата\",\n        \"birthdate\": \"Дата народження\",\n        \"int\": \"Ціле число\",\n        \"float\": \"Дробове число\",\n        \"boolean\": \"Булевий\",\n        \"phoneNumber\": \"Номер телефону\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"URL аватара\",\n        \"imageUrl\": \"URL зображення\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"Конвертери\",\n    \"caseConverter\": {\n      \"label\": \"Конвертер регістру\",\n      \"description\": \"Перетворення тексту в різні регістри\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"Текст в Unicode\",\n      \"description\": \"Конвертація тексту в Unicode і навпаки\",\n      \"modes\": {\n        \"textToUnicode\": \"Текст → Unicode\",\n        \"unicodeToText\": \"Unicode → Текст\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"Текст в ASCII Binary\",\n      \"description\": \"Конвертація тексту в ASCII binary і навпаки\",\n      \"modes\": {\n        \"textToAscii\": \"Текст → ASCII\",\n        \"asciiToText\": \"ASCII → Текст\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"Кодування або декодування тексту в Base64\",\n      \"modes\": {\n        \"textToBase64\": \"Текст → Base64\",\n        \"base64ToText\": \"Base64 → Текст\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON в YAML\",\n      \"description\": \"Конвертація JSON в YAML і навпаки\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON в TOML\",\n      \"description\": \"Конвертація JSON в TOML і навпаки\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON в XML\",\n      \"description\": \"Конвертація JSON в XML і навпаки\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"Конвертер кольорів\",\n      \"description\": \"Конвертація кольорів між різними форматами\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"Криптографія / Безпека\",\n    \"hash\": {\n      \"label\": \"Генератор хешів\",\n      \"description\": \"Генерація хешів з тексту\"\n    },\n    \"hmac\": {\n      \"label\": \"HMAC Генератор\",\n      \"description\": \"Генерація коду автентифікації повідомлень на основі хешу (HMAC) з ключа та повідомлення\"\n    },\n    \"password\": {\n      \"label\": \"Генератор паролів\",\n      \"description\": \"Генерація безпечного пароля\"\n    },\n    \"uuid\": {\n      \"label\": \"UUID Генератор\",\n      \"description\": \"Генерація універсального унікального ідентифікатора (UUID)\"\n    }\n  },\n  \"web\": {\n    \"label\": \"Веб\",\n    \"urlParser\": {\n      \"label\": \"URL Парсер\",\n      \"description\": \"Розбір URL на компоненти\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"Кодування або декодування URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"Перетворення тексту в URL-сумісний slug\"\n    }\n  },\n  \"form\": {\n    \"input\": \"Введення\",\n    \"output\": \"Виведення\",\n    \"inputString\": \"Вхідний рядок\",\n    \"outputString\": \"Вихідний рядок\",\n    \"inputUrl\": \"Вхідний URL\",\n    \"outputUrl\": \"Вихідний URL\",\n    \"parsedUrl\": \"Розібраний URL\",\n    \"splitQueryString\": \"Розділити Query String\",\n    \"key\": \"Ключ\",\n    \"value\": \"Значення\",\n    \"component\": \"Компонент\",\n    \"result\": \"Результат\",\n    \"secretKey\": \"Секретний ключ\",\n    \"algorithm\": \"Алгоритм\",\n    \"version\": \"Версія\",\n    \"amount\": \"Кількість\",\n    \"type\": \"Тип\",\n    \"length\": \"Довжина\",\n    \"options\": \"Опції\",\n    \"numbers\": \"Цифри\",\n    \"symbols\": \"Символи\",\n    \"lowercase\": \"Малі літери\",\n    \"uppercase\": \"Великі літери\",\n    \"placeholder\": {\n      \"text\": \"Введіть текст\",\n      \"value\": \"Введіть значення\",\n      \"secretKey\": \"Введіть секретний ключ\",\n      \"url\": \"Введіть URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/uk_UA/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"Налаштування\",\n    \"devtools\": \"Інструменти розробника\",\n    \"update\": \"Перевірити оновлення...\",\n    \"quit\": \"Вийти з massCode\",\n    \"about\": \"Про massCode\",\n    \"hide\": \"Приховати massCode\"\n  },\n  \"help\": {\n    \"label\": \"Допомога\",\n    \"website\": \"Веб-сайт\",\n    \"documentation\": \"Документація\",\n    \"viewInGitHub\": \"Переглянути на GitHub\",\n    \"changeLog\": \"Журнал змін\",\n    \"reportIssue\": \"Повідомити про проблему\",\n    \"giveStar\": \"Поставити зірку\",\n    \"extension\": {\n      \"vscode\": \"Розширення VS Code\",\n      \"raycast\": \"Розширення Raycast\",\n      \"alfred\": \"Розширення Alfred\"\n    },\n    \"donate\": {\n      \"openCollective\": \"Підтримати через Open Collective\",\n      \"payPal\": \"Підтримати через PayPal\",\n      \"gumroad\": \"Підтримати через Gumroad (Visa, Mastercard, тощо)\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"Інструменти розробника\",\n    \"links\": {\n      \"snippets\": \"Колекція сніпетів\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"Редагувати\",\n    \"find\": \"Знайти\"\n  },\n  \"view\": {\n    \"label\": \"Вигляд\",\n    \"sortBy\": {\n      \"label\": \"Сортувати сніпети за\",\n      \"dateModified\": \"Датою зміни\",\n      \"dateCreated\": \"Датою створення\",\n      \"name\": \"Назвою\"\n    },\n    \"compactMode\": \"Компактний режим\",\n    \"showSidebar\": \"Показати/приховати бічну панель\"\n  },\n  \"editor\": {\n    \"label\": \"Редактор\",\n    \"copy\": \"Копіювати сніпет в буфер обміну\",\n    \"format\": \"Форматувати\",\n    \"previewCode\": \"Попередній перегляд коду\",\n    \"previewScreenshot\": \"Попередній перегляд знімка екрану\",\n    \"previewJson\": \"Попередній перегляд JSON\",\n    \"fontSizeIncrease\": \"Збільшити розмір шрифту\",\n    \"fontSizeDecrease\": \"Зменшити розмір шрифту\",\n    \"fontSizeReset\": \"Скинути розмір шрифту\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"Режим презентації\",\n    \"preview\": \"Попередній перегляд\",\n    \"previewMarkdown\": \"Попередній перегляд Markdown\",\n    \"previewMindmap\": \"Попередній перегляд Mindmap\"\n  },\n  \"history\": {\n    \"label\": \"Історія\",\n    \"back\": \"Назад\",\n    \"forward\": \"Вперед\"\n  },\n  \"devtools\": {\n    \"label\": \"Інструменти розробника\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/uk_UA/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"Ви впевнені, що хочете видалити \\\"{{name}}\\\"?\",\n    \"deletePermanently\": \"Ви впевнені, що хочете назавжди видалити \\\"{{name}}\\\"?\",\n    \"deleteConfirmMultipleSnippets\": \"Ви впевнені, що хочете назавжди видалити {{count}} вибраних сніпетів?\",\n    \"emptyTrash\": \"Ви впевнені, що хочете назавжди видалити всі сніпети у Кошику?\",\n    \"clearDb\": \"Ви впевнені, що хочете очистити базу даних?\",\n    \"migrateDb\": [\n      \"Ви впевнені, що хочете виконати міграцію?\",\n      \"Під час міграції поточна бібліотека буде перезаписана.\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"Скопійовано в буфер обміну\",\n    \"migrate\": \"База даних успішно мігрована.\",\n    \"backup\": {\n      \"created\": \"Резервну копію успішно створено.\",\n      \"restored\": \"Резервну копію успішно відновлено.\",\n      \"deleted\": \"Резервну копію успішно видалено.\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"Ви не зможете скасувати цю дію.\",\n    \"allSnippetsMoveToTrash\": \"Всі сніпети в цій папці будуть переміщені до кошика.\",\n    \"deleteTag\": \"Це також призведе до видалення цього тегу з усіх сніпетів.\",\n    \"createDb\": \"Будь ласка, виберіть іншу папку\",\n    \"clearDb\": \"Це назавжди видалить всі Сніпети, Папки та Теги з бази даних.\",\n    \"htmlCssPreview\": \"Додайте HTML-фрагмент, щоб побачити результат. Додайте CSS для стилізації та JavaScript для інтерактивності.\",\n    \"codeBlockRenderer\": [\n      \"При використанні Codemirror мова для блоку коду повинна відповідати одному зі значень\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"Щоб використовувати сервіси синхронізації, такі як iCloud Drive, Google Drive або Dropbox, просто перемістіть сховище у відповідні синхронізовані папки\",\n    \"migrate\": {\n      \"fromV3\": \"Для міграції з massCode v3 виберіть папку, що містить JSON файл.\",\n      \"fromSnippetsLab\": \"Для міграції зі SnippetsLab виберіть JSON файл.\",\n      \"snippetsLabLimitations\": [\n        \"Деякі обмеження. Під час міграції зі SnippetsLab:\",\n        \"Всі папки будуть першого рівня, оскільки JSON файл (нижче v2.1) не представляє вкладені папки.\",\n        \"Сніпети з непідтримуваними мовами будуть встановлені за замовчуванням як Plain Text.\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"Привіт, це Антон 👋<br><br>\\nДякую за використання massCode. Якщо ви вважаєте цей додаток корисним, будь ласка, {{-tagStart}}підтримайте проект{{-tagEnd}}. Це надихне мене продовжувати розробку проекту.\",\n    \"unsponsored\": \"Без спонсора\"\n  },\n  \"update\": {\n    \"available\": \"Версія {{newVersion}} доступна для завантаження.\\nВаша версія {{oldVersion}}.\",\n    \"noAvailable\": \"На даний момент оновлень немає.\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/uk_UA/preferences.json",
    "content": "{\n  \"label\": \"Налаштування\",\n  \"storage\": {\n    \"label\": \"Сховище\",\n    \"migrate\": \"Міграція\",\n    \"count\": \"Кількість\",\n    \"clearDatabase\": \"Очистити базу даних\"\n  },\n  \"editor\": {\n    \"label\": \"Редактор\",\n    \"fontSize\": \"Розмір шрифту\",\n    \"fontFamily\": \"Сімейство шрифтів\",\n    \"wrap\": {\n      \"label\": \"Перенесення\",\n      \"wordWrap\": \"Перенесення слів\",\n      \"off\": \"Вимкнено\"\n    },\n    \"tabSize\": \"Розмір табуляції\",\n    \"showInvisibles\": \"Показати невидимі символи\",\n    \"highlightLine\": \"Підсвічування рядка\",\n    \"highlightGutter\": \"Підсвічування відступів\",\n    \"matchBrackets\": \"Парні дужки\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"Кома в кінці\",\n        \"none\": \"Немає\",\n        \"all\": \"Всюди\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"Крапка з комою\",\n      \"singleQuote\": \"Одинарні лапки\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"Зовнішній вигляд\",\n    \"theme\": {\n      \"label\": \"Тема\",\n      \"light\": \"Світла\",\n      \"dark\": \"Темна\"\n    }\n  },\n  \"language\": {\n    \"label\": \"Мова\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"Відображення блоків коду\"\n  },\n  \"api\": {\n    \"label\": \"Порт API\",\n    \"port\": {\n      \"label\": \"Порт API\",\n      \"description\": \"Номер порту для API-сервера (потребує перезапуску додатку). Допустимий діапазон: 1024-65535.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/uk_UA/ui.json",
    "content": "{\n  \"total\": \"Всього\",\n  \"line\": \"Рядок\",\n  \"column\": \"Стовпець\",\n  \"fragment\": \"Fragment\",\n  \"path\": \"Шлях\",\n  \"button\": {\n    \"back\": \"Назад\",\n    \"cancel\": \"Скасувати\",\n    \"clear\": \"Очистити\",\n    \"confirm\": \"Підтвердити\",\n    \"copy\": \"Копіювати\",\n    \"fit\": \"За розміром\",\n    \"generate\": \"Згенерувати\",\n    \"ok\": \"OK\",\n    \"revers\": \"Реверс\",\n    \"saveAs\": \"Зберегти як\",\n    \"sort\": \"Сортувати\",\n    \"update\": [\"Перейти на GitHub\", \"OK\"],\n    \"zoomIn\": \"Збільшити\",\n    \"zoomOut\": \"Зменшити\",\n    \"darkMode\": \"Темний режим\",\n    \"toggleDarkMode\": \"Перемкнути темний режим\",\n    \"background\": \"Фон\",\n    \"goToDownload\": \"Перейти до завантаження\",\n    \"refreshPreview\": \"Оновити попередній перегляд\",\n    \"laserPointer\": \"Лазерна указка\",\n    \"fullscreen\": \"Повний екран\",\n    \"prev\": \"Попередній\",\n    \"next\": \"Наступний\"\n  },\n  \"action\": {\n    \"close\": \"Закрити\",\n    \"defaultLanguage\": \"Мова за замовчуванням\",\n    \"duplicate\": \"Дублювати\",\n    \"rename\": \"Перейменувати\",\n    \"restore\": \"Відновити\",\n    \"setCustomIcon\": \"Встановити іконку\",\n    \"removeCustomIcon\": \"Видалити іконку\",\n    \"show\": \"Показати\",\n    \"hide\": \"Приховати\",\n    \"showSidebar\": \"Показати бічну панель\",\n    \"hideSidebar\": \"Сховати бічну панель\",\n    \"new\": {\n      \"storage\": \"Нове сховище\",\n      \"folder\": \"Нова папка\",\n      \"snippet\": \"Новий сніпет\",\n      \"fragment\": \"Новий фрагмент\"\n    },\n    \"add\": {\n      \"description\": \"Додати опис\",\n      \"tag\": \"Додати тег\",\n      \"toFavorites\": \"Додати до обраного\"\n    },\n    \"open\": {\n      \"storage\": \"Відкрити сховище\"\n    },\n    \"move\": {\n      \"storage\": \"Перемістити сховище\",\n      \"toTrash\": \"Перемістити до кошика\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"Видалити з обраного\"\n    },\n    \"reload\": {\n      \"storage\": \"Перезавантажити сховище\"\n    },\n    \"delete\": {\n      \"common\": \"Видалити\",\n      \"now\": \"Видалити зараз\",\n      \"allData\": \"Видалити всі дані\",\n      \"trash\": \"Очистити кошик\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"Зі SnippetsLab\",\n      \"fromV3\": \"З massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"Експортувати в HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"Копіювати посилання на сніпет\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"Вхідні\",\n    \"favorites\": \"Обране\",\n    \"allSnippets\": \"Всі сніпети\",\n    \"trash\": \"Кошик\",\n    \"folders\": \"Папки\",\n    \"library\": \"Бібліотека\",\n    \"tags\": \"Теги\"\n  },\n  \"folder\": {\n    \"untitled\": \"Папка без назви\",\n    \"plural\": \"Папки\",\n    \"collapseAll\": \"Згорнути все\",\n    \"expandAll\": \"Розгорнути все\"\n  },\n  \"snippet\": {\n    \"untitled\": \"Сніпет без назви\",\n    \"plural\": \"Сніпети\",\n    \"emptyName\": \"Введіть назву сніпета\",\n    \"selectedMultiple\": \"Вибрано {{count}} сніпетів\",\n    \"noSelected\": \"Сніпети не вибрані\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"Додайте теги до сніпетів, щоб побачити їх тут\",\n    \"emptyFoldersList\": \"Немає папок\",\n    \"emptySnippetsList\": \"Немає сніппетів\",\n    \"search\": \"Пошук\",\n    \"addTag\": \"Додати тег\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_CN/devtools.json",
    "content": "{\n  \"label\": \"开发者工具\",\n  \"generators\": {\n    \"label\": \"生成器\",\n    \"lorem\": {\n      \"label\": \"Lorem Ipsum 生成器\",\n      \"description\": \"生成占位符文本\",\n      \"selectType\": \"选择类型\",\n      \"maxCount\": \"最大 {{count}}\",\n      \"types\": {\n        \"words\": \"单词\",\n        \"sentences\": \"句子\",\n        \"paragraphs\": \"段落\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON 生成器\",\n      \"description\": \"使用各种字段类型生成随机 JSON 数据\",\n      \"fields\": \"字段\",\n      \"fieldName\": \"字段名称\",\n      \"selectType\": \"选择类型\",\n      \"addField\": \"添加字段\",\n      \"rowCount\": \"行数\",\n      \"maxRows\": \"最大 1000\",\n      \"categories\": {\n        \"general\": \"通用\",\n        \"person\": \"人员\",\n        \"internet\": \"互联网\",\n        \"location\": \"位置\",\n        \"finance\": \"财务\",\n        \"commerce\": \"商业\",\n        \"company\": \"公司\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"日期\",\n        \"number\": \"数字\",\n        \"phone\": \"电话\",\n        \"image\": \"图片\"\n      },\n      \"types\": {\n        \"rowNumber\": \"行号\",\n        \"firstName\": \"名\",\n        \"lastName\": \"姓\",\n        \"fullName\": \"全名\",\n        \"gender\": \"性别\",\n        \"jobTitle\": \"职位\",\n        \"email\": \"电子邮件地址\",\n        \"username\": \"用户名\",\n        \"password\": \"密码\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP 地址 v4\",\n        \"ipv6\": \"IP 地址 v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"城市\",\n        \"country\": \"国家\",\n        \"streetAddress\": \"街道地址\",\n        \"zipCode\": \"邮政编码\",\n        \"latitude\": \"纬度\",\n        \"longitude\": \"经度\",\n        \"amount\": \"金额\",\n        \"currencyCode\": \"货币代码\",\n        \"creditCardNumber\": \"信用卡号\",\n        \"productName\": \"产品名称\",\n        \"price\": \"价格\",\n        \"department\": \"部门\",\n        \"companyName\": \"公司名称\",\n        \"catchPhrase\": \"标语\",\n        \"word\": \"单词\",\n        \"sentence\": \"句子\",\n        \"paragraph\": \"段落\",\n        \"past\": \"过去日期\",\n        \"future\": \"未来日期\",\n        \"recent\": \"最近日期\",\n        \"birthdate\": \"出生日期\",\n        \"int\": \"整数\",\n        \"float\": \"浮点数\",\n        \"boolean\": \"布尔值\",\n        \"phoneNumber\": \"电话号码\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"头像 URL\",\n        \"imageUrl\": \"图片 URL\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"转换器\",\n    \"caseConverter\": {\n      \"label\": \"大小写转换器\",\n      \"description\": \"将文本转换为不同的大小写格式\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"文本转Unicode\",\n      \"description\": \"将文本转换为Unicode，反之亦然\",\n      \"modes\": {\n        \"textToUnicode\": \"文本 → Unicode\",\n        \"unicodeToText\": \"Unicode → 文本\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"文本转ASCII Binary\",\n      \"description\": \"将文本转换为ASCII binary，反之亦然\",\n      \"modes\": {\n        \"textToAscii\": \"文本 → ASCII\",\n        \"asciiToText\": \"ASCII → 文本\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"将文本编码或解码为Base64\",\n      \"modes\": {\n        \"textToBase64\": \"文本 → Base64\",\n        \"base64ToText\": \"Base64 → 文本\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON转YAML\",\n      \"description\": \"将JSON转换为YAML，反之亦然\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON转TOML\",\n      \"description\": \"将JSON转换为TOML，反之亦然\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON转XML\",\n      \"description\": \"将JSON转换为XML，反之亦然\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"颜色转换器\",\n      \"description\": \"在不同格式之间转换颜色\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"加密 / 安全\",\n    \"hash\": {\n      \"label\": \"哈希生成器\",\n      \"description\": \"从文本生成哈希值\"\n    },\n    \"hmac\": {\n      \"label\": \"HMAC生成器\",\n      \"description\": \"生成由密钥和消息组成的基于哈希的消息认证码（HMAC）\"\n    },\n    \"password\": {\n      \"label\": \"密码生成器\",\n      \"description\": \"生成安全密码\"\n    },\n    \"uuid\": {\n      \"label\": \"UUID生成器\",\n      \"description\": \"生成通用唯一标识符（UUID）\"\n    }\n  },\n  \"web\": {\n    \"label\": \"网络\",\n    \"urlParser\": {\n      \"label\": \"URL解析器\",\n      \"description\": \"将URL解析为其组件\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"编码或解码URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"将文本转换为URL友好的slug\"\n    }\n  },\n  \"form\": {\n    \"input\": \"输入\",\n    \"output\": \"输出\",\n    \"inputString\": \"输入字符串\",\n    \"outputString\": \"输出字符串\",\n    \"inputUrl\": \"输入URL\",\n    \"outputUrl\": \"输出URL\",\n    \"parsedUrl\": \"解析的URL\",\n    \"splitQueryString\": \"分割Query String\",\n    \"key\": \"键\",\n    \"value\": \"值\",\n    \"component\": \"组件\",\n    \"result\": \"结果\",\n    \"secretKey\": \"密钥\",\n    \"algorithm\": \"算法\",\n    \"version\": \"版本\",\n    \"amount\": \"数量\",\n    \"type\": \"类型\",\n    \"length\": \"长度\",\n    \"options\": \"选项\",\n    \"numbers\": \"数字\",\n    \"symbols\": \"符号\",\n    \"lowercase\": \"小写\",\n    \"uppercase\": \"大写\",\n    \"placeholder\": {\n      \"text\": \"输入文本\",\n      \"value\": \"输入值\",\n      \"secretKey\": \"输入密钥\",\n      \"url\": \"输入URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_CN/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"首选项\",\n    \"devtools\": \"开发者工具\",\n    \"update\": \"检查更新...\",\n    \"quit\": \"退出 massCode\",\n    \"about\": \"关于 massCode\",\n    \"hide\": \"隐藏 massCode\"\n  },\n  \"help\": {\n    \"label\": \"帮助\",\n    \"website\": \"网站\",\n    \"documentation\": \"文档\",\n    \"viewInGitHub\": \"在 GitHub 中查看\",\n    \"changeLog\": \"更新日志\",\n    \"reportIssue\": \"报告问题\",\n    \"giveStar\": \"点个赞\",\n    \"extension\": {\n      \"vscode\": \"VS Code 扩展\",\n      \"raycast\": \"Raycast 扩展\",\n      \"alfred\": \"Alfred 扩展\"\n    },\n    \"donate\": {\n      \"openCollective\": \"在 Open Collective 上捐赠\",\n      \"payPal\": \"通过 PayPal 捐赠\",\n      \"gumroad\": \"通过 Gumroad 捐赠（Visa、Mastercard 等）\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"切换开发者工具\",\n    \"links\": {\n      \"snippets\": \"代码片段集合\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"编辑\",\n    \"find\": \"查找\"\n  },\n  \"view\": {\n    \"label\": \"视图\",\n    \"sortBy\": {\n      \"label\": \"代码片段排序方式\",\n      \"dateModified\": \"修改日期\",\n      \"dateCreated\": \"创建日期\",\n      \"name\": \"名称\"\n    },\n    \"compactMode\": \"紧凑模式\",\n    \"showSidebar\": \"显示/隐藏侧边栏\"\n  },\n  \"editor\": {\n    \"label\": \"编辑器\",\n    \"copy\": \"复制代码片段到剪贴板\",\n    \"format\": \"格式化\",\n    \"previewCode\": \"预览代码\",\n    \"previewScreenshot\": \"预览截图\",\n    \"previewJson\": \"预览 JSON\",\n    \"fontSizeIncrease\": \"增大字体\",\n    \"fontSizeDecrease\": \"减小字体\",\n    \"fontSizeReset\": \"重置字体大小\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"演示模式\",\n    \"preview\": \"预览\",\n    \"previewMarkdown\": \"预览 Markdown\",\n    \"previewMindmap\": \"预览思维导图\"\n  },\n  \"history\": {\n    \"label\": \"历史\",\n    \"back\": \"后退\",\n    \"forward\": \"前进\"\n  },\n  \"devtools\": {\n    \"label\": \"开发者工具\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_CN/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"您确定要删除 \\\"{{name}}\\\" 吗？\",\n    \"deletePermanently\": \"您确定要永久删除 \\\"{{name}}\\\" 吗？\",\n    \"deleteConfirmMultipleSnippets\": \"您确定要永久删除已选择的 {{count}} 个代码片段吗？\",\n    \"emptyTrash\": \"您确定要永久删除回收站中的所有代码片段吗？\",\n    \"clearDb\": \"您确定要清空数据库吗？\",\n    \"migrateDb\": [\n      \"您确定要进行迁移吗？\",\n      \"迁移期间，当前库将被覆盖。\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"已复制到剪贴板\",\n    \"migrate\": \"数据库迁移成功。\",\n    \"backup\": {\n      \"created\": \"备份创建成功。\",\n      \"restored\": \"备份恢复成功。\",\n      \"deleted\": \"备份删除成功。\"\n    }\n  },\n  \"warning\": {\n    \"noUndo\": \"此操作无法撤消。\",\n    \"allSnippetsMoveToTrash\": \"此文件夹中的所有代码片段将被移至回收站。\",\n    \"deleteTag\": \"这也将导致所有带有该标签的代码片段移除此标签。\",\n    \"createDb\": \"请选择其他文件夹\",\n    \"clearDb\": \"这将永久删除数据库中的所有代码片段、文件夹和标签。\",\n    \"htmlCssPreview\": \"添加HTML片段以查看结果。添加CSS进行样式设计，添加JavaScript实现交互功能。\",\n    \"codeBlockRenderer\": [\n      \"使用 Codemirror 时，代码块设置的语言必须对应\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"要使用 iCloud Drive、Google Drive 或 Dropbox 等同步服务，只需将存储移动到相应的同步文件夹即可\",\n    \"migrate\": {\n      \"fromV3\": \"要从 massCode v3 迁移，请选择包含 JSON 文件的文件夹。\",\n      \"fromSnippetsLab\": \"要从 SnippetsLab 迁移，请选择 JSON 文件。\",\n      \"snippetsLabLimitations\": [\n        \"一些限制。从 SnippetsLab 迁移时：\",\n        \"由于 JSON 文件（2.1 版以下）不支持嵌套文件夹，所有文件夹将位于第一层。\",\n        \"使用不支持语言的代码片段将被设置为默认的纯文本。\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"你好，我是 Anton 👋<br><br>\\n感谢使用 massCode。如果您觉得这个应用有用，请{{-tagStart}}捐赠{{-tagEnd}}。这将激励我继续开发这个项目。\",\n    \"unsponsored\": \"未赞助\"\n  },\n  \"update\": {\n    \"available\": \"版本 {{newVersion}} 现已可供下载。\\n您的版本是 {{oldVersion}}。\",\n    \"noAvailable\": \"目前没有可用的更新。\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_CN/preferences.json",
    "content": "{\n  \"label\": \"首选项\",\n  \"storage\": {\n    \"label\": \"存储\",\n    \"migrate\": \"迁移\",\n    \"count\": \"数量\",\n    \"clearDatabase\": \"清空数据库\"\n  },\n  \"editor\": {\n    \"label\": \"编辑器\",\n    \"fontSize\": \"字体大小\",\n    \"fontFamily\": \"字体\",\n    \"wrap\": {\n      \"label\": \"换行\",\n      \"wordWrap\": \"自动换行\",\n      \"off\": \"关闭\"\n    },\n    \"tabSize\": \"缩进大小\",\n    \"showInvisibles\": \"显示不可见字符\",\n    \"highlightLine\": \"高亮当前行\",\n    \"highlightGutter\": \"高亮行号\",\n    \"matchBrackets\": \"匹配括号\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"尾随逗号\",\n        \"none\": \"无\",\n        \"all\": \"全部\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"分号\",\n      \"singleQuote\": \"单引号\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"外观\",\n    \"theme\": {\n      \"label\": \"主题\",\n      \"light\": \"浅色\",\n      \"dark\": \"深色\"\n    }\n  },\n  \"language\": {\n    \"label\": \"语言\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"代码块渲染器\"\n  },\n  \"api\": {\n    \"label\": \"API 端口\",\n    \"port\": {\n      \"label\": \"API 端口\",\n      \"description\": \"API 服务器的端口号（需要重启应用程序才能生效）。有效范围：1024-65535。\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_CN/ui.json",
    "content": "{\n  \"total\": \"总计\",\n  \"line\": \"行\",\n  \"column\": \"列\",\n  \"fragment\": \"片段\",\n  \"path\": \"路径\",\n  \"button\": {\n    \"back\": \"返回\",\n    \"cancel\": \"取消\",\n    \"clear\": \"清除\",\n    \"confirm\": \"确认\",\n    \"copy\": \"复制\",\n    \"fit\": \"适应\",\n    \"generate\": \"生成\",\n    \"ok\": \"确定\",\n    \"revers\": \"反转\",\n    \"saveAs\": \"另存为\",\n    \"sort\": \"排序\",\n    \"update\": [\"前往 GitHub\", \"确定\"],\n    \"zoomIn\": \"放大\",\n    \"zoomOut\": \"缩小\",\n    \"darkMode\": \"深色模式\",\n    \"toggleDarkMode\": \"切换深色模式\",\n    \"background\": \"背景\",\n    \"goToDownload\": \"前往下载\",\n    \"refreshPreview\": \"刷新预览\",\n    \"laserPointer\": \"激光指针\",\n    \"fullscreen\": \"全屏\",\n    \"prev\": \"上一个\",\n    \"next\": \"下一个\"\n  },\n  \"action\": {\n    \"close\": \"关闭\",\n    \"defaultLanguage\": \"默认语言\",\n    \"duplicate\": \"复制\",\n    \"rename\": \"重命名\",\n    \"restore\": \"恢复\",\n    \"setCustomIcon\": \"设置图标\",\n    \"removeCustomIcon\": \"删除图标\",\n    \"show\": \"显示\",\n    \"hide\": \"隐藏\",\n    \"showSidebar\": \"显示侧边栏\",\n    \"hideSidebar\": \"隐藏侧边栏\",\n    \"new\": {\n      \"storage\": \"新建存储\",\n      \"folder\": \"新建文件夹\",\n      \"snippet\": \"新建代码片段\",\n      \"fragment\": \"新建片段\"\n    },\n    \"add\": {\n      \"description\": \"添加描述\",\n      \"tag\": \"添加标签\",\n      \"toFavorites\": \"添加到收藏\"\n    },\n    \"open\": {\n      \"storage\": \"打开存储\"\n    },\n    \"move\": {\n      \"storage\": \"移动存储\",\n      \"toTrash\": \"移到回收站\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"从收藏中移除\"\n    },\n    \"reload\": {\n      \"storage\": \"重新加载存储\"\n    },\n    \"delete\": {\n      \"common\": \"删除\",\n      \"now\": \"立即删除\",\n      \"allData\": \"删除所有数据\",\n      \"trash\": \"清空回收站\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"从 SnippetsLab 导入\",\n      \"fromV3\": \"从 massCode v3 导入\"\n    },\n    \"export\": {\n      \"toHtml\": \"导出为 HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"复制代码片段链接\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"收件箱\",\n    \"favorites\": \"收藏\",\n    \"allSnippets\": \"所有代码片段\",\n    \"trash\": \"回收站\",\n    \"folders\": \"文件夹\",\n    \"library\": \"库\",\n    \"tags\": \"标签\"\n  },\n  \"folder\": {\n    \"untitled\": \"未命名文件夹\",\n    \"plural\": \"文件夹\",\n    \"collapseAll\": \"全部折叠\",\n    \"expandAll\": \"全部展开\"\n  },\n  \"snippet\": {\n    \"untitled\": \"未命名代码片段\",\n    \"plural\": \"代码片段\",\n    \"emptyName\": \"输入代码片段名称\",\n    \"selectedMultiple\": \"已选择 {{count}} 个代码片段\",\n    \"noSelected\": \"未选择代码片段\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"在代码片段中添加标签以在此处查看\",\n    \"emptyFoldersList\": \"没有文件夹\",\n    \"emptySnippetsList\": \"没有代码片段\",\n    \"search\": \"搜索\",\n    \"addTag\": \"添加标签\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_HK/devtools.json",
    "content": "{\n  \"label\": \"開發者工具\",\n  \"generators\": {\n    \"label\": \"生成器\",\n    \"lorem\": {\n      \"label\": \"Lorem Ipsum 生成器\",\n      \"description\": \"生成占位符文字\",\n      \"selectType\": \"選擇類型\",\n      \"maxCount\": \"最大 {{count}}\",\n      \"types\": {\n        \"words\": \"單詞\",\n        \"sentences\": \"句子\",\n        \"paragraphs\": \"段落\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON 生成器\",\n      \"description\": \"使用各種欄位類型產生隨機 JSON 資料\",\n      \"fields\": \"欄位\",\n      \"fieldName\": \"欄位名稱\",\n      \"selectType\": \"選擇類型\",\n      \"addField\": \"新增欄位\",\n      \"rowCount\": \"列數\",\n      \"maxRows\": \"最大 1000\",\n      \"categories\": {\n        \"general\": \"一般\",\n        \"person\": \"人員\",\n        \"internet\": \"網際網路\",\n        \"location\": \"位置\",\n        \"finance\": \"財務\",\n        \"commerce\": \"商業\",\n        \"company\": \"公司\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"日期\",\n        \"number\": \"數字\",\n        \"phone\": \"電話\",\n        \"image\": \"圖片\"\n      },\n      \"types\": {\n        \"rowNumber\": \"列號\",\n        \"firstName\": \"名\",\n        \"lastName\": \"姓\",\n        \"fullName\": \"全名\",\n        \"gender\": \"性別\",\n        \"jobTitle\": \"職稱\",\n        \"email\": \"電子郵件地址\",\n        \"username\": \"使用者名稱\",\n        \"password\": \"密碼\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP 地址 v4\",\n        \"ipv6\": \"IP 地址 v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"城市\",\n        \"country\": \"國家\",\n        \"streetAddress\": \"街道地址\",\n        \"zipCode\": \"郵遞區號\",\n        \"latitude\": \"緯度\",\n        \"longitude\": \"經度\",\n        \"amount\": \"金額\",\n        \"currencyCode\": \"貨幣代碼\",\n        \"creditCardNumber\": \"信用卡號\",\n        \"productName\": \"產品名稱\",\n        \"price\": \"價格\",\n        \"department\": \"部門\",\n        \"companyName\": \"公司名稱\",\n        \"catchPhrase\": \"標語\",\n        \"word\": \"單字\",\n        \"sentence\": \"句子\",\n        \"paragraph\": \"段落\",\n        \"past\": \"過去日期\",\n        \"future\": \"未來日期\",\n        \"recent\": \"最近日期\",\n        \"birthdate\": \"出生日期\",\n        \"int\": \"整數\",\n        \"float\": \"浮點數\",\n        \"boolean\": \"布林值\",\n        \"phoneNumber\": \"電話號碼\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"頭像 URL\",\n        \"imageUrl\": \"圖片 URL\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"轉換器\",\n    \"caseConverter\": {\n      \"label\": \"大小寫轉換器\",\n      \"description\": \"將文字轉換為不同的大小寫格式\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"文字轉Unicode\",\n      \"description\": \"將文字轉換為Unicode，反之亦然\",\n      \"modes\": {\n        \"textToUnicode\": \"文字 → Unicode\",\n        \"unicodeToText\": \"Unicode → 文字\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"文字轉ASCII Binary\",\n      \"description\": \"將文字轉換為ASCII binary，反之亦然\",\n      \"modes\": {\n        \"textToAscii\": \"文字 → ASCII\",\n        \"asciiToText\": \"ASCII → 文字\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"將文字編碼或解碼為Base64\",\n      \"modes\": {\n        \"textToBase64\": \"文字 → Base64\",\n        \"base64ToText\": \"Base64 → 文字\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON轉YAML\",\n      \"description\": \"將JSON轉換為YAML，反之亦然\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON轉TOML\",\n      \"description\": \"將JSON轉換為TOML，反之亦然\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON轉XML\",\n      \"description\": \"將JSON轉換為XML，反之亦然\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"顏色轉換器\",\n      \"description\": \"在不同格式之間轉換顏色\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"加密 / 安全\",\n    \"hash\": {\n      \"label\": \"雜湊產生器\",\n      \"description\": \"從文字產生雜湊值\"\n    },\n    \"hmac\": {\n      \"label\": \"HMAC產生器\",\n      \"description\": \"產生由金鑰和訊息組成的基於雜湊的訊息認證碼（HMAC）\"\n    },\n    \"password\": {\n      \"label\": \"密碼產生器\",\n      \"description\": \"產生安全密碼\"\n    },\n    \"uuid\": {\n      \"label\": \"UUID產生器\",\n      \"description\": \"產生通用唯一識別碼（UUID）\"\n    }\n  },\n  \"web\": {\n    \"label\": \"網絡\",\n    \"urlParser\": {\n      \"label\": \"URL解析器\",\n      \"description\": \"將URL解析為其組件\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"編碼或解碼URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"將文字轉換為URL友好的slug\"\n    }\n  },\n  \"form\": {\n    \"input\": \"輸入\",\n    \"output\": \"輸出\",\n    \"inputString\": \"輸入字串\",\n    \"outputString\": \"輸出字串\",\n    \"inputUrl\": \"輸入URL\",\n    \"outputUrl\": \"輸出URL\",\n    \"parsedUrl\": \"解析的URL\",\n    \"splitQueryString\": \"分割Query String\",\n    \"key\": \"金鑰\",\n    \"value\": \"值\",\n    \"component\": \"組件\",\n    \"result\": \"結果\",\n    \"secretKey\": \"秘密金鑰\",\n    \"algorithm\": \"演算法\",\n    \"version\": \"版本\",\n    \"amount\": \"數量\",\n    \"type\": \"類型\",\n    \"length\": \"長度\",\n    \"options\": \"選項\",\n    \"numbers\": \"數字\",\n    \"symbols\": \"符號\",\n    \"lowercase\": \"小寫\",\n    \"uppercase\": \"大寫\",\n    \"placeholder\": {\n      \"text\": \"輸入文字\",\n      \"value\": \"輸入值\",\n      \"secretKey\": \"輸入秘密金鑰\",\n      \"url\": \"輸入URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_HK/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"偏好設置\",\n    \"devtools\": \"開發者工具\",\n    \"update\": \"檢查更新...\",\n    \"quit\": \"退出 massCode\",\n    \"about\": \"關於 massCode\",\n    \"hide\": \"隱藏 massCode\"\n  },\n  \"help\": {\n    \"label\": \"幫助\",\n    \"website\": \"網站\",\n    \"documentation\": \"文檔\",\n    \"viewInGitHub\": \"在 GitHub 中查看\",\n    \"changeLog\": \"更新日誌\",\n    \"reportIssue\": \"報告問題\",\n    \"giveStar\": \"點個讚\",\n    \"extension\": {\n      \"vscode\": \"VS Code 擴展\",\n      \"raycast\": \"Raycast 擴展\",\n      \"alfred\": \"Alfred 擴展\"\n    },\n    \"donate\": {\n      \"openCollective\": \"在 Open Collective 上捐贈\",\n      \"payPal\": \"通過 PayPal 捐贈\",\n      \"gumroad\": \"通過 Gumroad 捐贈（Visa、Mastercard 等）\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"切換開發者工具\",\n    \"links\": {\n      \"snippets\": \"程式碼片段集合\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"編輯\",\n    \"find\": \"尋找\"\n  },\n  \"view\": {\n    \"label\": \"視圖\",\n    \"sortBy\": {\n      \"label\": \"程式碼片段排序方式\",\n      \"dateModified\": \"修改日期\",\n      \"dateCreated\": \"創建日期\",\n      \"name\": \"名稱\"\n    },\n    \"compactMode\": \"緊湊模式\",\n    \"showSidebar\": \"顯示/隱藏側邊欄\"\n  },\n  \"editor\": {\n    \"label\": \"編輯器\",\n    \"copy\": \"複製程式碼片段到剪貼板\",\n    \"format\": \"格式化\",\n    \"previewCode\": \"預覽程式碼\",\n    \"previewScreenshot\": \"預覽截圖\",\n    \"previewJson\": \"預覽 JSON\",\n    \"fontSizeIncrease\": \"增大字體\",\n    \"fontSizeDecrease\": \"減小字體\",\n    \"fontSizeReset\": \"重置字體大小\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"演示模式\",\n    \"preview\": \"預覽\",\n    \"previewMarkdown\": \"預覽 Markdown\",\n    \"previewMindmap\": \"預覽思維導圖\"\n  },\n  \"history\": {\n    \"label\": \"歷史\",\n    \"back\": \"後退\",\n    \"forward\": \"前進\"\n  },\n  \"devtools\": {\n    \"label\": \"開發者工具\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_HK/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"您確定要刪除 \\\"{{name}}\\\" 嗎？\",\n    \"deletePermanently\": \"您確定要永久刪除 \\\"{{name}}\\\" 嗎？\",\n    \"deleteConfirmMultipleSnippets\": \"您確定要永久刪除已選擇的 {{count}} 個程式碼片段嗎？\",\n    \"emptyTrash\": \"您確定要永久刪除回收桶中的所有程式碼片段嗎？\",\n    \"clearDb\": \"您確定要清空資料庫嗎？\",\n    \"migrateDb\": [\n      \"您確定要進行遷移嗎？\",\n      \"遷移期間，當前庫將被覆蓋。\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"已複製\",\n    \"backup\": {\n      \"created\": \"備份已創建\",\n      \"restored\": \"備份已恢復\"\n    },\n    \"migrate\": \"資料庫遷移成功。\"\n  },\n  \"warning\": {\n    \"noUndo\": \"此操作無法撤消。\",\n    \"allSnippetsMoveToTrash\": \"此資料夾中的所有程式碼片段將被移至回收桶。\",\n    \"deleteTag\": \"這也將導致所有帶有該標籤的程式碼片段移除此標籤。\",\n    \"createDb\": \"請選擇其他資料夾\",\n    \"clearDb\": \"這將永久刪除資料庫中的所有程式碼片段、資料夾和標籤。\",\n    \"htmlCssPreview\": \"添加HTML片段以查看結果。添加CSS進行樣式設計，添加JavaScript實現互動功能。\",\n    \"codeBlockRenderer\": [\n      \"使用 Codemirror 時，程式碼區塊設置的語言必須對應\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"要使用 iCloud Drive、Google Drive 或 Dropbox 等同步服務，只需將存儲移動到相應的同步資料夾即可\",\n    \"migrate\": {\n      \"fromV3\": \"要從 massCode v3 遷移，請選擇包含 JSON 檔案的資料夾。\",\n      \"fromSnippetsLab\": \"要從 SnippetsLab 遷移，請選擇 JSON 檔案。\",\n      \"snippetsLabLimitations\": [\n        \"一些限制。從 SnippetsLab 遷移時：\",\n        \"由於 JSON 檔案（2.1 版以下）不支持嵌套資料夾，所有資料夾將位於第一層。\",\n        \"使用不支持語言的程式碼片段將被設置為預設的純文字。\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"你好，我是 Anton 👋<br><br>\\n感謝使用 massCode。如果您覺得這個應用有用，請{{-tagStart}}捐贈{{-tagEnd}}。這將激勵我繼續開發這個項目。\",\n    \"unsponsored\": \"未贊助\"\n  },\n  \"update\": {\n    \"available\": \"版本 {{newVersion}} 現已可供下載。\\n您的版本是 {{oldVersion}}。\",\n    \"noAvailable\": \"目前沒有可用的更新。\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_HK/preferences.json",
    "content": "{\n  \"label\": \"偏好設置\",\n  \"storage\": {\n    \"label\": \"存儲\",\n    \"migrate\": \"遷移\",\n    \"count\": \"數量\",\n    \"clearDatabase\": \"清空數據庫\"\n  },\n  \"editor\": {\n    \"label\": \"編輯器\",\n    \"fontSize\": \"字體大小\",\n    \"fontFamily\": \"字體\",\n    \"wrap\": {\n      \"label\": \"換行\",\n      \"wordWrap\": \"自動換行\",\n      \"off\": \"關閉\"\n    },\n    \"tabSize\": \"縮進大小\",\n    \"showInvisibles\": \"顯示不可見字符\",\n    \"highlightLine\": \"高亮當前行\",\n    \"highlightGutter\": \"高亮行號\",\n    \"matchBrackets\": \"匹配括號\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"尾隨逗號\",\n        \"none\": \"無\",\n        \"all\": \"全部\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"分號\",\n      \"singleQuote\": \"單引號\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"外觀\",\n    \"theme\": {\n      \"label\": \"主題\",\n      \"light\": \"淺色\",\n      \"dark\": \"深色\"\n    }\n  },\n  \"language\": {\n    \"label\": \"語言\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"程式碼區塊渲染器\"\n  },\n  \"api\": {\n    \"label\": \"API 端口\",\n    \"port\": {\n      \"label\": \"API 端口\",\n      \"description\": \"API 伺服器的端口號（需要重新啟動應用程式）。有效範圍：1024-65535。\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_HK/ui.json",
    "content": "{\n  \"total\": \"總計\",\n  \"line\": \"行\",\n  \"column\": \"列\",\n  \"fragment\": \"片段\",\n  \"path\": \"路徑\",\n  \"button\": {\n    \"back\": \"返回\",\n    \"cancel\": \"取消\",\n    \"clear\": \"清除\",\n    \"confirm\": \"確認\",\n    \"copy\": \"複製\",\n    \"fit\": \"適應\",\n    \"generate\": \"生成\",\n    \"ok\": \"確定\",\n    \"revers\": \"反轉\",\n    \"saveAs\": \"另存為\",\n    \"sort\": \"排序\",\n    \"update\": [\"前往 GitHub\", \"確定\"],\n    \"zoomIn\": \"放大\",\n    \"zoomOut\": \"縮小\",\n    \"darkMode\": \"深色模式\",\n    \"toggleDarkMode\": \"切換深色模式\",\n    \"background\": \"背景\",\n    \"goToDownload\": \"前往下載\",\n    \"refreshPreview\": \"刷新預覽\",\n    \"laserPointer\": \"激光指針\",\n    \"fullscreen\": \"全屏\",\n    \"prev\": \"上一個\",\n    \"next\": \"下一個\"\n  },\n  \"action\": {\n    \"close\": \"關閉\",\n    \"defaultLanguage\": \"預設語言\",\n    \"duplicate\": \"複製\",\n    \"rename\": \"重命名\",\n    \"restore\": \"恢復\",\n    \"setCustomIcon\": \"設置圖標\",\n    \"removeCustomIcon\": \"刪除圖標\",\n    \"show\": \"顯示\",\n    \"hide\": \"隱藏\",\n    \"showSidebar\": \"顯示側邊欄\",\n    \"hideSidebar\": \"隱藏側邊欄\",\n    \"new\": {\n      \"storage\": \"新建存儲\",\n      \"folder\": \"新建資料夾\",\n      \"snippet\": \"新建程式碼片段\",\n      \"fragment\": \"新建片段\"\n    },\n    \"add\": {\n      \"description\": \"添加描述\",\n      \"tag\": \"添加標籤\",\n      \"toFavorites\": \"添加到收藏\"\n    },\n    \"open\": {\n      \"storage\": \"打開存儲\"\n    },\n    \"move\": {\n      \"storage\": \"移動存儲\",\n      \"toTrash\": \"移到回收桶\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"從收藏中移除\"\n    },\n    \"reload\": {\n      \"storage\": \"重新加載存儲\"\n    },\n    \"delete\": {\n      \"common\": \"刪除\",\n      \"now\": \"立即刪除\",\n      \"allData\": \"刪除所有數據\",\n      \"trash\": \"清空回收桶\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"從 SnippetsLab 導入\",\n      \"fromV3\": \"從 massCode v3 導入\"\n    },\n    \"export\": {\n      \"toHtml\": \"導出為 HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"複製程式碼片段鏈接\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"收件箱\",\n    \"favorites\": \"收藏\",\n    \"allSnippets\": \"所有程式碼片段\",\n    \"trash\": \"回收桶\",\n    \"folders\": \"資料夾\",\n    \"library\": \"庫\",\n    \"tags\": \"標籤\"\n  },\n  \"folder\": {\n    \"untitled\": \"未命名資料夾\",\n    \"plural\": \"資料夾\",\n    \"collapseAll\": \"全部折疊\",\n    \"expandAll\": \"全部展開\"\n  },\n  \"snippet\": {\n    \"untitled\": \"未命名程式碼片段\",\n    \"plural\": \"程式碼片段\",\n    \"emptyName\": \"輸入程式碼片段名稱\",\n    \"selectedMultiple\": \"已選擇 {{count}} 個程式碼片段\",\n    \"noSelected\": \"未選擇程式碼片段\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"在程式碼片段中添加標籤以在此處查看\",\n    \"emptyFoldersList\": \"沒有資料夾\",\n    \"emptySnippetsList\": \"沒有程式碼片段\",\n    \"search\": \"搜索\",\n    \"addTag\": \"添加標籤\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_TW/devtools.json",
    "content": "{\n  \"label\": \"開發者工具\",\n  \"generators\": {\n    \"label\": \"生成器\",\n    \"lorem\": {\n      \"label\": \"Lorem Ipsum 生成器\",\n      \"description\": \"生成占位符文字\",\n      \"selectType\": \"選擇類型\",\n      \"maxCount\": \"最大 {{count}}\",\n      \"types\": {\n        \"words\": \"單詞\",\n        \"sentences\": \"句子\",\n        \"paragraphs\": \"段落\"\n      }\n    },\n    \"json\": {\n      \"label\": \"JSON 生成器\",\n      \"description\": \"使用各種欄位類型產生隨機 JSON 資料\",\n      \"fields\": \"欄位\",\n      \"fieldName\": \"欄位名稱\",\n      \"selectType\": \"選擇類型\",\n      \"addField\": \"新增欄位\",\n      \"rowCount\": \"列數\",\n      \"maxRows\": \"最大 1000\",\n      \"categories\": {\n        \"general\": \"一般\",\n        \"person\": \"人員\",\n        \"internet\": \"網際網路\",\n        \"location\": \"位置\",\n        \"finance\": \"財務\",\n        \"commerce\": \"商業\",\n        \"company\": \"公司\",\n        \"lorem\": \"Lorem\",\n        \"date\": \"日期\",\n        \"number\": \"數字\",\n        \"phone\": \"電話\",\n        \"image\": \"圖片\"\n      },\n      \"types\": {\n        \"rowNumber\": \"列號\",\n        \"firstName\": \"名\",\n        \"lastName\": \"姓\",\n        \"fullName\": \"全名\",\n        \"gender\": \"性別\",\n        \"jobTitle\": \"職稱\",\n        \"email\": \"電子郵件地址\",\n        \"username\": \"使用者名稱\",\n        \"password\": \"密碼\",\n        \"url\": \"URL\",\n        \"ipv4\": \"IP 地址 v4\",\n        \"ipv6\": \"IP 地址 v6\",\n        \"userAgent\": \"User Agent\",\n        \"city\": \"城市\",\n        \"country\": \"國家\",\n        \"streetAddress\": \"街道地址\",\n        \"zipCode\": \"郵遞區號\",\n        \"latitude\": \"緯度\",\n        \"longitude\": \"經度\",\n        \"amount\": \"金額\",\n        \"currencyCode\": \"貨幣代碼\",\n        \"creditCardNumber\": \"信用卡號\",\n        \"productName\": \"產品名稱\",\n        \"price\": \"價格\",\n        \"department\": \"部門\",\n        \"companyName\": \"公司名稱\",\n        \"catchPhrase\": \"標語\",\n        \"word\": \"單字\",\n        \"sentence\": \"句子\",\n        \"paragraph\": \"段落\",\n        \"past\": \"過去日期\",\n        \"future\": \"未來日期\",\n        \"recent\": \"最近日期\",\n        \"birthdate\": \"出生日期\",\n        \"int\": \"整數\",\n        \"float\": \"浮點數\",\n        \"boolean\": \"布林值\",\n        \"phoneNumber\": \"電話號碼\",\n        \"imei\": \"IMEI\",\n        \"avatar\": \"頭像 URL\",\n        \"imageUrl\": \"圖片 URL\"\n      }\n    }\n  },\n  \"converters\": {\n    \"label\": \"轉換器\",\n    \"caseConverter\": {\n      \"label\": \"大小寫轉換器\",\n      \"description\": \"將文字轉換為不同的大小寫格式\",\n      \"caseType\": {\n        \"uppercase\": \"Uppercase\",\n        \"lowercase\": \"Lowercase\",\n        \"camelcase\": \"Camelcase\",\n        \"capitalize\": \"Capitalize\",\n        \"constantcase\": \"Constantcase\",\n        \"snakecase\": \"Snakecase\",\n        \"kebabcase\": \"Kebabcase\",\n        \"pascalcase\": \"Pascalcase\",\n        \"dotcase\": \"Dotcase\",\n        \"pathcase\": \"Pathcase\"\n      }\n    },\n    \"textToUnicode\": {\n      \"label\": \"文字轉Unicode\",\n      \"description\": \"將文字轉換為Unicode，反之亦然\",\n      \"modes\": {\n        \"textToUnicode\": \"文字 → Unicode\",\n        \"unicodeToText\": \"Unicode → 文字\"\n      }\n    },\n    \"textToAscii\": {\n      \"label\": \"文字轉ASCII Binary\",\n      \"description\": \"將文字轉換為ASCII binary，反之亦然\",\n      \"modes\": {\n        \"textToAscii\": \"文字 → ASCII\",\n        \"asciiToText\": \"ASCII → 文字\"\n      }\n    },\n    \"base64\": {\n      \"label\": \"Base64 Encoder / Decoder\",\n      \"description\": \"將文字編碼或解碼為Base64\",\n      \"modes\": {\n        \"textToBase64\": \"文字 → Base64\",\n        \"base64ToText\": \"Base64 → 文字\"\n      }\n    },\n    \"jsonToYaml\": {\n      \"label\": \"JSON轉YAML\",\n      \"description\": \"將JSON轉換為YAML，反之亦然\",\n      \"modes\": {\n        \"jsonToYaml\": \"JSON → YAML\",\n        \"yamlToJson\": \"YAML → JSON\"\n      }\n    },\n    \"jsonToToml\": {\n      \"label\": \"JSON轉TOML\",\n      \"description\": \"將JSON轉換為TOML，反之亦然\",\n      \"modes\": {\n        \"jsonToToml\": \"JSON → TOML\",\n        \"tomlToJson\": \"TOML → JSON\"\n      }\n    },\n    \"jsonToXml\": {\n      \"label\": \"JSON轉XML\",\n      \"description\": \"將JSON轉換為XML，反之亦然\",\n      \"modes\": {\n        \"jsonToXml\": \"JSON → XML\",\n        \"xmlToJson\": \"XML → JSON\"\n      }\n    },\n    \"colorConverter\": {\n      \"label\": \"顏色轉換器\",\n      \"description\": \"在不同格式之間轉換顏色\"\n    }\n  },\n  \"crypto\": {\n    \"label\": \"加密 / 安全\",\n    \"hash\": {\n      \"label\": \"雜湊產生器\",\n      \"description\": \"從文字產生雜湊值\"\n    },\n    \"hmac\": {\n      \"label\": \"HMAC產生器\",\n      \"description\": \"產生由金鑰和訊息組成的基於雜湊的訊息認證碼（HMAC）\"\n    },\n    \"password\": {\n      \"label\": \"密碼產生器\",\n      \"description\": \"產生安全密碼\"\n    },\n    \"uuid\": {\n      \"label\": \"UUID產生器\",\n      \"description\": \"產生通用唯一識別碼（UUID）\"\n    }\n  },\n  \"web\": {\n    \"label\": \"網路\",\n    \"urlParser\": {\n      \"label\": \"URL解析器\",\n      \"description\": \"將URL解析為其組件\"\n    },\n    \"urlEncoder\": {\n      \"label\": \"URL Encoder / Decoder\",\n      \"description\": \"編碼或解碼URL\",\n      \"modes\": {\n        \"urlEncode\": \"URL Encode\",\n        \"urlDecode\": \"URL Decode\"\n      }\n    },\n    \"slugify\": {\n      \"label\": \"Slugify\",\n      \"description\": \"將文字轉換為URL友好的slug\"\n    }\n  },\n  \"form\": {\n    \"input\": \"輸入\",\n    \"output\": \"輸出\",\n    \"inputString\": \"輸入字串\",\n    \"outputString\": \"輸出字串\",\n    \"inputUrl\": \"輸入URL\",\n    \"outputUrl\": \"輸出URL\",\n    \"parsedUrl\": \"解析的URL\",\n    \"splitQueryString\": \"分割Query String\",\n    \"key\": \"金鑰\",\n    \"value\": \"值\",\n    \"component\": \"組件\",\n    \"result\": \"結果\",\n    \"secretKey\": \"秘密金鑰\",\n    \"algorithm\": \"演算法\",\n    \"version\": \"版本\",\n    \"amount\": \"數量\",\n    \"type\": \"類型\",\n    \"length\": \"長度\",\n    \"options\": \"選項\",\n    \"numbers\": \"數字\",\n    \"symbols\": \"符號\",\n    \"lowercase\": \"小寫\",\n    \"uppercase\": \"大寫\",\n    \"placeholder\": {\n      \"text\": \"輸入文字\",\n      \"value\": \"輸入值\",\n      \"secretKey\": \"輸入秘密金鑰\",\n      \"url\": \"輸入URL\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_TW/menu.json",
    "content": "{\n  \"app\": {\n    \"label\": \"massCode\",\n    \"preferences\": \"偏好設定\",\n    \"devtools\": \"開發者工具\",\n    \"update\": \"檢查更新...\",\n    \"quit\": \"退出 massCode\",\n    \"about\": \"關於 massCode\",\n    \"hide\": \"隱藏 massCode\"\n  },\n  \"help\": {\n    \"label\": \"幫助\",\n    \"website\": \"網站\",\n    \"documentation\": \"文檔\",\n    \"viewInGitHub\": \"在 GitHub 上查看\",\n    \"changeLog\": \"更新日誌\",\n    \"reportIssue\": \"報告問題\",\n    \"giveStar\": \"給個星星\",\n    \"extension\": {\n      \"vscode\": \"VS Code 擴展\",\n      \"raycast\": \"Raycast 擴展\",\n      \"alfred\": \"Alfred 擴展\"\n    },\n    \"donate\": {\n      \"openCollective\": \"在 Open Collective 上贊助\",\n      \"payPal\": \"通過 PayPal 贊助\",\n      \"gumroad\": \"通過 Gumroad 贊助（Visa、Mastercard 等）\"\n    },\n    \"twitter\": \"X\",\n    \"devTools\": \"切換開發者工具\",\n    \"links\": {\n      \"snippets\": \"程式碼片段集合\"\n    }\n  },\n  \"edit\": {\n    \"label\": \"編輯\",\n    \"find\": \"尋找\"\n  },\n  \"view\": {\n    \"label\": \"檢視\",\n    \"sortBy\": {\n      \"label\": \"程式碼片段排序方式\",\n      \"dateModified\": \"修改日期\",\n      \"dateCreated\": \"創建日期\",\n      \"name\": \"名稱\"\n    },\n    \"compactMode\": \"緊湊模式\",\n    \"showSidebar\": \"顯示/隱藏側邊欄\"\n  },\n  \"editor\": {\n    \"label\": \"編輯器\",\n    \"copy\": \"複製程式碼片段到剪貼板\",\n    \"format\": \"格式化\",\n    \"previewCode\": \"預覽程式碼\",\n    \"previewScreenshot\": \"預覽截圖\",\n    \"previewJson\": \"預覽 JSON\",\n    \"fontSizeIncrease\": \"增大字體\",\n    \"fontSizeDecrease\": \"減小字體\",\n    \"fontSizeReset\": \"重置字體大小\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"presentationMode\": \"演示模式\",\n    \"preview\": \"預覽\",\n    \"previewMarkdown\": \"預覽 Markdown\",\n    \"previewMindmap\": \"預覽思維導圖\"\n  },\n  \"history\": {\n    \"label\": \"歷史\",\n    \"back\": \"後退\",\n    \"forward\": \"前進\"\n  },\n  \"devtools\": {\n    \"label\": \"開發者工具\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_TW/messages.json",
    "content": "{\n  \"confirm\": {\n    \"delete\": \"您確定要刪除 \\\"{{name}}\\\" 嗎？\",\n    \"deletePermanently\": \"您確定要永久刪除 \\\"{{name}}\\\" 嗎？\",\n    \"deleteConfirmMultipleSnippets\": \"您確定要永久刪除已選擇的 {{count}} 個程式碼片段嗎？\",\n    \"emptyTrash\": \"您確定要永久刪除回收桶中的所有程式碼片段嗎？\",\n    \"clearDb\": \"您確定要清空資料庫嗎？\",\n    \"migrateDb\": [\n      \"您確定要進行遷移嗎？\",\n      \"在遷移過程中，當前的程式庫將被覆蓋。\"\n    ]\n  },\n  \"success\": {\n    \"copied\": \"已複製\",\n    \"backup\": {\n      \"created\": \"備份已建立\",\n      \"restored\": \"備份已還原\"\n    },\n    \"migrate\": \"資料庫遷移成功。\"\n  },\n  \"warning\": {\n    \"noUndo\": \"此操作無法撤銷。\",\n    \"allSnippetsMoveToTrash\": \"此資料夾中的所有程式碼片段將被移至回收桶。\",\n    \"deleteTag\": \"這也將導致所有具有該標籤的程式碼片段移除標籤。\",\n    \"createDb\": \"請選擇其他資料夾\",\n    \"clearDb\": \"這將永久刪除資料庫中的所有程式碼片段、資料夾和標籤。\",\n    \"htmlCssPreview\": \"添加HTML片段以查看結果。添加CSS進行樣式設計，添加JavaScript實現互動功能。\",\n    \"codeBlockRenderer\": [\n      \"使用 Codemirror 時，代碼塊的語言設置必須對應於\",\n      \"languages\"\n    ]\n  },\n  \"error\": {},\n  \"description\": {\n    \"storage\": \"要使用 iCloud Drive、Google Drive 或 Dropbox 等同步服務，只需將儲存位置移至相應的同步資料夾\",\n    \"migrate\": {\n      \"fromV3\": \"要從 massCode v3 遷移，請選擇包含 JSON 文件的資料夾。\",\n      \"fromSnippetsLab\": \"要從 SnippetsLab 遷移，請選擇 JSON 文件。\",\n      \"snippetsLabLimitations\": [\n        \"一些限制。從 SnippetsLab 遷移時：\",\n        \"所有資料夾將為第一層級，因為 JSON 文件（2.1 版以下）不支援巢狀資料夾。\",\n        \"不支援的語言的程式碼片段將設置為預設的純文字。\"\n      ]\n    }\n  },\n  \"special\": {\n    \"supportMessage\": \"嗨，我是 Anton 👋<br><br>\\n感謝使用 massCode。如果您覺得這個應用程式有用，請{{-tagStart}}贊助{{-tagEnd}}。這將激勵我繼續開發這個專案。\",\n    \"unsponsored\": \"未贊助\"\n  },\n  \"update\": {\n    \"available\": \"版本 {{newVersion}} 現已可供下載。\\n您的版本是 {{oldVersion}}。\",\n    \"noAvailable\": \"目前沒有可用的更新。\"\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_TW/preferences.json",
    "content": "{\n  \"label\": \"偏好設定\",\n  \"storage\": {\n    \"label\": \"儲存庫\",\n    \"migrate\": \"遷移\",\n    \"count\": \"數量\",\n    \"clearDatabase\": \"清空資料庫\"\n  },\n  \"editor\": {\n    \"label\": \"編輯器\",\n    \"fontSize\": \"字體大小\",\n    \"fontFamily\": \"字體\",\n    \"wrap\": {\n      \"label\": \"換行\",\n      \"wordWrap\": \"自動換行\",\n      \"off\": \"關閉\"\n    },\n    \"tabSize\": \"縮排大小\",\n    \"showInvisibles\": \"顯示不可見字符\",\n    \"highlightLine\": \"高亮當前行\",\n    \"highlightGutter\": \"高亮行號\",\n    \"matchBrackets\": \"括號匹配\",\n    \"prettier\": {\n      \"label\": \"Prettier\",\n      \"trailingComma\": {\n        \"label\": \"尾隨逗號\",\n        \"none\": \"無\",\n        \"all\": \"全部\",\n        \"es5\": \"ES5\"\n      },\n      \"semi\": \"分號\",\n      \"singleQuote\": \"單引號\"\n    }\n  },\n  \"appearance\": {\n    \"label\": \"外觀\",\n    \"theme\": {\n      \"label\": \"主題\",\n      \"light\": \"淺色\",\n      \"dark\": \"深色\"\n    }\n  },\n  \"language\": {\n    \"label\": \"語言\"\n  },\n  \"markdown\": {\n    \"label\": \"Markdown\",\n    \"codeRenderer\": \"代碼塊渲染器\"\n  },\n  \"api\": {\n    \"label\": \"API 連接埠\",\n    \"port\": {\n      \"label\": \"API 連接埠\",\n      \"description\": \"API 伺服器的連接埠號碼（需要重新啟動應用程式）。有效範圍：1024-65535。\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/i18n/locales/zh_TW/ui.json",
    "content": "{\n  \"total\": \"總計\",\n  \"line\": \"行\",\n  \"column\": \"列\",\n  \"fragment\": \"片段\",\n  \"path\": \"路徑\",\n  \"button\": {\n    \"back\": \"返回\",\n    \"cancel\": \"取消\",\n    \"clear\": \"清除\",\n    \"confirm\": \"確認\",\n    \"copy\": \"複製\",\n    \"fit\": \"適應\",\n    \"generate\": \"生成\",\n    \"ok\": \"確定\",\n    \"revers\": \"反轉\",\n    \"saveAs\": \"另存為\",\n    \"sort\": \"排序\",\n    \"update\": [\"前往 GitHub\", \"確定\"],\n    \"zoomIn\": \"放大\",\n    \"zoomOut\": \"縮小\",\n    \"darkMode\": \"深色模式\",\n    \"toggleDarkMode\": \"切換深色模式\",\n    \"background\": \"背景\",\n    \"goToDownload\": \"前往下載\",\n    \"refreshPreview\": \"重新整理預覽\",\n    \"laserPointer\": \"雷射指標\",\n    \"fullscreen\": \"全螢幕\",\n    \"prev\": \"上一個\",\n    \"next\": \"下一個\"\n  },\n  \"action\": {\n    \"close\": \"關閉\",\n    \"defaultLanguage\": \"預設語言\",\n    \"duplicate\": \"複製\",\n    \"rename\": \"重命名\",\n    \"restore\": \"還原\",\n    \"setCustomIcon\": \"設置圖標\",\n    \"removeCustomIcon\": \"刪除圖標\",\n    \"show\": \"顯示\",\n    \"hide\": \"隱藏\",\n    \"showSidebar\": \"顯示側邊欄\",\n    \"hideSidebar\": \"隱藏側邊欄\",\n    \"new\": {\n      \"storage\": \"新建儲存庫\",\n      \"folder\": \"新建資料夾\",\n      \"snippet\": \"新建程式碼片段\",\n      \"fragment\": \"新建片段\"\n    },\n    \"add\": {\n      \"description\": \"添加描述\",\n      \"tag\": \"添加標籤\",\n      \"toFavorites\": \"添加到收藏\"\n    },\n    \"open\": {\n      \"storage\": \"開啟儲存庫\"\n    },\n    \"move\": {\n      \"storage\": \"移動儲存庫\",\n      \"toTrash\": \"移至回收桶\"\n    },\n    \"remove\": {\n      \"fromFavorites\": \"從收藏中移除\"\n    },\n    \"reload\": {\n      \"storage\": \"重新載入儲存庫\"\n    },\n    \"delete\": {\n      \"common\": \"刪除\",\n      \"now\": \"立即刪除\",\n      \"allData\": \"刪除所有數據\",\n      \"trash\": \"清空回收桶\"\n    },\n    \"migrate\": {\n      \"fromSnippetsLab\": \"從 SnippetsLab\",\n      \"fromV3\": \"從 massCode v3\"\n    },\n    \"export\": {\n      \"toHtml\": \"匯出為 HTML\"\n    },\n    \"copy\": {\n      \"snippetLink\": \"複製程式碼片段連結\"\n    }\n  },\n  \"sidebar\": {\n    \"inbox\": \"收件匣\",\n    \"favorites\": \"收藏\",\n    \"allSnippets\": \"所有程式碼片段\",\n    \"trash\": \"回收桶\",\n    \"folders\": \"資料夾\",\n    \"library\": \"程式庫\",\n    \"tags\": \"標籤\"\n  },\n  \"folder\": {\n    \"untitled\": \"未命名資料夾\",\n    \"plural\": \"資料夾\",\n    \"collapseAll\": \"全部摺疊\",\n    \"expandAll\": \"全部展開\"\n  },\n  \"snippet\": {\n    \"untitled\": \"未命名程式碼片段\",\n    \"plural\": \"程式碼片段\",\n    \"emptyName\": \"輸入程式碼片段名稱\",\n    \"selectedMultiple\": \"已選擇 {{count}} 個程式碼片段\",\n    \"noSelected\": \"未選擇程式碼片段\"\n  },\n  \"placeholder\": {\n    \"emptyTagList\": \"在程式碼片段中添加標籤以在此處查看\",\n    \"emptyFoldersList\": \"沒有資料夾\",\n    \"emptySnippetsList\": \"沒有程式碼片段\",\n    \"search\": \"搜尋\",\n    \"addTag\": \"添加標籤\"\n  }\n}\n"
  },
  {
    "path": "src/main/index.ts",
    "content": "/* eslint-disable node/prefer-global/process */\nimport { readFileSync } from 'node:fs'\nimport path from 'node:path'\nimport { app, BrowserWindow, ipcMain, Menu } from 'electron'\nimport { version } from '../../package.json'\nimport { initApi } from './api'\nimport { startAutoBackup } from './db'\nimport { migrateJsonToSqlite } from './db/migrate'\nimport { registerIPC } from './ipc'\nimport { startThemeWatcher, stopThemeWatcher } from './ipc/handlers/theme'\nimport { mainMenu } from './menu/main'\nimport { store } from './store'\nimport { checkForUpdates } from './updates'\nimport { log } from './utils'\n\nprocess.env.ELECTRON_DISABLE_SECURITY_WARNINGS = 'true' // Отключаем security warnings\n\nconst isDev = process.env.NODE_ENV === 'development'\nconst gotTheLock = app.requestSingleInstanceLock()\n\nlet mainWindow: BrowserWindow\nlet isQuitting = false\n\n// TODO: Удаление уведомления о функции в версии 5.0.0\nconst SQLITE_SUNSET_VERSION = '5.0.0'\n\nfunction shouldShowFeatureNotice(): boolean {\n  const lastSeenVersion = store.app.get('lastSeenReleaseNoticeVersion')\n  const lastSeenMajor = Number.parseInt(\n    (lastSeenVersion || '').split('.')[0] || '0',\n    10,\n  )\n  const currentMajor = Number.parseInt(version.split('.')[0] || '0', 10)\n\n  if (lastSeenMajor >= currentMajor) {\n    return false\n  }\n\n  return currentMajor === 4\n}\n\nfunction showFeatureNotice() {\n  if (!shouldShowFeatureNotice()) {\n    return\n  }\n\n  mainWindow.webContents.send('system:feature-notice', {\n    sqliteSunsetVersion: SQLITE_SUNSET_VERSION,\n  })\n\n  store.app.set('lastSeenReleaseNoticeVersion', version)\n}\n\nif (process.defaultApp) {\n  if (process.argv.length >= 2) {\n    app.setAsDefaultProtocolClient('masscode', process.execPath, [\n      path.resolve(process.argv[1]),\n    ])\n  }\n}\nelse {\n  app.setAsDefaultProtocolClient('masscode')\n}\n\nfunction createWindow() {\n  const bounds = store.app.get('bounds')\n\n  mainWindow = new BrowserWindow({\n    width: 1200,\n    height: 800,\n    ...bounds,\n    titleBarStyle: process.platform === 'darwin' ? 'hidden' : 'default',\n    webPreferences: {\n      preload: path.join(__dirname, 'preload.js'),\n      nodeIntegration: true,\n      webSecurity: false,\n    },\n  })\n\n  Menu.setApplicationMenu(mainMenu)\n\n  if (isDev) {\n    mainWindow.loadURL('http://localhost:5173')\n    mainWindow.webContents.openDevTools()\n  }\n  else {\n    mainWindow.loadFile(\n      path.join(__dirname, '../../build/renderer/index.html'),\n    )\n  }\n\n  ipcMain.once('system:renderer-ready', () => {\n    showFeatureNotice()\n  })\n\n  mainWindow.on('close', (event) => {\n    store.app.set('bounds', mainWindow.getBounds())\n\n    if (process.platform === 'darwin' && !isQuitting) {\n      event.preventDefault()\n      mainWindow.hide()\n      return\n    }\n\n    mainWindow.destroy()\n  })\n}\n\nif (!gotTheLock) {\n  app.quit()\n}\nelse {\n  app.whenReady().then(async () => {\n    try {\n      createWindow()\n    }\n    catch (error) {\n      log('Error creating window', error)\n    }\n\n    try {\n      registerIPC()\n    }\n    catch (error) {\n      log('Error registering IPC', error)\n    }\n\n    try {\n      startThemeWatcher()\n    }\n    catch (error) {\n      log('Error starting theme watcher', error)\n    }\n\n    try {\n      await initApi()\n    }\n    catch (error) {\n      log('Error initializing API', error)\n    }\n\n    try {\n      checkForUpdates()\n    }\n    catch (error) {\n      log('Error checking for updates', error)\n    }\n\n    try {\n      await startAutoBackup()\n    }\n    catch (error) {\n      log('Error starting auto backup', error)\n    }\n\n    if (store.app.get('isAutoMigratedFromJson')) {\n      return\n    }\n\n    try {\n      const jsonDbPath = `${store.preferences.get('storagePath')}/db.json`\n      const jsonData = readFileSync(jsonDbPath, 'utf8')\n\n      migrateJsonToSqlite(JSON.parse(jsonData))\n      store.app.set('isAutoMigratedFromJson', true)\n    }\n    catch (err) {\n      log('Error on auto migration JSON to SQLite', err)\n    }\n  })\n\n  app.on('activate', () => {\n    mainWindow.show()\n  })\n\n  app.on('before-quit', () => {\n    isQuitting = true\n    stopThemeWatcher()\n  })\n\n  app.on('window-all-closed', () => {\n    if (process.platform !== 'darwin')\n      app.quit()\n  })\n\n  app.on('second-instance', (_, argv) => {\n    if (mainWindow) {\n      mainWindow.isMinimized() ? mainWindow.restore() : mainWindow.focus()\n    }\n\n    if (process.platform !== 'darwin') {\n      const url = argv.find(i => i.startsWith('masscode://'))\n      BrowserWindow.getFocusedWindow()?.webContents.send(\n        'system:deep-link',\n        url,\n      )\n    }\n  })\n\n  app.on('open-url', (_, url) => {\n    BrowserWindow.getFocusedWindow()?.webContents.send('system:deep-link', url)\n  })\n\n  // Global error handlers\n  process.on('uncaughtException', (err) => {\n    BrowserWindow.getFocusedWindow()?.webContents.send('system:error', {\n      source: 'main',\n      message: err.message,\n      stack: err.stack,\n    })\n  })\n\n  process.on('unhandledRejection', (reason) => {\n    const err = reason instanceof Error ? reason : new Error(String(reason))\n    BrowserWindow.getFocusedWindow()?.webContents.send('system:error', {\n      source: 'main',\n      message: err.message,\n      stack: err.stack,\n    })\n  })\n}\n"
  },
  {
    "path": "src/main/ipc/handlers/db.ts",
    "content": "import type { Backup } from '../../db/types'\nimport { ipcMain } from 'electron'\nimport { readFileSync } from 'fs-extra'\nimport {\n  clearDB,\n  createBackup,\n  deleteBackup,\n  getBackupList,\n  moveBackupStorage,\n  moveDB,\n  reloadDB,\n  restoreFromBackup,\n  startAutoBackup,\n  stopAutoBackup,\n} from '../../db'\nimport { migrateJsonToSqlite } from '../../db/migrate'\nimport {\n  migrateMarkdownToSqliteStorage,\n  migrateSqliteToMarkdownStorage,\n} from '../../storage/providers/markdown'\nimport { store } from '../../store'\nimport '../../types'\n\nfunction assertSqliteEngine(action: string): void {\n  const engine = store.preferences.get('storage.engine')\n\n  if (engine !== 'sqlite') {\n    throw new Error(`${action} is available only in SQLite storage mode`)\n  }\n}\n\nexport function registerDBHandlers() {\n  ipcMain.handle<string, void>('db:relaod', (_, payload) => {\n    return new Promise((resolve) => {\n      assertSqliteEngine('Database reload')\n      store.preferences.set('storagePath', payload)\n      reloadDB()\n      resolve()\n    })\n  })\n\n  ipcMain.handle<string, void>('db:move', async (_, payload) => {\n    assertSqliteEngine('Database move')\n    await moveDB(payload)\n  })\n\n  ipcMain.handle<undefined, void>('db:clear', () => {\n    return new Promise((resolve) => {\n      assertSqliteEngine('Database clear')\n      clearDB()\n      resolve()\n    })\n  })\n\n  ipcMain.handle<string, void>('db:migrate', async (_, payload) => {\n    assertSqliteEngine('Migration from v3')\n    const jsonData = readFileSync(payload, 'utf8')\n    await migrateJsonToSqlite(JSON.parse(jsonData))\n  })\n\n  ipcMain.handle<\n    undefined,\n    { folders: number, snippets: number, tags: number }\n  >('db:migrate-to-markdown', async () => {\n    return migrateSqliteToMarkdownStorage()\n  })\n\n  ipcMain.handle<\n    undefined,\n    { folders: number, snippets: number, tags: number }\n  >('db:migrate-to-sqlite', async () => {\n    return migrateMarkdownToSqliteStorage()\n  })\n\n  ipcMain.handle<boolean, void>('db:backup', async (_, payload) => {\n    assertSqliteEngine('Backup')\n    await createBackup(payload)\n  })\n\n  ipcMain.handle<string, void>('db:restore', async (_, payload) => {\n    assertSqliteEngine('Backup restore')\n    await restoreFromBackup(payload)\n  })\n\n  ipcMain.handle<undefined, Backup[]>('db:backup-list', async () => {\n    assertSqliteEngine('Backup list')\n    return await getBackupList()\n  })\n\n  ipcMain.handle<string, void>('db:delete-backup', async (_, payload) => {\n    assertSqliteEngine('Backup delete')\n    await deleteBackup(payload)\n  })\n\n  ipcMain.handle<string, void>('db:move-backup', async (_, payload) => {\n    assertSqliteEngine('Backup move')\n    await moveBackupStorage(payload)\n  })\n\n  ipcMain.handle('db:start-auto-backup', async () => {\n    assertSqliteEngine('Auto backup')\n    await startAutoBackup()\n  })\n\n  ipcMain.handle('db:stop-auto-backup', async () => {\n    stopAutoBackup()\n  })\n}\n"
  },
  {
    "path": "src/main/ipc/handlers/dialog.ts",
    "content": "import type { DialogOptions } from '../../types/ipc'\nimport { BrowserWindow, dialog, ipcMain } from 'electron'\n\nexport function registerDialogHandlers() {\n  ipcMain.handle<DialogOptions>('main-menu:open-dialog', (event, payload) => {\n    return new Promise<string>((resolve) => {\n      const { properties, filters } = payload\n\n      const dir = dialog.showOpenDialogSync(BrowserWindow.getFocusedWindow()!, {\n        properties: properties || ['openDirectory', 'createDirectory'],\n        filters: filters || [{ name: '*', extensions: ['.db'] }],\n      })\n\n      if (dir) {\n        resolve(dir[0])\n      }\n      else {\n        resolve('')\n      }\n    })\n  })\n}\n"
  },
  {
    "path": "src/main/ipc/handlers/fs.ts",
    "content": "import { Buffer } from 'node:buffer'\nimport { join, parse } from 'node:path'\nimport { ipcMain } from 'electron'\nimport { ensureDirSync, writeFileSync } from 'fs-extra'\nimport { nanoid } from 'nanoid'\nimport slash from 'slash'\nimport { store } from '../../store'\n\nconst ASSETS_DIR = 'assets'\n\nexport function registerFsHandlers() {\n  ipcMain.handle('fs:assets', (event, { buffer, fileName }) => {\n    const storagePath = store.preferences.get('storagePath')\n\n    return new Promise((resolve, reject) => {\n      try {\n        const assetsPath = join(storagePath, ASSETS_DIR)\n\n        const { ext } = parse(fileName)\n        const name = `${nanoid()}${ext}`\n        const dest = join(assetsPath, name)\n\n        ensureDirSync(assetsPath)\n        writeFileSync(dest, Buffer.from(buffer))\n\n        resolve(slash(join(ASSETS_DIR, name)))\n      }\n      catch (error) {\n        reject(error)\n      }\n    })\n  })\n}\n"
  },
  {
    "path": "src/main/ipc/handlers/prettier.ts",
    "content": "import type { PrettierOptions } from '../../types/ipc'\nimport { ipcMain } from 'electron'\nimport prettier from 'prettier'\nimport { store } from '../../store'\n\nexport async function format(source: string, parser: string) {\n  const editor = store.preferences.get('editor')\n\n  return prettier.format(source, {\n    parser,\n    tabWidth: Number(editor.tabSize),\n    trailingComma: editor.trailingComma,\n    semi: editor.semi,\n    singleQuote: editor.singleQuote,\n  })\n}\n\nexport function registerPrettierHandlers() {\n  ipcMain.handle<PrettierOptions>('prettier:format', (event, payload) => {\n    const { text, parser } = payload\n    return format(text, parser)\n  })\n}\n"
  },
  {
    "path": "src/main/ipc/handlers/spaces.ts",
    "content": "import type { MathNotebookStore } from '../../store/types'\nimport { ipcMain } from 'electron'\nimport {\n  ensureSpaceDirectory,\n  getSpaceStatePath,\n} from '../../storage/providers/markdown/runtime/spaces'\nimport {\n  readSpaceState,\n  writeSpaceState,\n} from '../../storage/providers/markdown/runtime/spaceState'\nimport { store } from '../../store'\n\nfunction getVaultPath(): string | null {\n  return store.preferences.get('storage.vaultPath') as string | null\n}\n\nfunction isMarkdownEngine(): boolean {\n  return store.preferences.get('storage.engine') === 'markdown'\n}\n\nexport function registerSpacesHandlers() {\n  ipcMain.handle('spaces:math:read', () => {\n    if (!isMarkdownEngine()) {\n      return {\n        sheets: store.mathNotebook.get('sheets') ?? [],\n        activeSheetId: store.mathNotebook.get('activeSheetId') ?? null,\n      } satisfies MathNotebookStore\n    }\n\n    const vaultPath = getVaultPath()\n    if (!vaultPath) {\n      return {\n        sheets: [],\n        activeSheetId: null,\n      } satisfies MathNotebookStore\n    }\n\n    ensureSpaceDirectory(vaultPath, 'math')\n    const statePath = getSpaceStatePath(vaultPath, 'math')\n    const state = readSpaceState<MathNotebookStore>(statePath)\n\n    if (state) {\n      return {\n        sheets: Array.isArray(state.sheets) ? state.sheets : [],\n        activeSheetId: state.activeSheetId ?? null,\n      } satisfies MathNotebookStore\n    }\n\n    // Migration: read from electron-store, write to vault\n    const legacy: MathNotebookStore = {\n      sheets: store.mathNotebook.get('sheets') ?? [],\n      activeSheetId: store.mathNotebook.get('activeSheetId') ?? null,\n    }\n\n    if (legacy.sheets.length > 0) {\n      writeSpaceState(statePath, legacy)\n    }\n\n    return legacy\n  })\n\n  ipcMain.handle('spaces:math:write', (_, data: MathNotebookStore) => {\n    if (!isMarkdownEngine()) {\n      store.mathNotebook.set('sheets', data.sheets)\n      store.mathNotebook.set('activeSheetId', data.activeSheetId)\n      return\n    }\n\n    const vaultPath = getVaultPath()\n    if (!vaultPath) {\n      return\n    }\n\n    ensureSpaceDirectory(vaultPath, 'math')\n    const statePath = getSpaceStatePath(vaultPath, 'math')\n    writeSpaceState(statePath, data)\n  })\n}\n"
  },
  {
    "path": "src/main/ipc/handlers/system.ts",
    "content": "import { app, ipcMain, shell } from 'electron'\nimport { getCurrencyRates } from '../../currencyRates'\n\nexport function registerSystemHandlers() {\n  ipcMain.handle('system:currency-rates', () => {\n    return getCurrencyRates()\n  })\n\n  ipcMain.handle('system:reload', () => {\n    app.relaunch()\n    app.quit()\n  })\n\n  ipcMain.handle('system:open-external', (_, url: string) => {\n    shell.openExternal(url)\n  })\n}\n"
  },
  {
    "path": "src/main/ipc/handlers/theme.ts",
    "content": "import type { ChokidarOptions, FSWatcher } from 'chokidar'\nimport type {\n  ThemeFile,\n  ThemeListItem,\n  ThemeType,\n} from '../../store/types/theme'\nimport { homedir } from 'node:os'\nimport path from 'node:path'\nimport { BrowserWindow, ipcMain, shell } from 'electron'\nimport {\n  ensureDirSync,\n  existsSync,\n  readdirSync,\n  readFileSync,\n  writeFileSync,\n} from 'fs-extra'\nimport { importEsm, log } from '../../utils'\nimport '../../types'\n\nconst THEMES_ROOT_DIR = path.join(homedir(), '.massCode')\nconst THEMES_DIR = path.join(THEMES_ROOT_DIR, 'themes')\nconst THEME_FILE_EXT = '.json'\nconst THEME_CHANGED_DEBOUNCE_MS = 250\nconst THEME_TEMPLATE_BASE_NAME = 'new-theme'\nconst THEME_TEMPLATE: ThemeFile = {\n  name: 'New Theme (Rose Pine)',\n  author: '',\n  type: 'light',\n  colors: {\n    'primary': 'hsl(277, 22%, 57%)',\n    'primary-foreground': 'hsl(0, 0%, 100%)',\n    'background': 'hsl(35, 67%, 96%)',\n    'foreground': 'hsl(245, 18%, 40%)',\n    'accent': 'hsl(34, 38%, 89%)',\n    'accent-hover': 'hsl(34, 42%, 92%)',\n    'accent-foreground': 'hsl(245, 18%, 40%)',\n    'muted': 'hsl(34, 52%, 91%)',\n    'muted-foreground': 'hsl(270, 10%, 53%)',\n    'card': 'hsl(35, 50%, 94%)',\n    'popover': 'hsl(35, 67%, 96%)',\n    'popover-foreground': 'hsl(245, 18%, 40%)',\n    'border': 'hsl(30, 24%, 88%)',\n    'scrollbar': 'hsla(270, 14%, 73%, 0.5)',\n  },\n  editorColors: {\n    'editor-keyword': 'hsl(277, 22%, 57%)',\n    'editor-string': 'hsl(35, 78%, 56%)',\n    'editor-comment': 'hsl(270, 8%, 61%)',\n    'editor-number': 'hsl(2, 57%, 66%)',\n    'editor-atom': 'hsl(340, 37%, 53%)',\n    'editor-variable': 'hsl(245, 18%, 40%)',\n    'editor-def': 'hsl(198, 52%, 36%)',\n    'editor-property': 'hsl(187, 34%, 47%)',\n    'editor-tag': 'hsl(340, 37%, 53%)',\n    'editor-attribute': 'hsl(198, 52%, 36%)',\n    'editor-operator': 'hsl(277, 22%, 57%)',\n    'editor-bracket': 'hsl(245, 18%, 40%)',\n  },\n}\n\nconst TOKEN_MIGRATION_MAP: Record<string, string> = {\n  'color-primary': 'primary',\n  'color-bg': 'background',\n  'color-fg': 'foreground',\n  'color-text': 'foreground',\n  'color-text-muted': 'muted-foreground',\n  'color-border': 'border',\n  'color-button': 'muted',\n  'color-list-selection': 'accent',\n  'color-list-selection-fg': 'accent-foreground',\n  'color-scrollbar': 'scrollbar',\n}\n\nconst DROPPED_TOKENS = new Set(['color-button-hover'])\n\nlet themeWatcher: FSWatcher | null = null\nlet themeWatcherTimer: NodeJS.Timeout | null = null\nlet watchedThemesDir: string | null = null\nlet watcherStartToken = 0\nlet chokidarWatchLoader: Promise<ChokidarWatch> | null = null\nconst reportedThemeIssues = new Map<string, string>()\n\ntype ChokidarWatch = (\n  path: string | readonly string[],\n  options?: ChokidarOptions,\n) => FSWatcher\n\nasync function getChokidarWatch(): Promise<ChokidarWatch> {\n  if (chokidarWatchLoader) {\n    return chokidarWatchLoader\n  }\n\n  chokidarWatchLoader = importEsm('chokidar')\n    .then((module) => {\n      const chokidarModule = module as {\n        default?: {\n          watch?: unknown\n        }\n        watch?: unknown\n      }\n      const watch = chokidarModule.default?.watch || chokidarModule.watch\n\n      if (typeof watch !== 'function') {\n        throw new TypeError('chokidar.watch is not available')\n      }\n\n      return watch as ChokidarWatch\n    })\n    .catch((error) => {\n      chokidarWatchLoader = null\n      throw error\n    })\n\n  return chokidarWatchLoader\n}\n\nfunction ensureThemesDir(): string {\n  ensureDirSync(THEMES_DIR)\n  return THEMES_DIR\n}\n\nfunction reportThemeIssue(\n  fileName: string,\n  reason: string,\n  error?: unknown,\n): void {\n  const message = `${fileName}: ${reason}`\n\n  if (reportedThemeIssues.get(fileName) === message) {\n    return\n  }\n\n  reportedThemeIssues.set(fileName, message)\n\n  if (error) {\n    console.warn(`[theme] ${message}`, error)\n    return\n  }\n\n  console.warn(`[theme] ${message}`)\n}\n\nfunction isThemeType(value: unknown): value is ThemeType {\n  return value === 'light' || value === 'dark'\n}\n\nfunction isStringRecord(value: unknown): value is Record<string, string> {\n  if (!value || typeof value !== 'object' || Array.isArray(value)) {\n    return false\n  }\n\n  return Object.values(value).every(v => typeof v === 'string')\n}\n\nfunction parseThemeFile(raw: unknown, fileName: string): ThemeFile | null {\n  if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n    reportThemeIssue(fileName, 'Invalid JSON object')\n    return null\n  }\n\n  const data = raw as {\n    name?: unknown\n    author?: unknown\n    type?: unknown\n    colors?: unknown\n    editorColors?: unknown\n  }\n\n  if (typeof data.name !== 'string' || !data.name.trim()) {\n    reportThemeIssue(fileName, 'Invalid name')\n    return null\n  }\n\n  if (!isThemeType(data.type)) {\n    reportThemeIssue(fileName, 'Invalid type')\n    return null\n  }\n\n  if (data.author !== undefined && typeof data.author !== 'string') {\n    reportThemeIssue(fileName, 'Invalid author')\n    return null\n  }\n\n  if (data.colors !== undefined && !isStringRecord(data.colors)) {\n    reportThemeIssue(fileName, 'Invalid colors')\n    return null\n  }\n\n  if (data.editorColors !== undefined && !isStringRecord(data.editorColors)) {\n    reportThemeIssue(fileName, 'Invalid editorColors')\n    return null\n  }\n\n  reportedThemeIssues.delete(fileName)\n\n  return {\n    name: data.name.trim(),\n    author: data.author,\n    type: data.type,\n    colors: data.colors,\n    editorColors: data.editorColors,\n  }\n}\n\nfunction normalizeThemeId(id: string): string | null {\n  const normalized = id.trim()\n\n  if (!normalized) {\n    return null\n  }\n\n  if (normalized.includes('\\0')) {\n    return null\n  }\n\n  if (normalized.includes('/') || normalized.includes('\\\\')) {\n    return null\n  }\n\n  if (normalized === '.' || normalized === '..') {\n    return null\n  }\n\n  return normalized\n}\n\nfunction resolveThemeFilePath(id: string): string | null {\n  const normalizedId = normalizeThemeId(id)\n\n  if (!normalizedId) {\n    return null\n  }\n\n  const themesDir = ensureThemesDir()\n  const filePath = path.resolve(themesDir, `${normalizedId}${THEME_FILE_EXT}`)\n  const relative = path.relative(themesDir, filePath)\n\n  if (relative.startsWith('..') || path.isAbsolute(relative)) {\n    return null\n  }\n\n  return filePath\n}\n\nfunction migrateThemeColors(colors: Record<string, string>): {\n  migrated: Record<string, string>\n  changed: boolean\n} {\n  const result: Record<string, string> = {}\n  let changed = false\n\n  for (const [key, value] of Object.entries(colors)) {\n    if (DROPPED_TOKENS.has(key)) {\n      changed = true\n      continue\n    }\n\n    const newKey = TOKEN_MIGRATION_MAP[key]\n\n    if (newKey) {\n      result[newKey] = value\n      changed = true\n    }\n    else {\n      result[key] = value\n    }\n  }\n\n  return { migrated: result, changed }\n}\n\nfunction readThemeFromFile(\n  filePath: string,\n  fileName: string,\n): ThemeFile | null {\n  try {\n    const content = readFileSync(filePath, 'utf8')\n    const parsed = JSON.parse(content) as unknown\n    const theme = parseThemeFile(parsed, fileName)\n\n    if (!theme) {\n      return null\n    }\n\n    if (theme.colors) {\n      const { migrated, changed } = migrateThemeColors(theme.colors)\n\n      if (changed) {\n        theme.colors = migrated\n\n        try {\n          const raw = parsed as Record<string, unknown>\n          raw.colors = migrated\n          writeFileSync(filePath, `${JSON.stringify(raw, null, 2)}\\n`, 'utf8')\n          console.warn(`[theme] Migrated ${fileName} to new token format`)\n        }\n        catch (writeError) {\n          console.warn(\n            `[theme] Failed to write migrated theme ${fileName}`,\n            writeError,\n          )\n        }\n      }\n    }\n\n    return theme\n  }\n  catch (error) {\n    reportThemeIssue(fileName, 'Failed to read or parse JSON', error)\n    return null\n  }\n}\n\nfunction listThemes(): ThemeListItem[] {\n  const themesDir = ensureThemesDir()\n  const entries = readdirSync(themesDir, { withFileTypes: true })\n  const themes: ThemeListItem[] = []\n\n  entries.forEach((entry) => {\n    if (!entry.isFile()) {\n      return\n    }\n\n    if (path.extname(entry.name).toLowerCase() !== THEME_FILE_EXT) {\n      return\n    }\n\n    const filePath = path.join(themesDir, entry.name)\n    const theme = readThemeFromFile(filePath, entry.name)\n\n    if (!theme) {\n      return\n    }\n\n    const id = path.parse(entry.name).name\n\n    themes.push({\n      id,\n      name: theme.name,\n      author: theme.author,\n      type: theme.type,\n    })\n  })\n\n  themes.sort((a, b) =>\n    a.name.localeCompare(b.name, undefined, {\n      sensitivity: 'base',\n    }),\n  )\n\n  return themes\n}\n\nfunction getTheme(id: string): ThemeFile | null {\n  const filePath = resolveThemeFilePath(id)\n\n  if (!filePath || !existsSync(filePath)) {\n    return null\n  }\n\n  return readThemeFromFile(filePath, path.basename(filePath))\n}\n\nasync function openThemesDir(): Promise<void> {\n  const themesDir = ensureThemesDir()\n  const openError = await shell.openPath(themesDir)\n\n  if (openError) {\n    log('theme:open-dir', new Error(openError))\n  }\n}\n\nfunction resolveThemeTemplatePath(): string {\n  const themesDir = ensureThemesDir()\n  const maxAttempts = 1000\n\n  for (let index = 0; index < maxAttempts; index++) {\n    const suffix = index === 0 ? '' : `-${index}`\n    const fileName = `${THEME_TEMPLATE_BASE_NAME}${suffix}${THEME_FILE_EXT}`\n    const filePath = path.join(themesDir, fileName)\n\n    if (!existsSync(filePath)) {\n      return filePath\n    }\n  }\n\n  throw new Error(\n    `Could not find available theme template name after ${maxAttempts} attempts`,\n  )\n}\n\nfunction createThemeTemplate(): string {\n  const templatePath = resolveThemeTemplatePath()\n  const templateContent = `${JSON.stringify(THEME_TEMPLATE, null, 2)}\\n`\n\n  writeFileSync(templatePath, templateContent, 'utf8')\n\n  return templatePath\n}\n\nfunction scheduleThemeChanged(): void {\n  if (themeWatcherTimer) {\n    clearTimeout(themeWatcherTimer)\n    themeWatcherTimer = null\n  }\n\n  themeWatcherTimer = setTimeout(() => {\n    BrowserWindow.getAllWindows().forEach((window) => {\n      window.webContents.send('theme:changed')\n    })\n  }, THEME_CHANGED_DEBOUNCE_MS)\n}\n\nexport function stopThemeWatcher(): void {\n  watcherStartToken += 1\n\n  if (themeWatcherTimer) {\n    clearTimeout(themeWatcherTimer)\n    themeWatcherTimer = null\n  }\n\n  if (themeWatcher) {\n    void themeWatcher.close()\n    themeWatcher = null\n  }\n\n  watchedThemesDir = null\n}\n\nexport function startThemeWatcher(): void {\n  const themesDir = ensureThemesDir()\n\n  if (themeWatcher && watchedThemesDir === themesDir) {\n    return\n  }\n\n  stopThemeWatcher()\n\n  const startToken = ++watcherStartToken\n\n  void getChokidarWatch()\n    .then((watch) => {\n      if (startToken !== watcherStartToken) {\n        return\n      }\n\n      const watcher = watch(themesDir, {\n        awaitWriteFinish: {\n          pollInterval: 100,\n          stabilityThreshold: 200,\n        },\n        ignoreInitial: true,\n        persistent: true,\n      })\n\n      watcher\n        .on('add', scheduleThemeChanged)\n        .on('change', scheduleThemeChanged)\n        .on('unlink', scheduleThemeChanged)\n        .on('addDir', scheduleThemeChanged)\n        .on('unlinkDir', scheduleThemeChanged)\n        .on('error', (error: unknown) => {\n          log('theme:watcher-error', error)\n        })\n\n      if (startToken !== watcherStartToken) {\n        void watcher.close()\n        return\n      }\n\n      themeWatcher = watcher\n      watchedThemesDir = themesDir\n    })\n    .catch((error) => {\n      if (startToken === watcherStartToken) {\n        watchedThemesDir = null\n      }\n\n      log('theme:watcher-start', error)\n    })\n}\n\nexport function registerThemeHandlers() {\n  ipcMain.handle<null, ThemeListItem[]>('theme:list', async () => {\n    startThemeWatcher()\n    return listThemes()\n  })\n\n  ipcMain.handle<string, ThemeFile | null>('theme:get', async (_, payload) => {\n    startThemeWatcher()\n    return getTheme(payload)\n  })\n\n  ipcMain.handle('theme:open-dir', async () => {\n    startThemeWatcher()\n    await openThemesDir()\n  })\n\n  ipcMain.handle<null, string>('theme:create-template', async () => {\n    startThemeWatcher()\n    return createThemeTemplate()\n  })\n}\n"
  },
  {
    "path": "src/main/ipc/index.ts",
    "content": "import type { Channel } from '../types/ipc'\nimport { BrowserWindow } from 'electron'\nimport { registerDBHandlers } from './handlers/db'\nimport { registerDialogHandlers } from './handlers/dialog'\nimport { registerFsHandlers } from './handlers/fs'\nimport { registerPrettierHandlers } from './handlers/prettier'\nimport { registerSpacesHandlers } from './handlers/spaces'\nimport { registerSystemHandlers } from './handlers/system'\nimport { registerThemeHandlers } from './handlers/theme'\n\nexport function send(channel: Channel, payload?: unknown) {\n  BrowserWindow.getFocusedWindow()?.webContents.send(channel, payload)\n}\n\nexport function registerIPC() {\n  registerDialogHandlers()\n  registerDBHandlers()\n  registerSystemHandlers()\n  registerPrettierHandlers()\n  registerFsHandlers()\n  registerThemeHandlers()\n  registerSpacesHandlers()\n}\n"
  },
  {
    "path": "src/main/menu/main.ts",
    "content": "/* eslint-disable node/prefer-global/process */\nimport type { MenuConfig } from './utils'\nimport os from 'node:os'\nimport {\n  app,\n  BrowserWindow,\n  dialog,\n  type MenuItemConstructorOptions,\n  shell,\n} from 'electron'\nimport { repository } from '../../../package.json'\nimport i18n from '../i18n'\nimport { send } from '../ipc'\nimport { fetchUpdates } from '../updates'\nimport { createMenu, createPlatformMenuItems } from './utils'\n\nconst year = new Date().getFullYear()\nconst version = app.getVersion()\n\nconst isDev = process.env.NODE_ENV === 'development'\n\nfunction aboutApp() {\n  dialog.showMessageBox(BrowserWindow.getFocusedWindow()!, {\n    title: 'massCode',\n    message: 'massCode',\n    type: 'info',\n    detail: `\n      Version: ${version}\n      Electron: ${process.versions.electron}\n      Chrome: ${process.versions.chrome}\n      Node.js: ${process.versions.node}\n      V8: ${process.versions.v8}\n      OS: ${os.type()} ${os.arch()} ${os.release()}\n      ©2019-${year} Anton Reshetov <reshetov.art@gmail.com>\n    `,\n  })\n}\n\nconst appMenuItems: MenuConfig[] = [\n  {\n    id: 'about',\n    label: i18n.t('menu:app.about'),\n    platforms: ['darwin'],\n    click: () => aboutApp(),\n  },\n  {\n    id: 'update',\n    label: i18n.t('menu:app.update'),\n    click: async () => {\n      const latestVersion = await fetchUpdates()\n\n      if (latestVersion) {\n        const buttonId = dialog.showMessageBoxSync(\n          BrowserWindow.getFocusedWindow()!,\n          {\n            message: i18n.t('messages:update.available', {\n              newVersion: latestVersion,\n              oldVersion: version,\n            }),\n            buttons: [i18n.t('button.update.0'), i18n.t('button.update.1')],\n            defaultId: 0,\n            cancelId: 1,\n          },\n        )\n\n        if (buttonId === 0) {\n          shell.openExternal(`${repository}/releases`)\n        }\n      }\n      else {\n        dialog.showMessageBoxSync(BrowserWindow.getFocusedWindow()!, {\n          message: i18n.t('messages:update.noAvailable'),\n        })\n      }\n    },\n  },\n  {\n    type: 'separator',\n  },\n  {\n    id: 'preferences',\n    label: i18n.t('menu:app.preferences'),\n    accelerator: 'CommandOrControl+,',\n    click: () => send('main-menu:goto-preferences'),\n  },\n  {\n    type: 'separator' as any,\n    platforms: ['darwin'],\n  },\n  {\n    id: 'devtools',\n    label: i18n.t('menu:app.devtools'),\n    accelerator: 'CommandOrControl+.',\n    click: () => send('main-menu:goto-devtools'),\n  },\n  {\n    id: 'math-notebook',\n    label: i18n.t('menu:app.mathNotebook'),\n    accelerator: 'CommandOrControl+Shift+.',\n    click: () => send('main-menu:goto-math-notebook'),\n  },\n  {\n    type: 'separator' as any,\n  },\n  {\n    label: i18n.t('menu:app.hide'),\n    platforms: ['darwin'],\n    role: 'hide',\n  },\n  {\n    platforms: ['darwin'],\n    role: 'hideOthers',\n  },\n  {\n    platforms: ['darwin'],\n    role: 'unhide',\n  },\n  {\n    type: 'separator' as any,\n    platforms: ['darwin'],\n  },\n  {\n    label: i18n.t('menu:app.quit'),\n    platforms: ['darwin'],\n    role: 'quit',\n  },\n]\n\nconst helpMenuItems: MenuConfig[] = [\n  {\n    label: i18n.t('menu:app.about'),\n    click: () => aboutApp(),\n  },\n  {\n    label: i18n.t('menu:help.website'),\n    click: () => {\n      shell.openExternal('https://masscode.io')\n    },\n  },\n  {\n    label: i18n.t('menu:help.documentation'),\n    click: () => {\n      shell.openExternal('https://masscode.io/documentation')\n    },\n  },\n  {\n    label: i18n.t('menu:help.twitter'),\n    click: () => {\n      shell.openExternal('https://twitter.com/anton_reshetov')\n    },\n  },\n  {\n    type: 'separator',\n  },\n  {\n    label: i18n.t('menu:help.viewInGitHub'),\n    click: () => {\n      shell.openExternal('https://github.com/massCodeIO/massCode')\n    },\n  },\n  {\n    label: i18n.t('menu:help.changeLog'),\n    click: () => {\n      shell.openExternal('https://github.com/massCodeIO/massCode/releases')\n    },\n  },\n  {\n    label: i18n.t('menu:help.reportIssue'),\n    click: () => {\n      shell.openExternal(\n        'https://github.com/massCodeIO/massCode/issues/new/choose',\n      )\n    },\n  },\n  {\n    label: i18n.t('menu:help.giveStar'),\n    click: () => {\n      shell.openExternal('https://github.com/massCodeIO/massCode/stargazers')\n    },\n  },\n  {\n    type: 'separator',\n  },\n  {\n    label: i18n.t('menu:help.extension.vscode'),\n    click: () => {\n      shell.openExternal(\n        'https://marketplace.visualstudio.com/items?itemName=AntonReshetov.masscode-assistant',\n      )\n    },\n  },\n  // {\n  //   label: i18n.t('menu:help.extension.raycast'),\n  //   click: () => {\n  //     shell.openExternal('https://www.raycast.com/antonreshetov/masscode')\n  //   },\n  // },\n  {\n    type: 'separator',\n  },\n  {\n    label: i18n.t('menu:help.links.snippets'),\n    click: () => {\n      shell.openExternal('https://masscode.io/snippets')\n    },\n  },\n  {\n    type: 'separator',\n  },\n  {\n    label: i18n.t('menu:help.donate.openCollective'),\n    click: () => {\n      shell.openExternal('https://opencollective.com/masscode')\n    },\n  },\n  {\n    label: i18n.t('menu:help.donate.gumroad'),\n    click: () => {\n      shell.openExternal('https://antonreshetov.gumroad.com/l/masscode')\n    },\n  },\n  {\n    label: i18n.t('menu:help.donate.payPal'),\n    click: () => {\n      shell.openExternal('https://www.paypal.com/paypalme/antongithub')\n    },\n  },\n  {\n    type: 'separator',\n  },\n  {\n    label: i18n.t('menu:help.devTools'),\n    role: 'toggleDevTools',\n  },\n]\n\nif (isDev) {\n  helpMenuItems.push({\n    label: 'Reload',\n    role: 'reload',\n  })\n}\n\nconst fileMenuItems: MenuConfig[] = [\n  {\n    label: i18n.t('action.new.snippet'),\n    click: () => send('main-menu:new-snippet'),\n    accelerator: 'CommandOrControl+N',\n  },\n  {\n    label: i18n.t('action.new.fragment'),\n    click: () => send('main-menu:new-fragment'),\n    accelerator: 'CommandOrControl+T',\n  },\n  {\n    label: i18n.t('action.add.description'),\n    click: () => send('main-menu:add-description'),\n    accelerator: 'CommandOrControl+Shift+T',\n  },\n  {\n    type: 'separator',\n  },\n  {\n    label: i18n.t('action.new.folder'),\n    click: () => send('main-menu:new-folder'),\n    accelerator: 'CommandOrControl+Shift+N',\n  },\n]\n\nconst editMenuItems: MenuConfig[] = [\n  {\n    role: 'undo',\n  },\n  {\n    role: 'redo',\n  },\n  {\n    type: 'separator',\n  },\n  {\n    role: 'cut',\n  },\n  {\n    role: 'copy',\n  },\n  {\n    role: 'paste',\n  },\n  {\n    role: 'delete',\n  },\n  {\n    type: 'separator',\n  },\n  {\n    role: 'selectAll',\n  },\n  {\n    type: 'separator',\n  },\n  {\n    label: i18n.t('menu:edit.find'),\n    accelerator: 'CommandOrControl+F',\n    click: () => send('main-menu:find'),\n  },\n]\n\nconst editorMenuItems: MenuConfig[] = [\n  {\n    label: i18n.t('menu:editor.copy'),\n    click: () => send('main-menu:copy-snippet'),\n    accelerator: 'CommandOrControl+Shift+C',\n  },\n  {\n    label: i18n.t('menu:editor.format'),\n    accelerator: 'Shift+CommandOrControl+F',\n    click: () => send('main-menu:format'),\n  },\n  {\n    label: i18n.t('menu:editor.previewCode'),\n    click: () => send('main-menu:preview-code'),\n    accelerator: 'Alt+CommandOrControl+P',\n  },\n  {\n    label: i18n.t('menu:editor.previewJson'),\n    click: () => send('main-menu:preview-json'),\n    accelerator: 'Alt+CommandOrControl+J',\n  },\n  {\n    type: 'separator',\n  },\n  {\n    label: i18n.t('menu:editor.fontSizeIncrease'),\n    accelerator: 'CommandOrControl+=',\n    click: () => send('main-menu:font-size-increase'),\n  },\n  {\n    label: i18n.t('menu:editor.fontSizeDecrease'),\n    accelerator: 'CommandOrControl+-',\n    click: () => send('main-menu:font-size-decrease'),\n  },\n  {\n    label: i18n.t('menu:editor.fontSizeReset'),\n    accelerator: 'CommandOrControl+0',\n    click: () => send('main-menu:font-size-reset'),\n  },\n]\n\nconst viewMenuItems: MenuConfig[] = [\n  {\n    label: i18n.t('menu:view.showSidebar'),\n    click: () => send('main-menu:toggle-sidebar'),\n    accelerator: 'Alt+CommandOrControl+B',\n  },\n]\n\nconst markdownMenuItems: MenuConfig[] = [\n  {\n    label: i18n.t('menu:markdown.preview'),\n    click: () => send('main-menu:preview-markdown'),\n    accelerator: 'CommandOrControl+Shift+M',\n  },\n  {\n    label: i18n.t('menu:markdown.previewMindmap'),\n    click: () => send('main-menu:preview-mindmap'),\n    accelerator: 'CommandOrControl+Shift+I',\n  },\n  {\n    type: 'separator',\n  },\n  {\n    label: i18n.t('menu:markdown.presentationMode'),\n    click: () => send('main-menu:presentation-mode'),\n    accelerator: 'CommandOrControl+Shift+P',\n  },\n]\n\nconst menuItems: MenuItemConstructorOptions[] = [\n  {\n    label: i18n.t('menu:app.label'),\n    submenu: createPlatformMenuItems(appMenuItems),\n  },\n  {\n    label: 'File',\n    submenu: createPlatformMenuItems(fileMenuItems),\n  },\n  {\n    role: 'editMenu',\n    submenu: createPlatformMenuItems(editMenuItems),\n  },\n  {\n    label: i18n.t('menu:view.label'),\n    submenu: createPlatformMenuItems(viewMenuItems),\n  },\n  {\n    label: i18n.t('menu:editor.label'),\n    submenu: createPlatformMenuItems(editorMenuItems),\n  },\n  {\n    label: i18n.t('menu:markdown.label'),\n    submenu: createPlatformMenuItems(markdownMenuItems),\n  },\n  {\n    role: 'windowMenu',\n  },\n  {\n    label: i18n.t('menu:help.label'),\n    submenu: createPlatformMenuItems(helpMenuItems),\n  },\n]\n\nexport const mainMenu = createMenu(menuItems)\n"
  },
  {
    "path": "src/main/menu/utils/index.ts",
    "content": "/* eslint-disable node/prefer-global/process */\nimport type { MenuItemConstructorOptions } from 'electron'\nimport { Menu } from 'electron'\n\nexport type Platform = 'darwin' | 'win32'\n\nexport interface MenuConfig extends MenuItemConstructorOptions {\n  platforms?: Platform[]\n}\n\nexport function createPlatformMenuItems(\n  items: MenuConfig[],\n  currentPlatform: Platform = process.platform as Platform,\n): MenuItemConstructorOptions[] {\n  return items\n    .filter(\n      item => !item.platforms || item.platforms.includes(currentPlatform),\n    )\n    .map((item) => {\n      const { id, platforms, ...menuItem } = item\n      return menuItem as MenuItemConstructorOptions\n    })\n}\n\nexport function createMenu(template: MenuItemConstructorOptions[]) {\n  const menu = Menu.buildFromTemplate(template)\n  return menu\n}\n"
  },
  {
    "path": "src/main/preload.ts",
    "content": "import type {\n  AppStore,\n  MathNotebookStore,\n  PreferencesStore,\n} from './store/types'\nimport type { EventCallback } from './types'\nimport type { Channel } from './types/ipc'\nimport { contextBridge, ipcRenderer } from 'electron'\nimport i18n from './i18n'\nimport { store } from './store'\n\ncontextBridge.exposeInMainWorld('electron', {\n  ipc: {\n    on: (channel: Channel, cb: EventCallback) => ipcRenderer.on(channel, cb),\n    send: (channel: Channel, data: any, cb: EventCallback) => {\n      ipcRenderer.send(channel, data)\n      if (cb && typeof cb === 'function') {\n        ipcRenderer.on(channel, cb)\n      }\n    },\n    invoke: (channel: Channel, data: any) => ipcRenderer.invoke(channel, data),\n    removeListener: (channel: Channel, cb: EventCallback) =>\n      ipcRenderer.removeListener(channel, cb),\n    removeListeners: (channel: Channel) =>\n      ipcRenderer.removeAllListeners(channel),\n  },\n  db: {\n    query: (sql: string, params: any[] = []) =>\n      ipcRenderer.invoke('db-query', { sql, params }),\n  },\n  store: {\n    app: {\n      get: (name: keyof AppStore) => store.app.get(name),\n      set: <T extends keyof AppStore>(name: T, value: AppStore[T]) =>\n        store.app.set(name, value),\n      delete: (name: keyof AppStore) => store.app.delete(name),\n    },\n    preferences: {\n      get: (name: keyof PreferencesStore) => store.preferences.get(name),\n      set: <T extends keyof PreferencesStore>(\n        name: T,\n        value: PreferencesStore[T],\n      ) => store.preferences.set(name, value),\n      delete: (name: keyof PreferencesStore) => store.preferences.delete(name),\n    },\n    mathNotebook: {\n      get: (name: keyof MathNotebookStore) => store.mathNotebook.get(name),\n      set: <T extends keyof MathNotebookStore>(\n        name: T,\n        value: MathNotebookStore[T],\n      ) => store.mathNotebook.set(name, value),\n      delete: (name: keyof MathNotebookStore) =>\n        store.mathNotebook.delete(name),\n    },\n  },\n  i18n: {\n    t: (key: string, options?: any) => i18n.t(key, options),\n  },\n})\n"
  },
  {
    "path": "src/main/storage/contracts.ts",
    "content": "export interface TagRecord {\n  id: number\n  name: string\n}\n\nexport interface FolderRecord {\n  id: number\n  name: string\n  createdAt: number\n  updatedAt: number\n  icon: string | null\n  parentId: number | null\n  isOpen: number\n  defaultLanguage: string\n  orderIndex: number\n}\n\nexport interface FolderTreeRecord extends FolderRecord {\n  children: FolderTreeRecord[]\n}\n\nexport interface FolderCreateInput {\n  name: string\n  parentId?: number | null\n}\n\nexport interface FolderUpdateInput {\n  name?: string\n  icon?: string | null\n  defaultLanguage?: string\n  parentId?: number | null\n  isOpen?: number\n  orderIndex?: number\n}\n\nexport interface FolderUpdateResult {\n  invalidInput: boolean\n  notFound: boolean\n}\n\nexport interface FoldersStorage {\n  createFolder: (input: FolderCreateInput) => { id: number }\n  deleteFolder: (id: number) => { deleted: boolean }\n  getFolders: () => FolderRecord[]\n  getFoldersTree: () => FolderTreeRecord[]\n  updateFolder: (id: number, input: FolderUpdateInput) => FolderUpdateResult\n}\n\nexport interface SnippetTagRecord {\n  id: number\n  name: string\n}\n\nexport interface SnippetFolderRecord {\n  id: number\n  name: string\n}\n\nexport interface SnippetContentRecord {\n  id: number\n  label: string\n  language: string\n  value: string | null\n}\n\nexport interface SnippetRecord {\n  id: number\n  name: string\n  description: string | null\n  tags: SnippetTagRecord[]\n  folder: SnippetFolderRecord | null\n  contents: SnippetContentRecord[]\n  isFavorites: number\n  isDeleted: number\n  createdAt: number\n  updatedAt: number\n}\n\nexport interface SnippetsQueryInput {\n  search?: string\n  order?: 'ASC' | 'DESC'\n  folderId?: number\n  tagId?: number\n  isFavorites?: number\n  isDeleted?: number\n  isInbox?: number\n}\n\nexport interface SnippetCreateInput {\n  name: string\n  folderId?: number | null\n}\n\nexport interface SnippetUpdateInput {\n  name?: string\n  folderId?: number | null\n  description?: string | null\n  isDeleted?: number\n  isFavorites?: number\n}\n\nexport interface SnippetContentCreateInput {\n  label: string\n  value: string | null\n  language: string\n}\n\nexport interface SnippetContentUpdateInput {\n  label?: string\n  value?: string | null\n  language?: string\n}\n\nexport interface SnippetUpdateResult {\n  invalidInput: boolean\n  notFound: boolean\n}\n\nexport interface SnippetContentUpdateResult {\n  invalidInput: boolean\n  notFound: boolean\n  parentNotFound: boolean\n}\n\nexport interface SnippetTagRelationResult {\n  notFound: false\n  snippetFound: boolean\n  tagFound: boolean\n}\n\nexport interface SnippetTagDeleteRelationResult {\n  notFound: false\n  snippetFound: boolean\n  tagFound: boolean\n  relationFound: boolean\n}\n\nexport interface SnippetsCount {\n  total: number\n  trash: number\n}\n\nexport interface SnippetsStorage {\n  addTagToSnippet: (\n    snippetId: number,\n    tagId: number,\n  ) => SnippetTagRelationResult\n  createSnippet: (input: SnippetCreateInput) => { id: number }\n  createSnippetContent: (\n    snippetId: number,\n    input: SnippetContentCreateInput,\n  ) => { id: number }\n  deleteSnippet: (id: number) => { deleted: boolean }\n  deleteSnippetContent: (contentId: number) => { deleted: boolean }\n  deleteTagFromSnippet: (\n    snippetId: number,\n    tagId: number,\n  ) => SnippetTagDeleteRelationResult\n  emptyTrash: () => { deletedCount: number }\n  getSnippets: (query: SnippetsQueryInput) => SnippetRecord[]\n  getSnippetsCounts: () => SnippetsCount\n  updateSnippet: (id: number, input: SnippetUpdateInput) => SnippetUpdateResult\n  updateSnippetContent: (\n    snippetId: number,\n    contentId: number,\n    input: SnippetContentUpdateInput,\n  ) => SnippetContentUpdateResult\n}\n\nexport interface TagsStorage {\n  createTag: (name: string) => { id: number }\n  deleteTag: (id: number) => { deleted: boolean }\n  getTags: () => TagRecord[]\n}\n\nexport interface StorageProvider {\n  folders: FoldersStorage\n  snippets: SnippetsStorage\n  tags: TagsStorage\n}\n"
  },
  {
    "path": "src/main/storage/index.ts",
    "content": "import type { StorageProvider } from './contracts'\nimport { store } from '../store'\nimport {\n  createMarkdownStorageProvider,\n  startMarkdownWatcher,\n  stopMarkdownWatcher,\n} from './providers/markdown'\nimport { sqliteStorageProvider } from './providers/sqlite'\n\nconst markdownStorageProvider = createMarkdownStorageProvider()\nlet resolvedEngine: string | null = null\nlet resolvedProvider: StorageProvider | null = null\n\nfunction resolveProvider(engine: string): StorageProvider {\n  if (resolvedProvider && resolvedEngine === engine) {\n    return resolvedProvider\n  }\n\n  if (engine === 'markdown') {\n    startMarkdownWatcher()\n\n    resolvedEngine = engine\n    resolvedProvider = markdownStorageProvider\n\n    return resolvedProvider\n  }\n\n  stopMarkdownWatcher()\n\n  resolvedEngine = engine\n  resolvedProvider = sqliteStorageProvider\n\n  return resolvedProvider\n}\n\nexport function useStorage(): StorageProvider {\n  const engine = store.preferences.get('storage.engine') as string\n\n  return resolveProvider(engine)\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/index.ts",
    "content": "export {\n  migrateMarkdownToSqliteStorage,\n  migrateSqliteToMarkdownStorage,\n} from './migrations'\nexport { getMarkdownStorageErrorMessage, resetRuntimeCache } from './runtime'\nexport { createMarkdownStorageProvider } from './storages'\nexport { startMarkdownWatcher, stopMarkdownWatcher } from './watcher'\n"
  },
  {
    "path": "src/main/storage/providers/markdown/migrations.ts",
    "content": "import type { FolderRecord } from '../../contracts'\nimport path from 'node:path'\nimport fs from 'fs-extra'\nimport { clearDB, useDB } from '../../../db'\nimport {\n  assertNotReservedRootFolderName,\n  buildFolderPathMap,\n  buildSnippetTargetPath,\n  createDefaultState,\n  depthOfRelativePath,\n  ensureStateFile,\n  findFolderById,\n  getPaths,\n  getVaultPath,\n  INVALID_NAME_CHARS_RE,\n  loadSnippets,\n  type MarkdownSnippet,\n  type MarkdownState,\n  type MarkdownTagState,\n  META_DIR_NAME,\n  type Paths,\n  saveState,\n  setRuntimeCache,\n  type SqliteSnippetContentRow,\n  type SqliteSnippetRow,\n  type SqliteSnippetTagRow,\n  syncCounters,\n  syncFolderMetadataFiles,\n  syncRuntimeWithDisk,\n  throwStorageError,\n  validateEntryName,\n  WINDOWS_RESERVED_NAME_RE,\n  writeSnippetToFile,\n} from './runtime'\n\nfunction clearVaultForMigration(paths: Paths): void {\n  fs.ensureDirSync(paths.vaultPath)\n\n  const entries = fs.readdirSync(paths.vaultPath)\n  for (const entry of entries) {\n    if (entry === META_DIR_NAME) {\n      continue\n    }\n\n    fs.removeSync(path.join(paths.vaultPath, entry))\n  }\n\n  fs.ensureDirSync(paths.inboxDirPath)\n  fs.ensureDirSync(paths.trashDirPath)\n  fs.emptyDirSync(paths.inboxDirPath)\n  fs.emptyDirSync(paths.trashDirPath)\n}\n\nconst RESERVED_ROOT_FOLDER_NAMES = new Set(['.masscode', 'inbox', 'trash'])\n\nfunction removeControlChars(value: string): string {\n  return [...value].filter(char => char.charCodeAt(0) > 0x1F).join('')\n}\n\nfunction sanitizeEntryNameForMigration(\n  name: string | null | undefined,\n  kind: 'folder' | 'snippet',\n): string {\n  const fallback = kind === 'folder' ? 'Untitled folder' : 'Untitled snippet'\n  let candidate = typeof name === 'string' ? name.trim() : ''\n\n  candidate = removeControlChars(candidate)\n  candidate = candidate.replace(INVALID_NAME_CHARS_RE, ' ')\n  candidate = candidate.replace(/\\s+/g, ' ').trim()\n  candidate = candidate.replace(/[. ]+$/g, '').trim()\n\n  if (!candidate || candidate === '.' || candidate === '..') {\n    candidate = fallback\n  }\n\n  if (WINDOWS_RESERVED_NAME_RE.test(candidate)) {\n    candidate = `${candidate} 1`\n  }\n\n  try {\n    return validateEntryName(candidate, kind)\n  }\n  catch {\n    return fallback\n  }\n}\n\nfunction getUniqueFolderName(\n  baseName: string,\n  parentId: number | null,\n  occupiedSiblingNames: Set<string>,\n): string {\n  for (let suffix = 0; suffix <= 10_000; suffix += 1) {\n    const candidate = suffix === 0 ? baseName : `${baseName} ${suffix}`\n    const lowerCaseCandidate = candidate.toLowerCase()\n\n    if (\n      parentId === null\n      && RESERVED_ROOT_FOLDER_NAMES.has(lowerCaseCandidate)\n    ) {\n      continue\n    }\n\n    try {\n      const validated = validateEntryName(candidate, 'folder')\n      assertNotReservedRootFolderName(parentId, validated)\n      const key = validated.toLowerCase()\n\n      if (occupiedSiblingNames.has(key)) {\n        continue\n      }\n\n      occupiedSiblingNames.add(key)\n      return validated\n    }\n    catch {\n      continue\n    }\n  }\n\n  throwStorageError(\n    'NAME_CONFLICT',\n    `Cannot generate unique folder name for \"${baseName}\"`,\n  )\n}\n\nfunction normalizeFoldersForMigration(folders: FolderRecord[]): FolderRecord[] {\n  const knownFolderIds = new Set<number>(folders.map(folder => folder.id))\n  const occupiedNamesByParent = new Map<string, Set<string>>()\n\n  return folders.map((folder) => {\n    const parentId\n      = folder.parentId !== null\n        && folder.parentId !== folder.id\n        && knownFolderIds.has(folder.parentId)\n        ? folder.parentId\n        : null\n\n    const parentKey = String(parentId ?? 'root')\n    const occupiedSiblingNames\n      = occupiedNamesByParent.get(parentKey) || new Set<string>()\n    const normalizedBaseName = sanitizeEntryNameForMigration(\n      folder.name,\n      'folder',\n    )\n    const normalizedName = getUniqueFolderName(\n      normalizedBaseName,\n      parentId,\n      occupiedSiblingNames,\n    )\n\n    occupiedNamesByParent.set(parentKey, occupiedSiblingNames)\n\n    return {\n      ...folder,\n      name: normalizedName,\n      parentId,\n    }\n  })\n}\n\nfunction appendSnippetNameSuffix(name: string, suffix: number): string {\n  if (!name.toLowerCase().endsWith('.md')) {\n    return `${name} ${suffix}`\n  }\n\n  const nameWithoutExtension\n    = name.slice(0, -3).trimEnd() || 'Untitled snippet'\n  return `${nameWithoutExtension} ${suffix}.md`\n}\n\nfunction resolveUniqueSnippetPathForMigration(\n  state: MarkdownState,\n  snippet: MarkdownSnippet,\n  occupiedSnippetPaths: Set<string>,\n): string {\n  const normalizedBaseName = sanitizeEntryNameForMigration(\n    snippet.name,\n    'snippet',\n  )\n\n  for (let suffix = 0; suffix <= 10_000; suffix += 1) {\n    const candidateName\n      = suffix === 0\n        ? normalizedBaseName\n        : appendSnippetNameSuffix(normalizedBaseName, suffix)\n\n    try {\n      snippet.name = validateEntryName(candidateName, 'snippet')\n    }\n    catch {\n      continue\n    }\n\n    const candidatePath = buildSnippetTargetPath(state, snippet)\n    const candidatePathKey = candidatePath.toLowerCase()\n\n    if (occupiedSnippetPaths.has(candidatePathKey)) {\n      continue\n    }\n\n    occupiedSnippetPaths.add(candidatePathKey)\n    return candidatePath\n  }\n\n  throwStorageError(\n    'NAME_CONFLICT',\n    `Cannot generate unique snippet name for \"${snippet.name}\"`,\n  )\n}\n\nexport function migrateSqliteToMarkdownStorage(): {\n  folders: number\n  snippets: number\n  tags: number\n} {\n  const db = useDB()\n  const paths = getPaths(getVaultPath())\n  ensureStateFile(paths)\n\n  const folders = db\n    .prepare(\n      `\n        SELECT\n          id,\n          name,\n          createdAt,\n          updatedAt,\n          icon,\n          parentId,\n          isOpen,\n          defaultLanguage,\n          orderIndex\n        FROM folders\n      `,\n    )\n    .all() as FolderRecord[]\n\n  const tags = db\n    .prepare(\n      `\n        SELECT id, name, createdAt, updatedAt\n        FROM tags\n      `,\n    )\n    .all() as MarkdownTagState[]\n\n  const snippets = db\n    .prepare(\n      `\n        SELECT\n          id,\n          name,\n          description,\n          folderId,\n          isDeleted,\n          isFavorites,\n          createdAt,\n          updatedAt\n        FROM snippets\n      `,\n    )\n    .all() as SqliteSnippetRow[]\n\n  const snippetContents = db\n    .prepare(\n      `\n        SELECT\n          id,\n          snippetId,\n          label,\n          value,\n          language\n        FROM snippet_contents\n        ORDER BY id ASC\n      `,\n    )\n    .all() as SqliteSnippetContentRow[]\n\n  const snippetTags = db\n    .prepare(\n      `\n        SELECT snippetId, tagId\n        FROM snippet_tags\n      `,\n    )\n    .all() as SqliteSnippetTagRow[]\n\n  const contentBySnippet = new Map<number, SqliteSnippetContentRow[]>()\n  snippetContents.forEach((content) => {\n    const collection = contentBySnippet.get(content.snippetId) || []\n    collection.push(content)\n    contentBySnippet.set(content.snippetId, collection)\n  })\n\n  const tagsBySnippet = new Map<number, number[]>()\n  snippetTags.forEach((relation) => {\n    const collection = tagsBySnippet.get(relation.snippetId) || []\n    collection.push(relation.tagId)\n    tagsBySnippet.set(relation.snippetId, collection)\n  })\n\n  clearVaultForMigration(paths)\n\n  const state = createDefaultState()\n  state.folders = normalizeFoldersForMigration(folders)\n  state.tags = tags\n\n  const folderPathMap = buildFolderPathMap(state)\n  const orderedFolderPaths = [...folderPathMap.values()].sort((a, b) => {\n    const depthA = depthOfRelativePath(a)\n    const depthB = depthOfRelativePath(b)\n\n    if (depthA !== depthB) {\n      return depthA - depthB\n    }\n\n    return a.localeCompare(b)\n  })\n\n  orderedFolderPaths.forEach((folderPath) => {\n    fs.ensureDirSync(path.join(paths.vaultPath, folderPath))\n  })\n\n  syncFolderMetadataFiles(paths, state)\n\n  const occupiedSnippetPaths = new Set<string>()\n\n  snippets.forEach((snippet) => {\n    const folderId\n      = snippet.folderId !== null && findFolderById(state, snippet.folderId)\n        ? snippet.folderId\n        : null\n\n    const markdownSnippet: MarkdownSnippet = {\n      contents: (contentBySnippet.get(snippet.id) || []).map(\n        (content, index) => ({\n          id: content.id,\n          label: content.label || `Fragment ${index + 1}`,\n          language: content.language || 'plain_text',\n          value: content.value,\n        }),\n      ),\n      createdAt: snippet.createdAt,\n      description: snippet.description,\n      filePath: '',\n      folderId,\n      id: snippet.id,\n      isDeleted: snippet.isDeleted,\n      isFavorites: snippet.isFavorites,\n      name: sanitizeEntryNameForMigration(snippet.name, 'snippet'),\n      tags: tagsBySnippet.get(snippet.id) || [],\n      updatedAt: snippet.updatedAt,\n    }\n\n    const filePath = resolveUniqueSnippetPathForMigration(\n      state,\n      markdownSnippet,\n      occupiedSnippetPaths,\n    )\n\n    markdownSnippet.filePath = filePath\n    writeSnippetToFile(paths, markdownSnippet)\n\n    state.snippets.push({\n      filePath,\n      id: snippet.id,\n    })\n  })\n\n  const runtimeSnippets = loadSnippets(paths, state)\n  syncCounters(state, runtimeSnippets)\n  saveState(paths, state, { immediate: true })\n  setRuntimeCache(paths, state, runtimeSnippets)\n\n  return {\n    folders: state.folders.length,\n    snippets: state.snippets.length,\n    tags: state.tags.length,\n  }\n}\n\nexport function migrateMarkdownToSqliteStorage(): {\n  folders: number\n  snippets: number\n  tags: number\n} {\n  const paths = getPaths(getVaultPath())\n  const { state, snippets } = syncRuntimeWithDisk(paths)\n  const db = useDB()\n\n  clearDB()\n\n  const folderIds = new Set<number>(state.folders.map(folder => folder.id))\n  const tagIds = new Set<number>(state.tags.map(tag => tag.id))\n\n  const maxFolderId = state.folders.reduce(\n    (maxId, folder) => Math.max(maxId, folder.id),\n    0,\n  )\n  const maxTagId = state.tags.reduce(\n    (maxId, tag) => Math.max(maxId, tag.id),\n    0,\n  )\n  const maxSnippetId = snippets.reduce(\n    (maxId, snippet) => Math.max(maxId, snippet.id),\n    0,\n  )\n  const maxContentId = snippets.reduce((maxId, snippet) => {\n    const snippetMaxContentId = snippet.contents.reduce(\n      (contentMaxId, content) => Math.max(contentMaxId, content.id),\n      0,\n    )\n\n    return Math.max(maxId, snippetMaxContentId)\n  }, 0)\n\n  const insertFolder = db.prepare(`\n    INSERT INTO folders (\n      id,\n      name,\n      defaultLanguage,\n      parentId,\n      isOpen,\n      orderIndex,\n      icon,\n      createdAt,\n      updatedAt\n    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n  `)\n\n  const insertTag = db.prepare(`\n    INSERT INTO tags (\n      id,\n      name,\n      createdAt,\n      updatedAt\n    ) VALUES (?, ?, ?, ?)\n  `)\n\n  const insertSnippet = db.prepare(`\n    INSERT INTO snippets (\n      id,\n      name,\n      description,\n      folderId,\n      isDeleted,\n      isFavorites,\n      createdAt,\n      updatedAt\n    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n  `)\n\n  const insertSnippetContent = db.prepare(`\n    INSERT INTO snippet_contents (\n      id,\n      snippetId,\n      label,\n      value,\n      language\n    ) VALUES (?, ?, ?, ?, ?)\n  `)\n\n  const insertSnippetTag = db.prepare(`\n    INSERT INTO snippet_tags (\n      snippetId,\n      tagId\n    ) VALUES (?, ?)\n  `)\n\n  const insertSequence = db.prepare(`\n    INSERT INTO sqlite_sequence (name, seq) VALUES (?, ?)\n  `)\n\n  const transaction = db.transaction(() => {\n    state.folders.forEach((folder) => {\n      insertFolder.run(\n        folder.id,\n        folder.name,\n        folder.defaultLanguage || 'plain_text',\n        folder.parentId,\n        folder.isOpen,\n        folder.orderIndex,\n        folder.icon,\n        folder.createdAt || Date.now(),\n        folder.updatedAt || Date.now(),\n      )\n    })\n\n    state.tags.forEach((tag) => {\n      insertTag.run(\n        tag.id,\n        tag.name,\n        tag.createdAt || Date.now(),\n        tag.updatedAt || Date.now(),\n      )\n    })\n\n    snippets.forEach((snippet) => {\n      insertSnippet.run(\n        snippet.id,\n        snippet.name,\n        snippet.description,\n        snippet.folderId !== null && folderIds.has(snippet.folderId)\n          ? snippet.folderId\n          : null,\n        snippet.isDeleted ? 1 : 0,\n        snippet.isFavorites ? 1 : 0,\n        snippet.createdAt,\n        snippet.updatedAt,\n      )\n\n      snippet.contents.forEach((content) => {\n        insertSnippetContent.run(\n          content.id,\n          snippet.id,\n          content.label,\n          content.value,\n          content.language,\n        )\n      })\n\n      snippet.tags.forEach((tagId) => {\n        if (tagIds.has(tagId)) {\n          insertSnippetTag.run(snippet.id, tagId)\n        }\n      })\n    })\n\n    db.prepare(\n      `\n        DELETE FROM sqlite_sequence\n        WHERE name IN ('folders', 'tags', 'snippets', 'snippet_contents')\n      `,\n    ).run()\n\n    if (maxFolderId > 0) {\n      insertSequence.run('folders', maxFolderId)\n    }\n\n    if (maxTagId > 0) {\n      insertSequence.run('tags', maxTagId)\n    }\n\n    if (maxSnippetId > 0) {\n      insertSequence.run('snippets', maxSnippetId)\n    }\n\n    if (maxContentId > 0) {\n      insertSequence.run('snippet_contents', maxContentId)\n    }\n  })\n\n  transaction()\n\n  return {\n    folders: state.folders.length,\n    snippets: snippets.length,\n    tags: state.tags.length,\n  }\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/constants.ts",
    "content": "import type { MarkdownRuntimeCache } from './types'\n\nexport const META_DIR_NAME = '.masscode'\nexport const STATE_FILE_NAME = 'state.json'\nexport const INBOX_DIR_NAME = 'inbox'\nexport const TRASH_DIR_NAME = 'trash'\nexport const SPACES_DIR_NAME = '__spaces__'\nexport const META_FILE_NAME = '.meta.yaml'\nexport const SPACE_STATE_FILE_NAME = '.state.yaml'\nexport const LEGACY_FOLDER_META_FILE_NAME = '.masscode-folder.yml'\n\nexport const INBOX_RELATIVE_PATH = `${META_DIR_NAME}/${INBOX_DIR_NAME}`\nexport const TRASH_RELATIVE_PATH = `${META_DIR_NAME}/${TRASH_DIR_NAME}`\nexport const LEGACY_INBOX_RELATIVE_PATH = INBOX_DIR_NAME\nexport const LEGACY_TRASH_RELATIVE_PATH = TRASH_DIR_NAME\n\nexport const RESERVED_ROOT_NAMES = new Set([\n  INBOX_DIR_NAME,\n  TRASH_DIR_NAME,\n  SPACES_DIR_NAME,\n])\nexport const NEW_LINE_SPLIT_RE = /\\r?\\n/\nexport const SEARCH_DIACRITICS_RE = /[\\u0300-\\u036F]/g\nexport const SEARCH_WORD_RE = /[\\p{L}\\p{N}_]+/gu\nexport const STATE_WRITE_DEBOUNCE_MS = 100\nexport const INVALID_NAME_CHARS_RE = /[<>:\"/\\\\|?*]/g\nexport const INVALID_NAME_CHARS = new Set([\n  '<',\n  '>',\n  ':',\n  '\"',\n  '/',\n  '\\\\',\n  '|',\n  '?',\n  '*',\n])\nexport const WINDOWS_RESERVED_NAME_RE\n  = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\..*)?$/i\n\n// Shared mutable state (singleton for Electron main process)\n// Using an object so mutations are visible across all importers\nexport const runtimeRef: { cache: MarkdownRuntimeCache | null } = {\n  cache: null,\n}\nexport const pendingStateWriteByPath = new Map<string, string>()\nexport const stateContentCacheByPath = new Map<string, string>()\nexport const stateFlushTimerByPath = new Map<string, NodeJS.Timeout>()\n\nexport function peekRuntimeCache(): MarkdownRuntimeCache | null {\n  return runtimeRef.cache\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/index.ts",
    "content": "// Constants\nexport {\n  INBOX_DIR_NAME,\n  INVALID_NAME_CHARS_RE,\n  LEGACY_FOLDER_META_FILE_NAME,\n  META_DIR_NAME,\n  META_FILE_NAME,\n  peekRuntimeCache,\n  SPACE_STATE_FILE_NAME,\n  SPACES_DIR_NAME,\n  TRASH_DIR_NAME,\n  WINDOWS_RESERVED_NAME_RE,\n} from './constants'\n\n// Normalizers\nexport { normalizeFlag, normalizeFolderOrderIndices } from './normalizers'\n\n// Parser\nexport {\n  readYamlObjectFile,\n  writeFolderMetadataFile,\n  writeYamlObjectFile,\n} from './parser'\n\n// Paths\nexport {\n  buildFolderPathMap,\n  buildPathToFolderIdMap,\n  depthOfRelativePath,\n  findFolderById,\n  getFolderPathById,\n  getNextFolderOrder,\n  getPaths,\n  getVaultPath,\n  normalizeDirectoryPath,\n} from './paths'\n\n// Search\nexport { getSnippetIdsBySearchQuery } from './search'\n\n// Snippets\nexport {\n  buildSnippetTargetPath,\n  createSnippetRecord,\n  findSnippetByContentId,\n  findSnippetById,\n  getSnippetTargetDirectory,\n  loadSnippets,\n  persistSnippet,\n  writeSnippetToFile,\n} from './snippets'\n\n// Spaces\nexport {\n  ensureSpaceDirectory,\n  getSpaceDirPath,\n  getSpaceStatePath,\n} from './spaces'\n\n// Space State\nexport {\n  readSpaceState,\n  writeSpaceState,\n  writeSpaceStateImmediate,\n} from './spaceState'\n\n// State\nexport {\n  createDefaultState,\n  ensureStateFile,\n  loadState,\n  saveState,\n} from './state'\n\n// Sync & Cache\nexport {\n  getRuntimeCache,\n  resetRuntimeCache,\n  setRuntimeCache,\n  syncCounters,\n  syncFolderMetadataFiles,\n  syncRuntimeWithDisk,\n  syncSnippetFileWithDisk,\n  syncStateWithDisk,\n} from './sync'\n\n// Types\nexport type {\n  DirectoryEntriesCache,\n  MarkdownBodyFragment,\n  MarkdownErrorCode,\n  MarkdownFolderDiskEntry,\n  MarkdownFolderMetadataFile,\n  MarkdownFolderUIState,\n  MarkdownFrontmatterContent,\n  MarkdownRuntimeCache,\n  MarkdownSnippet,\n  MarkdownSnippetFrontmatter,\n  MarkdownSnippetIndexItem,\n  MarkdownState,\n  MarkdownStateFile,\n  MarkdownTagState,\n  Paths,\n  PersistSnippetOptions,\n  SaveStateOptions,\n  SqliteSnippetContentRow,\n  SqliteSnippetRow,\n  SqliteSnippetTagRow,\n} from './types'\n\n// Validation\nexport {\n  assertDirectoryNameAvailable,\n  assertNotReservedRootFolderName,\n  assertUniqueSiblingFolderName,\n  getMarkdownStorageErrorMessage,\n  resolveUniqueSiblingFolderName,\n  throwStorageError,\n  validateEntryName,\n} from './validation'\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/normalizers.ts",
    "content": "import type { FolderRecord } from '../../../contracts'\nimport type { MarkdownFolderUIState } from './types'\n\nexport function normalizeNumber(value: unknown, fallback = 0): number {\n  const parsed = Number(value)\n  return Number.isFinite(parsed) ? parsed : fallback\n}\n\nexport function normalizeFlag(value: unknown, fallback = 0): number {\n  return normalizeNumber(value, fallback) ? 1 : 0\n}\n\nexport function normalizePositiveInteger(value: unknown): number | null {\n  const parsed = Number(value)\n  if (!Number.isFinite(parsed)) {\n    return null\n  }\n\n  const integer = Math.trunc(parsed)\n  return integer > 0 ? integer : null\n}\n\nexport function normalizeNullableNumber(value: unknown): number | null {\n  if (value === null || value === undefined) {\n    return null\n  }\n\n  const parsed = Number(value)\n  return Number.isFinite(parsed) ? parsed : null\n}\n\nexport function normalizeErrorMessage(error: unknown): string {\n  if (error instanceof Error) {\n    return error.message\n  }\n\n  return 'Unexpected storage error'\n}\n\nexport function normalizeFolderUiState(\n  value: unknown,\n): Record<string, MarkdownFolderUIState> {\n  if (!value || typeof value !== 'object') {\n    return {}\n  }\n\n  const normalized: Record<string, MarkdownFolderUIState> = {}\n  for (const [rawFolderId, rawUiState] of Object.entries(value)) {\n    const folderId = normalizePositiveInteger(rawFolderId)\n    if (!folderId) {\n      continue\n    }\n\n    const isOpen\n      = rawUiState && typeof rawUiState === 'object'\n        ? normalizeFlag((rawUiState as { isOpen?: number }).isOpen)\n        : 0\n\n    normalized[String(folderId)] = { isOpen }\n  }\n\n  return normalized\n}\n\nexport function normalizeFolderOrderIndices(folders: FolderRecord[]): void {\n  const childrenByParent = new Map<number | null, FolderRecord[]>()\n\n  for (const folder of folders) {\n    const siblings = childrenByParent.get(folder.parentId)\n    if (siblings) {\n      siblings.push(folder)\n    }\n    else {\n      childrenByParent.set(folder.parentId, [folder])\n    }\n  }\n\n  for (const siblings of childrenByParent.values()) {\n    siblings.sort((a, b) => {\n      if (a.orderIndex !== b.orderIndex) {\n        return a.orderIndex - b.orderIndex\n      }\n      return a.id - b.id\n    })\n\n    for (let i = 0; i < siblings.length; i++) {\n      siblings[i].orderIndex = i\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/parser.ts",
    "content": "import type { FolderRecord } from '../../../contracts'\nimport type {\n  MarkdownBodyFragment,\n  MarkdownFolderMetadataFile,\n  MarkdownSnippet,\n  MarkdownSnippetFrontmatter,\n  Paths,\n} from './types'\nimport path from 'node:path'\nimport fs from 'fs-extra'\nimport yaml from 'js-yaml'\nimport {\n  LEGACY_FOLDER_META_FILE_NAME,\n  META_FILE_NAME,\n  NEW_LINE_SPLIT_RE,\n} from './constants'\n\nexport function readYamlObjectFile<T>(filePath: string): T | null {\n  if (!fs.pathExistsSync(filePath)) {\n    return null\n  }\n\n  try {\n    const source = fs.readFileSync(filePath, 'utf8')\n    const parsed = yaml.load(source)\n\n    if (!parsed || typeof parsed !== 'object') {\n      return null\n    }\n\n    return parsed as T\n  }\n  catch {\n    return null\n  }\n}\n\nexport function writeYamlObjectFile(\n  filePath: string,\n  data: Record<string, unknown>,\n): void {\n  const body = yaml\n    .dump(data, {\n      lineWidth: -1,\n      noRefs: true,\n      sortKeys: false,\n    })\n    .trim()\n\n  fs.ensureDirSync(path.dirname(filePath))\n  fs.writeFileSync(filePath, `${body}\\n`, 'utf8')\n}\n\nexport function readFolderMetadata(\n  paths: Paths,\n  folderRelativePath: string,\n): MarkdownFolderMetadataFile {\n  const folderAbsPath = path.join(paths.vaultPath, folderRelativePath)\n  const metaPath = path.join(folderAbsPath, META_FILE_NAME)\n  const legacyPath = path.join(folderAbsPath, LEGACY_FOLDER_META_FILE_NAME)\n\n  // Step 1: Try .meta.yaml\n  const metaData = readYamlObjectFile<MarkdownFolderMetadataFile>(metaPath)\n  if (metaData) {\n    return metaData\n  }\n\n  // Step 2: Try legacy .masscode-folder.yml\n  const legacyData = readYamlObjectFile<MarkdownFolderMetadataFile>(legacyPath)\n  if (!legacyData) {\n    return {}\n  }\n\n  // Step 3: Migrate legacy → .meta.yaml\n  const migrated: MarkdownFolderMetadataFile = { ...legacyData }\n  if (migrated.masscode_id !== undefined && migrated.masscode_id !== null) {\n    migrated.id = migrated.masscode_id\n    delete migrated.masscode_id\n  }\n\n  try {\n    writeYamlObjectFile(metaPath, migrated as Record<string, unknown>)\n    fs.removeSync(legacyPath)\n  }\n  catch {\n    // Migration failed — non-critical, we still have the data\n  }\n\n  return migrated\n}\n\nexport function serializeFolderMetadata(\n  folder: FolderRecord,\n): Record<string, unknown> {\n  return {\n    id: folder.id,\n    createdAt: folder.createdAt,\n    defaultLanguage: folder.defaultLanguage,\n    icon: folder.icon,\n    name: folder.name,\n    orderIndex: folder.orderIndex,\n    updatedAt: folder.updatedAt,\n  }\n}\n\nexport function writeFolderMetadataFile(\n  paths: Paths,\n  folderRelativePath: string,\n  folder: FolderRecord,\n): void {\n  const folderAbsPath = path.join(paths.vaultPath, folderRelativePath)\n  const metaPath = path.join(folderAbsPath, META_FILE_NAME)\n  const payload = serializeFolderMetadata(folder)\n\n  const body = yaml\n    .dump(payload, {\n      lineWidth: -1,\n      noRefs: true,\n      sortKeys: false,\n    })\n    .trim()\n\n  const nextContent = `${body}\\n`\n\n  if (fs.pathExistsSync(metaPath)) {\n    const currentContent = fs.readFileSync(metaPath, 'utf8')\n    if (currentContent === nextContent) {\n      return\n    }\n  }\n\n  fs.ensureDirSync(folderAbsPath)\n  fs.writeFileSync(metaPath, nextContent, 'utf8')\n\n  // Clean up legacy file if it exists\n  const legacyPath = path.join(folderAbsPath, LEGACY_FOLDER_META_FILE_NAME)\n  if (fs.pathExistsSync(legacyPath)) {\n    try {\n      fs.removeSync(legacyPath)\n    }\n    catch {\n      // Non-critical\n    }\n  }\n}\n\nexport function splitFrontmatter(source: string): {\n  body: string\n  frontmatter: MarkdownSnippetFrontmatter\n} {\n  const match = source.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n?([\\s\\S]*)$/)\n\n  if (!match) {\n    return { body: source, frontmatter: {} }\n  }\n\n  const parsed = yaml.load(match[1])\n\n  return {\n    body: match[2] || '',\n    frontmatter:\n      parsed && typeof parsed === 'object'\n        ? (parsed as MarkdownSnippetFrontmatter)\n        : {},\n  }\n}\n\nexport function parseBodyFragments(body: string): MarkdownBodyFragment[] {\n  const fragments: MarkdownBodyFragment[] = []\n  const lines = body.split(NEW_LINE_SPLIT_RE)\n\n  let lineIndex = 0\n  while (lineIndex < lines.length) {\n    const line = lines[lineIndex]\n\n    if (!line.startsWith('## Fragment:')) {\n      lineIndex += 1\n      continue\n    }\n\n    const label = line.slice('## Fragment:'.length).trim() || 'Fragment'\n    lineIndex += 1\n\n    if (lineIndex >= lines.length || !lines[lineIndex].startsWith('```')) {\n      continue\n    }\n\n    const language = lines[lineIndex].slice(3).trim() || 'plain_text'\n    lineIndex += 1\n\n    const valueLines: string[] = []\n    while (lineIndex < lines.length && !lines[lineIndex].startsWith('```')) {\n      valueLines.push(lines[lineIndex])\n      lineIndex += 1\n    }\n\n    if (lineIndex < lines.length && lines[lineIndex].startsWith('```')) {\n      lineIndex += 1\n    }\n\n    fragments.push({\n      label,\n      language,\n      value: valueLines.join('\\n'),\n    })\n  }\n\n  if (fragments.length === 0 && body.trim()) {\n    fragments.push({\n      label: 'Fragment 1',\n      language: 'plain_text',\n      value: body,\n    })\n  }\n\n  return fragments\n}\n\nexport function serializeSnippet(snippet: MarkdownSnippet): string {\n  const frontmatter: MarkdownSnippetFrontmatter = {\n    contents: snippet.contents.map(content => ({\n      id: content.id,\n      label: content.label,\n      language: content.language,\n    })),\n    createdAt: snippet.createdAt,\n    description: snippet.description,\n    folderId: snippet.folderId,\n    id: snippet.id,\n    isDeleted: snippet.isDeleted,\n    isFavorites: snippet.isFavorites,\n    name: snippet.name,\n    tags: snippet.tags,\n    updatedAt: snippet.updatedAt,\n  }\n\n  const frontmatterText = yaml\n    .dump(frontmatter, {\n      lineWidth: -1,\n      noRefs: true,\n      sortKeys: false,\n    })\n    .trim()\n\n  const body = snippet.contents\n    .map((content) => {\n      const label = content.label.replace(/\\r?\\n/g, ' ').trim() || 'Fragment'\n      const language = content.language.trim() || 'plain_text'\n      const value = content.value || ''\n\n      return `## Fragment: ${label}\\n\\`\\`\\`${language}\\n${value}\\n\\`\\`\\``\n    })\n    .join('\\n\\n')\n\n  if (!body) {\n    return `---\\n${frontmatterText}\\n---\\n`\n  }\n\n  return `---\\n${frontmatterText}\\n---\\n\\n${body}\\n`\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/paths.ts",
    "content": "import type { FolderRecord } from '../../../contracts'\nimport type { MarkdownState, Paths } from './types'\nimport path from 'node:path'\nimport { store } from '../../../../store'\nimport {\n  INBOX_DIR_NAME,\n  META_DIR_NAME,\n  runtimeRef,\n  TRASH_DIR_NAME,\n} from './constants'\n\nexport function getVaultPath(): string {\n  const configuredVaultPath = store.preferences.get('storage.vaultPath') as\n    | string\n    | null\n    | undefined\n\n  if (configuredVaultPath && configuredVaultPath.trim()) {\n    return configuredVaultPath\n  }\n\n  const storagePath = store.preferences.get('storagePath') as string\n  return path.join(storagePath, 'markdown-vault')\n}\n\nexport function getPaths(vaultPath: string): Paths {\n  const metaDirPath = path.join(vaultPath, META_DIR_NAME)\n\n  return {\n    inboxDirPath: path.join(metaDirPath, INBOX_DIR_NAME),\n    metaDirPath,\n    statePath: path.join(metaDirPath, 'state.json'),\n    trashDirPath: path.join(metaDirPath, TRASH_DIR_NAME),\n    vaultPath,\n  }\n}\n\nexport function toPosixPath(filePath: string): string {\n  return filePath.replaceAll('\\\\', '/')\n}\n\nexport function depthOfRelativePath(relativePath: string): number {\n  if (!relativePath) {\n    return 0\n  }\n\n  return relativePath.split('/').length\n}\n\nexport function normalizeDirectoryPath(relativePath: string): string {\n  if (!relativePath || relativePath === '.') {\n    return ''\n  }\n\n  return toPosixPath(relativePath)\n}\n\nexport function buildFolderPathMap(state: MarkdownState): Map<number, string> {\n  const folderById = new Map<number, FolderRecord>()\n  state.folders.forEach(folder => folderById.set(folder.id, folder))\n\n  const resolvedMap = new Map<number, string>()\n  const visiting = new Set<number>()\n\n  const resolveFolderPath = (folderId: number): string => {\n    const existingPath = resolvedMap.get(folderId)\n    if (existingPath !== undefined) {\n      return existingPath\n    }\n\n    const folder = folderById.get(folderId)\n    if (!folder) {\n      return ''\n    }\n\n    if (visiting.has(folderId)) {\n      return folder.name\n    }\n\n    visiting.add(folderId)\n\n    const parentPath\n      = folder.parentId !== null ? resolveFolderPath(folder.parentId) : ''\n    const currentPath = parentPath\n      ? path.posix.join(parentPath, folder.name)\n      : folder.name\n\n    resolvedMap.set(folderId, currentPath)\n    visiting.delete(folderId)\n\n    return currentPath\n  }\n\n  state.folders.forEach(folder => resolveFolderPath(folder.id))\n\n  return resolvedMap\n}\n\nexport function buildPathToFolderIdMap(\n  state: MarkdownState,\n): Map<string, number> {\n  const folderPathMap = buildFolderPathMap(state)\n  const pathMap = new Map<string, number>()\n\n  folderPathMap.forEach((folderPath, folderId) => {\n    pathMap.set(folderPath, folderId)\n  })\n\n  return pathMap\n}\n\nexport function findFolderById(\n  state: MarkdownState,\n  folderId: number,\n): FolderRecord | undefined {\n  const cache = runtimeRef.cache\n  const runtimeCache = cache?.state === state ? cache : null\n\n  if (runtimeCache) {\n    if (runtimeCache.folderById.size !== state.folders.length) {\n      runtimeCache.folderById = new Map(\n        state.folders.map(folder => [folder.id, folder]),\n      )\n    }\n\n    const folderFromIndex = runtimeCache.folderById.get(folderId)\n    if (folderFromIndex) {\n      return folderFromIndex\n    }\n  }\n\n  const folder = state.folders.find(item => item.id === folderId)\n  if (folder && runtimeCache) {\n    runtimeCache.folderById.set(folderId, folder)\n  }\n\n  return folder\n}\n\nexport function getFolderPathById(\n  state: MarkdownState,\n  folderId: number,\n): string | null {\n  const folderPathMap = buildFolderPathMap(state)\n  return folderPathMap.get(folderId) || null\n}\n\nexport function getFolderSiblings(\n  state: MarkdownState,\n  parentId: number | null,\n  excludeId?: number,\n): FolderRecord[] {\n  return state.folders.filter((folder) => {\n    if (folder.parentId !== parentId) {\n      return false\n    }\n\n    if (excludeId !== undefined && folder.id === excludeId) {\n      return false\n    }\n\n    return true\n  })\n}\n\nexport function getNextFolderOrder(\n  state: MarkdownState,\n  parentId: number | null,\n): number {\n  return (\n    state.folders\n      .filter(folder => folder.parentId === parentId)\n      .reduce((maxOrder, folder) => Math.max(maxOrder, folder.orderIndex), -1)\n      + 1\n  )\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/search.ts",
    "content": "import type { MarkdownSnippet } from './types'\nimport { runtimeRef, SEARCH_DIACRITICS_RE, SEARCH_WORD_RE } from './constants'\n\nfunction normalizeSearchValue(value: string | null | undefined): string {\n  if (!value) {\n    return ''\n  }\n\n  return value\n    .normalize('NFD')\n    .replace(SEARCH_DIACRITICS_RE, '')\n    .toLocaleLowerCase()\n}\n\nfunction splitSearchWords(value: string): string[] {\n  return value.match(SEARCH_WORD_RE) || []\n}\n\nfunction createWordTrigrams(value: string): string[] {\n  if (value.length < 3) {\n    return []\n  }\n\n  const trigrams: string[] = []\n  for (let index = 0; index <= value.length - 3; index += 1) {\n    trigrams.push(value.slice(index, index + 3))\n  }\n\n  return trigrams\n}\n\nfunction buildSearchTokens(normalizedText: string): string[] {\n  const uniqueTokens = new Set<string>()\n  const words = splitSearchWords(normalizedText)\n\n  words.forEach((word) => {\n    uniqueTokens.add(`w:${word}`)\n    createWordTrigrams(word).forEach(trigram =>\n      uniqueTokens.add(`g:${trigram}`),\n    )\n  })\n\n  return [...uniqueTokens]\n}\n\nfunction getSnippetSearchText(snippet: MarkdownSnippet): string {\n  return normalizeSearchValue(\n    [\n      snippet.name,\n      snippet.description || '',\n      ...snippet.contents.map(content => content.value || ''),\n    ].join('\\n'),\n  )\n}\n\nexport function buildSearchIndex(snippets: MarkdownSnippet[]): {\n  searchSnippetTextById: Map<number, string>\n  searchTokenToSnippetIds: Map<string, Set<number>>\n  searchTokensBySnippetId: Map<number, string[]>\n} {\n  const searchSnippetTextById = new Map<number, string>()\n  const searchTokenToSnippetIds = new Map<string, Set<number>>()\n  const searchTokensBySnippetId = new Map<number, string[]>()\n\n  snippets.forEach((snippet) => {\n    const searchText = getSnippetSearchText(snippet)\n    const tokens = buildSearchTokens(searchText)\n\n    searchSnippetTextById.set(snippet.id, searchText)\n    searchTokensBySnippetId.set(snippet.id, tokens)\n\n    tokens.forEach((token) => {\n      const tokenBucket\n        = searchTokenToSnippetIds.get(token) || new Set<number>()\n      tokenBucket.add(snippet.id)\n      searchTokenToSnippetIds.set(token, tokenBucket)\n    })\n  })\n\n  return {\n    searchSnippetTextById,\n    searchTokenToSnippetIds,\n    searchTokensBySnippetId,\n  }\n}\n\nexport function invalidateRuntimeSearchIndex(state: { version: number }): void {\n  const cache = runtimeRef.cache\n  if (!cache || cache.state !== state) {\n    return\n  }\n\n  cache.searchIndexDirty = true\n  cache.searchQueryCache.clear()\n}\n\nfunction ensureRuntimeSearchIndex(\n  snippets: MarkdownSnippet[],\n): typeof runtimeRef.cache {\n  const cache = runtimeRef.cache\n  const runtimeCache = cache?.snippets === snippets ? cache : null\n\n  if (!runtimeCache) {\n    return null\n  }\n\n  if (!runtimeCache.searchIndexDirty) {\n    return runtimeCache\n  }\n\n  const {\n    searchSnippetTextById,\n    searchTokenToSnippetIds,\n    searchTokensBySnippetId,\n  } = buildSearchIndex(snippets)\n\n  runtimeCache.searchSnippetTextById = searchSnippetTextById\n  runtimeCache.searchTokenToSnippetIds = searchTokenToSnippetIds\n  runtimeCache.searchTokensBySnippetId = searchTokensBySnippetId\n  runtimeCache.searchQueryCache.clear()\n  runtimeCache.searchIndexDirty = false\n\n  return runtimeCache\n}\n\nfunction intersectSnippetIdSets(\n  firstSet: Set<number>,\n  secondSet: Set<number>,\n): Set<number> {\n  const [smallSet, largeSet]\n    = firstSet.size <= secondSet.size\n      ? [firstSet, secondSet]\n      : [secondSet, firstSet]\n  const intersection = new Set<number>()\n\n  smallSet.forEach((id) => {\n    if (largeSet.has(id)) {\n      intersection.add(id)\n    }\n  })\n\n  return intersection\n}\n\nexport function getSnippetIdsBySearchQuery(\n  snippets: MarkdownSnippet[],\n  searchQuery: string,\n): Set<number> {\n  const normalizedSearchQuery = normalizeSearchValue(searchQuery).trim()\n  if (!normalizedSearchQuery) {\n    return new Set(snippets.map(snippet => snippet.id))\n  }\n\n  const runtimeCache = ensureRuntimeSearchIndex(snippets)\n  if (!runtimeCache) {\n    return new Set(\n      snippets\n        .filter((snippet) => {\n          const searchText = getSnippetSearchText(snippet)\n          return searchText.includes(normalizedSearchQuery)\n        })\n        .map(snippet => snippet.id),\n    )\n  }\n\n  const cachedResult = runtimeCache.searchQueryCache.get(normalizedSearchQuery)\n  if (cachedResult) {\n    return new Set(cachedResult)\n  }\n\n  const queryWords = splitSearchWords(normalizedSearchQuery)\n  let candidateSnippetIds: Set<number> | null = null\n\n  if (queryWords.length > 0) {\n    for (const word of queryWords) {\n      const wordTrigrams = createWordTrigrams(word)\n      let wordCandidates: Set<number> | null = null\n\n      for (const trigram of wordTrigrams) {\n        const trigramSnippetIds = runtimeCache.searchTokenToSnippetIds.get(\n          `g:${trigram}`,\n        )\n        if (!trigramSnippetIds || trigramSnippetIds.size === 0) {\n          wordCandidates = new Set()\n          break\n        }\n\n        wordCandidates\n          = wordCandidates === null\n            ? new Set(trigramSnippetIds)\n            : intersectSnippetIdSets(wordCandidates, trigramSnippetIds)\n\n        if (wordCandidates.size === 0) {\n          break\n        }\n      }\n\n      if (wordCandidates === null) {\n        const exactWordSnippetIds\n          = runtimeCache.searchTokenToSnippetIds.get(`w:${word}`)\n            || new Set<number>()\n        wordCandidates = exactWordSnippetIds\n      }\n\n      candidateSnippetIds\n        = candidateSnippetIds === null\n          ? wordCandidates\n          : intersectSnippetIdSets(candidateSnippetIds, wordCandidates)\n\n      if (candidateSnippetIds.size === 0) {\n        runtimeCache.searchQueryCache.set(normalizedSearchQuery, [])\n        return new Set()\n      }\n    }\n  }\n\n  const matchedSnippetIds: number[] = []\n  const snippetIdsToCheck\n    = candidateSnippetIds || new Set(snippets.map(snippet => snippet.id))\n\n  snippetIdsToCheck.forEach((snippetId) => {\n    const searchText = runtimeCache.searchSnippetTextById.get(snippetId) || ''\n    if (searchText.includes(normalizedSearchQuery)) {\n      matchedSnippetIds.push(snippetId)\n    }\n  })\n\n  runtimeCache.searchQueryCache.set(normalizedSearchQuery, matchedSnippetIds)\n  return new Set(matchedSnippetIds)\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/snippets.ts",
    "content": "import type { SnippetRecord } from '../../../contracts'\nimport type {\n  DirectoryEntriesCache,\n  MarkdownSnippet,\n  MarkdownSnippetIndexItem,\n  MarkdownState,\n  Paths,\n  PersistSnippetOptions,\n} from './types'\nimport path from 'node:path'\nimport fs from 'fs-extra'\nimport {\n  INBOX_DIR_NAME,\n  INBOX_RELATIVE_PATH,\n  LEGACY_INBOX_RELATIVE_PATH,\n  LEGACY_TRASH_RELATIVE_PATH,\n  META_DIR_NAME,\n  runtimeRef,\n  SPACES_DIR_NAME,\n  TRASH_DIR_NAME,\n  TRASH_RELATIVE_PATH,\n} from './constants'\nimport { normalizeNullableNumber, normalizeNumber } from './normalizers'\nimport {\n  parseBodyFragments,\n  serializeSnippet,\n  splitFrontmatter,\n} from './parser'\nimport {\n  buildPathToFolderIdMap,\n  findFolderById,\n  getFolderPathById,\n  normalizeDirectoryPath,\n  toPosixPath,\n} from './paths'\nimport { throwStorageError, toSnippetFileName } from './validation'\n\nexport function isInboxSnippetDirectory(directoryPath: string): boolean {\n  return (\n    directoryPath === ''\n    || directoryPath === INBOX_RELATIVE_PATH\n    || directoryPath === LEGACY_INBOX_RELATIVE_PATH\n  )\n}\n\nexport function isTrashSnippetDirectory(directoryPath: string): boolean {\n  return (\n    directoryPath === TRASH_RELATIVE_PATH\n    || directoryPath === LEGACY_TRASH_RELATIVE_PATH\n  )\n}\n\nexport function listMarkdownFiles(\n  rootPath: string,\n  currentPath = rootPath,\n): string[] {\n  if (!fs.pathExistsSync(currentPath)) {\n    return []\n  }\n\n  const entries = fs.readdirSync(currentPath, { withFileTypes: true })\n  const files: string[] = []\n\n  entries.forEach((entry) => {\n    const absolutePath = path.join(currentPath, entry.name)\n    const isHiddenEntry = entry.name.startsWith('.')\n\n    if (entry.isDirectory()) {\n      if (currentPath === rootPath && entry.name === SPACES_DIR_NAME) {\n        return\n      }\n\n      if (currentPath === rootPath && entry.name === META_DIR_NAME) {\n        const inboxPath = path.join(absolutePath, INBOX_DIR_NAME)\n        const trashPath = path.join(absolutePath, TRASH_DIR_NAME)\n\n        files.push(...listMarkdownFiles(rootPath, inboxPath))\n        files.push(...listMarkdownFiles(rootPath, trashPath))\n        return\n      }\n\n      if (isHiddenEntry) {\n        return\n      }\n\n      files.push(...listMarkdownFiles(rootPath, absolutePath))\n      return\n    }\n\n    if (entry.isFile() && !isHiddenEntry && entry.name.endsWith('.md')) {\n      const relativePath = path.relative(rootPath, absolutePath)\n      files.push(toPosixPath(relativePath))\n    }\n  })\n\n  return files\n}\n\nexport function readFrontmatterIdFromSnippetFile(\n  snippetPath: string,\n): number | null {\n  if (!fs.pathExistsSync(snippetPath)) {\n    return null\n  }\n\n  const source = fs.readFileSync(snippetPath, 'utf8')\n  const { frontmatter } = splitFrontmatter(source)\n  const id = normalizeNumber(frontmatter.id)\n\n  return id > 0 ? id : null\n}\n\nexport function readSnippetFromFile(\n  paths: Paths,\n  entry: MarkdownSnippetIndexItem,\n  pathToFolderIdMap: ReadonlyMap<string, number>,\n): MarkdownSnippet | null {\n  const snippetPath = path.join(paths.vaultPath, entry.filePath)\n\n  if (!fs.pathExistsSync(snippetPath)) {\n    return null\n  }\n\n  const source = fs.readFileSync(snippetPath, 'utf8')\n  const { body, frontmatter } = splitFrontmatter(source)\n  const fragments = parseBodyFragments(body)\n  const metaContents = Array.isArray(frontmatter.contents)\n    ? frontmatter.contents\n    : []\n\n  const contents = fragments.length\n    ? fragments.map((fragment, index) => {\n        const meta = metaContents[index]\n        const metaId = normalizeNumber(meta?.id)\n\n        return {\n          id: metaId > 0 ? metaId : index + 1,\n          label: fragment.label,\n          language: fragment.language,\n          value: fragment.value,\n        }\n      })\n    : metaContents.map((meta, index) => {\n        const metaId = normalizeNumber(meta.id)\n\n        return {\n          id: metaId > 0 ? metaId : index + 1,\n          label: meta.label || `Fragment ${index + 1}`,\n          language: meta.language || 'plain_text',\n          value: '',\n        }\n      })\n\n  const normalizedFileDirectory = normalizeDirectoryPath(\n    path.posix.dirname(entry.filePath),\n  )\n\n  let folderId = normalizeNullableNumber(frontmatter.folderId)\n  if (isInboxSnippetDirectory(normalizedFileDirectory)) {\n    folderId = null\n  }\n  else if (!isTrashSnippetDirectory(normalizedFileDirectory)) {\n    folderId = pathToFolderIdMap.get(normalizedFileDirectory) || null\n  }\n\n  const tags = Array.isArray(frontmatter.tags)\n    ? frontmatter.tags\n        .map(tagId => normalizeNumber(tagId))\n        .filter(tagId => tagId > 0)\n    : []\n\n  const inferredName = path.posix.basename(entry.filePath, '.md')\n\n  return {\n    contents,\n    createdAt: normalizeNumber(frontmatter.createdAt, Date.now()),\n    description:\n      typeof frontmatter.description === 'string'\n      || frontmatter.description === null\n        ? frontmatter.description\n        : null,\n    filePath: entry.filePath,\n    folderId,\n    id: entry.id,\n    isDeleted: isTrashSnippetDirectory(normalizedFileDirectory)\n      ? 1\n      : normalizeNumber(frontmatter.isDeleted),\n    isFavorites: normalizeNumber(frontmatter.isFavorites),\n    name:\n      typeof frontmatter.name === 'string' ? frontmatter.name : inferredName,\n    tags,\n    updatedAt: normalizeNumber(frontmatter.updatedAt, Date.now()),\n  }\n}\n\nexport function loadSnippets(\n  paths: Paths,\n  state: MarkdownState,\n): MarkdownSnippet[] {\n  const pathToFolderIdMap = buildPathToFolderIdMap(state)\n\n  return state.snippets\n    .map(item => readSnippetFromFile(paths, item, pathToFolderIdMap))\n    .filter((snippet): snippet is MarkdownSnippet => !!snippet)\n}\n\nexport function writeSnippetToFile(\n  paths: Paths,\n  snippet: MarkdownSnippet,\n): void {\n  const snippetPath = path.join(paths.vaultPath, snippet.filePath)\n  const nextContent = serializeSnippet(snippet)\n\n  fs.ensureDirSync(path.dirname(snippetPath))\n\n  if (fs.pathExistsSync(snippetPath)) {\n    const currentContent = fs.readFileSync(snippetPath, 'utf8')\n    if (currentContent === nextContent) {\n      return\n    }\n  }\n\n  fs.writeFileSync(snippetPath, nextContent, 'utf8')\n}\n\nfunction upsertSnippetIndex(\n  state: MarkdownState,\n  snippet: MarkdownSnippet,\n): void {\n  const index = state.snippets.findIndex(item => item.id === snippet.id)\n\n  if (index === -1) {\n    state.snippets.push({\n      filePath: snippet.filePath,\n      id: snippet.id,\n    })\n    return\n  }\n\n  state.snippets[index].filePath = snippet.filePath\n}\n\nexport function getSnippetTargetDirectory(\n  state: MarkdownState,\n  snippet: Pick<MarkdownSnippet, 'folderId' | 'isDeleted'>,\n): string {\n  if (snippet.isDeleted === 1) {\n    return TRASH_RELATIVE_PATH\n  }\n\n  if (snippet.folderId === null) {\n    return INBOX_RELATIVE_PATH\n  }\n\n  const folderPath = getFolderPathById(state, snippet.folderId)\n  return folderPath || INBOX_RELATIVE_PATH\n}\n\nexport function buildSnippetTargetPath(\n  state: MarkdownState,\n  snippet: MarkdownSnippet,\n): string {\n  const directory = getSnippetTargetDirectory(state, snippet)\n  const fileName = toSnippetFileName(snippet.name)\n\n  return directory ? path.posix.join(directory, fileName) : fileName\n}\n\nfunction getCachedDirectoryEntries(\n  directoryPath: string,\n  directoryEntriesCache?: DirectoryEntriesCache,\n): string[] {\n  if (!directoryEntriesCache) {\n    return fs.readdirSync(directoryPath)\n  }\n\n  const cachedEntries = directoryEntriesCache.get(directoryPath)\n  if (cachedEntries) {\n    return cachedEntries\n  }\n\n  const entries = fs.readdirSync(directoryPath)\n  directoryEntriesCache.set(directoryPath, [...entries])\n  return entries\n}\n\nfunction removeDirectoryEntryFromCache(\n  directoryPath: string,\n  fileName: string,\n  directoryEntriesCache?: DirectoryEntriesCache,\n): void {\n  if (!directoryEntriesCache) {\n    return\n  }\n\n  const entries = directoryEntriesCache.get(directoryPath)\n  if (!entries) {\n    return\n  }\n\n  const normalizedFileName = fileName.toLowerCase()\n  const nextEntries = entries.filter(\n    entry => entry.toLowerCase() !== normalizedFileName,\n  )\n\n  directoryEntriesCache.set(directoryPath, nextEntries)\n}\n\nfunction upsertDirectoryEntryInCache(\n  directoryPath: string,\n  fileName: string,\n  directoryEntriesCache?: DirectoryEntriesCache,\n): void {\n  if (!directoryEntriesCache) {\n    return\n  }\n\n  const entries\n    = directoryEntriesCache.get(directoryPath) || fs.readdirSync(directoryPath)\n  const normalizedFileName = fileName.toLowerCase()\n  const nextEntries = entries.filter(\n    entry => entry.toLowerCase() !== normalizedFileName,\n  )\n\n  nextEntries.push(fileName)\n  directoryEntriesCache.set(directoryPath, nextEntries)\n}\n\nfunction assertSnippetPathAvailable(\n  paths: Paths,\n  targetRelativePath: string,\n  excludeRelativePath?: string,\n  directoryEntriesCache?: DirectoryEntriesCache,\n): void {\n  const targetAbsolutePath = path.join(paths.vaultPath, targetRelativePath)\n  const targetDirectory = path.dirname(targetAbsolutePath)\n  const targetFileName = path.basename(targetAbsolutePath)\n  const excludeAbsolutePath = excludeRelativePath\n    ? path.join(paths.vaultPath, excludeRelativePath)\n    : null\n\n  fs.ensureDirSync(targetDirectory)\n\n  const entries = getCachedDirectoryEntries(\n    targetDirectory,\n    directoryEntriesCache,\n  )\n  for (const entry of entries) {\n    const entryAbsolutePath = path.join(targetDirectory, entry)\n\n    if (excludeAbsolutePath && entryAbsolutePath === excludeAbsolutePath) {\n      continue\n    }\n\n    if (entry.toLowerCase() === targetFileName.toLowerCase()) {\n      throwStorageError(\n        'NAME_CONFLICT',\n        'Snippet with this name already exists on this level',\n      )\n    }\n  }\n}\n\nfunction getUniqueSnippetPath(\n  paths: Paths,\n  targetRelativePath: string,\n  excludeRelativePath?: string,\n  directoryEntriesCache?: DirectoryEntriesCache,\n): string {\n  const targetAbsolutePath = path.join(paths.vaultPath, targetRelativePath)\n  const targetDirectory = path.dirname(targetAbsolutePath)\n  const targetFileName = path.basename(targetAbsolutePath)\n  const excludeAbsolutePath = excludeRelativePath\n    ? path.join(paths.vaultPath, excludeRelativePath)\n    : null\n\n  fs.ensureDirSync(targetDirectory)\n\n  const entries = getCachedDirectoryEntries(\n    targetDirectory,\n    directoryEntriesCache,\n  )\n  const hasCaseInsensitiveConflict = (candidateFileName: string): boolean => {\n    return entries.some((entry) => {\n      const entryAbsolutePath = path.join(targetDirectory, entry)\n\n      if (excludeAbsolutePath && entryAbsolutePath === excludeAbsolutePath) {\n        return false\n      }\n\n      return entry.toLowerCase() === candidateFileName.toLowerCase()\n    })\n  }\n\n  if (!hasCaseInsensitiveConflict(targetFileName)) {\n    return targetRelativePath\n  }\n\n  const extension = path.extname(targetFileName)\n  const baseName = extension\n    ? targetFileName.slice(0, -extension.length)\n    : targetFileName\n  const parentDirectory = normalizeDirectoryPath(\n    path.posix.dirname(targetRelativePath),\n  )\n\n  for (let suffix = 1; suffix <= 10_000; suffix += 1) {\n    const candidateFileName = `${baseName} ${suffix}${extension}`\n    if (!hasCaseInsensitiveConflict(candidateFileName)) {\n      return parentDirectory\n        ? path.posix.join(parentDirectory, candidateFileName)\n        : candidateFileName\n    }\n  }\n\n  throwStorageError(\n    'NAME_CONFLICT',\n    'Cannot generate unique snippet name in this directory',\n  )\n}\n\nexport function persistSnippet(\n  paths: Paths,\n  state: MarkdownState,\n  snippet: MarkdownSnippet,\n  previousFilePath?: string,\n  options?: PersistSnippetOptions,\n): void {\n  let targetPath = buildSnippetTargetPath(state, snippet)\n  const sourcePath = previousFilePath ?? snippet.filePath\n  const directoryEntriesCache = options?.directoryEntriesCache\n\n  if (options?.allowRenameOnConflict) {\n    targetPath = getUniqueSnippetPath(\n      paths,\n      targetPath,\n      sourcePath,\n      directoryEntriesCache,\n    )\n    snippet.name = path.posix.basename(targetPath, '.md')\n  }\n  else {\n    assertSnippetPathAvailable(\n      paths,\n      targetPath,\n      sourcePath,\n      directoryEntriesCache,\n    )\n  }\n\n  const sourceAbsolutePath = sourcePath\n    ? path.join(paths.vaultPath, sourcePath)\n    : null\n  const targetAbsolutePath = path.join(paths.vaultPath, targetPath)\n\n  if (\n    sourceAbsolutePath\n    && sourcePath\n    && sourcePath !== targetPath\n    && fs.pathExistsSync(sourceAbsolutePath)\n  ) {\n    fs.ensureDirSync(path.dirname(targetAbsolutePath))\n    fs.moveSync(sourceAbsolutePath, targetAbsolutePath, { overwrite: false })\n\n    removeDirectoryEntryFromCache(\n      path.dirname(sourceAbsolutePath),\n      path.basename(sourceAbsolutePath),\n      directoryEntriesCache,\n    )\n  }\n\n  snippet.filePath = targetPath\n  writeSnippetToFile(paths, snippet)\n  upsertDirectoryEntryInCache(\n    path.dirname(targetAbsolutePath),\n    path.basename(targetAbsolutePath),\n    directoryEntriesCache,\n  )\n  upsertSnippetIndex(state, snippet)\n}\n\nexport function createSnippetRecord(\n  snippet: MarkdownSnippet,\n  state: MarkdownState,\n): SnippetRecord {\n  const folder\n    = snippet.folderId !== null\n      ? findFolderById(state, snippet.folderId)\n      : undefined\n\n  const tags = snippet.tags\n    .map((tagId) => {\n      const tag = state.tags.find(item => item.id === tagId)\n\n      if (!tag) {\n        return null\n      }\n\n      return {\n        id: tag.id,\n        name: tag.name,\n      }\n    })\n    .filter((tag): tag is { id: number, name: string } => !!tag)\n\n  return {\n    contents: snippet.contents,\n    createdAt: snippet.createdAt,\n    description: snippet.description,\n    folder: folder\n      ? {\n          id: folder.id,\n          name: folder.name,\n        }\n      : null,\n    id: snippet.id,\n    isDeleted: snippet.isDeleted,\n    isFavorites: snippet.isFavorites,\n    name: snippet.name,\n    tags,\n    updatedAt: snippet.updatedAt,\n  }\n}\n\nexport function findSnippetById(\n  snippets: MarkdownSnippet[],\n  id: number,\n): MarkdownSnippet | undefined {\n  const cache = runtimeRef.cache\n  const runtimeCache = cache?.snippets === snippets ? cache : null\n\n  if (runtimeCache) {\n    if (runtimeCache.snippetById.size !== snippets.length) {\n      runtimeCache.snippetById = new Map(\n        snippets.map(snippet => [snippet.id, snippet]),\n      )\n    }\n\n    const snippetFromIndex = runtimeCache.snippetById.get(id)\n    if (snippetFromIndex) {\n      return snippetFromIndex\n    }\n  }\n\n  const snippet = snippets.find(item => item.id === id)\n  if (snippet && runtimeCache) {\n    runtimeCache.snippetById.set(id, snippet)\n  }\n\n  return snippet\n}\n\nexport function findSnippetByContentId(\n  snippets: MarkdownSnippet[],\n  contentId: number,\n): {\n  contentIndex: number\n  snippet: MarkdownSnippet\n} | null {\n  const cache = runtimeRef.cache\n  const runtimeCache = cache?.snippets === snippets ? cache : null\n\n  if (runtimeCache) {\n    const indexedOwner = runtimeCache.contentOwnerByContentId.get(contentId)\n    if (\n      indexedOwner\n      && indexedOwner.snippet.contents[indexedOwner.contentIndex]?.id === contentId\n    ) {\n      return indexedOwner\n    }\n  }\n\n  for (const snippet of snippets) {\n    const contentIndex = snippet.contents.findIndex(\n      content => content.id === contentId,\n    )\n\n    if (contentIndex !== -1) {\n      const ownedContent = {\n        contentIndex,\n        snippet,\n      }\n\n      if (runtimeCache) {\n        runtimeCache.contentOwnerByContentId.set(contentId, ownedContent)\n      }\n\n      return ownedContent\n    }\n  }\n\n  if (runtimeCache) {\n    runtimeCache.contentOwnerByContentId.delete(contentId)\n  }\n\n  return null\n}\n\nexport function getStateSnippetIndexByFilePath(\n  state: MarkdownState,\n  filePath: string,\n): number {\n  const normalizedFilePath = filePath.toLowerCase()\n\n  return state.snippets.findIndex(\n    item => item.filePath.toLowerCase() === normalizedFilePath,\n  )\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/spaceState.ts",
    "content": "import path from 'node:path'\nimport fs from 'fs-extra'\nimport yaml from 'js-yaml'\nimport {\n  pendingStateWriteByPath,\n  STATE_WRITE_DEBOUNCE_MS,\n  stateContentCacheByPath,\n  stateFlushTimerByPath,\n} from './constants'\n\nexport function readSpaceState<T>(statePath: string): T | null {\n  const pending = pendingStateWriteByPath.get(statePath)\n  if (pending !== undefined) {\n    try {\n      const parsed = yaml.load(pending)\n      return parsed && typeof parsed === 'object' ? (parsed as T) : null\n    }\n    catch {\n      return null\n    }\n  }\n\n  const cached = stateContentCacheByPath.get(statePath)\n  if (cached !== undefined) {\n    try {\n      const parsed = yaml.load(cached)\n      return parsed && typeof parsed === 'object' ? (parsed as T) : null\n    }\n    catch {\n      return null\n    }\n  }\n\n  if (!fs.pathExistsSync(statePath)) {\n    return null\n  }\n\n  try {\n    const content = fs.readFileSync(statePath, 'utf8')\n    stateContentCacheByPath.set(statePath, content)\n    const parsed = yaml.load(content)\n    return parsed && typeof parsed === 'object' ? (parsed as T) : null\n  }\n  catch {\n    return null\n  }\n}\n\nfunction serializeToYaml(data: unknown): string {\n  return yaml.dump(data, {\n    lineWidth: -1,\n    noRefs: true,\n    sortKeys: false,\n  })\n}\n\nfunction flushSpaceStateWrite(statePath: string): void {\n  const pendingContent = pendingStateWriteByPath.get(statePath)\n  if (pendingContent === undefined) {\n    return\n  }\n\n  const flushTimer = stateFlushTimerByPath.get(statePath)\n  if (flushTimer) {\n    clearTimeout(flushTimer)\n    stateFlushTimerByPath.delete(statePath)\n  }\n\n  const cached = stateContentCacheByPath.get(statePath)\n  if (cached !== pendingContent) {\n    fs.ensureDirSync(path.dirname(statePath))\n    fs.writeFileSync(statePath, pendingContent, 'utf8')\n  }\n\n  stateContentCacheByPath.set(statePath, pendingContent)\n  pendingStateWriteByPath.delete(statePath)\n}\n\nfunction scheduleSpaceStateFlush(statePath: string): void {\n  const existing = stateFlushTimerByPath.get(statePath)\n  if (existing) {\n    clearTimeout(existing)\n  }\n\n  const timer = setTimeout(\n    () => flushSpaceStateWrite(statePath),\n    STATE_WRITE_DEBOUNCE_MS,\n  )\n  stateFlushTimerByPath.set(statePath, timer)\n}\n\nexport function writeSpaceState(statePath: string, data: unknown): void {\n  const content = serializeToYaml(data)\n  pendingStateWriteByPath.set(statePath, content)\n  scheduleSpaceStateFlush(statePath)\n}\n\nexport function writeSpaceStateImmediate(\n  statePath: string,\n  data: unknown,\n): void {\n  const content = serializeToYaml(data)\n  pendingStateWriteByPath.set(statePath, content)\n  flushSpaceStateWrite(statePath)\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/spaces.ts",
    "content": "import path from 'node:path'\nimport fs from 'fs-extra'\nimport { SPACE_STATE_FILE_NAME, SPACES_DIR_NAME } from './constants'\n\nexport function getSpaceDirPath(vaultPath: string, spaceId: string): string {\n  return path.join(vaultPath, SPACES_DIR_NAME, spaceId)\n}\n\nexport function ensureSpaceDirectory(\n  vaultPath: string,\n  spaceId: string,\n): string {\n  const dirPath = getSpaceDirPath(vaultPath, spaceId)\n  fs.ensureDirSync(dirPath)\n  return dirPath\n}\n\nexport function getSpaceStatePath(vaultPath: string, spaceId: string): string {\n  return path.join(getSpaceDirPath(vaultPath, spaceId), SPACE_STATE_FILE_NAME)\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/state.ts",
    "content": "import type {\n  MarkdownFolderUIState,\n  MarkdownState,\n  MarkdownStateFile,\n  Paths,\n  SaveStateOptions,\n} from './types'\nimport path from 'node:path'\nimport process from 'node:process'\nimport fs from 'fs-extra'\nimport {\n  pendingStateWriteByPath,\n  STATE_WRITE_DEBOUNCE_MS,\n  stateContentCacheByPath,\n  stateFlushTimerByPath,\n} from './constants'\nimport { normalizeFlag, normalizeFolderUiState } from './normalizers'\nimport { invalidateRuntimeSearchIndex } from './search'\n\nlet stateWriteHooksRegistered = false\n\nexport function createDefaultState(): MarkdownState {\n  return {\n    counters: {\n      contentId: 0,\n      folderId: 0,\n      snippetId: 0,\n      tagId: 0,\n    },\n    folderUi: {},\n    folders: [],\n    snippets: [],\n    tags: [],\n    version: 2,\n  }\n}\n\nexport function syncFolderUiWithFolders(state: MarkdownState): void {\n  const nextFolderUi: Record<string, MarkdownFolderUIState> = {}\n\n  state.folders.forEach((folder) => {\n    const isOpen = normalizeFlag(folder.isOpen)\n\n    folder.isOpen = isOpen\n    nextFolderUi[String(folder.id)] = { isOpen }\n  })\n\n  state.folderUi = nextFolderUi\n}\n\nfunction getPersistedStateContent(statePath: string): string {\n  const cachedStateContent = stateContentCacheByPath.get(statePath)\n  if (cachedStateContent !== undefined) {\n    return cachedStateContent\n  }\n\n  const persistedStateContent = fs.pathExistsSync(statePath)\n    ? fs.readFileSync(statePath, 'utf8')\n    : ''\n\n  stateContentCacheByPath.set(statePath, persistedStateContent)\n  return persistedStateContent\n}\n\nfunction flushPendingStateWriteByPath(statePath: string): void {\n  const pendingStateContent = pendingStateWriteByPath.get(statePath)\n  if (pendingStateContent === undefined) {\n    return\n  }\n\n  const flushTimer = stateFlushTimerByPath.get(statePath)\n  if (flushTimer) {\n    clearTimeout(flushTimer)\n    stateFlushTimerByPath.delete(statePath)\n  }\n\n  const persistedStateContent = getPersistedStateContent(statePath)\n  if (persistedStateContent !== pendingStateContent) {\n    fs.ensureDirSync(path.dirname(statePath))\n    fs.writeFileSync(statePath, pendingStateContent, 'utf8')\n  }\n\n  stateContentCacheByPath.set(statePath, pendingStateContent)\n  pendingStateWriteByPath.delete(statePath)\n}\n\nfunction scheduleStateFlush(statePath: string): void {\n  const flushTimer = stateFlushTimerByPath.get(statePath)\n  if (flushTimer) {\n    clearTimeout(flushTimer)\n  }\n\n  const nextFlushTimer = setTimeout(\n    () => flushPendingStateWriteByPath(statePath),\n    STATE_WRITE_DEBOUNCE_MS,\n  )\n  stateFlushTimerByPath.set(statePath, nextFlushTimer)\n}\n\nexport function flushPendingStateWrite(paths: Paths): void {\n  flushPendingStateWriteByPath(paths.statePath)\n}\n\nexport function flushPendingStateWrites(): void {\n  const pathsWithPendingWrites = [...pendingStateWriteByPath.keys()]\n  pathsWithPendingWrites.forEach(statePath =>\n    flushPendingStateWriteByPath(statePath),\n  )\n}\n\nfunction registerStateWriteHooks(): void {\n  if (stateWriteHooksRegistered) {\n    return\n  }\n\n  stateWriteHooksRegistered = true\n  process.once('beforeExit', flushPendingStateWrites)\n  process.once('exit', flushPendingStateWrites)\n}\n\nexport function ensureStateFile(paths: Paths): void {\n  registerStateWriteHooks()\n\n  fs.ensureDirSync(paths.vaultPath)\n  fs.ensureDirSync(paths.metaDirPath)\n  fs.ensureDirSync(paths.inboxDirPath)\n  fs.ensureDirSync(paths.trashDirPath)\n\n  if (!fs.pathExistsSync(paths.statePath)) {\n    const defaultStateContent = `${JSON.stringify(createDefaultState(), null, 2)}\\n`\n    fs.writeFileSync(paths.statePath, defaultStateContent, 'utf8')\n    stateContentCacheByPath.set(paths.statePath, defaultStateContent)\n  }\n}\n\nexport function loadState(paths: Paths): MarkdownState {\n  ensureStateFile(paths)\n\n  const defaultState = createDefaultState()\n  const rawState = fs.readJSONSync(paths.statePath) as MarkdownStateFile\n  const legacyFolders = Array.isArray(rawState.folders) ? rawState.folders : []\n  const folderUi = normalizeFolderUiState(rawState.folderUi)\n\n  if (Object.keys(folderUi).length === 0 && legacyFolders.length) {\n    legacyFolders.forEach((folder) => {\n      folderUi[String(folder.id)] = {\n        isOpen: normalizeFlag(folder.isOpen),\n      }\n    })\n  }\n\n  return {\n    counters: {\n      ...defaultState.counters,\n      ...rawState.counters,\n    },\n    folderUi,\n    folders: legacyFolders,\n    snippets: Array.isArray(rawState.snippets) ? rawState.snippets : [],\n    tags: Array.isArray(rawState.tags) ? rawState.tags : [],\n    version:\n      typeof rawState.version === 'number'\n        ? rawState.version\n        : defaultState.version,\n  }\n}\n\nexport function saveState(\n  paths: Paths,\n  state: MarkdownState,\n  options?: SaveStateOptions,\n): void {\n  syncFolderUiWithFolders(state)\n  invalidateRuntimeSearchIndex(state)\n\n  const nextVersion = Math.max(state.version, 2)\n  state.version = nextVersion\n\n  const persistedState: MarkdownStateFile = {\n    counters: state.counters,\n    folderUi: state.folderUi,\n    snippets: state.snippets,\n    tags: state.tags,\n    version: nextVersion,\n  }\n\n  const nextContent = `${JSON.stringify(persistedState, null, 2)}\\n`\n  const statePath = paths.statePath\n  const pendingContent = pendingStateWriteByPath.get(statePath)\n  if (pendingContent === nextContent) {\n    return\n  }\n\n  const persistedContent = getPersistedStateContent(statePath)\n  if (persistedContent === nextContent && pendingContent === undefined) {\n    return\n  }\n\n  pendingStateWriteByPath.set(statePath, nextContent)\n\n  if (options?.immediate) {\n    flushPendingStateWrite(paths)\n    return\n  }\n\n  scheduleStateFlush(statePath)\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/sync.ts",
    "content": "import type { FolderRecord } from '../../../contracts'\nimport type {\n  MarkdownFolderDiskEntry,\n  MarkdownRuntimeCache,\n  MarkdownSnippet,\n  MarkdownState,\n  Paths,\n} from './types'\nimport path from 'node:path'\nimport fs from 'fs-extra'\nimport {\n  INBOX_DIR_NAME,\n  META_DIR_NAME,\n  runtimeRef,\n  SPACES_DIR_NAME,\n  TRASH_DIR_NAME,\n} from './constants'\nimport {\n  normalizeFlag,\n  normalizeFolderOrderIndices,\n  normalizeNumber,\n  normalizePositiveInteger,\n} from './normalizers'\nimport { readFolderMetadata, writeFolderMetadataFile } from './parser'\nimport {\n  buildFolderPathMap,\n  buildPathToFolderIdMap,\n  depthOfRelativePath,\n  findFolderById,\n  normalizeDirectoryPath,\n  toPosixPath,\n} from './paths'\nimport { buildSearchIndex } from './search'\nimport {\n  getStateSnippetIndexByFilePath,\n  isInboxSnippetDirectory,\n  isTrashSnippetDirectory,\n  listMarkdownFiles,\n  loadSnippets,\n  readFrontmatterIdFromSnippetFile,\n  readSnippetFromFile,\n} from './snippets'\nimport {\n  flushPendingStateWrite,\n  flushPendingStateWrites,\n  loadState,\n  saveState,\n  syncFolderUiWithFolders,\n} from './state'\n\nfunction isTechnicalRootFolder(name: string): boolean {\n  return (\n    name === META_DIR_NAME\n    || name === INBOX_DIR_NAME\n    || name === TRASH_DIR_NAME\n    || name === SPACES_DIR_NAME\n  )\n}\n\nexport function listUserFolders(\n  paths: Paths,\n  currentPath = paths.vaultPath,\n): MarkdownFolderDiskEntry[] {\n  if (!fs.pathExistsSync(currentPath)) {\n    return []\n  }\n\n  const entries = fs.readdirSync(currentPath, { withFileTypes: true })\n  const folders: MarkdownFolderDiskEntry[] = []\n\n  entries.forEach((entry) => {\n    if (!entry.isDirectory()) {\n      return\n    }\n\n    if (currentPath === paths.vaultPath && isTechnicalRootFolder(entry.name)) {\n      return\n    }\n\n    const absolutePath = path.join(currentPath, entry.name)\n    const relativePath = toPosixPath(\n      path.relative(paths.vaultPath, absolutePath),\n    )\n\n    folders.push({\n      metadata: readFolderMetadata(paths, relativePath),\n      path: relativePath,\n    })\n    folders.push(...listUserFolders(paths, absolutePath))\n  })\n\n  return folders\n}\n\nfunction syncFoldersWithDisk(paths: Paths, state: MarkdownState): void {\n  const diskFolders = listUserFolders(paths)\n  const oldFoldersById = new Map<number, FolderRecord>(\n    state.folders.map(folder => [folder.id, folder]),\n  )\n  const oldFolderPathMap = buildFolderPathMap(state)\n  const oldFolderIdByPath = new Map<string, number>()\n  oldFolderPathMap.forEach((folderPath, folderId) => {\n    oldFolderIdByPath.set(folderPath, folderId)\n  })\n\n  const orderedDiskFolders = [...diskFolders].sort((a, b) => {\n    const depthA = depthOfRelativePath(a.path)\n    const depthB = depthOfRelativePath(b.path)\n\n    if (depthA !== depthB) {\n      return depthA - depthB\n    }\n\n    return a.path.localeCompare(b.path)\n  })\n\n  const nextFoldersState: FolderRecord[] = []\n  const pathToFolderId = new Map<string, number>()\n  const usedFolderIds = new Set<number>()\n  let nextFolderId = Math.max(\n    state.counters.folderId,\n    ...state.folders.map(folder => folder.id),\n  )\n\n  for (const diskFolder of orderedDiskFolders) {\n    const metadata = diskFolder.metadata\n    const folderPath = diskFolder.path\n    const parentPath = normalizeDirectoryPath(path.posix.dirname(folderPath))\n    const parentId = parentPath ? pathToFolderId.get(parentPath) || null : null\n\n    const metadataFolderId = normalizePositiveInteger(\n      metadata.id ?? metadata.masscode_id,\n    )\n    const pathFolderId = oldFolderIdByPath.get(folderPath) || null\n\n    let folderId\n      = metadataFolderId && !usedFolderIds.has(metadataFolderId)\n        ? metadataFolderId\n        : null\n\n    if (!folderId && pathFolderId && !usedFolderIds.has(pathFolderId)) {\n      folderId = pathFolderId\n    }\n\n    if (!folderId) {\n      nextFolderId += 1\n      folderId = nextFolderId\n    }\n\n    usedFolderIds.add(folderId)\n    pathToFolderId.set(folderPath, folderId)\n\n    const previousFolder = oldFoldersById.get(folderId)\n    const now = Date.now()\n    const createdAt = normalizeNumber(\n      metadata.createdAt,\n      previousFolder?.createdAt ?? now,\n    )\n    const updatedAt = normalizeNumber(\n      metadata.updatedAt,\n      previousFolder?.updatedAt ?? createdAt,\n    )\n    const defaultLanguage\n      = typeof metadata.defaultLanguage === 'string'\n        && metadata.defaultLanguage.trim()\n        ? metadata.defaultLanguage\n        : previousFolder?.defaultLanguage || 'plain_text'\n    const icon\n      = metadata.icon === null\n        ? null\n        : typeof metadata.icon === 'string'\n          ? metadata.icon\n          : (previousFolder?.icon ?? null)\n    const fallbackOrderIndex\n      = nextFoldersState\n        .filter(folder => folder.parentId === parentId)\n        .reduce(\n          (maxOrder, folder) => Math.max(maxOrder, folder.orderIndex),\n          -1,\n        ) + 1\n    const orderIndex = Math.max(\n      0,\n      Math.trunc(\n        normalizeNumber(\n          metadata.orderIndex,\n          previousFolder?.orderIndex ?? fallbackOrderIndex,\n        ),\n      ),\n    )\n\n    nextFoldersState.push({\n      createdAt,\n      defaultLanguage,\n      icon,\n      id: folderId,\n      isOpen: normalizeFlag(\n        state.folderUi[String(folderId)]?.isOpen,\n        previousFolder?.isOpen ?? 0,\n      ),\n      name: path.posix.basename(folderPath),\n      orderIndex,\n      parentId,\n      updatedAt,\n    })\n  }\n\n  state.folders = nextFoldersState\n  state.counters.folderId = Math.max(state.counters.folderId, nextFolderId)\n  normalizeFolderOrderIndices(state.folders)\n  syncFolderUiWithFolders(state)\n}\n\nexport function syncFolderMetadataFiles(\n  paths: Paths,\n  state: MarkdownState,\n): void {\n  const folderPathMap = buildFolderPathMap(state)\n\n  folderPathMap.forEach((folderPath, folderId) => {\n    const folder = findFolderById(state, folderId)\n    if (!folder) {\n      return\n    }\n\n    writeFolderMetadataFile(paths, folderPath, folder)\n  })\n}\n\nexport function syncCounters(\n  state: MarkdownState,\n  snippets: MarkdownSnippet[],\n): void {\n  const maxFolderId = state.folders.reduce(\n    (maxId, folder) => Math.max(maxId, folder.id),\n    0,\n  )\n  const maxTagId = state.tags.reduce(\n    (maxId, tag) => Math.max(maxId, tag.id),\n    0,\n  )\n  const maxSnippetId = state.snippets.reduce(\n    (maxId, snippet) => Math.max(maxId, snippet.id),\n    0,\n  )\n  const maxContentId = snippets.reduce((maxId, snippet) => {\n    const snippetMaxContentId = snippet.contents.reduce(\n      (contentMaxId, content) => Math.max(contentMaxId, content.id),\n      0,\n    )\n\n    return Math.max(maxId, snippetMaxContentId)\n  }, 0)\n\n  state.counters.folderId = Math.max(state.counters.folderId, maxFolderId)\n  state.counters.tagId = Math.max(state.counters.tagId, maxTagId)\n  state.counters.snippetId = Math.max(state.counters.snippetId, maxSnippetId)\n  state.counters.contentId = Math.max(state.counters.contentId, maxContentId)\n}\n\nexport function syncStateWithDisk(paths: Paths): MarkdownState {\n  flushPendingStateWrite(paths)\n\n  const state = loadState(paths)\n  syncFoldersWithDisk(paths, state)\n\n  const relativeSnippetFiles = listMarkdownFiles(paths.vaultPath)\n  const fileSet = new Set(relativeSnippetFiles)\n  const existingIdSet = new Set<number>(state.snippets.map(item => item.id))\n\n  state.snippets = state.snippets.filter(item => fileSet.has(item.filePath))\n\n  relativeSnippetFiles.forEach((filePath) => {\n    const knownSnippet = state.snippets.find(\n      item => item.filePath === filePath,\n    )\n    if (knownSnippet) {\n      return\n    }\n\n    const snippetAbsolutePath = path.join(paths.vaultPath, filePath)\n    let snippetId = readFrontmatterIdFromSnippetFile(snippetAbsolutePath)\n\n    if (!snippetId || existingIdSet.has(snippetId)) {\n      snippetId = state.counters.snippetId + 1\n      state.counters.snippetId = snippetId\n    }\n\n    existingIdSet.add(snippetId)\n    state.snippets.push({ filePath, id: snippetId })\n  })\n\n  const snippets = loadSnippets(paths, state)\n  syncCounters(state, snippets)\n  syncFolderMetadataFiles(paths, state)\n  saveState(paths, state, { immediate: true })\n\n  return state\n}\n\nexport function setRuntimeCache(\n  paths: Paths,\n  state: MarkdownState,\n  snippets: MarkdownSnippet[],\n): MarkdownRuntimeCache {\n  const folderById = new Map<number, FolderRecord>()\n  state.folders.forEach(folder => folderById.set(folder.id, folder))\n\n  const snippetById = new Map<number, MarkdownSnippet>()\n  const contentOwnerByContentId = new Map<\n    number,\n    {\n      contentIndex: number\n      snippet: MarkdownSnippet\n    }\n  >()\n\n  snippets.forEach((snippet) => {\n    snippetById.set(snippet.id, snippet)\n\n    snippet.contents.forEach((content, contentIndex) => {\n      contentOwnerByContentId.set(content.id, {\n        contentIndex,\n        snippet,\n      })\n    })\n  })\n\n  const {\n    searchSnippetTextById,\n    searchTokenToSnippetIds,\n    searchTokensBySnippetId,\n  } = buildSearchIndex(snippets)\n\n  runtimeRef.cache = {\n    contentOwnerByContentId,\n    folderById,\n    paths,\n    searchIndexDirty: false,\n    searchQueryCache: new Map(),\n    searchSnippetTextById,\n    searchTokenToSnippetIds,\n    searchTokensBySnippetId,\n    snippetById,\n    snippets,\n    state,\n  }\n\n  return runtimeRef.cache\n}\n\nexport function resetRuntimeCache(): void {\n  flushPendingStateWrites()\n  runtimeRef.cache = null\n}\n\nexport function syncRuntimeWithDisk(paths: Paths): MarkdownRuntimeCache {\n  const state = syncStateWithDisk(paths)\n  const snippets = loadSnippets(paths, state)\n\n  return setRuntimeCache(paths, state, snippets)\n}\n\nexport function getRuntimeCache(paths: Paths): MarkdownRuntimeCache {\n  if (\n    !runtimeRef.cache\n    || runtimeRef.cache.paths.vaultPath !== paths.vaultPath\n  ) {\n    return syncRuntimeWithDisk(paths)\n  }\n\n  return runtimeRef.cache\n}\n\nexport function syncSnippetFileWithDisk(\n  paths: Paths,\n  changedFilePath: string,\n): MarkdownRuntimeCache | null {\n  if (\n    !runtimeRef.cache\n    || runtimeRef.cache.paths.vaultPath !== paths.vaultPath\n  ) {\n    return null\n  }\n\n  const normalizedFilePath = toPosixPath(changedFilePath).trim()\n  if (\n    !normalizedFilePath\n    || path.posix.extname(normalizedFilePath).toLowerCase() !== '.md'\n  ) {\n    return null\n  }\n\n  const state = runtimeRef.cache.state\n  const snippets = runtimeRef.cache.snippets\n  const snippetAbsolutePath = path.join(paths.vaultPath, normalizedFilePath)\n  const normalizedFileDirectory = normalizeDirectoryPath(\n    path.posix.dirname(normalizedFilePath),\n  )\n  const pathToFolderIdMap = buildPathToFolderIdMap(state)\n\n  if (\n    !isInboxSnippetDirectory(normalizedFileDirectory)\n    && !isTrashSnippetDirectory(normalizedFileDirectory)\n    && normalizedFileDirectory\n    && !pathToFolderIdMap.has(normalizedFileDirectory)\n  ) {\n    return null\n  }\n\n  const snippetIndexInState = getStateSnippetIndexByFilePath(\n    state,\n    normalizedFilePath,\n  )\n  const snippetExistsOnDisk = fs.pathExistsSync(snippetAbsolutePath)\n\n  if (!snippetExistsOnDisk) {\n    if (snippetIndexInState === -1) {\n      return runtimeRef.cache\n    }\n\n    const removedSnippetId = state.snippets[snippetIndexInState].id\n    state.snippets.splice(snippetIndexInState, 1)\n\n    const snippetIndexInRuntime = snippets.findIndex(\n      snippet => snippet.id === removedSnippetId,\n    )\n    if (snippetIndexInRuntime !== -1) {\n      snippets.splice(snippetIndexInRuntime, 1)\n    }\n\n    saveState(paths, state)\n    return setRuntimeCache(paths, state, snippets)\n  }\n\n  let snippetIndexItem\n    = snippetIndexInState !== -1 ? state.snippets[snippetIndexInState] : null\n\n  if (!snippetIndexItem) {\n    const existingSnippetIds = new Set<number>(\n      state.snippets.map(item => item.id),\n    )\n    let snippetId = readFrontmatterIdFromSnippetFile(snippetAbsolutePath)\n\n    if (!snippetId || existingSnippetIds.has(snippetId)) {\n      snippetId = state.counters.snippetId + 1\n      state.counters.snippetId = snippetId\n    }\n\n    snippetIndexItem = {\n      filePath: normalizedFilePath,\n      id: snippetId,\n    }\n    state.snippets.push(snippetIndexItem)\n  }\n  else {\n    snippetIndexItem.filePath = normalizedFilePath\n  }\n\n  const syncedSnippet = readSnippetFromFile(\n    paths,\n    snippetIndexItem,\n    pathToFolderIdMap,\n  )\n\n  if (!syncedSnippet) {\n    return null\n  }\n\n  const snippetIndexInRuntime = snippets.findIndex(\n    snippet => snippet.id === syncedSnippet.id,\n  )\n  if (snippetIndexInRuntime === -1) {\n    snippets.push(syncedSnippet)\n  }\n  else {\n    snippets[snippetIndexInRuntime] = syncedSnippet\n  }\n\n  const maxSnippetContentId = syncedSnippet.contents.reduce(\n    (maxId, content) => Math.max(maxId, content.id),\n    0,\n  )\n  state.counters.snippetId = Math.max(\n    state.counters.snippetId,\n    syncedSnippet.id,\n  )\n  state.counters.contentId = Math.max(\n    state.counters.contentId,\n    maxSnippetContentId,\n  )\n\n  saveState(paths, state)\n\n  return setRuntimeCache(paths, state, snippets)\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/types.ts",
    "content": "import type { FolderRecord, TagRecord } from '../../../contracts'\n\nexport interface MarkdownTagState extends TagRecord {\n  createdAt: number\n  updatedAt: number\n}\n\nexport interface MarkdownSnippetIndexItem {\n  filePath: string\n  id: number\n}\n\nexport interface MarkdownFolderMetadataFile {\n  createdAt?: number\n  defaultLanguage?: string\n  icon?: string | null\n  id?: number\n  /** @deprecated Use `id` instead. Kept for legacy `.masscode-folder.yml` migration. */\n  masscode_id?: number\n  name?: string\n  orderIndex?: number\n  updatedAt?: number\n}\n\nexport interface MarkdownFolderDiskEntry {\n  metadata: MarkdownFolderMetadataFile\n  path: string\n}\n\nexport interface MarkdownFolderUIState {\n  isOpen: number\n}\n\nexport interface MarkdownStateFile {\n  counters?: {\n    contentId?: number\n    folderId?: number\n    snippetId?: number\n    tagId?: number\n  }\n  folderUi?: Record<string, { isOpen?: number }>\n  folders?: FolderRecord[]\n  snippets?: MarkdownSnippetIndexItem[]\n  tags?: MarkdownTagState[]\n  version?: number\n}\n\nexport interface MarkdownState {\n  counters: {\n    contentId: number\n    folderId: number\n    snippetId: number\n    tagId: number\n  }\n  folderUi: Record<string, MarkdownFolderUIState>\n  folders: FolderRecord[]\n  snippets: MarkdownSnippetIndexItem[]\n  tags: MarkdownTagState[]\n  version: number\n}\n\nexport interface MarkdownFrontmatterContent {\n  id?: number\n  label?: string\n  language?: string\n}\n\nexport interface MarkdownSnippetFrontmatter {\n  contents?: MarkdownFrontmatterContent[]\n  createdAt?: number\n  description?: string | null\n  folderId?: number | null\n  id?: number\n  isDeleted?: number\n  isFavorites?: number\n  name?: string\n  tags?: number[]\n  updatedAt?: number\n}\n\nexport interface MarkdownBodyFragment {\n  label: string\n  language: string\n  value: string | null\n}\n\nexport interface MarkdownSnippet {\n  contents: {\n    id: number\n    label: string\n    language: string\n    value: string | null\n  }[]\n  createdAt: number\n  description: string | null\n  filePath: string\n  folderId: number | null\n  id: number\n  isDeleted: number\n  isFavorites: number\n  name: string\n  tags: number[]\n  updatedAt: number\n}\n\nexport interface MarkdownRuntimeCache {\n  contentOwnerByContentId: Map<\n    number,\n    {\n      contentIndex: number\n      snippet: MarkdownSnippet\n    }\n  >\n  folderById: Map<number, FolderRecord>\n  paths: Paths\n  searchQueryCache: Map<string, number[]>\n  searchSnippetTextById: Map<number, string>\n  searchTokenToSnippetIds: Map<string, Set<number>>\n  searchTokensBySnippetId: Map<number, string[]>\n  searchIndexDirty: boolean\n  snippetById: Map<number, MarkdownSnippet>\n  snippets: MarkdownSnippet[]\n  state: MarkdownState\n}\n\nexport interface SaveStateOptions {\n  immediate?: boolean\n}\n\nexport interface SqliteSnippetRow {\n  createdAt: number\n  description: string | null\n  folderId: number | null\n  id: number\n  isDeleted: number\n  isFavorites: number\n  name: string\n  updatedAt: number\n}\n\nexport interface SqliteSnippetContentRow {\n  id: number\n  label: string | null\n  language: string | null\n  snippetId: number\n  value: string | null\n}\n\nexport interface SqliteSnippetTagRow {\n  snippetId: number\n  tagId: number\n}\n\nexport interface Paths {\n  inboxDirPath: string\n  metaDirPath: string\n  statePath: string\n  trashDirPath: string\n  vaultPath: string\n}\n\nexport type MarkdownErrorCode =\n  | 'FOLDER_NOT_FOUND'\n  | 'INVALID_NAME'\n  | 'NAME_CONFLICT'\n  | 'RESERVED_NAME'\n  | 'SNIPPET_NOT_FOUND'\n\nexport type DirectoryEntriesCache = Map<string, string[]>\n\nexport interface PersistSnippetOptions {\n  allowRenameOnConflict?: boolean\n  directoryEntriesCache?: Map<string, string[]>\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/runtime/validation.ts",
    "content": "import type { MarkdownErrorCode, MarkdownState, Paths } from './types'\nimport path from 'node:path'\nimport fs from 'fs-extra'\nimport {\n  INVALID_NAME_CHARS,\n  META_DIR_NAME,\n  RESERVED_ROOT_NAMES,\n  SPACES_DIR_NAME,\n  WINDOWS_RESERVED_NAME_RE,\n} from './constants'\nimport { normalizeErrorMessage } from './normalizers'\nimport { getFolderSiblings } from './paths'\n\nexport function throwStorageError(\n  code: MarkdownErrorCode,\n  message: string,\n): never {\n  throw new Error(`${code}:${message}`)\n}\n\nexport function getMarkdownStorageErrorMessage(error: unknown): string {\n  return normalizeErrorMessage(error)\n}\n\nfunction normalizeName(name: string): string {\n  return name.trim()\n}\n\nfunction hasInvalidNameChars(name: string): boolean {\n  for (const char of name) {\n    if (INVALID_NAME_CHARS.has(char)) {\n      return true\n    }\n\n    if (char.charCodeAt(0) <= 0x1F) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport function validateEntryName(\n  name: string,\n  kind: 'folder' | 'snippet',\n): string {\n  const normalized = normalizeName(name)\n\n  if (!normalized || normalized === '.' || normalized === '..') {\n    throwStorageError('INVALID_NAME', `${kind} name is empty or invalid`)\n  }\n\n  if (hasInvalidNameChars(normalized)) {\n    throwStorageError(\n      'INVALID_NAME',\n      `${kind} name contains invalid characters`,\n    )\n  }\n\n  if (normalized.endsWith('.') || normalized.endsWith(' ')) {\n    throwStorageError(\n      'INVALID_NAME',\n      `${kind} name cannot end with a space or dot`,\n    )\n  }\n\n  if (WINDOWS_RESERVED_NAME_RE.test(normalized)) {\n    throwStorageError('INVALID_NAME', `${kind} name is reserved on Windows`)\n  }\n\n  return normalized\n}\n\nexport function toSnippetFileName(name: string): string {\n  const normalized = validateEntryName(name, 'snippet')\n\n  if (normalized.toLowerCase().endsWith('.md')) {\n    return normalized\n  }\n\n  return `${normalized}.md`\n}\n\nexport function assertNotReservedRootFolderName(\n  parentId: number | null,\n  name: string,\n): void {\n  const normalizedName = name.toLowerCase()\n\n  if (normalizedName === META_DIR_NAME || normalizedName === SPACES_DIR_NAME) {\n    throwStorageError('RESERVED_NAME', 'This folder name is reserved')\n  }\n\n  if (parentId === null && RESERVED_ROOT_NAMES.has(normalizedName)) {\n    throwStorageError(\n      'RESERVED_NAME',\n      'This folder name is reserved for technical folder',\n    )\n  }\n}\n\nexport function assertUniqueSiblingFolderName(\n  state: MarkdownState,\n  parentId: number | null,\n  name: string,\n  excludeId?: number,\n): void {\n  const normalizedName = name.toLowerCase()\n\n  const hasConflict = getFolderSiblings(state, parentId, excludeId).some(\n    folder => folder.name.toLowerCase() === normalizedName,\n  )\n\n  if (hasConflict) {\n    throwStorageError(\n      'NAME_CONFLICT',\n      'Folder with this name already exists on this level',\n    )\n  }\n}\n\nexport function resolveUniqueSiblingFolderName(\n  state: MarkdownState,\n  parentId: number | null,\n  name: string,\n  excludeId?: number,\n): string {\n  const siblings = getFolderSiblings(state, parentId, excludeId)\n  const siblingNames = new Set(\n    siblings.map(folder => folder.name.toLowerCase()),\n  )\n\n  if (!siblingNames.has(name.toLowerCase())) {\n    return name\n  }\n\n  for (let suffix = 1; suffix <= 10_000; suffix += 1) {\n    const candidateName = `${name} ${suffix}`\n\n    if (!siblingNames.has(candidateName.toLowerCase())) {\n      return candidateName\n    }\n  }\n\n  throwStorageError(\n    'NAME_CONFLICT',\n    'Cannot generate unique folder name on this level',\n  )\n}\n\nexport function assertDirectoryNameAvailable(\n  paths: Paths,\n  parentRelativePath: string,\n  folderName: string,\n  excludeRelativePath?: string,\n): void {\n  const parentAbsolutePath = parentRelativePath\n    ? path.join(paths.vaultPath, parentRelativePath)\n    : paths.vaultPath\n  fs.ensureDirSync(parentAbsolutePath)\n\n  const excludeAbsolutePath = excludeRelativePath\n    ? path.join(paths.vaultPath, excludeRelativePath)\n    : null\n\n  const entries = fs.readdirSync(parentAbsolutePath)\n  const normalizedFolderName = folderName.toLowerCase()\n\n  for (const entry of entries) {\n    const entryAbsolutePath = path.join(parentAbsolutePath, entry)\n\n    if (excludeAbsolutePath && entryAbsolutePath === excludeAbsolutePath) {\n      continue\n    }\n\n    if (entry.toLowerCase() === normalizedFolderName) {\n      throwStorageError(\n        'NAME_CONFLICT',\n        'Folder with this name already exists on this level',\n      )\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/storages/folders.ts",
    "content": "import type {\n  FolderRecord,\n  FoldersStorage,\n  FolderTreeRecord,\n  FolderUpdateResult,\n} from '../../../contracts'\nimport path from 'node:path'\nimport fs from 'fs-extra'\nimport {\n  assertDirectoryNameAvailable,\n  assertNotReservedRootFolderName,\n  assertUniqueSiblingFolderName,\n  buildFolderPathMap,\n  buildSnippetTargetPath,\n  depthOfRelativePath,\n  findFolderById,\n  getFolderPathById,\n  getNextFolderOrder,\n  getPaths,\n  getRuntimeCache,\n  getVaultPath,\n  normalizeDirectoryPath,\n  normalizeFlag,\n  persistSnippet,\n  resolveUniqueSiblingFolderName,\n  saveState,\n  syncFolderMetadataFiles,\n  throwStorageError,\n  validateEntryName,\n} from '../runtime'\n\nfunction createFolderTree(folders: FolderRecord[]): FolderTreeRecord[] {\n  const folderMap = new Map<number, FolderTreeRecord>()\n  const rootFolders: FolderTreeRecord[] = []\n\n  folders.forEach((folder) => {\n    folderMap.set(folder.id, {\n      ...folder,\n      children: [],\n    })\n  })\n\n  folderMap.forEach((folder) => {\n    if (folder.parentId === null) {\n      rootFolders.push(folder)\n      return\n    }\n\n    const parent = folderMap.get(folder.parentId)\n    if (parent) {\n      parent.children.push(folder)\n    }\n  })\n\n  return rootFolders\n}\n\nfunction sortFoldersForTree(folders: FolderRecord[]): FolderRecord[] {\n  const folderByParent = new Map<number | null, FolderRecord[]>()\n  const knownFolderIds = new Set<number>(folders.map(folder => folder.id))\n\n  folders.forEach((folder) => {\n    const parentId\n      = folder.parentId !== null && knownFolderIds.has(folder.parentId)\n        ? folder.parentId\n        : null\n    const siblings = folderByParent.get(parentId) || []\n\n    siblings.push(folder)\n    folderByParent.set(parentId, siblings)\n  })\n\n  folderByParent.forEach((siblings, parentId) => {\n    siblings.sort((firstFolder, secondFolder) => {\n      if (firstFolder.orderIndex !== secondFolder.orderIndex) {\n        return firstFolder.orderIndex - secondFolder.orderIndex\n      }\n\n      return firstFolder.id - secondFolder.id\n    })\n    folderByParent.set(parentId, siblings)\n  })\n\n  const orderedFolders: FolderRecord[] = []\n  const visitedFolderIds = new Set<number>()\n\n  const visitChildren = (parentId: number | null): void => {\n    const children = folderByParent.get(parentId) || []\n    children.forEach((child) => {\n      if (visitedFolderIds.has(child.id)) {\n        return\n      }\n\n      visitedFolderIds.add(child.id)\n      orderedFolders.push(child)\n      visitChildren(child.id)\n    })\n  }\n\n  visitChildren(null)\n\n  folders.forEach((folder) => {\n    if (visitedFolderIds.has(folder.id)) {\n      return\n    }\n\n    orderedFolders.push(folder)\n    visitChildren(folder.id)\n  })\n\n  return orderedFolders\n}\n\nfunction findFolderDescendants(\n  folders: FolderRecord[],\n  folderId: number,\n): number[] {\n  const directChildren = folders\n    .filter(folder => folder.parentId === folderId)\n    .map(folder => folder.id)\n\n  let descendants = [...directChildren]\n\n  for (const childId of directChildren) {\n    descendants = descendants.concat(findFolderDescendants(folders, childId))\n  }\n\n  return descendants\n}\n\nexport function createFoldersStorage(): FoldersStorage {\n  return {\n    getFolders: () => {\n      const paths = getPaths(getVaultPath())\n      const { state } = getRuntimeCache(paths)\n\n      return [...state.folders].sort((a, b) => b.createdAt - a.createdAt)\n    },\n    getFoldersTree: () => {\n      const paths = getPaths(getVaultPath())\n      const { state } = getRuntimeCache(paths)\n\n      return createFolderTree(sortFoldersForTree([...state.folders]))\n    },\n    createFolder: (input) => {\n      const paths = getPaths(getVaultPath())\n      const { state } = getRuntimeCache(paths)\n\n      const name = validateEntryName(input.name, 'folder')\n      const parentId = input.parentId ?? null\n\n      if (parentId !== null && !findFolderById(state, parentId)) {\n        throwStorageError('FOLDER_NOT_FOUND', 'Parent folder not found')\n      }\n\n      assertNotReservedRootFolderName(parentId, name)\n      assertUniqueSiblingFolderName(state, parentId, name)\n\n      const parentPath\n        = parentId !== null ? getFolderPathById(state, parentId) : ''\n      const normalizedParentPath = normalizeDirectoryPath(parentPath || '')\n      assertDirectoryNameAvailable(paths, normalizedParentPath, name)\n\n      const targetDirectory = normalizedParentPath\n        ? path.join(paths.vaultPath, normalizedParentPath, name)\n        : path.join(paths.vaultPath, name)\n      fs.ensureDirSync(targetDirectory)\n\n      const now = Date.now()\n      const id = state.counters.folderId + 1\n      state.counters.folderId = id\n\n      state.folders.push({\n        createdAt: now,\n        defaultLanguage: 'plain_text',\n        icon: null,\n        id,\n        isOpen: 0,\n        name,\n        orderIndex: getNextFolderOrder(state, parentId),\n        parentId,\n        updatedAt: now,\n      })\n\n      syncFolderMetadataFiles(paths, state)\n      saveState(paths, state)\n\n      return { id }\n    },\n    updateFolder: (id, input): FolderUpdateResult => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n\n      const folder = findFolderById(state, id)\n      if (!folder) {\n        return {\n          invalidInput: false,\n          notFound: true,\n        }\n      }\n\n      const hasAnyField\n        = 'name' in input\n          || 'icon' in input\n          || 'defaultLanguage' in input\n          || 'parentId' in input\n          || 'isOpen' in input\n          || 'orderIndex' in input\n\n      if (!hasAnyField) {\n        return {\n          invalidInput: true,\n          notFound: false,\n        }\n      }\n\n      const oldFolderPathMap = buildFolderPathMap(state)\n      const oldFolderPath = oldFolderPathMap.get(folder.id) || ''\n\n      let targetName\n        = 'name' in input\n          ? validateEntryName(input.name || folder.name, 'folder')\n          : folder.name\n      const targetParentId\n        = 'parentId' in input ? (input.parentId ?? null) : folder.parentId\n\n      if (targetParentId !== null && !findFolderById(state, targetParentId)) {\n        throwStorageError('FOLDER_NOT_FOUND', 'Parent folder not found')\n      }\n\n      const descendants = findFolderDescendants(state.folders, id)\n      if (targetParentId !== null && descendants.includes(targetParentId)) {\n        throwStorageError(\n          'INVALID_NAME',\n          'Folder cannot be moved into its own subtree',\n        )\n      }\n\n      assertNotReservedRootFolderName(targetParentId, targetName)\n\n      const isParentChanged = targetParentId !== folder.parentId\n      if (isParentChanged) {\n        targetName = resolveUniqueSiblingFolderName(\n          state,\n          targetParentId,\n          targetName,\n          id,\n        )\n      }\n      else {\n        assertUniqueSiblingFolderName(state, targetParentId, targetName, id)\n      }\n\n      const currentParentId = folder.parentId\n      const currentOrderIndex = folder.orderIndex\n      const targetOrderIndex\n        = 'orderIndex' in input\n          ? (input.orderIndex ?? currentOrderIndex)\n          : currentOrderIndex\n\n      if (\n        targetParentId !== currentParentId\n        || targetOrderIndex !== currentOrderIndex\n      ) {\n        if (targetParentId === currentParentId) {\n          if (targetOrderIndex > currentOrderIndex) {\n            state.folders.forEach((item) => {\n              if (\n                item.id !== folder.id\n                && item.parentId === currentParentId\n                && item.orderIndex > currentOrderIndex\n                && item.orderIndex <= targetOrderIndex\n              ) {\n                item.orderIndex -= 1\n              }\n            })\n          }\n          else {\n            state.folders.forEach((item) => {\n              if (\n                item.id !== folder.id\n                && item.parentId === currentParentId\n                && item.orderIndex >= targetOrderIndex\n                && item.orderIndex < currentOrderIndex\n              ) {\n                item.orderIndex += 1\n              }\n            })\n          }\n        }\n        else {\n          state.folders.forEach((item) => {\n            if (\n              item.id !== folder.id\n              && item.parentId === currentParentId\n              && item.orderIndex > currentOrderIndex\n            ) {\n              item.orderIndex -= 1\n            }\n          })\n\n          state.folders.forEach((item) => {\n            if (\n              item.id !== folder.id\n              && item.parentId === targetParentId\n              && item.orderIndex >= targetOrderIndex\n            ) {\n              item.orderIndex += 1\n            }\n          })\n        }\n\n        folder.parentId = targetParentId\n        folder.orderIndex = targetOrderIndex\n      }\n\n      if ('name' in input || folder.name !== targetName) {\n        folder.name = targetName\n      }\n\n      if ('icon' in input) {\n        folder.icon = input.icon ?? null\n      }\n\n      if ('defaultLanguage' in input) {\n        folder.defaultLanguage\n          = input.defaultLanguage || folder.defaultLanguage\n      }\n\n      if ('isOpen' in input) {\n        folder.isOpen = normalizeFlag(input.isOpen, folder.isOpen)\n      }\n\n      folder.updatedAt = Date.now()\n\n      const newFolderPathMap = buildFolderPathMap(state)\n      const newFolderPath = newFolderPathMap.get(folder.id) || ''\n\n      if (oldFolderPath !== newFolderPath) {\n        const targetParentPath = normalizeDirectoryPath(\n          path.posix.dirname(newFolderPath),\n        )\n        assertDirectoryNameAvailable(\n          paths,\n          targetParentPath,\n          path.posix.basename(newFolderPath),\n          oldFolderPath,\n        )\n\n        const oldAbsolutePath = path.join(paths.vaultPath, oldFolderPath)\n        const newAbsolutePath = path.join(paths.vaultPath, newFolderPath)\n\n        if (fs.pathExistsSync(oldAbsolutePath)) {\n          fs.ensureDirSync(path.dirname(newAbsolutePath))\n          fs.moveSync(oldAbsolutePath, newAbsolutePath, { overwrite: false })\n        }\n\n        const affectedFolderIds = new Set<number>([\n          id,\n          ...findFolderDescendants(state.folders, id),\n        ])\n\n        snippets.forEach((snippet) => {\n          if (snippet.isDeleted === 1) {\n            return\n          }\n\n          if (\n            snippet.folderId === null\n            || !affectedFolderIds.has(snippet.folderId)\n          ) {\n            return\n          }\n\n          const previousPath = snippet.filePath\n          snippet.filePath = buildSnippetTargetPath(state, snippet)\n\n          const oldSnippetAbsolutePath = path.join(\n            paths.vaultPath,\n            previousPath,\n          )\n          const newSnippetAbsolutePath = path.join(\n            paths.vaultPath,\n            snippet.filePath,\n          )\n\n          if (\n            previousPath !== snippet.filePath\n            && fs.pathExistsSync(oldSnippetAbsolutePath)\n            && !fs.pathExistsSync(newSnippetAbsolutePath)\n          ) {\n            fs.ensureDirSync(path.dirname(newSnippetAbsolutePath))\n            fs.moveSync(oldSnippetAbsolutePath, newSnippetAbsolutePath, {\n              overwrite: false,\n            })\n          }\n        })\n      }\n\n      syncFolderMetadataFiles(paths, state)\n      saveState(paths, state)\n\n      return {\n        invalidInput: false,\n        notFound: false,\n      }\n    },\n    deleteFolder: (id) => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n\n      const folder = findFolderById(state, id)\n      if (!folder) {\n        return { deleted: false }\n      }\n\n      const oldFolderPathMap = buildFolderPathMap(state)\n      const descendantIds = findFolderDescendants(state.folders, id)\n      const removedFolderIds = new Set<number>([id, ...descendantIds])\n      const directoryEntriesCache = new Map<string, string[]>()\n\n      snippets.forEach((snippet) => {\n        if (\n          snippet.folderId !== null\n          && removedFolderIds.has(snippet.folderId)\n        ) {\n          const previousPath = snippet.filePath\n          snippet.folderId = null\n          snippet.isDeleted = 1\n          snippet.updatedAt = Date.now()\n          persistSnippet(paths, state, snippet, previousPath, {\n            allowRenameOnConflict: true,\n            directoryEntriesCache,\n          })\n        }\n      })\n\n      const removedFolderPaths = [...removedFolderIds]\n        .map(folderId => oldFolderPathMap.get(folderId))\n        .filter((folderPath): folderPath is string => !!folderPath)\n        .sort((a, b) => depthOfRelativePath(b) - depthOfRelativePath(a))\n\n      state.folders = state.folders.filter(\n        folder => !removedFolderIds.has(folder.id),\n      )\n\n      removedFolderPaths.forEach((folderPath) => {\n        const absolutePath = path.join(paths.vaultPath, folderPath)\n        if (fs.pathExistsSync(absolutePath)) {\n          fs.removeSync(absolutePath)\n        }\n      })\n\n      saveState(paths, state)\n\n      return { deleted: true }\n    },\n  }\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/storages/index.ts",
    "content": "import type { StorageProvider } from '../../../contracts'\nimport { createFoldersStorage } from './folders'\nimport { createSnippetsStorage } from './snippets'\nimport { createTagsStorage } from './tags'\n\nexport function createMarkdownStorageProvider(): StorageProvider {\n  return {\n    folders: createFoldersStorage(),\n    snippets: createSnippetsStorage(),\n    tags: createTagsStorage(),\n  }\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/storages/snippets.ts",
    "content": "import type {\n  SnippetContentUpdateInput,\n  SnippetContentUpdateResult,\n  SnippetsCount,\n  SnippetsQueryInput,\n  SnippetsStorage,\n  SnippetTagDeleteRelationResult,\n  SnippetTagRelationResult,\n  SnippetUpdateResult,\n} from '../../../contracts'\nimport path from 'node:path'\nimport fs from 'fs-extra'\nimport {\n  createSnippetRecord,\n  findFolderById,\n  findSnippetByContentId,\n  findSnippetById,\n  getPaths,\n  getRuntimeCache,\n  getSnippetIdsBySearchQuery,\n  getSnippetTargetDirectory,\n  getVaultPath,\n  type MarkdownSnippet,\n  normalizeDirectoryPath,\n  persistSnippet,\n  saveState,\n  throwStorageError,\n  validateEntryName,\n  writeSnippetToFile,\n} from '../runtime'\n\nexport function createSnippetsStorage(): SnippetsStorage {\n  return {\n    getSnippets: (query: SnippetsQueryInput) => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n\n      const searchSnippetIds = query.search?.trim()\n        ? getSnippetIdsBySearchQuery(snippets, query.search)\n        : null\n      const normalizedOrder = query.order || 'DESC'\n\n      const filteredSnippets = snippets.filter((snippet) => {\n        if (searchSnippetIds && !searchSnippetIds.has(snippet.id)) {\n          return false\n        }\n\n        if (query.folderId && snippet.folderId !== query.folderId) {\n          return false\n        }\n\n        if (query.isInbox && snippet.folderId !== null) {\n          return false\n        }\n\n        if (query.tagId && !snippet.tags.includes(query.tagId)) {\n          return false\n        }\n\n        if (query.isFavorites && snippet.isFavorites !== 1) {\n          return false\n        }\n\n        if (query.isDeleted) {\n          if (snippet.isDeleted !== 1) {\n            return false\n          }\n        }\n        else if (snippet.isDeleted !== 0) {\n          return false\n        }\n\n        return true\n      })\n\n      const result = filteredSnippets\n        .map(snippet => createSnippetRecord(snippet, state))\n        .sort((a, b) => {\n          if (normalizedOrder === 'ASC') {\n            return a.createdAt - b.createdAt\n          }\n\n          return b.createdAt - a.createdAt\n        })\n\n      return result\n    },\n    getSnippetsCounts: (): SnippetsCount => {\n      const paths = getPaths(getVaultPath())\n      const { snippets } = getRuntimeCache(paths)\n\n      return {\n        total: snippets.length,\n        trash: snippets.filter(snippet => snippet.isDeleted === 1).length,\n      }\n    },\n    createSnippet: (input) => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n\n      const name = validateEntryName(input.name, 'snippet')\n      const folderId = input.folderId ?? null\n\n      if (folderId !== null && !findFolderById(state, folderId)) {\n        throwStorageError('FOLDER_NOT_FOUND', 'Folder not found')\n      }\n\n      const id = state.counters.snippetId + 1\n      state.counters.snippetId = id\n\n      const now = Date.now()\n      const snippet: MarkdownSnippet = {\n        contents: [],\n        createdAt: now,\n        description: null,\n        filePath: '',\n        folderId,\n        id,\n        isDeleted: 0,\n        isFavorites: 0,\n        name,\n        tags: [],\n        updatedAt: now,\n      }\n\n      persistSnippet(paths, state, snippet)\n      snippets.push(snippet)\n      saveState(paths, state)\n\n      return { id }\n    },\n    createSnippetContent: (snippetId, input) => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n      const snippet = findSnippetById(snippets, snippetId)\n\n      if (!snippet) {\n        throwStorageError('SNIPPET_NOT_FOUND', 'Snippet not found')\n      }\n\n      const contentId = state.counters.contentId + 1\n      state.counters.contentId = contentId\n\n      snippet.contents.push({\n        id: contentId,\n        label: input.label,\n        language: input.language,\n        value: input.value,\n      })\n\n      snippet.updatedAt = Date.now()\n      writeSnippetToFile(paths, snippet)\n      saveState(paths, state)\n\n      return { id: contentId }\n    },\n    updateSnippet: (id, input): SnippetUpdateResult => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n      const snippet = findSnippetById(snippets, id)\n\n      if (!snippet) {\n        return {\n          invalidInput: false,\n          notFound: true,\n        }\n      }\n\n      const hasAnyField\n        = 'name' in input\n          || 'description' in input\n          || 'folderId' in input\n          || 'isFavorites' in input\n          || 'isDeleted' in input\n\n      if (!hasAnyField) {\n        return {\n          invalidInput: true,\n          notFound: false,\n        }\n      }\n\n      const previousPath = snippet.filePath\n      const wasDeleted = snippet.isDeleted\n\n      if ('name' in input) {\n        snippet.name = validateEntryName(input.name || snippet.name, 'snippet')\n      }\n\n      if ('description' in input) {\n        snippet.description = input.description ?? null\n      }\n\n      if ('folderId' in input) {\n        const nextFolderId = input.folderId ?? null\n\n        if (nextFolderId !== null && !findFolderById(state, nextFolderId)) {\n          throwStorageError('FOLDER_NOT_FOUND', 'Folder not found')\n        }\n\n        snippet.folderId = nextFolderId\n      }\n\n      if ('isFavorites' in input) {\n        snippet.isFavorites = input.isFavorites || 0\n      }\n\n      if ('isDeleted' in input) {\n        snippet.isDeleted = input.isDeleted || 0\n      }\n\n      const movedToTrash = wasDeleted !== 1 && snippet.isDeleted === 1\n      const previousDirectory = normalizeDirectoryPath(\n        path.posix.dirname(previousPath),\n      )\n      const nextDirectory = getSnippetTargetDirectory(state, snippet)\n      const movedBetweenDirectories = previousDirectory !== nextDirectory\n\n      snippet.updatedAt = Date.now()\n      persistSnippet(paths, state, snippet, previousPath, {\n        allowRenameOnConflict: movedToTrash || movedBetweenDirectories,\n      })\n      saveState(paths, state)\n\n      return {\n        invalidInput: false,\n        notFound: false,\n      }\n    },\n    updateSnippetContent: (\n      snippetId,\n      contentId,\n      input: SnippetContentUpdateInput,\n    ): SnippetContentUpdateResult => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n\n      const hasAnyField\n        = 'label' in input || 'value' in input || 'language' in input\n\n      if (!hasAnyField) {\n        return {\n          invalidInput: true,\n          notFound: false,\n          parentNotFound: false,\n        }\n      }\n\n      const ownedContent = findSnippetByContentId(snippets, contentId)\n      if (!ownedContent) {\n        return {\n          invalidInput: false,\n          notFound: true,\n          parentNotFound: false,\n        }\n      }\n\n      const { contentIndex, snippet: contentOwnerSnippet } = ownedContent\n      const content = contentOwnerSnippet.contents[contentIndex]\n\n      if ('label' in input) {\n        content.label = input.label || content.label\n      }\n\n      if ('value' in input) {\n        content.value = input.value ?? null\n      }\n\n      if ('language' in input) {\n        content.language = input.language || content.language\n      }\n\n      let parentNotFound = false\n      if (contentOwnerSnippet.id === snippetId) {\n        contentOwnerSnippet.updatedAt = Date.now()\n        writeSnippetToFile(paths, contentOwnerSnippet)\n      }\n      else {\n        writeSnippetToFile(paths, contentOwnerSnippet)\n\n        const targetSnippet = findSnippetById(snippets, snippetId)\n        if (targetSnippet) {\n          targetSnippet.updatedAt = Date.now()\n          writeSnippetToFile(paths, targetSnippet)\n        }\n        else {\n          parentNotFound = true\n        }\n      }\n\n      saveState(paths, state)\n\n      return {\n        invalidInput: false,\n        notFound: false,\n        parentNotFound,\n      }\n    },\n    addTagToSnippet: (snippetId, tagId): SnippetTagRelationResult => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n      const snippet = findSnippetById(snippets, snippetId)\n\n      if (!snippet) {\n        return {\n          notFound: false,\n          snippetFound: false,\n          tagFound: true,\n        }\n      }\n\n      const tag = state.tags.find(item => item.id === tagId)\n      if (!tag) {\n        return {\n          notFound: false,\n          snippetFound: true,\n          tagFound: false,\n        }\n      }\n\n      if (!snippet.tags.includes(tagId)) {\n        snippet.tags.push(tagId)\n        writeSnippetToFile(paths, snippet)\n        saveState(paths, state)\n      }\n\n      return {\n        notFound: false,\n        snippetFound: true,\n        tagFound: true,\n      }\n    },\n    deleteTagFromSnippet: (\n      snippetId,\n      tagId,\n    ): SnippetTagDeleteRelationResult => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n      const snippet = findSnippetById(snippets, snippetId)\n\n      if (!snippet) {\n        return {\n          notFound: false,\n          relationFound: true,\n          snippetFound: false,\n          tagFound: true,\n        }\n      }\n\n      const tag = state.tags.find(item => item.id === tagId)\n      if (!tag) {\n        return {\n          notFound: false,\n          relationFound: true,\n          snippetFound: true,\n          tagFound: false,\n        }\n      }\n\n      const relationFound = snippet.tags.includes(tagId)\n      if (relationFound) {\n        snippet.tags = snippet.tags.filter(item => item !== tagId)\n        writeSnippetToFile(paths, snippet)\n        saveState(paths, state)\n      }\n\n      return {\n        notFound: false,\n        relationFound,\n        snippetFound: true,\n        tagFound: true,\n      }\n    },\n    deleteSnippet: (id) => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n\n      const snippetIndex = state.snippets.findIndex(\n        snippet => snippet.id === id,\n      )\n      if (snippetIndex === -1) {\n        return { deleted: false }\n      }\n\n      const snippet = state.snippets[snippetIndex]\n      fs.removeSync(path.join(paths.vaultPath, snippet.filePath))\n\n      state.snippets.splice(snippetIndex, 1)\n      const snippetRuntimeIndex = snippets.findIndex(\n        snippet => snippet.id === id,\n      )\n      if (snippetRuntimeIndex !== -1) {\n        snippets.splice(snippetRuntimeIndex, 1)\n      }\n      saveState(paths, state)\n\n      return { deleted: true }\n    },\n    emptyTrash: () => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n\n      const deletedSnippetIds = new Set<number>(\n        snippets\n          .filter(snippet => snippet.isDeleted === 1)\n          .map(snippet => snippet.id),\n      )\n\n      if (!deletedSnippetIds.size) {\n        return { deletedCount: 0 }\n      }\n\n      state.snippets = state.snippets.filter((snippet) => {\n        if (deletedSnippetIds.has(snippet.id)) {\n          fs.removeSync(path.join(paths.vaultPath, snippet.filePath))\n          return false\n        }\n\n        return true\n      })\n      const nextSnippets = snippets.filter(\n        snippet => !deletedSnippetIds.has(snippet.id),\n      )\n      snippets.splice(0, snippets.length, ...nextSnippets)\n\n      saveState(paths, state)\n\n      return { deletedCount: deletedSnippetIds.size }\n    },\n    deleteSnippetContent: (contentId) => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n      const ownedContent = findSnippetByContentId(snippets, contentId)\n\n      if (!ownedContent) {\n        return { deleted: false }\n      }\n\n      ownedContent.snippet.contents.splice(ownedContent.contentIndex, 1)\n      ownedContent.snippet.updatedAt = Date.now()\n      writeSnippetToFile(paths, ownedContent.snippet)\n      saveState(paths, state)\n\n      return { deleted: true }\n    },\n  }\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/storages/tags.ts",
    "content": "import type { TagsStorage } from '../../../contracts'\nimport {\n  getPaths,\n  getRuntimeCache,\n  getVaultPath,\n  saveState,\n  writeSnippetToFile,\n} from '../runtime'\n\nexport function createTagsStorage(): TagsStorage {\n  return {\n    getTags: () => {\n      const paths = getPaths(getVaultPath())\n      const { state } = getRuntimeCache(paths)\n\n      return state.tags\n        .map(tag => ({\n          id: tag.id,\n          name: tag.name,\n        }))\n        .sort((a, b) => a.name.localeCompare(b.name))\n    },\n    createTag: (name) => {\n      const paths = getPaths(getVaultPath())\n      const { state } = getRuntimeCache(paths)\n\n      const id = state.counters.tagId + 1\n      state.counters.tagId = id\n\n      const now = Date.now()\n      state.tags.push({\n        createdAt: now,\n        id,\n        name,\n        updatedAt: now,\n      })\n\n      saveState(paths, state)\n\n      return { id }\n    },\n    deleteTag: (id) => {\n      const paths = getPaths(getVaultPath())\n      const { state, snippets } = getRuntimeCache(paths)\n\n      const tagIndex = state.tags.findIndex(tag => tag.id === id)\n      if (tagIndex === -1) {\n        return { deleted: false }\n      }\n\n      state.tags.splice(tagIndex, 1)\n\n      snippets.forEach((snippet) => {\n        if (snippet.tags.includes(id)) {\n          snippet.tags = snippet.tags.filter(tagId => tagId !== id)\n          writeSnippetToFile(paths, snippet)\n        }\n      })\n\n      saveState(paths, state)\n\n      return { deleted: true }\n    },\n  }\n}\n"
  },
  {
    "path": "src/main/storage/providers/markdown/watcher.ts",
    "content": "import type { ChokidarOptions, FSWatcher } from 'chokidar'\nimport path from 'node:path'\nimport { BrowserWindow } from 'electron'\nimport { importEsm, log } from '../../../utils'\nimport {\n  ensureStateFile,\n  getPaths,\n  getVaultPath,\n  INBOX_DIR_NAME,\n  META_DIR_NAME,\n  type Paths,\n  peekRuntimeCache,\n  resetRuntimeCache,\n  SPACES_DIR_NAME,\n  syncRuntimeWithDisk,\n  syncSnippetFileWithDisk,\n  TRASH_DIR_NAME,\n} from './runtime'\n\nlet markdownWatcher: FSWatcher | null = null\nlet markdownWatchTimer: NodeJS.Timeout | null = null\nlet watchedVaultPath: string | null = null\nlet pendingFilePath: string | null = null\nlet hasPendingFullSync = false\nlet watcherStartToken = 0\nlet chokidarWatchLoader: Promise<ChokidarWatch> | null = null\n\ntype ChokidarWatch = (\n  path: string | readonly string[],\n  options?: ChokidarOptions,\n) => FSWatcher\n\nasync function getChokidarWatch(): Promise<ChokidarWatch> {\n  if (chokidarWatchLoader) {\n    return chokidarWatchLoader\n  }\n\n  chokidarWatchLoader = importEsm('chokidar')\n    .then((module) => {\n      const chokidarModule = module as {\n        default?: {\n          watch?: unknown\n        }\n        watch?: unknown\n      }\n      const watch = chokidarModule.default?.watch || chokidarModule.watch\n\n      if (typeof watch !== 'function') {\n        throw new TypeError('chokidar.watch is not available')\n      }\n\n      return watch as ChokidarWatch\n    })\n    .catch((error) => {\n      chokidarWatchLoader = null\n      throw error\n    })\n\n  return chokidarWatchLoader\n}\n\nfunction toPosixPath(filePath: string): string {\n  return filePath.replaceAll('\\\\', '/')\n}\n\nfunction normalizeRelativeWatchPath(\n  paths: Paths,\n  changedPath: string,\n): string | null {\n  const normalizedChangedPath = changedPath.trim()\n  if (!normalizedChangedPath) {\n    return null\n  }\n\n  const absolutePath = path.isAbsolute(normalizedChangedPath)\n    ? normalizedChangedPath\n    : path.join(paths.vaultPath, normalizedChangedPath)\n  const relativePath = toPosixPath(\n    path.relative(paths.vaultPath, absolutePath),\n  )\n\n  if (!relativePath || relativePath === '.' || relativePath.startsWith('../')) {\n    return null\n  }\n\n  return relativePath\n}\n\nfunction shouldIgnoreWatchPath(paths: Paths, watchPath: string): boolean {\n  const relativePath = normalizeRelativeWatchPath(paths, watchPath)\n  if (!relativePath) {\n    return false\n  }\n\n  const basename = path.posix.basename(relativePath)\n\n  // Never ignore meta files (both legacy and new)\n  if (basename === '.meta.yaml' || basename === '.masscode-folder.yml') {\n    return false\n  }\n\n  const normalizedRelativePath = relativePath.toLowerCase()\n\n  // Never ignore __spaces__/ directory and its contents\n  const spacesPrefix = SPACES_DIR_NAME.toLowerCase()\n  if (\n    normalizedRelativePath === spacesPrefix\n    || normalizedRelativePath.startsWith(`${spacesPrefix}/`)\n  ) {\n    return false\n  }\n\n  const metaPrefix = META_DIR_NAME.toLowerCase()\n  if (normalizedRelativePath === metaPrefix) {\n    return false\n  }\n\n  const inboxPrefix = `${META_DIR_NAME}/${INBOX_DIR_NAME}`.toLowerCase()\n  const trashPrefix = `${META_DIR_NAME}/${TRASH_DIR_NAME}`.toLowerCase()\n  const canContainSnippets\n    = normalizedRelativePath === inboxPrefix\n      || normalizedRelativePath.startsWith(`${inboxPrefix}/`)\n      || normalizedRelativePath === trashPrefix\n      || normalizedRelativePath.startsWith(`${trashPrefix}/`)\n\n  if (canContainSnippets) {\n    return false\n  }\n\n  return normalizedRelativePath\n    .split('/')\n    .some(segment => segment.startsWith('.'))\n}\n\nfunction scheduleStateSync(\n  paths: Paths,\n  changedPath: string | null,\n  forceFullSync = false,\n): void {\n  if (forceFullSync || !changedPath) {\n    hasPendingFullSync = true\n  }\n  else if (pendingFilePath && pendingFilePath !== changedPath) {\n    hasPendingFullSync = true\n  }\n  else {\n    pendingFilePath = changedPath\n  }\n\n  if (markdownWatchTimer) {\n    clearTimeout(markdownWatchTimer)\n    markdownWatchTimer = null\n  }\n\n  markdownWatchTimer = setTimeout(() => {\n    try {\n      const previousCache = peekRuntimeCache()\n      const changedFilePath = hasPendingFullSync ? null : pendingFilePath\n\n      hasPendingFullSync = false\n      pendingFilePath = null\n\n      const nextCache = changedFilePath\n        ? syncSnippetFileWithDisk(paths, changedFilePath)\n        || syncRuntimeWithDisk(paths)\n        : syncRuntimeWithDisk(paths)\n\n      if (!previousCache || nextCache !== previousCache) {\n        BrowserWindow.getAllWindows().forEach((window) => {\n          window.webContents.send('system:storage-synced')\n        })\n      }\n    }\n    catch (error) {\n      log('storage:markdown:watcher-sync', error)\n    }\n  }, 250)\n}\n\nexport function stopMarkdownWatcher(): void {\n  watcherStartToken += 1\n\n  if (markdownWatchTimer) {\n    clearTimeout(markdownWatchTimer)\n    markdownWatchTimer = null\n  }\n\n  if (markdownWatcher) {\n    void markdownWatcher.close()\n    markdownWatcher = null\n  }\n\n  watchedVaultPath = null\n  pendingFilePath = null\n  hasPendingFullSync = false\n  resetRuntimeCache()\n}\n\nexport function startMarkdownWatcher(): void {\n  const paths = getPaths(getVaultPath())\n  const runtimeCache = peekRuntimeCache()\n\n  if (markdownWatcher && watchedVaultPath === paths.vaultPath) {\n    if (!runtimeCache || runtimeCache.paths.vaultPath !== paths.vaultPath) {\n      ensureStateFile(paths)\n      syncRuntimeWithDisk(paths)\n    }\n\n    return\n  }\n\n  stopMarkdownWatcher()\n  ensureStateFile(paths)\n  syncRuntimeWithDisk(paths)\n\n  const startToken = ++watcherStartToken\n\n  void getChokidarWatch()\n    .then((watch) => {\n      if (startToken !== watcherStartToken) {\n        return\n      }\n\n      const watcher = watch(paths.vaultPath, {\n        awaitWriteFinish: {\n          pollInterval: 100,\n          stabilityThreshold: 200,\n        },\n        ignoreInitial: true,\n        ignored: (watchPath: string) => shouldIgnoreWatchPath(paths, watchPath),\n        persistent: true,\n      })\n\n      watcher\n        .on('add', (changedPath: string) => {\n          scheduleStateSync(\n            paths,\n            normalizeRelativeWatchPath(paths, changedPath),\n          )\n        })\n        .on('change', (changedPath: string) => {\n          scheduleStateSync(\n            paths,\n            normalizeRelativeWatchPath(paths, changedPath),\n          )\n        })\n        .on('unlink', (changedPath: string) => {\n          scheduleStateSync(\n            paths,\n            normalizeRelativeWatchPath(paths, changedPath),\n          )\n        })\n        .on('addDir', () => {\n          scheduleStateSync(paths, null, true)\n        })\n        .on('unlinkDir', () => {\n          scheduleStateSync(paths, null, true)\n        })\n        .on('error', (error: unknown) => {\n          log('storage:markdown:watcher-error', error)\n        })\n\n      if (startToken !== watcherStartToken) {\n        void watcher.close()\n        return\n      }\n\n      markdownWatcher = watcher\n      watchedVaultPath = paths.vaultPath\n    })\n    .catch((error) => {\n      if (startToken === watcherStartToken) {\n        watchedVaultPath = null\n      }\n\n      log('storage:markdown:watcher-start', error)\n    })\n}\n"
  },
  {
    "path": "src/main/storage/providers/sqlite/folders.ts",
    "content": "import type {\n  FolderCreateInput,\n  FolderRecord,\n  FoldersStorage,\n  FolderTreeRecord,\n  FolderUpdateInput,\n  FolderUpdateResult,\n} from '../../contracts'\nimport { useDB } from '../../../db'\n\ninterface FolderOrderSnapshot {\n  orderIndex: number\n  parentId: number | null\n}\n\nexport function createSqliteFoldersStorage(): FoldersStorage {\n  return {\n    getFolders: () => {\n      const db = useDB()\n      const stmt = db.prepare(`\n        SELECT\n          id,\n          name,\n          defaultLanguage,\n          parentId,\n          orderIndex,\n          isOpen,\n          icon,\n          createdAt,\n          updatedAt\n        FROM folders\n        ORDER BY createdAt DESC\n      `)\n\n      return stmt.all() as FolderRecord[]\n    },\n    getFoldersTree: () => {\n      const db = useDB()\n      const allFolders = db\n        .prepare(\n          `\n            SELECT\n              id,\n              name,\n              defaultLanguage,\n              parentId,\n              orderIndex,\n              isOpen,\n              icon,\n              createdAt,\n              updatedAt\n            FROM folders\n            ORDER BY parentId, orderIndex\n          `,\n        )\n        .all() as FolderRecord[]\n\n      const folderMap = new Map<number, FolderTreeRecord>()\n      const rootFolders: FolderTreeRecord[] = []\n\n      allFolders.forEach((folder) => {\n        folderMap.set(folder.id, {\n          ...folder,\n          children: [],\n        })\n      })\n\n      folderMap.forEach((folder) => {\n        if (folder.parentId === null) {\n          rootFolders.push(folder)\n          return\n        }\n\n        const parent = folderMap.get(folder.parentId)\n        if (parent) {\n          parent.children.push(folder)\n        }\n      })\n\n      return rootFolders\n    },\n    createFolder: (input: FolderCreateInput) => {\n      const db = useDB()\n      const { name, parentId } = input\n      const now = Date.now()\n      const hasParentId = parentId !== undefined && parentId !== null\n\n      const { maxOrder } = db\n        .prepare(\n          `\n            SELECT COALESCE(MAX(orderIndex), -1) as maxOrder\n            FROM folders\n            WHERE parentId ${hasParentId ? '= ?' : 'IS NULL'}\n          `,\n        )\n        .get(...(hasParentId ? [parentId] : [])) as { maxOrder: number }\n\n      const newOrder = maxOrder + 1\n\n      const stmt = db.prepare(`\n        INSERT INTO folders (\n          name,\n          defaultLanguage,\n          parentId,\n          isOpen,\n          createdAt,\n          updatedAt,\n          orderIndex\n        ) VALUES (?, ?, ?, ?, ?, ?, ?)\n      `)\n\n      const { lastInsertRowid } = stmt.run(\n        name,\n        'plain_text',\n        parentId ?? null,\n        0,\n        now,\n        now,\n        newOrder,\n      )\n\n      return { id: Number(lastInsertRowid) }\n    },\n    updateFolder: (\n      id: number,\n      input: FolderUpdateInput,\n    ): FolderUpdateResult => {\n      const db = useDB()\n      const now = Date.now()\n\n      const updateFields: string[] = []\n      const updateParams: any[] = []\n      let needOrderUpdate = false\n      let newParentId: number | null | undefined\n      let newOrderIndex: number | undefined\n\n      if ('name' in input) {\n        updateFields.push('name = ?')\n        updateParams.push(input.name)\n      }\n\n      if ('icon' in input) {\n        updateFields.push('icon = ?')\n        updateParams.push(input.icon ?? null)\n      }\n\n      if ('defaultLanguage' in input) {\n        updateFields.push('defaultLanguage = ?')\n        updateParams.push(input.defaultLanguage)\n      }\n\n      if ('isOpen' in input) {\n        updateFields.push('isOpen = ?')\n        updateParams.push(input.isOpen)\n      }\n\n      if ('parentId' in input) {\n        updateFields.push('parentId = ?')\n        updateParams.push(input.parentId ?? null)\n        newParentId = input.parentId\n        needOrderUpdate = true\n      }\n\n      if ('orderIndex' in input) {\n        updateFields.push('orderIndex = ?')\n        updateParams.push(input.orderIndex)\n        newOrderIndex = input.orderIndex\n        needOrderUpdate = true\n      }\n\n      if (updateFields.length === 0) {\n        return {\n          invalidInput: true,\n          notFound: false,\n        }\n      }\n\n      updateFields.push('updatedAt = ?')\n      updateParams.push(now)\n      updateParams.push(id)\n\n      let isNotFound = false\n\n      const transaction = db.transaction(() => {\n        const folder = db\n          .prepare('SELECT parentId, orderIndex FROM folders WHERE id = ?')\n          .get(id) as FolderOrderSnapshot | undefined\n\n        if (!folder) {\n          isNotFound = true\n          return\n        }\n\n        if (needOrderUpdate) {\n          const currentParentId = folder.parentId\n          const currentOrderIndex = folder.orderIndex\n          const targetParentId\n            = newParentId === undefined ? currentParentId : newParentId\n          const targetOrderIndex\n            = newOrderIndex === undefined ? currentOrderIndex : newOrderIndex\n\n          if (\n            targetParentId !== currentParentId\n            || targetOrderIndex !== currentOrderIndex\n          ) {\n            if (targetParentId === currentParentId) {\n              if (targetOrderIndex > currentOrderIndex) {\n                db.prepare(\n                  `UPDATE folders\n                   SET orderIndex = orderIndex - 1\n                   WHERE parentId ${currentParentId === null ? 'IS NULL' : '= ?'}\n                   AND orderIndex > ?\n                   AND orderIndex <= ?`,\n                ).run(\n                  ...(currentParentId === null\n                    ? [currentOrderIndex, targetOrderIndex]\n                    : [currentParentId, currentOrderIndex, targetOrderIndex]),\n                )\n              }\n              else {\n                db.prepare(\n                  `UPDATE folders\n                   SET orderIndex = orderIndex + 1\n                   WHERE parentId ${currentParentId === null ? 'IS NULL' : '= ?'}\n                   AND orderIndex >= ?\n                   AND orderIndex < ?`,\n                ).run(\n                  ...(currentParentId === null\n                    ? [targetOrderIndex, currentOrderIndex]\n                    : [currentParentId, targetOrderIndex, currentOrderIndex]),\n                )\n              }\n            }\n            else {\n              db.prepare(\n                `UPDATE folders\n                 SET orderIndex = orderIndex - 1\n                 WHERE parentId ${currentParentId === null ? 'IS NULL' : '= ?'}\n                 AND orderIndex > ?`,\n              ).run(\n                ...(currentParentId === null\n                  ? [currentOrderIndex]\n                  : [currentParentId, currentOrderIndex]),\n              )\n\n              db.prepare(\n                `UPDATE folders\n                 SET orderIndex = orderIndex + 1\n                 WHERE parentId ${targetParentId === null ? 'IS NULL' : '= ?'}\n                 AND orderIndex >= ?`,\n              ).run(\n                ...(targetParentId === null\n                  ? [targetOrderIndex]\n                  : [targetParentId, targetOrderIndex]),\n              )\n            }\n          }\n        }\n\n        const updateStmt = db.prepare(`\n          UPDATE folders SET ${updateFields.join(', ')} WHERE id = ?\n        `)\n        updateStmt.run(...updateParams)\n      })\n\n      transaction()\n\n      return {\n        invalidInput: false,\n        notFound: isNotFound,\n      }\n    },\n    deleteFolder: (id: number) => {\n      const db = useDB()\n\n      const folder = db\n        .prepare(\n          `\n            SELECT id FROM folders WHERE id = ?\n          `,\n        )\n        .get(id)\n\n      if (!folder) {\n        return { deleted: false }\n      }\n\n      const transaction = db.transaction(() => {\n        const findAllSubfolders = (parentId: number): number[] => {\n          const childFolders = db\n            .prepare(\n              `\n                SELECT id FROM folders WHERE parentId = ?\n              `,\n            )\n            .all(parentId) as { id: number }[]\n\n          let allSubfolders: number[] = childFolders.map(folder => folder.id)\n\n          for (const folder of childFolders) {\n            allSubfolders = allSubfolders.concat(findAllSubfolders(folder.id))\n          }\n\n          return allSubfolders\n        }\n\n        const subfolderIds = findAllSubfolders(id)\n        const allFolderIds = [id, ...subfolderIds]\n\n        db.prepare(\n          `\n            UPDATE snippets\n            SET isDeleted = 1,\n                folderId = null\n            WHERE folderId IN (${allFolderIds.join(',')})\n          `,\n        ).run()\n\n        if (subfolderIds.length > 0) {\n          db.prepare(\n            `\n              DELETE FROM folders WHERE id IN (${subfolderIds.join(',')})\n            `,\n          ).run()\n        }\n\n        db.prepare(\n          `\n            DELETE FROM folders WHERE id = ?\n          `,\n        ).run(id)\n      })\n\n      transaction()\n\n      return { deleted: true }\n    },\n  }\n}\n"
  },
  {
    "path": "src/main/storage/providers/sqlite/index.ts",
    "content": "import type { StorageProvider } from '../../contracts'\nimport { createSqliteFoldersStorage } from './folders'\nimport { createSqliteSnippetsStorage } from './snippets'\nimport { createSqliteTagsStorage } from './tags'\n\nexport const sqliteStorageProvider: StorageProvider = {\n  folders: createSqliteFoldersStorage(),\n  snippets: createSqliteSnippetsStorage(),\n  tags: createSqliteTagsStorage(),\n}\n"
  },
  {
    "path": "src/main/storage/providers/sqlite/snippets.ts",
    "content": "import type {\n  SnippetContentCreateInput,\n  SnippetContentUpdateInput,\n  SnippetContentUpdateResult,\n  SnippetRecord,\n  SnippetsCount,\n  SnippetsQueryInput,\n  SnippetsStorage,\n  SnippetTagDeleteRelationResult,\n  SnippetTagRelationResult,\n  SnippetUpdateInput,\n  SnippetUpdateResult,\n} from '../../contracts'\nimport { useDB } from '../../../db'\n\ninterface SnippetRow {\n  id: number\n  name: string\n  description: string | null\n  tags: string\n  folder: string | null\n  contents: string\n  isFavorites: number\n  isDeleted: number\n  createdAt: number\n  updatedAt: number\n}\n\nexport function createSqliteSnippetsStorage(): SnippetsStorage {\n  return {\n    getSnippets: (query: SnippetsQueryInput) => {\n      const db = useDB()\n      const {\n        search,\n        order,\n        folderId,\n        tagId,\n        isFavorites,\n        isDeleted,\n        isInbox,\n      } = query\n      const searchQuery = search ? `%${query.search}%` : undefined\n\n      const WHERE: string[] = []\n      const ORDER = order || 'DESC'\n      const params: any[] = []\n\n      if (searchQuery) {\n        WHERE.push(`(\n          unicode_lower(s.name) LIKE unicode_lower(?) OR\n          unicode_lower(s.description) LIKE unicode_lower(?) OR\n          EXISTS (\n            SELECT 1 FROM snippet_contents sc\n            WHERE sc.snippetId = s.id AND unicode_lower(sc.value) LIKE unicode_lower(?)\n          )\n        )`)\n        params.push(searchQuery, searchQuery, searchQuery)\n      }\n\n      if (folderId) {\n        WHERE.push('s.folderId = ?')\n        params.push(folderId)\n      }\n      else if (isInbox) {\n        WHERE.push('s.folderId IS NULL')\n      }\n\n      if (tagId) {\n        WHERE.push(\n          'EXISTS (SELECT 1 FROM snippet_tags st2 WHERE st2.snippetId = s.id AND st2.tagId = ?)',\n        )\n        params.push(tagId)\n      }\n\n      if (isFavorites) {\n        WHERE.push('s.isFavorites = 1')\n      }\n\n      if (isDeleted) {\n        WHERE.push('s.isDeleted = 1')\n      }\n      else {\n        WHERE.push('s.isDeleted = 0')\n      }\n\n      const whereCondition = WHERE.length ? `WHERE ${WHERE.join(' AND ')}` : ''\n\n      const stmt = db.prepare(`\n        WITH snippet_contents_data AS (\n          SELECT\n            snippetId,\n            json_group_array(\n              json_object(\n                'id', id,\n                'label', label,\n                'value', value,\n                'language', language\n              )\n            ) as contents\n          FROM snippet_contents\n          GROUP BY snippetId\n        ),\n        snippet_data AS (\n          SELECT\n            s.id,\n            s.name,\n            s.description,\n            s.isFavorites,\n            s.isDeleted,\n            s.createdAt,\n            s.updatedAt,\n            CASE\n              WHEN f.id IS NOT NULL THEN json_object(\n                'id', f.id,\n                'name', f.name\n              )\n              ELSE NULL\n            END as folder,\n            json_group_array(\n              json_object(\n                'id', t.id,\n                'name', t.name\n              )\n            ) FILTER (WHERE t.id IS NOT NULL) as tags,\n            COALESCE(scd.contents, '[]') as contents\n          FROM snippets s\n          LEFT JOIN folders f ON s.folderId = f.id\n          LEFT JOIN snippet_tags st ON s.id = st.snippetId\n          LEFT JOIN tags t ON st.tagId = t.id\n          LEFT JOIN snippet_contents_data scd ON s.id = scd.snippetId\n          ${whereCondition}\n          GROUP BY s.id\n        )\n        SELECT\n          id,\n          name,\n          description,\n          isFavorites,\n          isDeleted,\n          folder,\n          tags,\n          contents,\n          createdAt,\n          updatedAt\n        FROM snippet_data\n        ORDER BY createdAt ${ORDER}\n      `)\n\n      const rows = stmt.all(...params) as SnippetRow[]\n\n      const result = rows.map((snippet) => {\n        return {\n          id: snippet.id,\n          name: snippet.name,\n          description: snippet.description,\n          tags: JSON.parse(snippet.tags) as SnippetRecord['tags'],\n          folder: JSON.parse(\n            snippet.folder as unknown as string,\n          ) as SnippetRecord['folder'],\n          contents: JSON.parse(snippet.contents) as SnippetRecord['contents'],\n          isFavorites: snippet.isFavorites,\n          isDeleted: snippet.isDeleted,\n          createdAt: snippet.createdAt,\n          updatedAt: snippet.updatedAt,\n        }\n      })\n\n      return result\n    },\n    getSnippetsCounts: () => {\n      const db = useDB()\n\n      const stmt = db.prepare(`\n        SELECT\n          COUNT(*) as total,\n          COALESCE(SUM(CASE WHEN isDeleted = 1 THEN 1 ELSE 0 END), 0) as trash\n        FROM snippets\n      `)\n\n      return stmt.get() as SnippetsCount\n    },\n    createSnippet: (input) => {\n      const db = useDB()\n      const { name, folderId } = input\n\n      const stmt = db.prepare(`\n        INSERT INTO snippets (name, description, folderId, isDeleted, isFavorites, createdAt, updatedAt)\n        VALUES (?, ?, ?, ?, ?, ?, ?)\n      `)\n\n      const now = Date.now()\n\n      const { lastInsertRowid } = stmt.run(\n        name,\n        null,\n        folderId,\n        0,\n        0,\n        now,\n        now,\n      )\n\n      return { id: Number(lastInsertRowid) }\n    },\n    createSnippetContent: (snippetId, input: SnippetContentCreateInput) => {\n      const db = useDB()\n      const { label, value, language } = input\n\n      const stmt = db.prepare(`\n        INSERT INTO snippet_contents (snippetId, label, value, language)\n        VALUES (?, ?, ?, ?)\n      `)\n\n      const { lastInsertRowid } = stmt.run(\n        snippetId,\n        label,\n        value || null,\n        language,\n      )\n\n      return { id: Number(lastInsertRowid) }\n    },\n    updateSnippet: (id, input: SnippetUpdateInput): SnippetUpdateResult => {\n      const db = useDB()\n\n      const updateFields: string[] = []\n      const updateParams: any[] = []\n\n      if ('name' in input) {\n        updateFields.push('name = ?')\n        updateParams.push(input.name)\n      }\n\n      if ('description' in input) {\n        updateFields.push('description = ?')\n        updateParams.push(input.description)\n      }\n\n      if ('folderId' in input) {\n        updateFields.push('folderId = ?')\n        updateParams.push(input.folderId)\n      }\n\n      if ('isFavorites' in input) {\n        updateFields.push('isFavorites = ?')\n        updateParams.push(input.isFavorites)\n      }\n\n      if ('isDeleted' in input) {\n        updateFields.push('isDeleted = ?')\n        updateParams.push(input.isDeleted)\n      }\n\n      if (updateFields.length === 0) {\n        return {\n          invalidInput: true,\n          notFound: false,\n        }\n      }\n\n      updateFields.push('updatedAt = ?')\n      updateParams.push(Date.now())\n      updateParams.push(id)\n\n      const stmt = db.prepare(`\n        UPDATE snippets SET\n          ${updateFields.join(', ')}\n        WHERE id = ?\n      `)\n\n      const result = stmt.run(...updateParams)\n\n      return {\n        invalidInput: false,\n        notFound: !result.changes,\n      }\n    },\n    updateSnippetContent: (\n      snippetId,\n      contentId,\n      input: SnippetContentUpdateInput,\n    ): SnippetContentUpdateResult => {\n      const db = useDB()\n\n      const updateFields: string[] = []\n      const updateParams: any[] = []\n\n      if ('label' in input) {\n        updateFields.push('label = ?')\n        updateParams.push(input.label)\n      }\n\n      if ('value' in input) {\n        updateFields.push('value = ?')\n        updateParams.push(input.value)\n      }\n\n      if ('language' in input) {\n        updateFields.push('language = ?')\n        updateParams.push(input.language)\n      }\n\n      if (updateFields.length === 0) {\n        return {\n          invalidInput: true,\n          notFound: false,\n          parentNotFound: false,\n        }\n      }\n\n      updateParams.push(contentId)\n\n      const contentsStmt = db.prepare(`\n        UPDATE snippet_contents SET\n          ${updateFields.join(', ')}\n        WHERE id = ?\n      `)\n\n      const contentsResult = contentsStmt.run(...updateParams)\n\n      if (!contentsResult.changes) {\n        return {\n          invalidInput: false,\n          notFound: true,\n          parentNotFound: false,\n        }\n      }\n\n      const snippetsStmt = db.prepare(`\n        UPDATE snippets SET updatedAt = ? WHERE id = ?\n      `)\n\n      const snippetResult = snippetsStmt.run(Date.now(), snippetId)\n\n      return {\n        invalidInput: false,\n        notFound: false,\n        parentNotFound: !snippetResult.changes,\n      }\n    },\n    addTagToSnippet: (snippetId, tagId): SnippetTagRelationResult => {\n      const db = useDB()\n      const snippet = db\n        .prepare(\n          `\n            SELECT id FROM snippets WHERE id = ?\n          `,\n        )\n        .get(snippetId)\n\n      if (!snippet) {\n        return {\n          notFound: false,\n          snippetFound: false,\n          tagFound: true,\n        }\n      }\n\n      const tag = db\n        .prepare(\n          `\n            SELECT id FROM tags WHERE id = ?\n          `,\n        )\n        .get(tagId)\n\n      if (!tag) {\n        return {\n          notFound: false,\n          snippetFound: true,\n          tagFound: false,\n        }\n      }\n\n      const stmt = db.prepare(\n        `\n          INSERT INTO snippet_tags (snippetId, tagId)\n          VALUES (?, ?)\n        `,\n      )\n\n      stmt.run(snippetId, tagId)\n\n      return {\n        notFound: false,\n        snippetFound: true,\n        tagFound: true,\n      }\n    },\n    deleteTagFromSnippet: (\n      snippetId,\n      tagId,\n    ): SnippetTagDeleteRelationResult => {\n      const db = useDB()\n      const snippet = db\n        .prepare(\n          `\n            SELECT id FROM snippets WHERE id = ?\n          `,\n        )\n        .get(snippetId)\n\n      if (!snippet) {\n        return {\n          notFound: false,\n          snippetFound: false,\n          tagFound: true,\n          relationFound: true,\n        }\n      }\n\n      const tag = db\n        .prepare(\n          `\n            SELECT id FROM tags WHERE id = ?\n          `,\n        )\n        .get(tagId)\n\n      if (!tag) {\n        return {\n          notFound: false,\n          snippetFound: true,\n          tagFound: false,\n          relationFound: true,\n        }\n      }\n\n      const stmt = db.prepare(\n        `\n          DELETE FROM snippet_tags\n          WHERE snippetId = ? AND tagId = ?\n        `,\n      )\n\n      const result = stmt.run(snippetId, tagId)\n\n      return {\n        notFound: false,\n        snippetFound: true,\n        tagFound: true,\n        relationFound: !!result.changes,\n      }\n    },\n    deleteSnippet: (id) => {\n      const db = useDB()\n      const snippet = db\n        .prepare(\n          `\n            SELECT id FROM snippets WHERE id = ?\n          `,\n        )\n        .get(id)\n\n      if (!snippet) {\n        return { deleted: false }\n      }\n\n      const transaction = db.transaction(() => {\n        db.prepare(\n          `\n            DELETE FROM snippet_tags WHERE snippetId = ?\n          `,\n        ).run(id)\n\n        db.prepare(\n          `\n            DELETE FROM snippet_contents WHERE snippetId = ?\n          `,\n        ).run(id)\n\n        db.prepare(\n          `\n            DELETE FROM snippets WHERE id = ?\n          `,\n        ).run(id)\n      })\n\n      transaction()\n\n      return { deleted: true }\n    },\n    emptyTrash: () => {\n      const db = useDB()\n      const deletedSnippets = db\n        .prepare(\n          `\n            SELECT id FROM snippets WHERE isDeleted = 1\n          `,\n        )\n        .all() as { id: number }[]\n\n      if (deletedSnippets.length === 0) {\n        return { deletedCount: 0 }\n      }\n\n      const transaction = db.transaction(() => {\n        db.prepare(\n          `\n            DELETE FROM snippet_tags\n            WHERE snippetId IN (SELECT id FROM snippets WHERE isDeleted = 1)\n          `,\n        ).run()\n\n        db.prepare(\n          `\n            DELETE FROM snippet_contents\n            WHERE snippetId IN (SELECT id FROM snippets WHERE isDeleted = 1)\n          `,\n        ).run()\n\n        const result = db\n          .prepare(\n            `\n              DELETE FROM snippets WHERE isDeleted = 1\n            `,\n          )\n          .run()\n\n        return result.changes\n      })\n\n      const deletedCount = transaction()\n\n      return { deletedCount }\n    },\n    deleteSnippetContent: (contentId) => {\n      const db = useDB()\n\n      const result = db\n        .prepare(\n          `\n            DELETE FROM snippet_contents WHERE id = ?\n          `,\n        )\n        .run(contentId)\n\n      return { deleted: !!result.changes }\n    },\n  }\n}\n"
  },
  {
    "path": "src/main/storage/providers/sqlite/tags.ts",
    "content": "import type { TagRecord, TagsStorage } from '../../contracts'\nimport { useDB } from '../../../db'\n\nexport function createSqliteTagsStorage(): TagsStorage {\n  return {\n    getTags: () => {\n      const db = useDB()\n      const stmt = db.prepare(`\n        SELECT id, name\n        FROM tags\n        ORDER BY name ASC\n      `)\n\n      return stmt.all() as TagRecord[]\n    },\n    createTag: (name) => {\n      const db = useDB()\n      const stmt = db.prepare(\n        `INSERT INTO tags (name, createdAt, updatedAt) VALUES (?, ?, ?)`,\n      )\n      const now = Date.now()\n\n      const { lastInsertRowid } = stmt.run(name, now, now)\n\n      return { id: Number(lastInsertRowid) }\n    },\n    deleteTag: (id) => {\n      const db = useDB()\n\n      const tag = db\n        .prepare(\n          `\n          SELECT id FROM tags WHERE id = ?\n        `,\n        )\n        .get(id)\n\n      if (!tag) {\n        return { deleted: false }\n      }\n\n      const transaction = db.transaction(() => {\n        db.prepare(\n          `\n          DELETE FROM snippet_tags WHERE tagId = ?\n        `,\n        ).run(id)\n\n        const stmt = db.prepare(`DELETE FROM tags WHERE id = ?`)\n        stmt.run(id)\n      })\n\n      transaction()\n\n      return { deleted: true }\n    },\n  }\n}\n"
  },
  {
    "path": "src/main/store/constants.ts",
    "content": "import type { EditorSettings } from './types'\n\nexport const APP_DEFAULTS = {\n  sizes: {\n    sidebar: 180,\n    snippetList: 250,\n    tagsList: 50, // в %\n  },\n}\n\nexport const EDITOR_DEFAULTS: EditorSettings = {\n  fontSize: 13,\n  fontFamily: 'SF Mono, Consolas, Menlo, Ubuntu Mono, monospace',\n  wrap: false,\n  tabSize: 2,\n  trailingComma: 'all',\n  semi: false,\n  singleQuote: false,\n  highlightLine: false,\n  matchBrackets: true,\n}\n"
  },
  {
    "path": "src/main/store/index.ts",
    "content": "import app from './module/app'\nimport currencyRates from './module/currency-rates'\nimport mathNotebook from './module/math-notebook'\nimport preferences from './module/preferences'\n\nexport const store = {\n  app,\n  currencyRates,\n  preferences,\n  mathNotebook,\n}\n"
  },
  {
    "path": "src/main/store/module/app.ts",
    "content": "import type { AppStore } from '../types'\nimport Store from 'electron-store'\nimport { APP_DEFAULTS } from '../constants'\n\nexport default new Store<AppStore>({\n  name: 'app',\n  cwd: 'v2',\n\n  defaults: {\n    bounds: {},\n    sizes: {\n      sidebarWidth: APP_DEFAULTS.sizes.sidebar,\n      snippetListWidth: APP_DEFAULTS.sizes.snippetList,\n      tagsListHeight: APP_DEFAULTS.sizes.tagsList,\n    },\n    state: {},\n    isAutoMigratedFromJson: false,\n    lastSeenReleaseNoticeVersion: '',\n    lastNotifiedUpdateVersion: '',\n  },\n})\n"
  },
  {
    "path": "src/main/store/module/currency-rates.ts",
    "content": "import type { CurrencyRatesStore } from '../types'\nimport Store from 'electron-store'\n\nexport default new Store<CurrencyRatesStore>({\n  name: 'currency-rates',\n  cwd: 'v2',\n\n  defaults: {\n    cache: null,\n  },\n})\n"
  },
  {
    "path": "src/main/store/module/math-notebook.ts",
    "content": "import type { MathNotebookStore } from '../types'\nimport Store from 'electron-store'\n\nexport default new Store<MathNotebookStore>({\n  name: 'math-notebook',\n  cwd: 'v2',\n\n  defaults: {\n    sheets: [],\n    activeSheetId: null,\n  },\n})\n"
  },
  {
    "path": "src/main/store/module/preferences.ts",
    "content": "import type { PreferencesStore } from '../types'\nimport { homedir, platform } from 'node:os'\nimport path from 'node:path'\nimport { app } from 'electron'\nimport Store from 'electron-store'\nimport fs from 'fs-extra'\nimport { EDITOR_DEFAULTS } from '../constants'\n\nconst isWin = platform() === 'win32'\n\nconst storagePath = isWin ? `${homedir()}\\\\massCode` : `${homedir()}/massCode`\nconst backupPath = isWin ? `${storagePath}\\\\backups` : `${storagePath}/backups`\n\n// Detect the correct default engine BEFORE the store constructor merges\n// defaults into the preferences file. Without this, existing SQLite users\n// who never had a `storage.engine` key would get 'markdown' as default,\n// making all their snippets invisible.\nfunction detectDefaultEngine(): 'sqlite' | 'markdown' {\n  try {\n    const prefsPath = path.join(\n      app.getPath('userData'),\n      'v2',\n      'preferences.json',\n    )\n\n    if (fs.existsSync(prefsPath)) {\n      const raw = JSON.parse(fs.readFileSync(prefsPath, 'utf8'))\n\n      // User already has an explicit engine setting — respect it\n      if (raw.storage?.engine) {\n        return raw.storage.engine\n      }\n\n      // No engine setting — check if SQLite DB exists (existing user)\n      const userStoragePath = raw.storagePath || storagePath\n      const dbPath = path.join(userStoragePath, 'massCode.db')\n\n      if (fs.existsSync(dbPath)) {\n        return 'sqlite'\n      }\n    }\n  }\n  catch {\n    // If anything goes wrong reading the file, fall through to default\n  }\n\n  return 'markdown'\n}\n\nconst preferencesStore = new Store<PreferencesStore>({\n  name: 'preferences',\n  cwd: 'v2',\n\n  defaults: {\n    storagePath,\n    apiPort: 4321,\n    language: 'en_US',\n    theme: 'auto',\n    editor: EDITOR_DEFAULTS,\n    storage: {\n      engine: detectDefaultEngine(),\n      vaultPath: null,\n    },\n    markdown: {\n      scale: 1,\n    },\n    backup: {\n      path: backupPath,\n      enabled: true,\n      interval: 6,\n      maxBackups: 5,\n    },\n  },\n})\n\nexport default preferencesStore\n"
  },
  {
    "path": "src/main/store/types/index.ts",
    "content": "import type ElectronStore from 'electron-store'\n\nexport interface AppStore {\n  bounds: object\n  sizes: {\n    sidebarWidth: number\n    snippetListWidth: number\n    tagsListHeight: number\n  }\n  state: {\n    snippetId?: number\n    snippetContentIndex?: number\n    folderId?: number\n    tagId?: number\n    libraryFilter?: string\n    isSidebarHidden?: boolean\n  }\n  isAutoMigratedFromJson: boolean\n  nextDonateNotification?: number\n  lastSeenReleaseNoticeVersion?: string\n  lastNotifiedUpdateVersion?: string\n}\n\nexport interface EditorSettings {\n  fontSize: number\n  fontFamily: string\n  wrap: boolean\n  tabSize: number\n  trailingComma: 'all' | 'none' | 'es5'\n  semi: boolean\n  singleQuote: boolean\n  highlightLine: boolean\n  matchBrackets: boolean\n}\n\nexport interface MarkdownSettings {\n  scale: number\n}\n\nexport interface StorageSettings {\n  engine: 'sqlite' | 'markdown'\n  vaultPath: string | null\n}\n\nexport interface BackupSettings {\n  path: string\n  enabled: boolean\n  interval: number\n  maxBackups: number\n  lastBackupTime?: number\n}\n\nexport interface PreferencesStore {\n  storagePath: string\n  apiPort: number\n  language: string\n  theme: string\n  editor: EditorSettings\n  storage: StorageSettings\n  markdown: MarkdownSettings\n  backup: BackupSettings\n}\n\nexport interface MathSheet {\n  id: string\n  name: string\n  content: string\n  createdAt: number\n  updatedAt: number\n}\n\nexport interface MathNotebookStore {\n  sheets: MathSheet[]\n  activeSheetId: string | null\n}\n\nexport interface CurrencyRatesCache {\n  rates: Record<string, number>\n  fetchedAt: number\n}\n\nexport interface CurrencyRatesStore {\n  cache: CurrencyRatesCache | null\n}\n\nexport interface Store {\n  app: ElectronStore<AppStore>\n  preferences: ElectronStore<PreferencesStore>\n  mathNotebook: ElectronStore<MathNotebookStore>\n  currencyRates: ElectronStore<CurrencyRatesStore>\n}\n"
  },
  {
    "path": "src/main/store/types/theme.ts",
    "content": "export type ThemeType = 'light' | 'dark'\n\nexport type ThemeColors = Record<string, string>\n\nexport type ThemeEditorColors = Record<string, string>\n\nexport interface ThemeFile {\n  name: string\n  author?: string\n  type: ThemeType\n  colors?: ThemeColors\n  editorColors?: ThemeEditorColors\n}\n\nexport interface ThemeListItem {\n  id: string\n  name: string\n  author?: string\n  type: ThemeType\n}\n"
  },
  {
    "path": "src/main/types/index.ts",
    "content": "import type { IpcRendererEvent } from 'electron'\nimport type { Store } from '../store/types'\nimport type { Channel } from './ipc'\n\nexport interface EventCallback {\n  (event?: IpcRendererEvent, ...args: any[]): void\n}\n\nexport interface DBQueryArgs {\n  sql: string\n  params?: unknown[]\n}\n\ndeclare global {\n  interface Window {\n    electron: {\n      ipc: {\n        on: (channel: Channel, cb: EventCallback) => void\n        send: (channel: Channel, data: any, cb: EventCallback) => void\n        invoke: <T, U = any>(channel: Channel, data: T) => Promise<U>\n        removeListener: (channel: Channel, cb: EventCallback) => void\n        removeListeners: (channel: Channel) => void\n      }\n      db: {\n        query: (sql: string, params?: any[]) => Promise<any>\n      }\n      store: Store\n      i18n: {\n        t: (key: string, options?: any) => string\n      }\n    }\n  }\n\n  // eslint-disable-next-line ts/no-namespace\n  namespace Electron {\n    interface IpcMain {\n      // eslint-disable-next-line ts/method-signature-style\n      handle<T, U = any>(\n        channel: Channel,\n        listener: (event: IpcMainInvokeEvent, payload: T) => Promise<U>,\n      ): void\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/types/ipc.ts",
    "content": "import type { OpenDialogOptions } from 'electron'\n\nexport type CombineWith<T extends string, U extends string> = `${U}:${T}`\n\ntype MainMenuAction =\n  | 'add-description'\n  | 'copy-snippet'\n  | 'find'\n  | 'font-size-decrease'\n  | 'font-size-increase'\n  | 'font-size-reset'\n  | 'format'\n  | 'goto-preferences'\n  | 'goto-devtools'\n  | 'new-folder'\n  | 'new-fragment'\n  | 'new-snippet'\n  | 'open-dialog'\n  | 'preview-markdown'\n  | 'preview-mindmap'\n  | 'preview-code'\n  | 'preview-json'\n  | 'presentation-mode'\n  | 'toggle-sidebar'\n  | 'goto-math-notebook'\n\ntype DBAction =\n  | 'relaod'\n  | 'move'\n  | 'migrate'\n  | 'migrate-to-markdown'\n  | 'migrate-to-sqlite'\n  | 'clear'\n  | 'backup'\n  | 'restore'\n  | 'delete-backup'\n  | 'backup-list'\n  | 'start-auto-backup'\n  | 'stop-auto-backup'\n  | 'move-backup'\n\ntype SystemAction =\n  | 'currency-rates'\n  | 'reload'\n  | 'open-external'\n  | 'deep-link'\n  | 'update-available'\n  | 'feature-notice'\n  | 'renderer-ready'\n  | 'storage-synced'\n  | 'error'\ntype PrettierAction = 'format'\ntype FsAction = 'assets'\ntype ThemeAction = 'list' | 'get' | 'open-dir' | 'create-template' | 'changed'\ntype SpacesAction = 'math:read' | 'math:write'\n\nexport type MainMenuChannel = CombineWith<MainMenuAction, 'main-menu'>\nexport type DBChannel = CombineWith<DBAction, 'db'>\nexport type SystemChannel = CombineWith<SystemAction, 'system'>\nexport type PrettierChannel = CombineWith<PrettierAction, 'prettier'>\nexport type FsChannel = CombineWith<FsAction, 'fs'>\nexport type ThemeChannel = CombineWith<ThemeAction, 'theme'>\nexport type SpacesChannel = CombineWith<SpacesAction, 'spaces'>\n\nexport type Channel =\n  | MainMenuChannel\n  | DBChannel\n  | SystemChannel\n  | PrettierChannel\n  | FsChannel\n  | ThemeChannel\n  | SpacesChannel\n\nexport interface DialogOptions {\n  properties?: OpenDialogOptions['properties']\n  filters?: OpenDialogOptions['filters']\n}\n\nexport interface PrettierOptions {\n  text: string\n  parser: string\n}\n\nexport interface FsAssetsOptions {\n  path: string\n}\n"
  },
  {
    "path": "src/main/updates/index.ts",
    "content": "/* eslint-disable node/prefer-global/process */\nimport { repository, version } from '../../../package.json'\nimport { send } from '../ipc'\nimport { store } from '../store'\n\ninterface GitHubRelease {\n  tag_name: string\n}\n\nconst INTERVAL = 1000 * 60 * 60 * 3 // 3 часа\nconst isDev = process.env.NODE_ENV === 'development'\nconst currentVersionParts = parseVersion(version)!\nconst currentMajorVersion = currentVersionParts[0]\n\nfunction parseVersion(rawVersion: string): [number, number, number] | null {\n  const normalizedVersion = rawVersion.trim().replace(/^v/, '')\n  const match = normalizedVersion.match(/^(\\d+)\\.(\\d+)\\.(\\d+)$/)\n\n  if (!match) {\n    return null\n  }\n\n  return [\n    Number.parseInt(match[1], 10),\n    Number.parseInt(match[2], 10),\n    Number.parseInt(match[3], 10),\n  ]\n}\n\nfunction compareVersions(\n  left: [number, number, number],\n  right: [number, number, number],\n): 1 | -1 | 0 {\n  for (let i = 0; i < 3; i += 1) {\n    if (left[i] === right[i]) {\n      continue\n    }\n\n    return left[i] > right[i] ? 1 : -1\n  }\n\n  return 0\n}\n\nfunction getLatestReleaseVersion(releases: GitHubRelease[]) {\n  let latestParsedVersion: [number, number, number] | null = null\n\n  for (const release of releases) {\n    const parsedVersion = parseVersion(release.tag_name)\n    if (!parsedVersion || parsedVersion[0] !== currentMajorVersion) {\n      continue\n    }\n\n    if (\n      !latestParsedVersion\n      || compareVersions(parsedVersion, latestParsedVersion) > 0\n    ) {\n      latestParsedVersion = parsedVersion\n    }\n  }\n\n  return latestParsedVersion?.join('.')\n}\n\nfunction isNewerVersion(versionToCompare: string) {\n  const parsedVersion = parseVersion(versionToCompare)\n  if (!parsedVersion) {\n    return false\n  }\n\n  return compareVersions(parsedVersion, currentVersionParts) > 0\n}\n\nexport async function fetchUpdates() {\n  if (isDev) {\n    return\n  }\n\n  try {\n    const url = `${repository.replace('github.com', 'api.github.com/repos')}/releases`\n\n    const response = await fetch(url)\n    if (!response.ok) {\n      return\n    }\n\n    const data = (await response.json()) as GitHubRelease[]\n    if (!Array.isArray(data) || data.length === 0) {\n      return\n    }\n\n    const latestVersion = getLatestReleaseVersion(data)\n    if (latestVersion && isNewerVersion(latestVersion)) {\n      return latestVersion\n    }\n  }\n  catch (err) {\n    console.error('Error checking for updates:', err)\n  }\n}\n\nasync function notifyAboutUpdate() {\n  const latestVersion = await fetchUpdates()\n  if (!latestVersion) {\n    return\n  }\n\n  const lastNotifiedVersion = store.app.get('lastNotifiedUpdateVersion')\n  if (lastNotifiedVersion === latestVersion) {\n    return\n  }\n\n  send('system:update-available')\n  store.app.set('lastNotifiedUpdateVersion', latestVersion)\n}\n\nexport function checkForUpdates() {\n  void notifyAboutUpdate()\n\n  setInterval(() => {\n    void notifyAboutUpdate()\n  }, INTERVAL)\n}\n"
  },
  {
    "path": "src/main/utils/index.ts",
    "content": "import { BrowserWindow } from 'electron'\n\nexport function log(context: string, error: unknown): void {\n  const message = error instanceof Error ? error.message : String(error)\n  const stack = error instanceof Error ? error.stack : undefined\n\n  console.error(`[${context}] ${message}`, error)\n\n  BrowserWindow.getFocusedWindow()?.webContents.send('system:error', {\n    context,\n    message,\n    stack,\n  })\n}\n\nexport function importEsm(specifier: string) {\n  // eslint-disable-next-line no-new-func\n  return new Function('s', 'return import(s)')(specifier) as Promise<any>\n}\n"
  },
  {
    "path": "src/renderer/App.vue",
    "content": "<script setup lang=\"ts\">\nimport * as Tooltip from '@/components/ui/shadcn/tooltip'\nimport { useApp, useTheme } from '@/composables'\nimport { i18n, ipc } from '@/electron'\nimport { RouterName } from '@/router'\nimport { isSpaceRouteName } from '@/spaceDefinitions'\nimport { isMac } from '@/utils'\nimport { LoaderCircle } from 'lucide-vue-next'\nimport { loadWASM } from 'onigasm'\nimport onigasmFile from 'onigasm/lib/onigasm.wasm?url'\nimport { useRoute } from 'vue-router'\nimport { Toaster } from 'vue-sonner'\nimport { loadGrammars } from './components/editor/grammars'\nimport { registerIPCListeners } from './ipc'\nimport { notifications } from './services/notifications'\n\nconst { isAppLoading } = useApp()\nconst route = useRoute()\n\nconst showLoader = ref(false)\n\nconst isMainRoute = computed(() => route.name === RouterName.main)\nconst isLoaderVisible = computed(() => isMainRoute.value && isAppLoading.value)\n\nwatch(\n  isLoaderVisible,\n  (value) => {\n    if (!value) {\n      showLoader.value = false\n      return\n    }\n\n    const timer = setTimeout(() => {\n      showLoader.value = true\n    }, 300)\n\n    onWatcherCleanup(() => clearTimeout(timer))\n  },\n  { immediate: true },\n)\n\nwatch(\n  isMainRoute,\n  (value) => {\n    if (!value) {\n      isAppLoading.value = false\n    }\n  },\n  { immediate: true },\n)\n\nuseTheme()\n\nasync function init() {\n  registerIPCListeners()\n  ipc.send('system:renderer-ready', null, () => {})\n  loadWASM(onigasmFile)\n  await loadGrammars()\n  notifications()\n}\n\ninit()\n</script>\n\n<template>\n  <Tooltip.TooltipProvider>\n    <div\n      v-if=\"isMac\"\n      data-title-bar\n      class=\"absolute top-0 z-50 h-3 w-full select-none\"\n    />\n    <RouterView v-slot=\"{ Component, route: currentRoute }\">\n      <AppSpaceShell v-if=\"isSpaceRouteName(currentRoute.name)\">\n        <component :is=\"Component\" />\n      </AppSpaceShell>\n      <component\n        :is=\"Component\"\n        v-else\n      />\n    </RouterView>\n    <div\n      v-if=\"isLoaderVisible\"\n      class=\"bg-background absolute inset-0 z-50 flex flex-col items-center justify-center\"\n    >\n      <template v-if=\"showLoader\">\n        {{ i18n.t(\"loading\") }}\n        <LoaderCircle class=\"text-muted-foreground mt-4 h-5 w-5 animate-spin\" />\n      </template>\n    </div>\n    <Toaster style=\"--width: 356px; --offset: 12px\" />\n  </Tooltip.TooltipProvider>\n</template>\n\n<style>\n[data-title-bar] {\n  -webkit-app-region: drag;\n}\n</style>\n"
  },
  {
    "path": "src/renderer/components/app-space-shell/AppSpaceShell.vue",
    "content": "<script setup lang=\"ts\">\nimport { isMac } from '@/utils'\n</script>\n\n<template>\n  <div class=\"grid h-screen grid-cols-[72px_1fr] overflow-hidden\">\n    <div\n      class=\"bg-background border-border/70 border-r\"\n      :class=\"isMac && 'mt-2.5'\"\n    >\n      <SpaceRail />\n    </div>\n    <div class=\"min-h-0 min-w-0 overflow-hidden\">\n      <slot />\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/code-space-layout/CodeSpaceLayout.vue",
    "content": "<script setup lang=\"ts\">\nimport * as Resizable from '@/components/ui/shadcn/resizable'\nimport { useApp } from '@/composables'\nimport { store } from '@/electron'\n\nconst { isSidebarHidden } = useApp()\n\nconst storedLayout = store.app.get('sizes.layout') as number[] | undefined\nconst defaultLayout = storedLayout || [15, 20, 65]\n\nfunction onLayout(layout: number[]) {\n  store.app.set('sizes.layout', layout)\n}\n</script>\n\n<template>\n  <div\n    v-if=\"isSidebarHidden\"\n    class=\"h-screen\"\n  >\n    <Editor />\n  </div>\n  <Resizable.ResizablePanelGroup\n    v-else\n    direction=\"horizontal\"\n    class=\"h-screen\"\n    @layout=\"onLayout\"\n  >\n    <Resizable.ResizablePanel\n      :default-size=\"defaultLayout[0]\"\n      :min-size=\"10\"\n    >\n      <Sidebar />\n    </Resizable.ResizablePanel>\n    <Resizable.ResizableHandle />\n    <Resizable.ResizablePanel\n      :default-size=\"defaultLayout[1]\"\n      :min-size=\"10\"\n    >\n      <SnippetList />\n    </Resizable.ResizablePanel>\n    <Resizable.ResizableHandle />\n    <Resizable.ResizablePanel\n      :default-size=\"defaultLayout[2]\"\n      :min-size=\"30\"\n    >\n      <Editor />\n    </Resizable.ResizablePanel>\n  </Resizable.ResizablePanelGroup>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/ShadcnComparison.vue",
    "content": "<script setup lang=\"ts\">\nimport { copy } from './shadcn-comparison/copy'\n</script>\n\n<template>\n  <div class=\"space-y-8 py-5\">\n    <header class=\"space-y-2\">\n      <h1 class=\"text-2xl font-semibold tracking-tight\">\n        {{ copy.title }}\n      </h1>\n      <p class=\"text-muted-foreground max-w-3xl text-sm\">\n        {{ copy.description }}\n      </p>\n    </header>\n\n    <DevtoolsShadcnComparisonRootUi />\n    <DevtoolsShadcnComparisonLegacy />\n    <DevtoolsShadcnComparisonShadcn2 />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/converters/Base64Converter.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\n\nconst text = ref('')\nconst isBase64ToText = ref(false)\n\nconst copy = useCopyToClipboard()\n\nconst title = computed(() => i18n.t('devtools:converters.base64.label'))\nconst description = computed(() =>\n  i18n.t('devtools:converters.base64.description'),\n)\n\nfunction textToBase64(input: string): string {\n  try {\n    const encoder = new TextEncoder()\n    const data = encoder.encode(input)\n    return btoa(String.fromCharCode(...data))\n  }\n  catch (error) {\n    console.error('Error encoding to Base64:', error)\n    return ''\n  }\n}\n\nfunction base64ToText(input: string): string {\n  try {\n    const binaryString = atob(input)\n    const bytes = new Uint8Array(binaryString.length)\n    for (let i = 0; i < binaryString.length; i++) {\n      bytes[i] = binaryString.charCodeAt(i)\n    }\n    const decoder = new TextDecoder()\n    return decoder.decode(bytes)\n  }\n  catch (error) {\n    console.error('Error decoding from Base64:', error)\n    return ''\n  }\n}\n\nconst output = computed(() => {\n  if (!text.value)\n    return ''\n\n  if (isBase64ToText.value) {\n    return base64ToText(text.value)\n  }\n  else {\n    return textToBase64(text.value)\n  }\n})\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"flex items-center gap-2\">\n      {{ i18n.t(\"devtools:converters.base64.modes.textToBase64\") }}\n      <Switch\n        :checked=\"isBase64ToText\"\n        @update:checked=\"isBase64ToText = $event\"\n      />\n      {{ i18n.t(\"devtools:converters.base64.modes.base64ToText\") }}\n    </div>\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"text\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        clearable\n        type=\"textarea\"\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"output\"\n        type=\"textarea\"\n        readonly\n      />\n      <Button\n        variant=\"outline\"\n        @click=\"copy(output)\"\n      >\n        {{ i18n.t(\"button.copy\") }}\n      </Button>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/converters/CaseConverter.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport {\n  camelCase,\n  capitalCase,\n  constantCase,\n  dotCase,\n  kebabCase,\n  pascalCase,\n  pathCase,\n  snakeCase,\n} from 'change-case'\nimport { Copy } from 'lucide-vue-next'\n\nconst text = ref('')\n\nconst title = computed(() => i18n.t('devtools:converters.caseConverter.label'))\nconst description = computed(() =>\n  i18n.t('devtools:converters.caseConverter.description'),\n)\n\nconst caseType = {\n  uppercase: i18n.t('devtools:converters.caseConverter.caseType.uppercase'),\n  lowercase: i18n.t('devtools:converters.caseConverter.caseType.lowercase'),\n  camelcase: i18n.t('devtools:converters.caseConverter.caseType.camelcase'),\n  snakecase: i18n.t('devtools:converters.caseConverter.caseType.snakecase'),\n  kebabcase: i18n.t('devtools:converters.caseConverter.caseType.kebabcase'),\n  pascalcase: i18n.t('devtools:converters.caseConverter.caseType.pascalcase'),\n  constantcase: i18n.t(\n    'devtools:converters.caseConverter.caseType.constantcase',\n  ),\n  capitalize: i18n.t('devtools:converters.caseConverter.caseType.capitalize'),\n  dotcase: i18n.t('devtools:converters.caseConverter.caseType.dotcase'),\n  pathcase: i18n.t('devtools:converters.caseConverter.caseType.pathcase'),\n} as const\n\nfunction convert(input: string, type: keyof typeof caseType): string {\n  if (!input)\n    return ''\n\n  switch (type) {\n    case 'uppercase':\n      return input.toUpperCase()\n    case 'lowercase':\n      return input.toLowerCase()\n    case 'camelcase':\n      return camelCase(input)\n    case 'capitalize':\n      return capitalCase(input)\n    case 'constantcase':\n      return constantCase(input)\n    case 'snakecase':\n      return snakeCase(input)\n    case 'kebabcase':\n      return kebabCase(input)\n    case 'pascalcase':\n      return pascalCase(input)\n    case 'dotcase':\n      return dotCase(input)\n    case 'pathcase':\n      return pathCase(input)\n    default:\n      return input\n  }\n}\n\nconst copy = useCopyToClipboard()\n\nfunction copyCase(type: keyof typeof caseType) {\n  copy(convert(text.value, type))\n}\n\nconst output = computed(() => {\n  return Object.entries(caseType).map(([key, value]) => ({\n    label: value,\n    value: convert(text.value, key as keyof typeof caseType),\n  }))\n})\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"text\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        clearable\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <div\n        class=\"grid grid-cols-[max-content_1fr_max-content] items-center gap-4\"\n      >\n        <template\n          v-for=\"[type, label] in Object.entries(caseType)\"\n          :key=\"type\"\n        >\n          <UiText\n            as=\"div\"\n            variant=\"base\"\n            weight=\"medium\"\n          >\n            {{ label }}\n          </UiText>\n          <UiInput\n            :model-value=\"output.find((item) => item.label === label)?.value\"\n            readonly\n          />\n          <Button\n            variant=\"icon\"\n            size=\"icon\"\n            @click=\"copyCase(type as keyof typeof caseType)\"\n          >\n            <Copy />\n          </Button>\n        </template>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/converters/ColorConverter.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport chroma from 'chroma-js'\n// @ts-expect-error some\nimport { colornames } from 'color-name-list'\n\nimport { Copy } from 'lucide-vue-next'\n// @ts-expect-error some\nimport nearestColor from 'nearest-color'\n\nconst title = computed(() =>\n  i18n.t('devtools:converters.colorConverter.label'),\n)\nconst description = computed(() =>\n  i18n.t('devtools:converters.colorConverter.description'),\n)\n\nconst copy = useCopyToClipboard()\n\nconst selectedColor = ref('#154696')\n\nconst colors = reactive({\n  hex: '',\n  rgb: '',\n  hsl: '',\n  hsv: '',\n  cmyk: '',\n  oklch: '',\n})\n\nconst colorName = ref('')\n\nconst colorFormats = {\n  hex: 'HEX',\n  rgb: 'RGB',\n  hsl: 'HSL',\n  hsv: 'HSV',\n  cmyk: 'CMYK',\n  oklch: 'OKLCH',\n} as const\n\nlet isUpdating = false\n\nconst activeField = ref<string | null>(null)\n\nconst contrast = computed(() => {\n  const color = chroma(selectedColor.value)\n  const contrast = chroma.contrast('#000', color)\n\n  return contrast\n})\n\nfunction onFieldFocus(type: string) {\n  activeField.value = type\n}\n\nfunction onFieldBlur() {\n  activeField.value = null\n}\n\nfunction convertColor(color: string) {\n  if (isUpdating)\n    return\n\n  try {\n    const chromaColor = chroma(color)\n    const alpha = chromaColor.alpha()\n\n    isUpdating = true\n\n    if (activeField.value !== 'hex') {\n      if (color.startsWith('#')) {\n        colors.hex = color\n      }\n      else {\n        colors.hex = alpha < 1 ? chromaColor.hex('rgba') : chromaColor.hex()\n      }\n    }\n\n    if (activeField.value !== 'rgb') {\n      colors.rgb\n        = alpha < 1\n          ? `rgba(${chromaColor.rgb().join(', ')}, ${alpha.toFixed(2)})`\n          : chromaColor.css('rgb')\n    }\n\n    if (activeField.value !== 'hsl') {\n      const [h, s, l] = chromaColor.hsl()\n      const hueValue = Number.isNaN(h) ? 0 : Math.round(h)\n      const satValue = Math.round(s * 100)\n      const lightValue = Math.round(l * 100)\n\n      colors.hsl\n        = alpha < 1\n          ? `hsla(${hueValue}, ${satValue}%, ${lightValue}%, ${alpha.toFixed(2)})`\n          : `hsl(${hueValue}, ${satValue}%, ${lightValue}%)`\n    }\n\n    if (activeField.value !== 'hsv') {\n      const [h, s, v] = chromaColor.hsv()\n      const hueValue = Number.isNaN(h) ? 0 : Math.round(h)\n      const satValue = Math.round(s * 100)\n      const valValue = Math.round(v * 100)\n\n      if (alpha < 1) {\n        colors.hsv = `hsva(${hueValue}, ${satValue}%, ${valValue}%, ${alpha.toFixed(2)})`\n      }\n      else {\n        colors.hsv = `hsv(${hueValue}, ${satValue}%, ${valValue}%)`\n      }\n    }\n\n    if (activeField.value !== 'cmyk') {\n      const [c, m, y, k] = chromaColor.cmyk()\n      const cValue = Math.round(c * 100)\n      const mValue = Math.round(m * 100)\n      const yValue = Math.round(y * 100)\n      const kValue = Math.round(k * 100)\n\n      if (alpha < 1) {\n        colors.cmyk = `cmyka(${cValue}%, ${mValue}%, ${yValue}%, ${kValue}%, ${alpha.toFixed(2)})`\n      }\n      else {\n        colors.cmyk = `cmyk(${cValue}%, ${mValue}%, ${yValue}%, ${kValue}%)`\n      }\n    }\n\n    if (activeField.value !== 'oklch') {\n      const [lightness, chroma_val, hue] = chromaColor.oklch()\n      const lightnessValue = lightness.toFixed(3)\n      const chromaValue = chroma_val.toFixed(3)\n      const hueValue = Number.isNaN(hue) ? '0' : hue.toFixed(1)\n\n      if (alpha < 1) {\n        colors.oklch = `oklch(${lightnessValue} ${chromaValue} ${hueValue} / ${alpha.toFixed(2)})`\n      }\n      else {\n        colors.oklch = `oklch(${lightnessValue} ${chromaValue} ${hueValue})`\n      }\n    }\n\n    isUpdating = false\n  }\n  catch (error) {\n    console.warn('Ошибка конвертации цвета:', error)\n    isUpdating = false\n  }\n}\n\nfunction onCopy(type: keyof typeof colorFormats) {\n  copy(colors[type])\n}\n\nfunction parseHsv(hsvString: string): chroma.Color | null {\n  try {\n    const match = hsvString.match(\n      /hsva?\\((\\d+),\\s*(\\d+)%,\\s*(\\d+)%(?:,\\s*([\\d.]+))?\\)/,\n    )\n    if (match) {\n      const [, h, s, v, a] = match\n      const alpha = a ? Number.parseFloat(a) : 1\n      return chroma\n        .hsv(\n          Number.parseInt(h),\n          Number.parseInt(s) / 100,\n          Number.parseInt(v) / 100,\n        )\n        .alpha(alpha)\n    }\n  }\n  catch {}\n  return null\n}\n\nfunction parseCmyk(cmykString: string): chroma.Color | null {\n  try {\n    const match = cmykString.match(\n      /cmyka?\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%(?:,\\s*([\\d.]+))?\\)/,\n    )\n    if (match) {\n      const [, c, m, y, k, a] = match\n      const alpha = a ? Number.parseFloat(a) : 1\n      return chroma\n        .cmyk(\n          Number.parseInt(c) / 100,\n          Number.parseInt(m) / 100,\n          Number.parseInt(y) / 100,\n          Number.parseInt(k) / 100,\n        )\n        .alpha(alpha)\n    }\n  }\n  catch {}\n  return null\n}\n\nfunction parseOklch(oklchString: string): chroma.Color | null {\n  try {\n    const match = oklchString.match(\n      /oklch\\(([\\d.]+)\\s+([\\d.]+)\\s+([\\d.]+)(?:\\s*\\/\\s*([\\d.]+))?\\)/,\n    )\n    if (match) {\n      const [, l, c, h, a] = match\n      const alpha = a ? Number.parseFloat(a) : 1\n      return chroma\n        .oklch(Number.parseFloat(l), Number.parseFloat(c), Number.parseFloat(h))\n        .alpha(alpha)\n    }\n  }\n  catch {}\n  return null\n}\n\nfunction getColorName(color: string) {\n  // @ts-expect-error some\n  const colors = colornames.reduce(\n    (o, { name, hex }) => Object.assign(o, { [name]: hex }),\n    {},\n  )\n  const nearest = nearestColor.from(colors)\n\n  return nearest(color)?.name || ''\n}\n\nwatch(\n  selectedColor,\n  (newColor) => {\n    convertColor(newColor)\n\n    colorName.value = getColorName(newColor)\n  },\n  { immediate: true },\n)\n\nwatch(\n  () => colors.hex,\n  (newValue) => {\n    if (!isUpdating && newValue && activeField.value === 'hex') {\n      const normalizedHex = newValue.startsWith('#')\n        ? newValue\n        : `#${newValue}`\n\n      if (chroma.valid(normalizedHex)) {\n        const chromaColor = chroma(normalizedHex)\n        const newHex = chromaColor.hex()\n\n        if (selectedColor.value.toLowerCase() !== newHex.toLowerCase()) {\n          selectedColor.value = newHex\n        }\n        convertColor(normalizedHex)\n      }\n    }\n  },\n)\n\nwatch(\n  () => colors.rgb,\n  (newValue) => {\n    if (\n      !isUpdating\n      && newValue\n      && chroma.valid(newValue)\n      && activeField.value === 'rgb'\n    ) {\n      const chromaColor = chroma(newValue)\n      selectedColor.value = chromaColor.hex()\n      convertColor(newValue)\n    }\n  },\n)\n\nwatch(\n  () => colors.hsl,\n  (newValue) => {\n    if (\n      !isUpdating\n      && newValue\n      && chroma.valid(newValue)\n      && activeField.value === 'hsl'\n    ) {\n      const chromaColor = chroma(newValue)\n      selectedColor.value = chromaColor.hex()\n      convertColor(newValue)\n    }\n  },\n)\n\nwatch(\n  () => colors.hsv,\n  (newValue) => {\n    if (!isUpdating && newValue && activeField.value === 'hsv') {\n      const chromaColor = parseHsv(newValue)\n      if (chromaColor) {\n        selectedColor.value = chromaColor.hex()\n        convertColor(chromaColor.hex())\n      }\n    }\n  },\n)\n\nwatch(\n  () => colors.cmyk,\n  (newValue) => {\n    if (!isUpdating && newValue && activeField.value === 'cmyk') {\n      const chromaColor = parseCmyk(newValue)\n      if (chromaColor) {\n        selectedColor.value = chromaColor.hex()\n        convertColor(chromaColor.hex())\n      }\n    }\n  },\n)\n\nwatch(\n  () => colors.oklch,\n  (newValue) => {\n    if (!isUpdating && newValue && activeField.value === 'oklch') {\n      const chromaColor = parseOklch(newValue)\n      if (chromaColor) {\n        selectedColor.value = chromaColor.hex()\n        convertColor(chromaColor.hex())\n      }\n    }\n  },\n)\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"flex items-start gap-8\">\n      <div>\n        <UiColorPicker\n          v-model=\"selectedColor\"\n          class=\"w-64 shrink-0\"\n          :show-input=\"false\"\n        />\n        <div\n          class=\"mt-3 flex h-32 w-full items-center justify-center rounded text-lg\"\n          :style=\"{ backgroundColor: selectedColor }\"\n        >\n          <span :class=\"contrast > 6 ? 'text-black' : 'text-white'\">\n            {{ colorName }}\n          </span>\n        </div>\n        <div class=\"mt-2 w-full text-center\">\n          <Button\n            variant=\"outline\"\n            @click=\"copy(colorName)\"\n          >\n            {{ i18n.t(\"button.copy\") }}\n          </Button>\n        </div>\n      </div>\n\n      <div\n        class=\"grid w-full grid-cols-[max-content_1fr_max-content] items-center gap-4\"\n      >\n        <template\n          v-for=\"[type, label] in Object.entries(colorFormats)\"\n          :key=\"type\"\n        >\n          <UiText\n            as=\"div\"\n            variant=\"base\"\n            weight=\"medium\"\n          >\n            {{ label }}\n          </UiText>\n          <UiInput\n            v-model=\"colors[type as keyof typeof colors]\"\n            @focus=\"onFieldFocus(type)\"\n            @blur=\"onFieldBlur\"\n          />\n          <Button\n            variant=\"icon\"\n            size=\"icon\"\n            @click=\"onCopy(type as keyof typeof colorFormats)\"\n          >\n            <Copy />\n          </Button>\n        </template>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/converters/JsonToToml.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport * as toml from 'toml'\n\nconst text = ref('')\nconst error = ref('')\n\nconst isTomlToJson = ref(false)\n\nconst copy = useCopyToClipboard()\n\nconst title = computed(() => i18n.t('devtools:converters.jsonToToml.label'))\nconst description = computed(() =>\n  i18n.t('devtools:converters.jsonToToml.description'),\n)\n\nfunction convertJsonToToml(jsonString: string): string {\n  if (!text.value) {\n    return ''\n  }\n\n  try {\n    error.value = ''\n    const jsonObject = JSON.parse(jsonString)\n    return tomlStringify(jsonObject)\n  }\n  catch {\n    error.value = 'Invalid JSON format'\n    return ''\n  }\n}\n\nfunction convertTomlToJson(tomlString: string): string {\n  if (!text.value) {\n    return ''\n  }\n\n  try {\n    error.value = ''\n    const tomlObject = toml.parse(tomlString)\n    return JSON.stringify(tomlObject, null, 4)\n  }\n  catch {\n    error.value = 'Invalid TOML format'\n    return ''\n  }\n}\n\n/**\n * Простая функция для конвертации объекта в TOML строку\n * Поскольку библиотека toml не имеет stringify, реализуем базовую версию\n */\nfunction tomlStringify(obj: any, prefix = ''): string {\n  let result = ''\n\n  for (const [key, value] of Object.entries(obj)) {\n    const fullKey = prefix ? `${prefix}.${key}` : key\n\n    if (value === null || value === undefined) {\n      continue\n    }\n    else if (typeof value === 'object' && !Array.isArray(value)) {\n      // Объект - создаем секцию\n      result += `\\n[${fullKey}]\\n`\n      result += tomlStringify(value, fullKey)\n    }\n    else if (Array.isArray(value)) {\n      // Массив\n      result += `${key} = ${JSON.stringify(value)}\\n`\n    }\n    else if (typeof value === 'string') {\n      // Строка\n      result += `${key} = \"${value}\"\\n`\n    }\n    else {\n      // Число, булево значение\n      result += `${key} = ${value}\\n`\n    }\n  }\n\n  return result\n}\n\nfunction convert() {\n  if (isTomlToJson.value) {\n    return convertTomlToJson(text.value)\n  }\n\n  return convertJsonToToml(text.value)\n}\n\nconst output = computed(() => convert())\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"flex items-center gap-2\">\n      {{ i18n.t(\"devtools:converters.jsonToToml.modes.jsonToToml\") }}\n      <Switch\n        :checked=\"isTomlToJson\"\n        @update:checked=\"isTomlToJson = $event\"\n      />\n      {{ i18n.t(\"devtools:converters.jsonToToml.modes.tomlToJson\") }}\n    </div>\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"text\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        :error=\"error\"\n        type=\"textarea\"\n        clearable\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"output\"\n        type=\"textarea\"\n        readonly\n      />\n      <Button\n        variant=\"outline\"\n        @click=\"copy(output)\"\n      >\n        {{ i18n.t(\"button.copy\") }}\n      </Button>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/converters/JsonToXml.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\n\nconst text = ref('')\nconst error = ref('')\n\nconst isXmlToJson = ref(false)\n\nconst copy = useCopyToClipboard()\n\nconst title = computed(() => i18n.t('devtools:converters.jsonToXml.label'))\nconst description = computed(() =>\n  i18n.t('devtools:converters.jsonToXml.description'),\n)\n\nfunction objectToXml(obj: any, rootName = 'root', indent = 0): string {\n  const spaces = '  '.repeat(indent)\n\n  if (obj === null || obj === undefined) {\n    return `${spaces}<${rootName}></${rootName}>`\n  }\n\n  if (\n    typeof obj === 'string'\n    || typeof obj === 'number'\n    || typeof obj === 'boolean'\n  ) {\n    return `${spaces}<${rootName}>${obj}</${rootName}>`\n  }\n\n  if (Array.isArray(obj)) {\n    const items = obj\n      .map(item => objectToXml(item, 'item', indent + 1))\n      .join('\\n')\n    return `${spaces}<${rootName}>\\n${items}\\n${spaces}</${rootName}>`\n  }\n\n  if (typeof obj === 'object') {\n    const entries = Object.entries(obj)\n      .map(([key, value]) => objectToXml(value, key, indent + 1))\n      .join('\\n')\n    return `${spaces}<${rootName}>\\n${entries}\\n${spaces}</${rootName}>`\n  }\n\n  return `${spaces}<${rootName}>${obj}</${rootName}>`\n}\n\nfunction convertJsonToXml(jsonString: string): string {\n  if (!text.value) {\n    return ''\n  }\n\n  try {\n    error.value = ''\n    const jsonObject = JSON.parse(jsonString)\n    const xmlHeader = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n'\n    const xmlBody = objectToXml(jsonObject, 'root', 0)\n    return xmlHeader + xmlBody\n  }\n  catch {\n    error.value = 'Invalid JSON format'\n    return ''\n  }\n}\n\n/**\n * Простой парсер XML в JSON объект\n * Использует DOMParser для парсинга XML\n */\nfunction xmlElementToObject(element: Element): any {\n  const result: any = {}\n\n  // Обработка атрибутов\n  if (element.attributes.length > 0) {\n    result['@attributes'] = {}\n    for (let i = 0; i < element.attributes.length; i++) {\n      const attr = element.attributes[i]\n      result['@attributes'][attr.name] = attr.value\n    }\n  }\n\n  // Обработка дочерних элементов\n  const children = Array.from(element.children)\n\n  if (children.length === 0) {\n    // Если нет дочерних элементов, возвращаем текстовое содержимое\n    const textContent = element.textContent?.trim()\n    if (textContent) {\n      if (result['@attributes']) {\n        result['#text'] = textContent\n        return result\n      }\n      return textContent\n    }\n    return result['@attributes'] ? result : null\n  }\n\n  // Группировка дочерних элементов по имени тега\n  const childGroups: { [key: string]: Element[] } = {}\n  children.forEach((child) => {\n    const tagName = child.tagName\n    if (!childGroups[tagName]) {\n      childGroups[tagName] = []\n    }\n    childGroups[tagName].push(child)\n  })\n\n  // Конвертация групп в объект\n  Object.entries(childGroups).forEach(([tagName, elements]) => {\n    if (elements.length === 1) {\n      result[tagName] = xmlElementToObject(elements[0])\n    }\n    else {\n      result[tagName] = elements.map(el => xmlElementToObject(el))\n    }\n  })\n\n  return result\n}\n\nfunction convertXmlToJson(xmlString: string): string {\n  if (!text.value) {\n    return ''\n  }\n\n  try {\n    error.value = ''\n    const parser = new DOMParser()\n    const xmlDoc = parser.parseFromString(xmlString, 'text/xml')\n\n    // Проверка на ошибки парсинга\n    const parseError = xmlDoc.querySelector('parsererror')\n    if (parseError) {\n      throw new Error('XML parsing error')\n    }\n\n    const rootElement = xmlDoc.documentElement\n    const jsonObject = xmlElementToObject(rootElement)\n\n    return JSON.stringify({ [rootElement.tagName]: jsonObject }, null, 4)\n  }\n  catch {\n    error.value = 'Invalid XML format'\n    return ''\n  }\n}\n\nfunction convert() {\n  if (isXmlToJson.value) {\n    return convertXmlToJson(text.value)\n  }\n\n  return convertJsonToXml(text.value)\n}\n\nconst output = computed(() => convert())\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"flex items-center gap-2\">\n      {{ i18n.t(\"devtools:converters.jsonToXml.modes.jsonToXml\") }}\n      <Switch\n        :checked=\"isXmlToJson\"\n        @update:checked=\"isXmlToJson = $event\"\n      />\n      {{ i18n.t(\"devtools:converters.jsonToXml.modes.xmlToJson\") }}\n    </div>\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"text\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        :error=\"error\"\n        type=\"textarea\"\n        clearable\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n\n      <UiInput\n        :model-value=\"output\"\n        type=\"textarea\"\n        readonly\n      />\n      <Button\n        variant=\"outline\"\n        @click=\"copy(output)\"\n      >\n        {{ i18n.t(\"button.copy\") }}\n      </Button>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/converters/JsonToYaml.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport yaml from 'js-yaml'\n\nconst text = ref('')\nconst error = ref('')\n\nconst isYamlToJson = ref(false)\n\nconst copy = useCopyToClipboard()\n\nconst title = computed(() => i18n.t('devtools:converters.jsonToYaml.label'))\nconst description = computed(() =>\n  i18n.t('devtools:converters.jsonToYaml.description'),\n)\n\nfunction convertJsonToYaml(jsonString: string): string {\n  if (!text.value) {\n    return ''\n  }\n\n  try {\n    error.value = ''\n    const jsonObject = JSON.parse(jsonString)\n    return yaml.dump(jsonObject, {\n      indent: 2,\n      lineWidth: -1,\n      noRefs: true,\n    })\n  }\n  catch {\n    error.value = 'Invalid JSON format'\n    return ''\n  }\n}\n\nfunction convertYamlToJson(yamlString: string): string {\n  if (!text.value) {\n    return ''\n  }\n\n  try {\n    error.value = ''\n    const yamlObject = yaml.load(yamlString)\n    return JSON.stringify(yamlObject, null, 4)\n  }\n  catch {\n    error.value = 'Invalid YAML format'\n    return ''\n  }\n}\n\nfunction convert() {\n  if (isYamlToJson.value) {\n    return convertYamlToJson(text.value)\n  }\n\n  return convertJsonToYaml(text.value)\n}\n\nconst output = computed(() => convert())\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"flex items-center gap-2\">\n      {{ i18n.t(\"devtools:converters.jsonToYaml.modes.jsonToYaml\") }}\n      <Switch\n        :checked=\"isYamlToJson\"\n        @update:checked=\"isYamlToJson = $event\"\n      />\n      {{ i18n.t(\"devtools:converters.jsonToYaml.modes.yamlToJson\") }}\n    </div>\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"text\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        :error=\"error\"\n        type=\"textarea\"\n        clearable\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n\n      <UiInput\n        :model-value=\"output\"\n        type=\"textarea\"\n        readonly\n      />\n      <Button\n        variant=\"outline\"\n        @click=\"copy(output)\"\n      >\n        {{ i18n.t(\"button.copy\") }}\n      </Button>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/converters/TextToAsciiBinary.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\n\nconst text = ref('')\nconst isAsciiToText = ref(false)\n\nconst title = computed(() => i18n.t('devtools:converters.textToAscii.label'))\nconst description = computed(() =>\n  i18n.t('devtools:converters.textToAscii.description'),\n)\n\nconst copy = useCopyToClipboard()\n\nfunction convertTextToAscii(input: string): string {\n  if (!input) {\n    return ''\n  }\n\n  return input\n    .split('')\n    .map((char) => {\n      const asciiCode = char.charCodeAt(0)\n\n      return asciiCode.toString(2).padStart(8, '0')\n    })\n    .join(' ')\n}\n\nfunction convertAsciiToText(input: string): string {\n  if (!input) {\n    return ''\n  }\n\n  try {\n    const binaryNumbers = input.trim().split(/\\s+/).filter(Boolean)\n\n    return binaryNumbers\n      .map((binary) => {\n        if (!/^[01]+$/.test(binary)) {\n          throw new Error(`Invalid binary: ${binary}`)\n        }\n\n        const asciiCode = Number.parseInt(binary, 2)\n\n        if (asciiCode < 0 || asciiCode > 127) {\n          throw new Error(`Invalid ASCII code: ${asciiCode}`)\n        }\n\n        return String.fromCharCode(asciiCode)\n      })\n      .join('')\n  }\n  catch (error) {\n    console.warn('Error converting ASCII to text:', error)\n    return input\n  }\n}\n\nfunction convert() {\n  if (isAsciiToText.value) {\n    return convertAsciiToText(text.value)\n  }\n  else {\n    return convertTextToAscii(text.value)\n  }\n}\n\nconst output = computed(() => convert())\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"flex items-center gap-2\">\n      {{ i18n.t(\"devtools:converters.textToAscii.modes.textToAscii\") }}\n      <Switch\n        :checked=\"isAsciiToText\"\n        @update:checked=\"isAsciiToText = $event\"\n      />\n      {{ i18n.t(\"devtools:converters.textToAscii.modes.asciiToText\") }}\n    </div>\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"text\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        clearable\n        type=\"textarea\"\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"output\"\n        type=\"textarea\"\n        readonly\n      />\n      <Button\n        variant=\"outline\"\n        @click=\"copy(output)\"\n      >\n        {{ i18n.t(\"button.copy\") }}\n      </Button>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/converters/TextToUnicode.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\n\nconst text = ref('')\nconst isUnicodeToText = ref(false)\n\nconst title = computed(() => i18n.t('devtools:converters.textToUnicode.label'))\nconst description = computed(() =>\n  i18n.t('devtools:converters.textToUnicode.description'),\n)\n\nconst copy = useCopyToClipboard()\n\nfunction convertTextToUnicode(input: string): string {\n  if (!input) {\n    return ''\n  }\n\n  return input\n    .split('')\n    .map((char) => {\n      const code = char.charCodeAt(0)\n      const hex = code.toString(16).toUpperCase().padStart(4, '0')\n      return `\\\\u${hex}`\n    })\n    .join('')\n}\n\nfunction convertUnicodeToText(input: string): string {\n  if (!input) {\n    return ''\n  }\n\n  try {\n    const normalized = input.replace(/\\\\u/g, '\\\\u')\n    return JSON.parse(`\"${normalized}\"`)\n  }\n  catch {\n    try {\n      return input.replace(/\\\\u([0-9A-Fa-f]{4})/g, (match, hex) => {\n        return String.fromCharCode(Number.parseInt(hex, 16))\n      })\n    }\n    catch {\n      return input\n    }\n  }\n}\n\nfunction convert() {\n  if (isUnicodeToText.value) {\n    return convertUnicodeToText(text.value)\n  }\n  else {\n    return convertTextToUnicode(text.value)\n  }\n}\n\nconst output = computed(() => convert())\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"flex items-center gap-2\">\n      {{ i18n.t(\"devtools:converters.textToUnicode.modes.textToUnicode\") }}\n      <Switch\n        :checked=\"isUnicodeToText\"\n        @update:checked=\"isUnicodeToText = $event\"\n      />\n      {{ i18n.t(\"devtools:converters.textToUnicode.modes.unicodeToText\") }}\n    </div>\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"text\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        clearable\n        type=\"textarea\"\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"output\"\n        type=\"textarea\"\n        readonly\n      />\n      <Button\n        variant=\"outline\"\n        @click=\"copy(output)\"\n      >\n        {{ i18n.t(\"button.copy\") }}\n      </Button>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/crypto/Hash.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport md5 from 'crypto-js/md5'\nimport ripemd160 from 'crypto-js/ripemd160'\nimport sha1 from 'crypto-js/sha1'\nimport sha3 from 'crypto-js/sha3'\nimport sha224 from 'crypto-js/sha224'\nimport sha256 from 'crypto-js/sha256'\nimport sha384 from 'crypto-js/sha384'\nimport sha512 from 'crypto-js/sha512'\nimport { Copy } from 'lucide-vue-next'\n\nconst copy = useCopyToClipboard()\n\nconst text = ref('')\n\nconst title = computed(() => i18n.t('devtools:crypto.hash.label'))\nconst description = computed(() => i18n.t('devtools:crypto.hash.description'))\n\nconst hashTypes = {\n  sha1: 'SHA-1',\n  sha224: 'SHA-224',\n  sha256: 'SHA-256',\n  sha384: 'SHA-384',\n  sha512: 'SHA-512',\n  sha3: 'SHA-3',\n  md5: 'MD5',\n  ripemd160: 'RIPEMD-160',\n}\n\nfunction convert(input: string, type: keyof typeof hashTypes): string {\n  if (!input)\n    return ''\n\n  switch (type) {\n    case 'sha1':\n      return sha1(input).toString()\n    case 'sha224':\n      return sha224(input).toString()\n    case 'sha256':\n      return sha256(input).toString()\n    case 'sha384':\n      return sha384(input).toString()\n    case 'sha512':\n      return sha512(input).toString()\n    case 'sha3':\n      return sha3(input).toString()\n    case 'md5':\n      return md5(input).toString()\n    case 'ripemd160':\n      return ripemd160(input).toString()\n  }\n}\n\nconst output = computed(() => {\n  return Object.entries(hashTypes).map(([key, value]) => ({\n    label: value,\n    value: convert(text.value, key as keyof typeof hashTypes),\n  }))\n})\n\nfunction copyHash(type: keyof typeof hashTypes) {\n  copy(convert(text.value, type))\n}\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"text\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        clearable\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <div\n        class=\"grid grid-cols-[max-content_1fr_max-content] items-center gap-4\"\n      >\n        <template\n          v-for=\"[type, label] in Object.entries(hashTypes)\"\n          :key=\"type\"\n        >\n          <UiText\n            as=\"div\"\n            variant=\"base\"\n            weight=\"medium\"\n          >\n            {{ label }}\n          </UiText>\n          <UiInput\n            :model-value=\"output.find((item) => item.label === label)?.value\"\n            readonly\n          />\n          <Button\n            variant=\"icon\"\n            size=\"icon\"\n            @click=\"copyHash(type as keyof typeof hashTypes)\"\n          >\n            <Copy />\n          </Button>\n        </template>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/crypto/Hmac.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport md5 from 'crypto-js/hmac-md5'\nimport ripemd160 from 'crypto-js/hmac-ripemd160'\nimport sha1 from 'crypto-js/hmac-sha1'\nimport sha3 from 'crypto-js/hmac-sha3'\nimport sha224 from 'crypto-js/hmac-sha224'\nimport sha256 from 'crypto-js/hmac-sha256'\nimport sha384 from 'crypto-js/hmac-sha384'\nimport sha512 from 'crypto-js/hmac-sha512'\nimport { Copy } from 'lucide-vue-next'\n\nconst copy = useCopyToClipboard()\n\nconst text = ref('')\nconst secretKey = ref('')\n\nconst title = computed(() => i18n.t('devtools:crypto.hmac.label'))\nconst description = computed(() => i18n.t('devtools:crypto.hmac.description'))\n\nconst hashTypes = {\n  sha1: 'SHA-1',\n  sha224: 'SHA-224',\n  sha256: 'SHA-256',\n  sha384: 'SHA-384',\n  sha512: 'SHA-512',\n  sha3: 'SHA-3',\n  md5: 'MD5',\n  ripemd160: 'RIPEMD-160',\n}\n\nfunction convert(input: string, type: keyof typeof hashTypes): string {\n  if (!input)\n    return ''\n\n  switch (type) {\n    case 'sha1':\n      return sha1(input, secretKey.value).toString()\n    case 'sha224':\n      return sha224(input, secretKey.value).toString()\n    case 'sha256':\n      return sha256(input, secretKey.value).toString()\n    case 'sha384':\n      return sha384(input, secretKey.value).toString()\n    case 'sha512':\n      return sha512(input, secretKey.value).toString()\n    case 'sha3':\n      return sha3(input, secretKey.value).toString()\n    case 'md5':\n      return md5(input, secretKey.value).toString()\n    case 'ripemd160':\n      return ripemd160(input, secretKey.value).toString()\n  }\n}\n\nconst output = computed(() => {\n  return Object.entries(hashTypes).map(([key, value]) => ({\n    label: value,\n    value: convert(text.value, key as keyof typeof hashTypes),\n  }))\n})\n\nfunction copyHash(type: keyof typeof hashTypes) {\n  copy(convert(text.value, type))\n}\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"text\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        clearable\n      />\n      <UiHeading\n        :title=\"i18n.t('devtools:form.secretKey')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"secretKey\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.secretKey')\"\n        clearable\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <div\n        class=\"grid grid-cols-[max-content_1fr_max-content] items-center gap-4\"\n      >\n        <template\n          v-for=\"[type, label] in Object.entries(hashTypes)\"\n          :key=\"type\"\n        >\n          <UiText\n            as=\"div\"\n            variant=\"base\"\n            weight=\"medium\"\n          >\n            {{ label }}\n          </UiText>\n          <UiInput\n            :model-value=\"output.find((item) => item.label === label)?.value\"\n            readonly\n          />\n          <Button\n            variant=\"icon\"\n            size=\"icon\"\n            @click=\"copyHash(type as keyof typeof hashTypes)\"\n          >\n            <Copy />\n          </Button>\n        </template>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/crypto/Password.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\n\nconst includeNumbers = ref(true)\nconst includeSymbols = ref(true)\nconst includeUppercase = ref(true)\nconst includeLowercase = ref(true)\nconst length = ref(12)\nconst output = ref('')\n\nconst title = computed(() => i18n.t('devtools:crypto.password.label'))\nconst description = computed(() =>\n  i18n.t('devtools:crypto.password.description'),\n)\n\nconst copy = useCopyToClipboard()\n\nfunction generatePassword() {\n  const numbers = '0123456789'\n  const symbols = '!@#$%^&*()_+-=[]{}|;:,.<>?'\n  const uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n  const lowercase = 'abcdefghijklmnopqrstuvwxyz'\n\n  let availableChars = ''\n\n  if (includeNumbers.value) {\n    availableChars += numbers\n  }\n\n  if (includeSymbols.value) {\n    availableChars += symbols\n  }\n\n  if (includeUppercase.value) {\n    availableChars += uppercase\n  }\n\n  if (includeLowercase.value) {\n    availableChars += lowercase\n  }\n\n  if (availableChars.length === 0) {\n    output.value = ''\n    return\n  }\n\n  let password = ''\n\n  const requiredChars = []\n  if (includeNumbers.value)\n    requiredChars.push(numbers[Math.floor(Math.random() * numbers.length)])\n  if (includeSymbols.value)\n    requiredChars.push(symbols[Math.floor(Math.random() * symbols.length)])\n  if (includeUppercase.value)\n    requiredChars.push(uppercase[Math.floor(Math.random() * uppercase.length)])\n  if (includeLowercase.value)\n    requiredChars.push(lowercase[Math.floor(Math.random() * lowercase.length)])\n\n  password += requiredChars.join('')\n\n  for (let i = password.length; i < length.value; i++) {\n    const randomIndex = Math.floor(Math.random() * availableChars.length)\n    password += availableChars[randomIndex]\n  }\n\n  const passwordArray = password.split('')\n  for (let i = passwordArray.length - 1; i > 0; i--) {\n    const j = Math.floor(Math.random() * (i + 1));\n    [passwordArray[i], passwordArray[j]] = [passwordArray[j], passwordArray[i]]\n  }\n\n  output.value = passwordArray.join('')\n}\n\nwatch(\n  [includeNumbers, includeSymbols, includeUppercase, includeLowercase, length],\n  () => {\n    if (output.value) {\n      generatePassword()\n    }\n  },\n)\n\nwatch(length, (v) => {\n  if (v > 2048) {\n    nextTick(() => {\n      length.value = 2048\n    })\n  }\n})\n\nonMounted(() => {\n  generatePassword()\n})\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.length')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model.number=\"length\"\n        type=\"number\"\n        :placeholder=\"i18n.t('devtools:form.length')\"\n        description=\"Max 2048\"\n        class=\"w-64\"\n      />\n      <div class=\"flex gap-2\">\n        <div class=\"flex items-center gap-2\">\n          <Switch\n            :checked=\"includeNumbers\"\n            @update:checked=\"includeNumbers = $event\"\n          />\n          {{ i18n.t(\"devtools:form.numbers\") }}\n        </div>\n        <div class=\"flex items-center gap-2\">\n          <Switch\n            :checked=\"includeSymbols\"\n            @update:checked=\"includeSymbols = $event\"\n          />\n          {{ i18n.t(\"devtools:form.symbols\") }}\n        </div>\n        <div class=\"flex items-center gap-2\">\n          <Switch\n            :checked=\"includeUppercase\"\n            @update:checked=\"includeUppercase = $event\"\n          />\n          {{ i18n.t(\"devtools:form.uppercase\") }}\n        </div>\n        <div class=\"flex items-center gap-2\">\n          <Switch\n            :checked=\"includeLowercase\"\n            @update:checked=\"includeLowercase = $event\"\n          />\n          {{ i18n.t(\"devtools:form.lowercase\") }}\n        </div>\n      </div>\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"output\"\n        readonly\n      />\n      <div class=\"flex items-center gap-2\">\n        <Button\n          variant=\"outline\"\n          @click=\"generatePassword()\"\n        >\n          {{ i18n.t(\"button.generate\") }}\n        </Button>\n        <Button\n          variant=\"outline\"\n          @click=\"copy(output)\"\n        >\n          {{ i18n.t(\"button.copy\") }}\n        </Button>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/crypto/Uuid.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport * as Select from '@/components/ui/shadcn/select'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport { v1, v4 } from 'uuid'\n\ntype UuidType = 'v1' | 'v4'\n\nconst uuids = ref('')\nconst amount = ref(1)\nconst type = ref<UuidType>('v4')\n\nconst uuidTypeOptions = [\n  {\n    label: 'v1',\n    value: 'v1',\n  },\n  {\n    label: 'v4',\n    value: 'v4',\n  },\n]\n\nconst title = computed(() => i18n.t('devtools:crypto.uuid.label'))\nconst description = computed(() => i18n.t('devtools:crypto.uuid.description'))\n\nconst copy = useCopyToClipboard()\n\nfunction generateUuid(type: UuidType) {\n  if (type === 'v1') {\n    uuids.value = Array.from({ length: amount.value }, () => v1()).join('\\n')\n  }\n  else {\n    uuids.value = Array.from({ length: amount.value }, () => v4()).join('\\n')\n  }\n}\n\nwatch(amount, (v) => {\n  if (v > 100) {\n    nextTick(() => {\n      amount.value = 100\n    })\n  }\n})\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.amount')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"amount\"\n        type=\"number\"\n        description=\"Max 100\"\n        class=\"w-64\"\n      />\n      <UiHeading\n        :title=\"i18n.t('devtools:form.version')\"\n        :level=\"3\"\n      />\n      <Select.Select v-model=\"type\">\n        <Select.SelectTrigger class=\"w-64\">\n          <Select.SelectValue placeholder=\"Select a language\" />\n        </Select.SelectTrigger>\n        <Select.SelectContent>\n          <Select.SelectItem\n            v-for=\"i in uuidTypeOptions\"\n            :key=\"i.value\"\n            :value=\"i.value\"\n          >\n            {{ i.label }}\n          </Select.SelectItem>\n        </Select.SelectContent>\n      </Select.Select>\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"uuids\"\n        type=\"textarea\"\n        readonly\n      />\n      <div class=\"flex items-center gap-2\">\n        <Button\n          variant=\"outline\"\n          @click=\"generateUuid(type)\"\n        >\n          {{ i18n.t(\"button.generate\") }}\n        </Button>\n        <Button\n          variant=\"outline\"\n          @click=\"copy(uuids)\"\n        >\n          {{ i18n.t(\"button.copy\") }}\n        </Button>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/generators/JsonGenerator.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport * as Select from '@/components/ui/shadcn/select'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport { faker } from '@faker-js/faker'\nimport { GripVertical, Plus, Trash2 } from 'lucide-vue-next'\nimport draggable from 'vuedraggable'\n\ninterface Field {\n  id: string\n  name: string\n  type: string\n}\n\nconst fields = ref<Field[]>([\n  { id: crypto.randomUUID(), name: 'id', type: 'string.uuid' },\n  { id: crypto.randomUUID(), name: 'firstName', type: 'person.firstName' },\n  { id: crypto.randomUUID(), name: 'lastName', type: 'person.lastName' },\n  { id: crypto.randomUUID(), name: 'email', type: 'internet.email' },\n])\n\nconst count = ref(10)\nconst output = ref('')\n\nconst copy = useCopyToClipboard()\n\nconst title = computed(() => i18n.t('devtools:generators.json.label'))\nconst description = computed(() =>\n  i18n.t('devtools:generators.json.description'),\n)\n\nconst fakerTypes = [\n  {\n    category: i18n.t('devtools:generators.json.categories.general'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.rowNumber'),\n        value: 'custom.rowNumber',\n      },\n      { label: 'UUID', value: 'string.uuid' },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.person'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.firstName'),\n        value: 'person.firstName',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.lastName'),\n        value: 'person.lastName',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.fullName'),\n        value: 'person.fullName',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.gender'),\n        value: 'person.sex',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.jobTitle'),\n        value: 'person.jobTitle',\n      },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.internet'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.email'),\n        value: 'internet.email',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.username'),\n        value: 'internet.username',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.password'),\n        value: 'internet.password',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.url'),\n        value: 'internet.url',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.ipv4'),\n        value: 'internet.ipv4',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.ipv6'),\n        value: 'internet.ipv6',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.userAgent'),\n        value: 'internet.userAgent',\n      },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.location'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.city'),\n        value: 'location.city',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.country'),\n        value: 'location.country',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.streetAddress'),\n        value: 'location.streetAddress',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.zipCode'),\n        value: 'location.zipCode',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.latitude'),\n        value: 'location.latitude',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.longitude'),\n        value: 'location.longitude',\n      },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.finance'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.amount'),\n        value: 'finance.amount',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.currencyCode'),\n        value: 'finance.currencyCode',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.creditCardNumber'),\n        value: 'finance.creditCardNumber',\n      },\n      { label: 'IBAN', value: 'finance.iban' },\n      { label: 'BIC', value: 'finance.bic' },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.commerce'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.productName'),\n        value: 'commerce.productName',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.price'),\n        value: 'commerce.price',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.department'),\n        value: 'commerce.department',\n      },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.company'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.companyName'),\n        value: 'company.name',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.catchPhrase'),\n        value: 'company.catchPhrase',\n      },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.lorem'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.word'),\n        value: 'lorem.word',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.sentence'),\n        value: 'lorem.sentence',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.paragraph'),\n        value: 'lorem.paragraph',\n      },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.date'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.past'),\n        value: 'date.past',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.future'),\n        value: 'date.future',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.recent'),\n        value: 'date.recent',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.birthdate'),\n        value: 'date.birthdate',\n      },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.number'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.int'),\n        value: 'number.int',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.float'),\n        value: 'number.float',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.boolean'),\n        value: 'datatype.boolean',\n      },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.phone'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.phoneNumber'),\n        value: 'phone.number',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.imei'),\n        value: 'phone.imei',\n      },\n    ],\n  },\n  {\n    category: i18n.t('devtools:generators.json.categories.image'),\n    options: [\n      {\n        label: i18n.t('devtools:generators.json.types.avatar'),\n        value: 'image.avatar',\n      },\n      {\n        label: i18n.t('devtools:generators.json.types.imageUrl'),\n        value: 'image.url',\n      },\n    ],\n  },\n]\n\nfunction resolveFakerMethod(type: string, rowIndex: number): any {\n  if (type === 'custom.rowNumber') {\n    return rowIndex + 1\n  }\n\n  const [module, method] = type.split('.')\n\n  try {\n    const fakerModule = (faker as any)[module]\n    if (fakerModule && typeof fakerModule[method] === 'function') {\n      const result = fakerModule[method]()\n      // Преобразуем даты в ISO строки\n      if (result instanceof Date) {\n        return result.toISOString()\n      }\n      return result\n    }\n  }\n  catch {\n    return null\n  }\n\n  return null\n}\n\nfunction addField() {\n  fields.value.push({\n    id: crypto.randomUUID(),\n    name: '',\n    type: 'person.firstName',\n  })\n}\n\nfunction removeField(id: string) {\n  const index = fields.value.findIndex(f => f.id === id)\n  if (index > -1) {\n    fields.value.splice(index, 1)\n  }\n}\n\nfunction generate() {\n  if (fields.value.length === 0) {\n    output.value = ''\n    return\n  }\n\n  const data = Array.from({ length: count.value }, (_, rowIndex) => {\n    const obj: Record<string, any> = {}\n    for (const field of fields.value) {\n      if (field.name) {\n        obj[field.name] = resolveFakerMethod(field.type, rowIndex)\n      }\n    }\n    return obj\n  })\n\n  output.value = JSON.stringify(data, null, 2)\n}\n\nwatch(count, (v) => {\n  if (v > 1000) {\n    nextTick(() => {\n      count.value = 1000\n    })\n  }\n  if (v < 1) {\n    nextTick(() => {\n      count.value = 1\n    })\n  }\n})\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:generators.json.fields')\"\n        :level=\"3\"\n      />\n\n      <div class=\"space-y-2\">\n        <draggable\n          v-model=\"fields\"\n          item-key=\"id\"\n          handle=\".drag-handle\"\n          :animation=\"200\"\n        >\n          <template #item=\"{ element }\">\n            <div class=\"flex items-center gap-2 py-1\">\n              <div\n                class=\"drag-handle cursor-grab text-gray-400 hover:text-gray-600\"\n              >\n                <GripVertical class=\"h-4 w-4\" />\n              </div>\n              <UiInput\n                v-model=\"element.name\"\n                :placeholder=\"i18n.t('devtools:generators.json.fieldName')\"\n                class=\"flex-1\"\n              />\n              <Select.Select v-model=\"element.type\">\n                <Select.SelectTrigger class=\"w-64\">\n                  <Select.SelectValue\n                    :placeholder=\"i18n.t('devtools:generators.json.selectType')\"\n                  />\n                </Select.SelectTrigger>\n                <Select.SelectContent>\n                  <template\n                    v-for=\"group in fakerTypes\"\n                    :key=\"group.category\"\n                  >\n                    <Select.SelectLabel>\n                      {{ group.category }}\n                    </Select.SelectLabel>\n                    <Select.SelectItem\n                      v-for=\"option in group.options\"\n                      :key=\"option.value\"\n                      :value=\"option.value\"\n                    >\n                      {{ option.label }}\n                    </Select.SelectItem>\n                    <Select.SelectSeparator />\n                  </template>\n                </Select.SelectContent>\n              </Select.Select>\n              <Button\n                variant=\"icon\"\n                size=\"icon\"\n                @click=\"removeField(element.id)\"\n              >\n                <Trash2 />\n              </Button>\n            </div>\n          </template>\n        </draggable>\n\n        <Button\n          variant=\"outline\"\n          @click=\"addField\"\n        >\n          <Plus class=\"mr-1 h-4 w-4\" />\n          {{ i18n.t(\"devtools:generators.json.addField\") }}\n        </Button>\n      </div>\n    </div>\n\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:generators.json.rowCount')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"count\"\n        type=\"number\"\n        :description=\"i18n.t('devtools:generators.json.maxRows')\"\n        class=\"w-64\"\n      />\n    </div>\n\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"output\"\n        type=\"textarea\"\n        readonly\n      />\n      <div class=\"flex items-center gap-2\">\n        <Button\n          variant=\"outline\"\n          @click=\"generate\"\n        >\n          {{ i18n.t(\"button.generate\") }}\n        </Button>\n        <Button\n          variant=\"outline\"\n          @click=\"copy(output)\"\n        >\n          {{ i18n.t(\"button.copy\") }}\n        </Button>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/generators/LoremIpsumGenerator.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport * as Select from '@/components/ui/shadcn/select'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport { faker } from '@faker-js/faker'\n\ntype LoremType = 'words' | 'sentences' | 'paragraphs'\n\nconst MAX_COUNT = 1000\n\nconst loremType = ref<LoremType>('sentences')\nconst count = ref(10)\nconst output = ref('')\n\nconst copy = useCopyToClipboard()\n\nconst title = computed(() => i18n.t('devtools:generators.lorem.label'))\nconst description = computed(() =>\n  i18n.t('devtools:generators.lorem.description'),\n)\n\nconst loremTypes = [\n  {\n    label: i18n.t('devtools:generators.lorem.types.words'),\n    value: 'words',\n  },\n  {\n    label: i18n.t('devtools:generators.lorem.types.sentences'),\n    value: 'sentences',\n  },\n  {\n    label: i18n.t('devtools:generators.lorem.types.paragraphs'),\n    value: 'paragraphs',\n  },\n]\n\nfunction generate() {\n  switch (loremType.value) {\n    case 'words':\n      output.value = faker.lorem.words(count.value)\n      break\n    case 'sentences':\n      output.value = faker.lorem.sentences(count.value)\n      break\n    case 'paragraphs':\n      output.value = faker.lorem.paragraphs(count.value, '\\n\\n')\n      break\n  }\n}\n\nwatch(count, (v) => {\n  if (v > MAX_COUNT) {\n    nextTick(() => {\n      count.value = MAX_COUNT\n    })\n  }\n  if (v < 1) {\n    nextTick(() => {\n      count.value = 1\n    })\n  }\n})\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.type')\"\n        :level=\"3\"\n      />\n      <Select.Select v-model=\"loremType\">\n        <Select.SelectTrigger class=\"w-64\">\n          <Select.SelectValue\n            :placeholder=\"i18n.t('devtools:generators.lorem.selectType')\"\n          />\n        </Select.SelectTrigger>\n        <Select.SelectContent>\n          <Select.SelectItem\n            v-for=\"option in loremTypes\"\n            :key=\"option.value\"\n            :value=\"option.value\"\n          >\n            {{ option.label }}\n          </Select.SelectItem>\n        </Select.SelectContent>\n      </Select.Select>\n    </div>\n\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.amount')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"count\"\n        type=\"number\"\n        :description=\"\n          i18n.t('devtools:generators.lorem.maxCount', { count: MAX_COUNT })\n        \"\n        class=\"w-64\"\n      />\n    </div>\n\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"output\"\n        type=\"textarea\"\n        readonly\n      />\n      <div class=\"flex items-center gap-2\">\n        <Button\n          variant=\"outline\"\n          @click=\"generate\"\n        >\n          {{ i18n.t(\"button.generate\") }}\n        </Button>\n        <Button\n          variant=\"outline\"\n          @click=\"copy(output)\"\n        >\n          {{ i18n.t(\"button.copy\") }}\n        </Button>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/shadcn-comparison/RootUi.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { Check } from 'lucide-vue-next'\nimport { cardTitleClass, copy, demoStackClass, surfaceClass } from './copy'\n\nconst rootInput = ref('massCode')\nconst rootErrorInput = ref('invalid-value')\nconst rootTextareaInput = ref('First line\\nSecond line')\nconst rootContentEditable = ref('Editable note')\n</script>\n\n<template>\n  <section class=\"space-y-4\">\n    <div class=\"space-y-1\">\n      <h2 class=\"text-lg font-semibold\">\n        {{ copy.sections.rootUi }}\n      </h2>\n      <p class=\"text-muted-foreground text-sm\">\n        {{ copy.sections.rootUiDescription }}\n      </p>\n    </div>\n\n    <div class=\"grid gap-4 xl:grid-cols-2\">\n      <div :class=\"surfaceClass\">\n        <h3 :class=\"cardTitleClass\">\n          {{ copy.cards.buttons }}\n        </h3>\n        <div class=\"flex flex-wrap gap-2\">\n          <Button variant=\"outline\">\n            {{ copy.states.default }}\n          </Button>\n          <Button>\n            {{ copy.states.primary }}\n          </Button>\n          <Button variant=\"destructive\">\n            {{ copy.states.danger }}\n          </Button>\n          <Button variant=\"outline\">\n            {{ copy.states.active }}\n          </Button>\n          <Button variant=\"ghost\">\n            <Check />\n          </Button>\n          <Button variant=\"ghost\">\n            <Check />\n            {{ copy.states.iconText }}\n          </Button>\n          <Button\n            variant=\"outline\"\n            disabled\n          >\n            {{ copy.states.disabled }}\n          </Button>\n        </div>\n      </div>\n\n      <div :class=\"surfaceClass\">\n        <h3 :class=\"cardTitleClass\">\n          {{ copy.cards.inputs }}\n        </h3>\n        <div :class=\"demoStackClass\">\n          <UiInput\n            v-model=\"rootInput\"\n            :placeholder=\"copy.text.inputPlaceholder\"\n            :description=\"copy.text.description\"\n          />\n          <UiInput\n            v-model=\"rootInput\"\n            clearable\n            :placeholder=\"copy.text.inputPlaceholder\"\n          />\n          <UiInput\n            v-model=\"rootErrorInput\"\n            :placeholder=\"copy.text.inputPlaceholder\"\n            :error=\"copy.text.error\"\n          />\n          <UiInput\n            v-model=\"rootInput\"\n            variant=\"ghost\"\n            :placeholder=\"copy.states.ghost\"\n          />\n          <UiInput\n            v-model=\"rootTextareaInput\"\n            type=\"textarea\"\n            :placeholder=\"copy.text.textareaPlaceholder\"\n          />\n        </div>\n      </div>\n\n      <!-- Text: full-width section -->\n      <div class=\"col-span-full space-y-4\">\n        <div :class=\"surfaceClass\">\n          <h3 :class=\"cardTitleClass\">\n            {{ copy.cards.text }}\n          </h3>\n          <p class=\"text-muted-foreground -mt-2 mb-4 text-xs\">\n            {{ copy.cards.textDescription }}\n          </p>\n\n          <!-- UI Patterns grid -->\n          <UiText\n            variant=\"caption\"\n            uppercase\n            muted\n            weight=\"bold\"\n            class=\"mb-3 block\"\n          >\n            {{ copy.cards.textPatterns }}\n          </UiText>\n\n          <div class=\"grid gap-3 xl:grid-cols-2\">\n            <!-- a) Sidebar -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                mono\n                muted\n                class=\"mb-2 block\"\n              >\n                Sidebar\n              </UiText>\n              <div class=\"space-y-2\">\n                <UiText\n                  variant=\"sm\"\n                  weight=\"bold\"\n                >\n                  {{ copy.text.sidebarTitle }}\n                </UiText>\n                <div>\n                  <UiText\n                    variant=\"caption\"\n                    uppercase\n                    weight=\"bold\"\n                    muted\n                    class=\"mb-1 block tracking-wider\"\n                  >\n                    {{ copy.text.sidebarSection }}\n                  </UiText>\n                  <div class=\"space-y-0.5 pl-2\">\n                    <UiText\n                      variant=\"sm\"\n                      class=\"block\"\n                    >\n                      {{ copy.text.sidebarFolder1 }}\n                    </UiText>\n                    <UiText\n                      variant=\"sm\"\n                      class=\"block\"\n                    >\n                      {{ copy.text.sidebarFolder2 }}\n                    </UiText>\n                    <UiText\n                      variant=\"sm\"\n                      class=\"block\"\n                    >\n                      {{ copy.text.sidebarFolder3 }}\n                    </UiText>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <!-- b) Snippet List Item -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                mono\n                muted\n                class=\"mb-2 block\"\n              >\n                Snippet List Item\n              </UiText>\n              <div class=\"border-border/40 rounded-md border p-2.5\">\n                <UiText\n                  variant=\"sm\"\n                  weight=\"medium\"\n                  class=\"block\"\n                >\n                  {{ copy.text.snippetTitle }}\n                </UiText>\n                <div class=\"mt-1 flex gap-2\">\n                  <UiText\n                    variant=\"xs\"\n                    muted\n                  >\n                    {{ copy.text.snippetFolder }}\n                  </UiText>\n                  <UiText\n                    variant=\"xs\"\n                    muted\n                  >\n                    &middot;\n                  </UiText>\n                  <UiText\n                    variant=\"xs\"\n                    muted\n                  >\n                    {{ copy.text.snippetDate }}\n                  </UiText>\n                </div>\n              </div>\n            </div>\n\n            <!-- c) Section Headers -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                mono\n                muted\n                class=\"mb-2 block\"\n              >\n                Section Headers\n              </UiText>\n              <UiText\n                variant=\"xs\"\n                weight=\"semibold\"\n                uppercase\n                class=\"block tracking-[0.14em]\"\n              >\n                {{ copy.text.sectionHeader }}\n              </UiText>\n              <div class=\"bg-border/60 mt-2 h-px\" />\n            </div>\n\n            <!-- d) Status Bar -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                mono\n                muted\n                class=\"mb-2 block\"\n              >\n                Status Bar\n              </UiText>\n              <div\n                class=\"bg-muted/50 flex items-center gap-4 rounded px-3 py-1.5\"\n              >\n                <UiText variant=\"xs\">\n                  {{ copy.text.statusLang }}\n                </UiText>\n                <UiText\n                  variant=\"xs\"\n                  muted\n                >\n                  {{ copy.text.statusPosition }}\n                </UiText>\n                <UiText\n                  variant=\"xs\"\n                  muted\n                >\n                  {{ copy.text.statusEncoding }}\n                </UiText>\n              </div>\n            </div>\n\n            <!-- e) Empty State -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                mono\n                muted\n                class=\"mb-2 block\"\n              >\n                Empty State\n              </UiText>\n              <div class=\"flex flex-col items-center py-4\">\n                <UiText\n                  variant=\"sm\"\n                  muted\n                >\n                  {{ copy.text.emptyState }}\n                </UiText>\n                <UiText\n                  variant=\"xs\"\n                  muted\n                  class=\"mt-1\"\n                >\n                  {{ copy.text.emptyStateHint }}\n                </UiText>\n              </div>\n            </div>\n\n            <!-- f) Settings Row -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                mono\n                muted\n                class=\"mb-2 block\"\n              >\n                Settings Row\n              </UiText>\n              <div class=\"flex items-center justify-between\">\n                <div>\n                  <UiText\n                    variant=\"sm\"\n                    weight=\"medium\"\n                    class=\"block\"\n                  >\n                    {{ copy.text.settingLabel }}\n                  </UiText>\n                  <UiText\n                    variant=\"xs\"\n                    muted\n                    class=\"mt-0.5 block\"\n                  >\n                    {{ copy.text.settingDescription }}\n                  </UiText>\n                </div>\n                <UiSwitch />\n              </div>\n            </div>\n\n            <!-- g) Code Metadata -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                mono\n                muted\n                class=\"mb-2 block\"\n              >\n                Code Metadata\n              </UiText>\n              <div class=\"flex gap-4\">\n                <UiText\n                  variant=\"sm\"\n                  mono\n                  muted\n                >\n                  {{ copy.text.codeLang }}\n                </UiText>\n                <UiText\n                  variant=\"sm\"\n                  mono\n                  muted\n                >\n                  {{ copy.text.codeSize }}\n                </UiText>\n                <UiText\n                  variant=\"sm\"\n                  mono\n                  muted\n                >\n                  {{ copy.text.codeLines }}\n                </UiText>\n              </div>\n            </div>\n\n            <!-- h) API Method Badges -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                mono\n                muted\n                class=\"mb-2 block\"\n              >\n                API Method Badges\n              </UiText>\n              <div class=\"space-y-1.5\">\n                <div class=\"flex items-center gap-2\">\n                  <span\n                    class=\"inline-flex w-16 items-center justify-center rounded bg-emerald-500/15 px-2 py-0.5\"\n                  >\n                    <UiText\n                      variant=\"caption\"\n                      weight=\"semibold\"\n                      class=\"text-emerald-500\"\n                    >\n                      {{ copy.text.methodGet }}\n                    </UiText>\n                  </span>\n                  <UiText\n                    variant=\"xs\"\n                    mono\n                    muted\n                  >\n                    {{ copy.text.methodGetPath }}\n                  </UiText>\n                </div>\n                <div class=\"flex items-center gap-2\">\n                  <span\n                    class=\"inline-flex w-16 items-center justify-center rounded bg-sky-500/15 px-2 py-0.5\"\n                  >\n                    <UiText\n                      variant=\"caption\"\n                      weight=\"semibold\"\n                      class=\"text-sky-500\"\n                    >\n                      {{ copy.text.methodPost }}\n                    </UiText>\n                  </span>\n                  <UiText\n                    variant=\"xs\"\n                    mono\n                    muted\n                  >\n                    {{ copy.text.methodPostPath }}\n                  </UiText>\n                </div>\n                <div class=\"flex items-center gap-2\">\n                  <span\n                    class=\"inline-flex w-16 items-center justify-center rounded bg-red-500/15 px-2 py-0.5\"\n                  >\n                    <UiText\n                      variant=\"caption\"\n                      weight=\"semibold\"\n                      class=\"text-red-500\"\n                    >\n                      {{ copy.text.methodDelete }}\n                    </UiText>\n                  </span>\n                  <UiText\n                    variant=\"xs\"\n                    mono\n                    muted\n                  >\n                    {{ copy.text.methodDeletePath }}\n                  </UiText>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <!-- Reference: Scale, Weight, Modifiers -->\n          <UiText\n            variant=\"caption\"\n            uppercase\n            muted\n            weight=\"bold\"\n            class=\"mt-6 mb-3 block\"\n          >\n            {{ copy.cards.textReference }}\n          </UiText>\n\n          <div class=\"grid gap-3 xl:grid-cols-3\">\n            <!-- Size scale -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                muted\n                class=\"mb-2 block\"\n              >\n                Size scale\n              </UiText>\n              <div class=\"space-y-1.5\">\n                <div\n                  v-for=\"v in [\n                    'caption',\n                    'xs',\n                    'sm',\n                    'base',\n                    'lg',\n                    'xl',\n                  ] as const\"\n                  :key=\"v\"\n                  class=\"flex items-baseline gap-3\"\n                >\n                  <UiText\n                    variant=\"caption\"\n                    mono\n                    muted\n                    class=\"w-14 shrink-0 text-right\"\n                  >\n                    {{ v }}\n                  </UiText>\n                  <UiText :variant=\"v\">\n                    The quick brown fox\n                  </UiText>\n                </div>\n              </div>\n            </div>\n\n            <!-- Weight scale -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                muted\n                class=\"mb-2 block\"\n              >\n                Weight scale\n              </UiText>\n              <div class=\"space-y-1.5\">\n                <div\n                  v-for=\"w in ['normal', 'medium', 'semibold', 'bold'] as const\"\n                  :key=\"w\"\n                  class=\"flex items-baseline gap-3\"\n                >\n                  <UiText\n                    variant=\"caption\"\n                    mono\n                    muted\n                    class=\"w-14 shrink-0 text-right\"\n                  >\n                    {{ w }}\n                  </UiText>\n                  <UiText :weight=\"w\">\n                    The quick brown fox\n                  </UiText>\n                </div>\n              </div>\n            </div>\n\n            <!-- Modifiers -->\n            <div class=\"border-border/60 bg-background rounded-md border p-3\">\n              <UiText\n                variant=\"caption\"\n                muted\n                class=\"mb-2 block\"\n              >\n                Modifiers\n              </UiText>\n              <div class=\"space-y-2\">\n                <div>\n                  <UiText\n                    variant=\"caption\"\n                    mono\n                    muted\n                  >\n                    muted\n                  </UiText>\n                  <UiText\n                    muted\n                    class=\"ml-2\"\n                  >\n                    Secondary info\n                  </UiText>\n                </div>\n                <div>\n                  <UiText\n                    variant=\"caption\"\n                    mono\n                    muted\n                  >\n                    mono\n                  </UiText>\n                  <UiText\n                    mono\n                    class=\"ml-2\"\n                  >\n                    fn(x) => 42\n                  </UiText>\n                </div>\n                <div>\n                  <UiText\n                    variant=\"caption\"\n                    mono\n                    muted\n                  >\n                    uppercase\n                  </UiText>\n                  <UiText\n                    variant=\"caption\"\n                    uppercase\n                    class=\"ml-2\"\n                  >\n                    section label\n                  </UiText>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div :class=\"surfaceClass\">\n        <h3 :class=\"cardTitleClass\">\n          {{ copy.cards.contentEditable }}\n        </h3>\n        <UiTextarea\n          v-model=\"rootContentEditable\"\n          :placeholder=\"copy.text.contentEditablePlaceholder\"\n        />\n      </div>\n    </div>\n  </section>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/shadcn-comparison/Shadcn2.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button as NewButton } from '@/components/ui/shadcn/button'\nimport { Checkbox as NewCheckbox } from '@/components/ui/shadcn/checkbox'\nimport * as NewCommand from '@/components/ui/shadcn/command'\nimport * as NewContextMenu from '@/components/ui/shadcn/context-menu'\nimport * as NewDialog from '@/components/ui/shadcn/dialog'\nimport { Input as NewInput } from '@/components/ui/shadcn/input'\nimport * as NewPopover from '@/components/ui/shadcn/popover'\nimport * as NewResizable from '@/components/ui/shadcn/resizable'\nimport * as NewSelect from '@/components/ui/shadcn/select'\nimport { Switch as NewSwitch } from '@/components/ui/shadcn/switch'\nimport * as NewTabs from '@/components/ui/shadcn/tabs'\nimport { Textarea as NewTextarea } from '@/components/ui/shadcn/textarea'\nimport * as NewTooltip from '@/components/ui/shadcn/tooltip'\nimport {\n  Check,\n  Copy,\n  MoreHorizontal,\n  RotateCcw,\n  Trash2,\n} from 'lucide-vue-next'\nimport {\n  cardTitleClass,\n  copy,\n  demoStackClass,\n  options,\n  surfaceClass,\n} from './copy'\n\nconst newSelectValue = ref('alpha')\nconst newTabsValue = ref('preview')\nconst newCheckboxValue = ref(true)\nconst newSwitchValue = ref(true)\nconst newPopoverOpen = ref(false)\nconst newDialogOpen = ref(false)\n\ninterface ResizablePanelApi {\n  resize: (size: number) => void\n}\n\nconst defaultSizes = { a: 30, b: 50, c: 50 }\nconst panelInputs = ref({\n  a: String(defaultSizes.a),\n  b: String(defaultSizes.b),\n  c: String(defaultSizes.c),\n})\nconst panelARef = ref<ResizablePanelApi | null>(null)\nconst panelBRef = ref<ResizablePanelApi | null>(null)\nconst panelCRef = ref<ResizablePanelApi | null>(null)\n\nfunction onResizeA(size: number) {\n  panelInputs.value.a = String(Math.round(size))\n}\nfunction onResizeB(size: number) {\n  panelInputs.value.b = String(Math.round(size))\n}\nfunction onResizeC(size: number) {\n  panelInputs.value.c = String(Math.round(size))\n}\n\nfunction applyPanelSize(panel: 'a' | 'b' | 'c') {\n  const size = Number(panelInputs.value[panel])\n  if (Number.isNaN(size) || size < 0 || size > 100)\n    return\n  const refs = { a: panelARef, b: panelBRef, c: panelCRef }\n  refs[panel].value?.resize(size)\n}\n\nfunction resetPanels() {\n  panelARef.value?.resize(defaultSizes.a)\n  panelBRef.value?.resize(defaultSizes.b)\n  panelCRef.value?.resize(defaultSizes.c)\n  panelInputs.value = {\n    a: String(defaultSizes.a),\n    b: String(defaultSizes.b),\n    c: String(defaultSizes.c),\n  }\n}\n</script>\n\n<template>\n  <section class=\"space-y-4\">\n    <div class=\"space-y-1\">\n      <h2 class=\"text-lg font-semibold\">\n        {{ copy.sections.newShadcn2 }}\n      </h2>\n      <p class=\"text-muted-foreground text-sm\">\n        {{ copy.sections.newShadcn2Description }}\n      </p>\n    </div>\n\n    <NewTooltip.TooltipProvider>\n      <div class=\"grid gap-4 xl:grid-cols-2\">\n        <div :class=\"surfaceClass\">\n          <h3 :class=\"cardTitleClass\">\n            {{ copy.cards.buttons }}\n          </h3>\n          <div class=\"flex flex-wrap gap-2\">\n            <NewButton>{{ copy.states.default }}</NewButton>\n            <NewButton variant=\"secondary\">\n              {{ copy.states.secondary }}\n            </NewButton>\n            <NewButton variant=\"outline\">\n              {{ copy.states.outline }}\n            </NewButton>\n            <NewButton variant=\"destructive\">\n              {{ copy.states.danger }}\n            </NewButton>\n            <NewButton variant=\"ghost\">\n              {{ copy.states.ghostButton }}\n            </NewButton>\n            <NewButton>\n              <Check />\n              {{ copy.states.iconText }}\n            </NewButton>\n            <NewButton disabled>\n              {{ copy.states.disabled }}\n            </NewButton>\n          </div>\n        </div>\n\n        <div :class=\"surfaceClass\">\n          <h3 :class=\"cardTitleClass\">\n            {{ copy.cards.inputs }}\n          </h3>\n          <div :class=\"demoStackClass\">\n            <NewInput :placeholder=\"copy.text.inputPlaceholder\" />\n            <NewInput\n              aria-invalid=\"true\"\n              :placeholder=\"copy.text.inputPlaceholder\"\n            />\n            <NewInput\n              variant=\"ghost\"\n              :placeholder=\"copy.states.ghost\"\n            />\n            <NewTextarea :placeholder=\"copy.text.textareaPlaceholder\" />\n            <NewTextarea\n              variant=\"ghost\"\n              :placeholder=\"copy.states.ghost\"\n            />\n          </div>\n        </div>\n\n        <div :class=\"surfaceClass\">\n          <h3 :class=\"cardTitleClass\">\n            {{ copy.cards.selection }}\n          </h3>\n          <div :class=\"demoStackClass\">\n            <NewSelect.Select v-model=\"newSelectValue\">\n              <NewSelect.SelectTrigger class=\"w-56\">\n                <NewSelect.SelectValue\n                  :placeholder=\"copy.text.selectPlaceholder\"\n                />\n              </NewSelect.SelectTrigger>\n              <NewSelect.SelectContent>\n                <NewSelect.SelectItem\n                  v-for=\"option in options\"\n                  :key=\"`new-select-${option}`\"\n                  :value=\"option\"\n                >\n                  {{ copy.text.option[option] }}\n                </NewSelect.SelectItem>\n              </NewSelect.SelectContent>\n            </NewSelect.Select>\n\n            <NewTabs.Tabs\n              v-model=\"newTabsValue\"\n              class=\"w-full\"\n            >\n              <NewTabs.TabsList>\n                <NewTabs.TabsTrigger value=\"preview\">\n                  {{ copy.text.tabPreview }}\n                </NewTabs.TabsTrigger>\n                <NewTabs.TabsTrigger value=\"code\">\n                  {{ copy.text.tabCode }}\n                </NewTabs.TabsTrigger>\n              </NewTabs.TabsList>\n              <NewTabs.TabsContent\n                value=\"preview\"\n                class=\"pt-3 text-sm\"\n              >\n                {{ copy.text.previewBody }}\n              </NewTabs.TabsContent>\n              <NewTabs.TabsContent\n                value=\"code\"\n                class=\"pt-3 text-sm\"\n              >\n                {{ copy.text.codeBody }}\n              </NewTabs.TabsContent>\n            </NewTabs.Tabs>\n          </div>\n        </div>\n\n        <div :class=\"surfaceClass\">\n          <h3 :class=\"cardTitleClass\">\n            {{ copy.cards.toggles }}\n          </h3>\n          <div class=\"flex flex-wrap items-center gap-4\">\n            <label class=\"flex items-center gap-2 text-sm\">\n              <NewCheckbox v-model:checked=\"newCheckboxValue\" />\n              {{ copy.cards.checkbox }}\n            </label>\n            <label class=\"flex items-center gap-2 text-sm\">\n              <NewSwitch v-model:checked=\"newSwitchValue\" />\n              {{ copy.cards.switch }}\n            </label>\n          </div>\n        </div>\n\n        <div :class=\"surfaceClass\">\n          <h3 :class=\"cardTitleClass\">\n            {{ copy.cards.overlays }}\n          </h3>\n          <div class=\"flex flex-wrap gap-2\">\n            <NewTooltip.Tooltip>\n              <NewTooltip.TooltipTrigger as-child>\n                <NewButton>\n                  {{ copy.text.tooltipTrigger }}\n                </NewButton>\n              </NewTooltip.TooltipTrigger>\n              <NewTooltip.TooltipContent>\n                {{ copy.text.tooltip }}\n              </NewTooltip.TooltipContent>\n            </NewTooltip.Tooltip>\n\n            <NewPopover.Popover v-model:open=\"newPopoverOpen\">\n              <NewPopover.PopoverTrigger as-child>\n                <NewButton>\n                  {{ copy.text.openPopover }}\n                </NewButton>\n              </NewPopover.PopoverTrigger>\n              <NewPopover.PopoverContent>\n                <p class=\"px-2 py-1 text-sm\">\n                  {{ copy.text.popoverBody }}\n                </p>\n              </NewPopover.PopoverContent>\n            </NewPopover.Popover>\n\n            <NewDialog.Dialog v-model:open=\"newDialogOpen\">\n              <NewDialog.DialogTrigger as-child>\n                <NewButton>\n                  {{ copy.text.openDialog }}\n                </NewButton>\n              </NewDialog.DialogTrigger>\n              <NewDialog.DialogContent>\n                <NewDialog.DialogHeader>\n                  <NewDialog.DialogTitle>\n                    {{ copy.text.dialogTitle }}\n                  </NewDialog.DialogTitle>\n                  <NewDialog.DialogDescription>\n                    {{ copy.text.dialogDescription }}\n                  </NewDialog.DialogDescription>\n                </NewDialog.DialogHeader>\n              </NewDialog.DialogContent>\n            </NewDialog.Dialog>\n          </div>\n        </div>\n\n        <div :class=\"surfaceClass\">\n          <h3 :class=\"cardTitleClass\">\n            {{ copy.cards.command }}\n          </h3>\n          <NewCommand.Command class=\"h-[220px]\">\n            <NewCommand.CommandInput\n              :placeholder=\"copy.text.commandPlaceholder\"\n            />\n            <NewCommand.CommandList>\n              <NewCommand.CommandEmpty>\n                {{ copy.text.commandEmpty }}\n              </NewCommand.CommandEmpty>\n              <NewCommand.CommandGroup :heading=\"copy.text.commandGroup\">\n                <NewCommand.CommandItem value=\"rename\">\n                  {{ copy.text.rename }}\n                  <NewCommand.CommandShortcut>R</NewCommand.CommandShortcut>\n                </NewCommand.CommandItem>\n                <NewCommand.CommandItem value=\"duplicate\">\n                  {{ copy.text.duplicate }}\n                  <NewCommand.CommandShortcut>D</NewCommand.CommandShortcut>\n                </NewCommand.CommandItem>\n                <NewCommand.CommandSeparator />\n                <NewCommand.CommandItem value=\"delete\">\n                  {{ copy.text.delete }}\n                  <NewCommand.CommandShortcut>⌫</NewCommand.CommandShortcut>\n                </NewCommand.CommandItem>\n              </NewCommand.CommandGroup>\n            </NewCommand.CommandList>\n          </NewCommand.Command>\n        </div>\n\n        <div\n          :class=\"surfaceClass\"\n          class=\"mb-13\"\n        >\n          <div class=\"mb-3 flex items-center justify-between\">\n            <h3 class=\"text-sm font-semibold\">\n              {{ copy.cards.resizable }}\n            </h3>\n            <NewButton\n              variant=\"ghost\"\n              @click=\"resetPanels\"\n            >\n              <RotateCcw />\n              Reset\n            </NewButton>\n          </div>\n          <div\n            class=\"border-border h-[150px] overflow-hidden rounded-md border\"\n          >\n            <NewResizable.ResizablePanelGroup\n              direction=\"horizontal\"\n              class=\"h-full\"\n            >\n              <NewResizable.ResizablePanel\n                ref=\"panelARef\"\n                :default-size=\"defaultSizes.a\"\n                @resize=\"onResizeA\"\n              >\n                <div\n                  class=\"flex h-full flex-col items-center justify-center gap-1 text-sm\"\n                >\n                  <span>A</span>\n                  <span class=\"text-muted-foreground text-xs\">{{ panelInputs.a }}%</span>\n                </div>\n              </NewResizable.ResizablePanel>\n              <NewResizable.ResizableHandle with-handle />\n              <NewResizable.ResizablePanel :default-size=\"100 - defaultSizes.a\">\n                <NewResizable.ResizablePanelGroup\n                  direction=\"vertical\"\n                  class=\"h-full\"\n                >\n                  <NewResizable.ResizablePanel\n                    ref=\"panelBRef\"\n                    :default-size=\"defaultSizes.b\"\n                    @resize=\"onResizeB\"\n                  >\n                    <div\n                      class=\"flex h-full flex-col items-center justify-center gap-1 text-sm\"\n                    >\n                      <span>B</span>\n                      <span class=\"text-muted-foreground text-xs\">{{ panelInputs.b }}%</span>\n                    </div>\n                  </NewResizable.ResizablePanel>\n                  <NewResizable.ResizableHandle with-handle />\n                  <NewResizable.ResizablePanel\n                    ref=\"panelCRef\"\n                    :default-size=\"defaultSizes.c\"\n                    @resize=\"onResizeC\"\n                  >\n                    <div\n                      class=\"flex h-full flex-col items-center justify-center gap-1 text-sm\"\n                    >\n                      <span>C</span>\n                      <span class=\"text-muted-foreground text-xs\">{{ panelInputs.c }}%</span>\n                    </div>\n                  </NewResizable.ResizablePanel>\n                </NewResizable.ResizablePanelGroup>\n              </NewResizable.ResizablePanel>\n            </NewResizable.ResizablePanelGroup>\n          </div>\n          <div class=\"mt-3 flex items-center gap-2\">\n            <template\n              v-for=\"panel in ['a', 'b', 'c'] as const\"\n              :key=\"panel\"\n            >\n              <label class=\"flex items-center gap-1.5 text-xs\">\n                <span class=\"text-muted-foreground uppercase\">{{ panel }}</span>\n                <NewInput\n                  v-model=\"panelInputs[panel]\"\n                  class=\"w-16 text-center\"\n                  @keydown.enter=\"applyPanelSize(panel)\"\n                />\n                <span class=\"text-muted-foreground\">%</span>\n              </label>\n            </template>\n          </div>\n        </div>\n\n        <div :class=\"surfaceClass\">\n          <h3 :class=\"cardTitleClass\">\n            {{ copy.cards.contextMenu }}\n          </h3>\n          <p class=\"text-muted-foreground mb-3 text-sm\">\n            {{ copy.text.rightClick }}\n          </p>\n          <NewContextMenu.ContextMenu>\n            <NewContextMenu.ContextMenuTrigger as-child>\n              <div\n                class=\"bg-muted/40 border-border flex h-20 w-full cursor-default items-center justify-center rounded-md border border-dashed text-sm\"\n              >\n                <div class=\"flex items-center gap-2\">\n                  <MoreHorizontal class=\"h-4 w-4\" />\n                  {{ copy.text.menuTrigger }}\n                </div>\n              </div>\n            </NewContextMenu.ContextMenuTrigger>\n            <NewContextMenu.ContextMenuContent>\n              <NewContextMenu.ContextMenuItem>\n                <Copy />\n                {{ copy.text.duplicate }}\n              </NewContextMenu.ContextMenuItem>\n              <NewContextMenu.ContextMenuItem>\n                {{ copy.text.rename }}\n              </NewContextMenu.ContextMenuItem>\n              <NewContextMenu.ContextMenuSeparator />\n              <NewContextMenu.ContextMenuItem variant=\"destructive\">\n                <Trash2 />\n                {{ copy.text.delete }}\n              </NewContextMenu.ContextMenuItem>\n            </NewContextMenu.ContextMenuContent>\n          </NewContextMenu.ContextMenu>\n        </div>\n      </div>\n    </NewTooltip.TooltipProvider>\n  </section>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/shadcn-comparison/copy.ts",
    "content": "export const surfaceClass = 'rounded-lg border border-border bg-card p-4'\nexport const cardTitleClass = 'mb-3 text-sm font-semibold'\nexport const demoStackClass = 'space-y-3'\n\nexport const options = ['alpha', 'beta', 'gamma'] as const\n\nexport const copy = {\n  title: 'shadcn demo',\n  description:\n    'Сравнение root UI-адаптеров, legacy shadcn и нового набора shadcn перед заменой импортов в приложении.',\n  sections: {\n    rootUi: 'Root UI adapters',\n    rootUiDescription:\n      'Совместимые обёртки, которые сохраняют текущий API приложения, но уже опираются на shadcn.',\n    legacyShadcn: 'Legacy shadcn',\n    legacyShadcnDescription:\n      'Текущие компоненты на базе Radix, которые пока используются в приложении.',\n    newShadcn2: 'shadcn',\n    newShadcn2Description:\n      'CLI-сгенерированные компоненты на базе Reka, приведённые к масштабу 28px и переведённые на shadcn color tokens.',\n  },\n  cards: {\n    buttons: 'Buttons',\n    inputs: 'Inputs',\n    text: 'Text',\n    textDescription:\n      'Реальные UI-паттерны приложения, построенные на UiText вместо инлайн Tailwind-классов.',\n    textPatterns: 'UI Patterns',\n    textReference: 'Reference',\n    contentEditable: 'Contenteditable textarea',\n    selection: 'Select and tabs',\n    toggles: 'Checkbox and switch',\n    checkbox: 'Checkbox',\n    switch: 'Switch',\n    overlays: 'Tooltip, popover and dialog',\n    command: 'Command',\n    contextMenu: 'Context menu',\n    resizable: 'Resizable panels',\n  },\n  states: {\n    default: 'Default',\n    primary: 'Primary',\n    danger: 'Destructive',\n    secondary: 'Secondary',\n    outline: 'Outline',\n    ghostButton: 'Ghost',\n    disabled: 'Disabled',\n    active: 'Active',\n    iconText: 'Icon + text',\n    ghost: 'Ghost',\n  },\n  text: {\n    inputPlaceholder: 'Введите значение',\n    textareaPlaceholder: 'Введите несколько строк',\n    contentEditablePlaceholder: 'Редактируемый блок описания',\n    description: 'Вспомогательный текст под полем',\n    error: 'Что-то пошло не так',\n    selectPlaceholder: 'Выберите вариант',\n    tabPreview: 'Preview',\n    tabCode: 'Code',\n    previewBody: 'Область предпросмотра',\n    codeBody: 'Область кода',\n    tooltipTrigger: 'Показать tooltip',\n    tooltip: 'Пример tooltip',\n    openPopover: 'Открыть popover',\n    openDialog: 'Открыть dialog',\n    popoverBody:\n      'Содержимое popover уже использует shadcn tokens и компактные отступы.',\n    dialogTitle: 'Превью dialog',\n    dialogDescription:\n      'Используйте этот route, чтобы сравнить пропорции перед заменой импортов в боевых экранах.',\n    commandPlaceholder: 'Поиск компонентов...',\n    commandEmpty: 'Ничего не найдено.',\n    commandGroup: 'Actions',\n    rename: 'Rename',\n    duplicate: 'Duplicate',\n    delete: 'Delete',\n    textDefault: 'Default text',\n    textMuted: 'Muted text',\n    textMono: 'Monospace sample',\n    textUppercase: 'Uppercase label',\n    textCaption: 'Caption size',\n    textSemibold: 'Semibold emphasis',\n    // Text demo — real UI patterns\n    sidebarTitle: 'My Workspace',\n    sidebarSection: 'Folders',\n    sidebarFolder1: 'JavaScript',\n    sidebarFolder2: 'TypeScript',\n    sidebarFolder3: 'Vue Components',\n    snippetTitle: 'Array.from() with mapping',\n    snippetFolder: 'JavaScript',\n    snippetDate: '2 hours ago',\n    sectionHeader: 'Request Headers',\n    statusLang: 'TypeScript',\n    statusPosition: 'Ln 42, Col 18',\n    statusEncoding: 'UTF-8',\n    emptyState: 'No snippets found',\n    emptyStateHint: 'Create a new snippet or change the filter',\n    settingLabel: 'Auto-save',\n    settingDescription: 'Automatically save snippets after editing',\n    codeSize: '2.4 KB',\n    codeLines: '84 lines',\n    codeLang: 'typescript',\n    methodGet: 'GET',\n    methodPost: 'POST',\n    methodDelete: 'DELETE',\n    methodGetPath: '/api/snippets',\n    methodPostPath: '/api/snippets',\n    methodDeletePath: '/api/snippets/:id',\n    rightClick: 'Кликните правой кнопкой по триггеру, чтобы открыть меню.',\n    menuTrigger: 'Open menu',\n    resizablePanel: 'Panel',\n    option: {\n      alpha: 'Alpha',\n      beta: 'Beta',\n      gamma: 'Gamma',\n    },\n  },\n}\n"
  },
  {
    "path": "src/renderer/components/devtools/web/Slugify.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport slugify from 'slugify'\n\nconst input = ref('')\n\nconst title = computed(() => i18n.t('devtools:web.slugify.label'))\nconst description = computed(() => i18n.t('devtools:web.slugify.description'))\n\nconst copy = useCopyToClipboard()\n\nfunction slugifyText(text: string) {\n  return slugify(text, {\n    lower: true,\n    strict: true,\n  })\n}\n\nconst output = computed(() => slugifyText(input.value))\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"input\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.text')\"\n        clearable\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"output\"\n        readonly\n      />\n      <Button\n        variant=\"outline\"\n        @click=\"copy(output)\"\n      >\n        {{ i18n.t(\"button.copy\") }}\n      </Button>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/web/UrlEncoder.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\n\nconst input = ref('')\nconst isUrlDecode = ref(false)\n\nconst title = computed(() => i18n.t('devtools:web.urlEncoder.label'))\nconst description = computed(() =>\n  i18n.t('devtools:web.urlEncoder.description'),\n)\n\nconst copy = useCopyToClipboard()\n\nconst output = computed(() => {\n  if (isUrlDecode.value) {\n    return decodeURIComponent(input.value)\n  }\n  return encodeURIComponent(input.value)\n})\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"flex items-center gap-2\">\n      {{ i18n.t(\"devtools:web.urlEncoder.modes.urlEncode\") }}\n      <Switch\n        :checked=\"isUrlDecode\"\n        @update:checked=\"isUrlDecode = $event\"\n      />\n      {{ i18n.t(\"devtools:web.urlEncoder.modes.urlDecode\") }}\n    </div>\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.input')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"input\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.url')\"\n        clearable\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.output')\"\n        :level=\"3\"\n      />\n      <UiInput\n        :model-value=\"output\"\n        readonly\n      />\n      <Button\n        variant=\"outline\"\n        @click=\"copy(output)\"\n      >\n        {{ i18n.t(\"button.copy\") }}\n      </Button>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/devtools/web/UrlParser.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n } from '@/electron'\nimport { Copy } from 'lucide-vue-next'\n\nconst inputRrl = ref('')\n\nconst title = computed(() => i18n.t('devtools:web.urlParser.label'))\nconst description = computed(() =>\n  i18n.t('devtools:web.urlParser.description'),\n)\n\nconst copy = useCopyToClipboard()\n\nconst url = computed(() => {\n  let url: URL | null = null\n\n  try {\n    url = new URL(inputRrl.value)\n  }\n  catch {\n    url = null\n  }\n\n  return url\n})\n\nconst protocol = computed(() => url.value?.protocol)\nconst hash = computed(() => url.value?.hash)\nconst query = computed(() => url.value?.search)\nconst pathname = computed(() => url.value?.pathname)\nconst host = computed(() => url.value?.host)\nconst hostname = computed(() => url.value?.hostname)\nconst origin = computed(() => url.value?.origin)\nconst port = computed(() => url.value?.port)\n\nconst output = computed(() => {\n  return {\n    protocol: {\n      label: 'Protocol',\n      value: protocol.value,\n    },\n    hash: {\n      label: 'Hash',\n      value: hash.value,\n    },\n    query: {\n      label: 'Query',\n      value: query.value,\n    },\n    pathname: {\n      label: 'Pathname',\n      value: pathname.value,\n    },\n    host: {\n      label: 'Host',\n      value: host.value,\n    },\n    port: {\n      label: 'Port',\n      value: port.value,\n    },\n    hostname: {\n      label: 'Hostname',\n      value: hostname.value,\n    },\n    origin: {\n      label: 'Origin',\n      value: origin.value,\n    },\n  }\n})\n\nconst queryStringKeyValue = computed(() => {\n  if (!query.value)\n    return []\n\n  return query.value\n    .slice(1)\n    .split('&')\n    .map((item) => {\n      const [key, value] = item.split('=')\n      return {\n        key,\n        value,\n      }\n    })\n})\n</script>\n\n<template>\n  <div class=\"space-y-6\">\n    <UiHeading\n      :title=\"title\"\n      :description=\"description\"\n    />\n    <div class=\"space-y-2\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.inputUrl')\"\n        :level=\"3\"\n      />\n      <UiInput\n        v-model=\"inputRrl\"\n        :placeholder=\"i18n.t('devtools:form.placeholder.url')\"\n        clearable\n      />\n    </div>\n    <div class=\"space-y-4\">\n      <UiHeading\n        :title=\"i18n.t('devtools:form.parsedUrl')\"\n        :level=\"3\"\n      />\n      <div\n        class=\"grid grid-cols-[max-content_1fr_max-content] items-center gap-4\"\n      >\n        <template\n          v-for=\"[key, value] in Object.entries(output)\"\n          :key=\"key\"\n        >\n          <UiText\n            as=\"div\"\n            weight=\"medium\"\n          >\n            {{ value.label }}\n          </UiText>\n          <UiInput\n            :model-value=\"value.value\"\n            readonly\n          />\n          <Button\n            variant=\"icon\"\n            size=\"icon\"\n            @click=\"copy(value.value || '')\"\n          >\n            <Copy />\n          </Button>\n        </template>\n      </div>\n      <UiHeading\n        :title=\"i18n.t('devtools:form.splitQueryString')\"\n        :level=\"3\"\n      />\n      <div\n        class=\"grid grid-cols-[max-content_1fr_max-content] items-center gap-4\"\n      >\n        <template\n          v-for=\"item in queryStringKeyValue\"\n          :key=\"item.key\"\n        >\n          <UiText\n            as=\"div\"\n            weight=\"medium\"\n          >\n            {{ item.key }}\n          </UiText>\n          <UiInput\n            :model-value=\"item.value\"\n            readonly\n          />\n          <Button\n            variant=\"icon\"\n            size=\"icon\"\n            @click=\"copy(item.value || '')\"\n          >\n            <Copy />\n          </Button>\n        </template>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/Description.vue",
    "content": "<script setup lang=\"ts\">\nimport { useSnippets, useSnippetUpdate } from '@/composables'\n\nconst show = defineModel<boolean>('show')\n\nconst { selectedSnippet } = useSnippets()\nconst { addToUpdateQueue } = useSnippetUpdate()\n\nconst description = computed({\n  get() {\n    return selectedSnippet.value?.description || ''\n  },\n  set(v: string) {\n    addToUpdateQueue(selectedSnippet.value!.id, {\n      name: selectedSnippet.value!.name,\n      description: v,\n      folderId: selectedSnippet.value!.folder?.id || null,\n      isDeleted: selectedSnippet.value!.isDeleted,\n      isFavorites: selectedSnippet.value!.isFavorites,\n    })\n  },\n})\n\nwatch(selectedSnippet, () => {\n  if (show.value) {\n    show.value = false\n  }\n})\n</script>\n\n<template>\n  <div\n    v-if=\"selectedSnippet?.description || show\"\n    data-editor-description\n    class=\"border-border border-b\"\n  >\n    <UiTextarea\n      v-model=\"description\"\n      :focus=\"show\"\n      variant=\"ghost\"\n    />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/Editor.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Language } from '@/components/editor/types'\nimport * as Resizable from '@/components/ui/shadcn/resizable'\nimport {\n  useApp,\n  useEditor,\n  useSnippets,\n  useSnippetUpdate,\n  useTheme,\n} from '@/composables'\nimport { i18n, ipc } from '@/electron'\nimport { useClipboard, useCssVar, useDebounceFn } from '@vueuse/core'\nimport CodeMirror from 'codemirror'\nimport { EDITOR_DEFAULTS } from '~/main/store/constants'\nimport 'codemirror/addon/edit/closebrackets'\nimport 'codemirror/addon/edit/matchbrackets'\nimport 'codemirror/addon/search/search'\nimport 'codemirror/addon/search/searchcursor'\nimport 'codemirror/addon/selection/active-line'\nimport 'codemirror/addon/scroll/simplescrollbars'\nimport 'codemirror/addon/scroll/simplescrollbars.css'\nimport 'codemirror/lib/codemirror.css'\nimport 'codemirror/theme/neo.css'\nimport 'codemirror/theme/oceanic-next.css'\n\nconst { settings, cursorPosition } = useEditor()\nconst {\n  selectedSnippetContent,\n  selectedSnippet,\n  isEmpty,\n  selectedSnippetIds,\n  isAvailableToCodePreview,\n  searchQuery,\n} = useSnippets()\nconst {\n  isShowMarkdown,\n  isShowMindmap,\n  isShowCodePreview,\n  isShowCodeImage,\n  isShowMarkdownPresentation,\n  isFocusedSearch,\n  isShowJsonVisualizer,\n} = useApp()\nconst { editorThemeName } = useTheme()\n\nconst {\n  addToUpdateContentQueue,\n  getPendingContentUpdate,\n  isContentUpdateBusy,\n} = useSnippetUpdate()\n\nlet editor: CodeMirror.Editor | null = null\nlet currentSearchOverlay: any = null\n\nconst isProgrammaticChange = ref(false)\n\nconst fontSize = useCssVar('--editor-font-size', document.body, {\n  initialValue: `${settings.fontSize}px`,\n})\n\nuseCssVar('--editor-font-family', document.body, {\n  initialValue: settings.fontFamily,\n})\n\nconst scrollBarOpacity = useCssVar(\n  '--editor-scrollbar-opacity',\n  document.body,\n  {\n    initialValue: '1',\n  },\n)\n\nconst isShowHeader = computed(() => {\n  if (selectedSnippetIds.value.length > 1)\n    return false\n  return (\n    isShowMarkdown.value\n    || isShowMindmap.value\n    || (!isEmpty.value && selectedSnippet.value !== undefined)\n  )\n})\nconst isShowEditor = computed(() => {\n  if (selectedSnippetIds.value.length > 1)\n    return false\n  return (\n    !isShowMarkdown.value\n    && !isShowMindmap.value\n    && !isShowCodeImage.value\n    && !isShowMarkdownPresentation.value\n    && !isShowJsonVisualizer.value\n    && !isEmpty.value\n    && selectedSnippet.value !== undefined\n  )\n})\n\nwatch(selectedSnippetContent, () => {\n  if (selectedSnippetContent.value?.language !== 'markdown') {\n    isShowMarkdown.value = false\n    isShowMindmap.value = false\n  }\n\n  if (selectedSnippetContent.value?.language !== 'json') {\n    isShowJsonVisualizer.value = false\n  }\n\n  if (!isAvailableToCodePreview.value) {\n    isShowCodePreview.value = false\n  }\n})\n\nfunction getCursorPosition() {\n  if (!editor)\n    return\n  const { line, ch } = editor.getCursor()\n  cursorPosition.row = line\n  cursorPosition.column = ch\n}\n\nconst hideScrollbar = useDebounceFn(() => {\n  scrollBarOpacity.value = '0'\n}, 1000)\n\nasync function init() {\n  const el = document.getElementById('editor')\n\n  if (!el)\n    return\n\n  editor = CodeMirror(el, {\n    value: selectedSnippetContent.value?.value || ' ',\n    mode: selectedSnippetContent.value?.language || 'plain_text',\n    theme: editorThemeName.value,\n    lineWrapping: settings.wrap,\n    lineNumbers: true,\n    tabSize: settings.tabSize,\n    indentUnit: settings.tabSize,\n    indentWithTabs: true,\n    autoCloseBrackets: true,\n    matchBrackets: settings.matchBrackets,\n    styleActiveLine: settings.highlightLine,\n    scrollbarStyle: 'null',\n  })\n\n  editor.on('change', (e) => {\n    if (isProgrammaticChange.value || !selectedSnippet.value?.id)\n      return\n\n    const initValue = JSON.stringify(selectedSnippetContent.value?.value)\n    const updatedValue = JSON.stringify(e.getValue())\n\n    if (initValue !== updatedValue) {\n      addToUpdateContentQueue(\n        selectedSnippet.value.id,\n        selectedSnippetContent.value!.id,\n        {\n          label: selectedSnippetContent.value!.label,\n          value: e.getValue(),\n          language: selectedSnippetContent.value!.language,\n        },\n      )\n    }\n  })\n\n  editor.on('cursorActivity', getCursorPosition)\n\n  editor.on('scroll', () => {\n    scrollBarOpacity.value = '1'\n    editor?.setOption('scrollbarStyle', 'overlay')\n  })\n\n  editor.on('scroll', hideScrollbar)\n\n  editor.on('drop', async (cm, e) => {\n    if (selectedSnippetContent.value?.language === 'markdown') {\n      const file = e.dataTransfer?.files[0]\n\n      if (!file)\n        return\n\n      if (!file.type.startsWith('image/'))\n        return\n\n      try {\n        const arrayBuffer = await file.arrayBuffer()\n        const buffer = Array.from(new Uint8Array(arrayBuffer))\n\n        // Вызываем IPC хендлер для сохранения файла из буфера\n        const relativePath = await ipc.invoke('fs:assets', {\n          buffer,\n          fileName: file.name,\n        })\n\n        cm.replaceSelection(`![${file.name}](./${relativePath})`)\n      }\n      catch (error) {\n        console.error('Ошибка при добавлении изображения:', error)\n      }\n    }\n  })\n\n  editor.setOption('extraKeys', {\n    'Cmd-F': () => {\n      isFocusedSearch.value = true\n    },\n  })\n\n  ipc.on('main-menu:font-size-increase', () => {\n    settings.fontSize++\n    fontSize.value = `${settings.fontSize}px`\n  })\n\n  ipc.on('main-menu:font-size-decrease', () => {\n    settings.fontSize--\n    fontSize.value = `${settings.fontSize}px`\n  })\n\n  ipc.on('main-menu:font-size-reset', () => {\n    settings.fontSize = EDITOR_DEFAULTS.fontSize\n    fontSize.value = `${settings.fontSize}px`\n  })\n\n  ipc.on('main-menu:copy-snippet', () => {\n    const { copy } = useClipboard({ source: editor?.getValue() || '' })\n    copy()\n  })\n\n  watch(selectedSnippetContent, (v, oldV) => {\n    nextTick(() => {\n      const isNewValue = v?.id !== oldV?.id\n      const isSameContent = v?.id === oldV?.id\n      const snippetId = selectedSnippet.value?.id\n      const contentId = v?.id\n      let nextValue = v?.value || ''\n\n      if (snippetId && contentId) {\n        const pendingUpdate = getPendingContentUpdate(snippetId, contentId)\n        if (pendingUpdate) {\n          nextValue = pendingUpdate.value || ''\n        }\n\n        if (\n          isSameContent\n          && isContentUpdateBusy(snippetId, contentId)\n          && editor\n          && editor.getValue() !== nextValue\n        ) {\n          return\n        }\n      }\n\n      // Не сохраняем вьюпорт при смене фрагмента/сниппета\n      setValue(nextValue, true, !isNewValue)\n      nextTick(() => {\n        if (searchQuery.value) {\n          updateSearchOverlay()\n        }\n      })\n    })\n  })\n\n  watch(selectedSnippetContent, (v) => {\n    nextTick(() => {\n      if (!v)\n        return\n      setLanguage(v.language as Language)\n    })\n  })\n\n  watch(editorThemeName, (themeName) => {\n    editor?.setOption('theme', themeName)\n  })\n\n  watch(\n    () => settings.fontSize,\n    () => {\n      nextTick(() => {\n        editor?.refresh()\n      })\n    },\n  )\n\n  watch(\n    () => settings.tabSize,\n    (tabSize) => {\n      const normalizedTabSize = Math.max(1, Number(tabSize) || 1)\n\n      editor?.setOption('tabSize', normalizedTabSize)\n      editor?.setOption('indentUnit', normalizedTabSize)\n    },\n  )\n\n  watch(searchQuery, () => {\n    nextTick(() => {\n      updateSearchOverlay()\n    })\n  })\n}\n\nfunction setValue(value: string, programmatic = true, preserveViewport = true) {\n  if (!editor)\n    return\n\n  const current = editor.getValue()\n  if (current === value)\n    return\n\n  const cursor = preserveViewport ? editor.getCursor() : null\n  const { left, top } = preserveViewport\n    ? editor.getScrollInfo()\n    : { left: 0, top: 0 }\n\n  isProgrammaticChange.value = programmatic\n  editor.setValue(value)\n  isProgrammaticChange.value = false\n\n  if (preserveViewport) {\n    if (cursor)\n      editor.setCursor(cursor)\n    editor.scrollTo(left, top)\n  }\n  else {\n    editor.setCursor({ line: 0, ch: 0 })\n    editor.scrollTo(0, 0)\n  }\n}\n\nfunction setLanguage(language: Language) {\n  editor?.setOption('mode', language)\n}\n\nasync function format() {\n  const availableLang: Language[] = [\n    'css',\n    'dockerfile',\n    'gitignore',\n    'graphqlschema',\n    'html',\n    'ini',\n    'jade',\n    'java',\n    'javascript',\n    'json',\n    'json5',\n    'less',\n    'markdown',\n    'php',\n    'properties',\n    'sass',\n    'scss',\n    'sh',\n    'toml',\n    'typescript',\n    'xml',\n    'yaml',\n  ]\n\n  if (\n    selectedSnippetContent.value?.value\n    && !selectedSnippetContent.value?.language\n  ) {\n    return\n  }\n\n  if (\n    !availableLang.includes(selectedSnippetContent.value?.language as Language)\n  )\n    return\n\n  const lang = selectedSnippetContent.value?.language as Language\n  const value = selectedSnippetContent.value?.value\n  let parser = lang as string\n\n  const shellLike = ['dockerfile', 'gitignore', 'properties', 'ini']\n\n  if (lang === 'javascript')\n    parser = 'babel'\n  if (lang === 'graphqlschema')\n    parser = 'graphql'\n  if (shellLike.includes(lang))\n    parser = 'sh'\n\n  try {\n    const formatted = await ipc.invoke('prettier:format', {\n      text: value,\n      parser,\n    })\n    setValue(formatted, false)\n  }\n  catch (err) {\n    console.error(err)\n  }\n}\n\nipc.on('main-menu:format', format)\n\nfunction onSplitterLayout() {\n  editor?.refresh()\n}\n\nfunction createSearchOverlay(query: string) {\n  if (!query)\n    return null\n\n  let regexp: RegExp\n\n  try {\n    regexp = new RegExp(query.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'gi')\n  }\n  catch {\n    return null\n  }\n\n  return {\n    token: (stream: any) => {\n      regexp.lastIndex = stream.pos\n      const match = regexp.exec(stream.string)\n      if (match && match.index === stream.pos) {\n        stream.pos += match[0].length\n        return 'searching'\n      }\n      else if (match) {\n        stream.pos = match.index\n      }\n      else {\n        stream.skipToEnd()\n      }\n    },\n  }\n}\n\nfunction updateSearchOverlay() {\n  if (!editor)\n    return\n\n  if (currentSearchOverlay) {\n    editor.removeOverlay(currentSearchOverlay)\n    currentSearchOverlay = null\n  }\n\n  if (searchQuery.value) {\n    currentSearchOverlay = createSearchOverlay(searchQuery.value)\n    if (currentSearchOverlay) {\n      editor.addOverlay(currentSearchOverlay)\n\n      // Scroll to the first match\n      const cursor = editor.getSearchCursor(\n        searchQuery.value,\n        { line: 0, ch: 0 },\n        true,\n      )\n      if (cursor.findNext()) {\n        editor.scrollIntoView(cursor.from(), 50)\n      }\n    }\n  }\n}\n\nonMounted(() => {\n  init()\n})\n</script>\n\n<template>\n  <div\n    data-editor\n    class=\"grid h-full grid-rows-[auto_1fr_auto] overflow-hidden pt-[var(--content-top-offset)]\"\n  >\n    <EditorHeader v-if=\"isShowHeader\" />\n    <Resizable.ResizablePanelGroup\n      v-show=\"isShowEditor\"\n      direction=\"vertical\"\n      class=\"overflow-auto\"\n      @layout=\"onSplitterLayout\"\n    >\n      <Resizable.ResizablePanel as-child>\n        <div\n          id=\"editor\"\n          data-editor-mount\n        />\n      </Resizable.ResizablePanel>\n      <template v-if=\"isShowCodePreview\">\n        <Resizable.ResizableHandle />\n        <Resizable.ResizablePanel>\n          <EditorPreview />\n        </Resizable.ResizablePanel>\n      </template>\n    </Resizable.ResizablePanelGroup>\n    <EditorMarkdown v-if=\"isShowMarkdown\" />\n    <EditorFooter v-if=\"isShowEditor\" />\n    <EditorMindmap v-if=\"isShowMindmap\" />\n    <EditorCodeImage v-if=\"isShowCodeImage\" />\n    <EditorJsonVisualizer v-if=\"isShowJsonVisualizer\" />\n    <div\n      v-if=\"\n        isEmpty\n          || selectedSnippetIds.length > 1\n          || selectedSnippet === undefined\n      \"\n      class=\"row-span-full flex items-center justify-center\"\n    >\n      <UiEmptyPlaceholder\n        v-if=\"isEmpty || selectedSnippet === undefined\"\n        :text=\"i18n.t('snippet.noSelected')\"\n      />\n      <UiEmptyPlaceholder\n        v-if=\"!isEmpty && selectedSnippetIds.length > 1\"\n        :text=\"\n          i18n.t('snippet.selectedMultiple', {\n            count: selectedSnippetIds.length,\n          })\n        \"\n      />\n    </div>\n  </div>\n</template>\n\n<style>\n@reference '../../styles.css';\n.CodeMirror {\n  font-size: var(--editor-font-size);\n  font-family: var(--editor-font-family);\n  line-height: calc(var(--editor-font-size) * 1.5);\n  height: 100%;\n  background-color: var(--background) !important;\n}\n\n.CodeMirror-gutters {\n  background-color: var(--background) !important;\n}\n\n.CodeMirror-linenumber {\n  color: var(--muted-foreground) !important;\n}\n\n.CodeMirror-cursor {\n  border-left: 2px solid var(--foreground) !important;\n  background-color: transparent !important;\n}\n\n.CodeMirror-selected {\n  background-color: var(--accent) !important;\n}\n\n.CodeMirror-overlayscroll-vertical div {\n  background-color: var(--scrollbar);\n  width: 7px;\n  opacity: var(--editor-scrollbar-opacity);\n  transition: opacity 0.3s;\n}\n\n.CodeMirror-overlayscroll-horizontal div {\n  background-color: var(--scrollbar);\n  height: 7px;\n  opacity: var(--editor-scrollbar-opacity);\n  transition: opacity 0.3s;\n}\n\n.CodeMirror-scrollbar-filler {\n  background-color: transparent;\n}\n\n.CodeMirror .cm-searching {\n  background-color: var(--text-highlight);\n  color: black !important;\n  border-radius: 2px;\n}\n</style>\n"
  },
  {
    "path": "src/renderer/components/editor/Footer.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport * as Command from '@/components/ui/shadcn/command'\nimport * as Popover from '@/components/ui/shadcn/popover'\nimport { useEditor, useSnippets } from '@/composables'\nimport { Check } from 'lucide-vue-next'\nimport { languages } from './grammars/languages'\n\nconst { cursorPosition } = useEditor()\nconst { selectedSnippetContent, selectedSnippet, updateSnippetContent }\n  = useSnippets()\n\nconst isOpen = ref(false)\nconst languageListRef = ref<HTMLElement>()\n\nfunction onSelect(value: string) {\n  isOpen.value = false\n  updateSnippetContent(\n    selectedSnippet.value!.id,\n    selectedSnippetContent.value!.id,\n    {\n      label: selectedSnippetContent.value!.label,\n      value: selectedSnippetContent.value!.value,\n      language: value,\n    },\n  )\n}\n\nconst selectedLanguageName = computed(() => {\n  return languages.find(\n    language => language.value === selectedSnippetContent.value?.language,\n  )?.name\n})\n\nfunction fuzzySearch(list: string[], searchTerm: string) {\n  return list.filter((value) => {\n    const language = languages.find(l => l.value === value)\n    const name = language?.name || value\n    const searchChars = searchTerm.toLowerCase().split('')\n    let currentIndex = 0\n\n    return searchChars.every((char) => {\n      const index = name.toLowerCase().indexOf(char, currentIndex)\n      if (index === -1)\n        return false\n      currentIndex = index + 1\n      return true\n    })\n  })\n}\n\nfunction scrollToSelectedLanguage() {\n  const selectedLanguage = selectedSnippetContent.value?.language\n\n  if (!languageListRef.value || !selectedLanguage)\n    return\n\n  const selectedItem = Array.from(\n    languageListRef.value.querySelectorAll<HTMLElement>('[data-language-item]'),\n  ).find(item => item.dataset.languageItem === selectedLanguage)\n\n  selectedItem?.scrollIntoView({ block: 'center' })\n}\n\nwatch(isOpen, async (open) => {\n  if (!open)\n    return\n\n  await nextTick()\n  requestAnimationFrame(scrollToSelectedLanguage)\n})\n</script>\n\n<template>\n  <div\n    data-editor-footer\n    class=\"border-border flex items-center justify-between border-t px-2 py-1 text-xs\"\n  >\n    <div>\n      <Popover.Popover v-model:open=\"isOpen\">\n        <Popover.PopoverTrigger as-child>\n          <Button\n            variant=\"ghost\"\n            class=\"-ml-1\"\n          >\n            {{ selectedLanguageName }}\n          </Button>\n        </Popover.PopoverTrigger>\n        <Popover.PopoverContent class=\"w-auto px-1 py-0\">\n          <Command.Command\n            :filter-function=\"fuzzySearch as any\"\n            :model-value=\"selectedSnippetContent?.language\"\n          >\n            <Command.CommandInput\n              class=\"h-9\"\n              placeholder=\"Select Language Mode\"\n            />\n            <Command.CommandEmpty>No language found</Command.CommandEmpty>\n            <Command.CommandList>\n              <Command.CommandGroup>\n                <div\n                  ref=\"languageListRef\"\n                  class=\"scrollbar max-h-[150px] overflow-y-auto\"\n                >\n                  <Command.CommandItem\n                    v-for=\"language in languages\"\n                    :key=\"language.value\"\n                    :data-language-item=\"language.value\"\n                    class=\"hover:bg-accent-hover transition-colors\"\n                    :value=\"language.value\"\n                    @select=\"onSelect(language.value)\"\n                  >\n                    {{ language.name }}\n                    <Check\n                      class=\"ml-auto h-4 w-4\"\n                      :class=\"\n                        selectedSnippetContent?.language === language.value\n                          ? 'opacity-100'\n                          : 'opacity-0'\n                      \"\n                    />\n                  </Command.CommandItem>\n                </div>\n              </Command.CommandGroup>\n            </Command.CommandList>\n          </Command.Command>\n        </Popover.PopoverContent>\n      </Popover.Popover>\n    </div>\n    <div class=\"mr-1\">\n      Ln {{ cursorPosition.row + 1 }}, Col {{ cursorPosition.column + 1 }}\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/Tab.vue",
    "content": "<script setup lang=\"ts\">\nimport * as ContextMenu from '@/components/ui/shadcn/context-menu'\nimport { useApp, useSnippets, useSnippetUpdate } from '@/composables'\nimport { i18n } from '@/electron'\n\ninterface Props {\n  id: number\n  index: number\n  name: string\n}\n\nconst props = defineProps<Props>()\n\nconst { selectedSnippetContent, selectedSnippet, deleteSnippetContent }\n  = useSnippets()\nconst { addToUpdateContentQueue } = useSnippetUpdate()\nconst { highlightedSnippetIds, highlightedFolderIds, state } = useApp()\n\nconst tabRef = ref<HTMLDivElement>()\nconst isEdit = ref(false)\n\nconst name = computed({\n  get() {\n    return props.name\n  },\n  set(v: string) {\n    addToUpdateContentQueue(\n      selectedSnippet.value!.id,\n      selectedSnippetContent.value!.id,\n      {\n        label: v,\n        language: selectedSnippetContent.value!.language,\n        value: selectedSnippetContent.value!.value,\n      },\n    )\n  },\n})\n\nfunction onClickContextMenu() {\n  highlightedSnippetIds.value.clear()\n  highlightedFolderIds.value.clear()\n}\n\nasync function onDelete() {\n  await deleteSnippetContent(selectedSnippet.value!.id, props.id)\n\n  if (state.snippetContentIndex === props.index) {\n    state.snippetContentIndex = 0\n  }\n  else if (\n    state.snippetContentIndex\n    && state.snippetContentIndex > props.index\n  ) {\n    state.snippetContentIndex--\n  }\n}\n</script>\n\n<template>\n  <div\n    ref=\"tabRef\"\n    data-editor-tab\n    class=\"border-border border-r px-2 py-0.5 select-none last:border-r-0\"\n    @contextmenu=\"onClickContextMenu\"\n  >\n    <ContextMenu.ContextMenu v-if=\"!isEdit\">\n      <ContextMenu.ContextMenuTrigger>\n        <div\n          class=\"truncate\"\n          @dblclick=\"isEdit = true\"\n        >\n          {{ name }}\n        </div>\n      </ContextMenu.ContextMenuTrigger>\n      <ContextMenu.ContextMenuContent>\n        <ContextMenu.ContextMenuItem @click=\"isEdit = true\">\n          {{ i18n.t(\"action.rename\") }} \"<span class=\"max-w-36 truncate\">{{\n            name\n          }}</span>\"\n        </ContextMenu.ContextMenuItem>\n        <ContextMenu.ContextMenuSeparator />\n        <ContextMenu.ContextMenuItem @click=\"onDelete\">\n          {{ i18n.t(\"action.delete.common\") }} \"<span\n            class=\"max-w-36 truncate\"\n          >{{ name }}</span>\"\n        </ContextMenu.ContextMenuItem>\n      </ContextMenu.ContextMenuContent>\n    </ContextMenu.ContextMenu>\n    <UiInput\n      v-else\n      v-model=\"name\"\n      variant=\"ghost\"\n      focus\n      select\n      class=\"w-full rounded-none px-0 py-0 leading-0\"\n      @blur=\"isEdit = false\"\n      @keydown.esc=\"isEdit = false\"\n    />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/code-image/BackgroundSwitch.vue",
    "content": "<script setup lang=\"ts\">\nimport { Check } from 'lucide-vue-next'\n\ntype Active = 'disco' | 'salad' | 'cucumber' | 'aqua' | 'lovely'\n\nconst active = defineModel<Active>('active', {\n  required: true,\n})\n\nconst gradients: { name: Active, class: string }[] = [\n  {\n    name: 'disco',\n    class: 'gradient-disco',\n  },\n  {\n    name: 'aqua',\n    class: 'gradient-aqua',\n  },\n  {\n    name: 'salad',\n    class: 'gradient-salad',\n  },\n  {\n    name: 'cucumber',\n    class: 'gradient-cucumber',\n  },\n  {\n    name: 'lovely',\n    class: 'gradient-lovely',\n  },\n]\n</script>\n\n<template>\n  <div class=\"flex items-center gap-2\">\n    <div\n      v-for=\"gradient in gradients\"\n      :key=\"gradient.name\"\n      class=\"flex h-4 w-4 items-center justify-center rounded-sm\"\n      :class=\"gradient.class\"\n      @click=\"active = gradient.name\"\n    >\n      <Check\n        v-if=\"active === gradient.name\"\n        class=\"h-3 w-3 text-black\"\n      />\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/code-image/CodeImage.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Language } from '../types'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useEditor, useSnippets } from '@/composables'\nimport { i18n } from '@/electron'\nimport { useCssVar } from '@vueuse/core'\nimport CodeMirror from 'codemirror'\nimport domToImage from 'dom-to-image'\nimport interact from 'interactjs'\nimport { FileDown } from 'lucide-vue-next'\n\nconst { selectedSnippetContent, selectedSnippet } = useSnippets()\n\nconst MIN_WIDTH = 520\nconst MAX_WIDTH = 920\n\nconst { settings, cursorPosition: _cursorPosition } = useEditor()\n\nconst activeBackground = ref('disco')\n\nconst isDarkPreview = ref(true)\nconst isBackground = ref(true)\n\nconst editorRef = useTemplateRef('editorRef')\nconst containerRef = useTemplateRef('containerRef')\nconst backgroundRef = useTemplateRef('backgroundRef')\n\nconst width = ref(MIN_WIDTH)\n\nconst isDragging = ref(false)\nconst showDimensions = ref(false)\n\nconst colorBg = useCssVar('--color-code-bg-preview', backgroundRef.value, {\n  initialValue: 'oklch(24.78% 0 0)',\n})\n\nconst colorBorder = useCssVar('--color-code-bg-border', backgroundRef.value, {\n  initialValue: 'oklch(30% 0 0)',\n})\n\nlet editor: CodeMirror.Editor | null = null\n\nfunction init() {\n  editor = CodeMirror(editorRef.value!, {\n    value: selectedSnippetContent.value?.value || ' ',\n    mode: selectedSnippetContent.value?.language || 'plain_text',\n    theme: 'oceanic-next',\n    lineWrapping: settings.wrap,\n    lineNumbers: true,\n    matchBrackets: settings.matchBrackets,\n    scrollbarStyle: 'null',\n    readOnly: true,\n  })\n\n  // Отключаем выделение текста\n  editor.on('mousedown', (e) => {\n    // @ts-expect-error some\n    e.preventDefault()\n  })\n\n  watch(selectedSnippetContent, (v) => {\n    nextTick(() => {\n      setValue(v?.value || '')\n    })\n  })\n\n  watch(selectedSnippetContent, (v) => {\n    nextTick(() => {\n      if (!v)\n        return\n      setLanguage(v.language as Language)\n    })\n  })\n\n  watch(isDarkPreview, (v) => {\n    if (v) {\n      editor?.setOption('theme', 'oceanic-next')\n    }\n    else {\n      editor?.setOption('theme', 'neo')\n    }\n    colorBg.value = isDarkPreview.value\n      ? 'oklch(24.78% 0 0)'\n      : 'oklch(100% 0 0)'\n    colorBorder.value = isDarkPreview.value\n      ? 'oklch(30% 0 0)'\n      : 'oklch(90% 0 0)'\n  })\n\n  nextTick(() => {\n    initInteract()\n  })\n}\n\nfunction initInteract() {\n  if (!backgroundRef.value)\n    return\n\n  let containerMaxWidth = MAX_WIDTH\n\n  width.value = MIN_WIDTH\n\n  if (containerRef.value) {\n    containerMaxWidth = Math.min(\n      MAX_WIDTH,\n      containerRef.value.clientWidth - 56,\n    )\n  }\n\n  interact(backgroundRef.value).resizable({\n    edges: { left: true, right: true, bottom: false, top: false },\n    invert: 'reposition',\n    inertia: false,\n    modifiers: [\n      interact.modifiers.restrictSize({\n        min: { width: MIN_WIDTH, height: 0 },\n        max: { width: containerMaxWidth, height: 5000 },\n      }),\n    ],\n    listeners: {\n      start() {\n        isDragging.value = true\n        showDimensions.value = true\n      },\n      move(event) {\n        // Учитываем эффект центрирования, удваивая изменение размера\n        let newWidth = width.value + event.deltaRect.width * 2\n\n        newWidth = Math.max(MIN_WIDTH, Math.min(newWidth, containerMaxWidth))\n        width.value = newWidth\n      },\n      end() {\n        isDragging.value = false\n        showDimensions.value = false\n      },\n    },\n  })\n}\n\nfunction setValue(value: string) {\n  if (!editor)\n    return\n\n  const cursor = editor.getCursor()\n\n  editor?.setValue(value)\n\n  if (cursor)\n    editor.setCursor(cursor)\n}\n\nfunction setLanguage(language: Language) {\n  editor?.setOption('mode', language)\n}\n\nasync function onSave(format: 'png' | 'svg') {\n  let data = ''\n\n  const filter = (node: Node) => {\n    const el = node as HTMLElement\n    return (\n      el.dataset?.controls !== 'resize'\n      && el.dataset?.background !== 'transparent'\n    )\n  }\n\n  if (format === 'png') {\n    data = await domToImage.toPng(backgroundRef.value!, { filter })\n  }\n\n  if (format === 'svg') {\n    data = await domToImage.toSvg(backgroundRef.value!)\n  }\n\n  const a = document.createElement('a')\n\n  a.href = data\n  a.download = `${selectedSnippet.value?.name}.${format}`\n  a.click()\n}\n\nonMounted(() => {\n  init()\n})\n</script>\n\n<template>\n  <div\n    ref=\"containerRef\"\n    data-editor-code-image\n    class=\"grid grid-rows-[auto_1fr] overflow-scroll\"\n  >\n    <EditorHeaderTool>\n      <div class=\"flex w-full items-center justify-between px-2\">\n        <div class=\"flex items-center gap-2 select-none\">\n          <div class=\"flex items-center gap-2\">\n            <Switch\n              :checked=\"isDarkPreview\"\n              @update:checked=\"isDarkPreview = $event\"\n            />\n            <span\n              class=\"text-sm\"\n              @click=\"isDarkPreview = !isDarkPreview\"\n            >\n              {{ i18n.t(\"button.darkMode\") }}\n            </span>\n          </div>\n          <div class=\"flex items-center gap-2\">\n            <Switch\n              :checked=\"isBackground\"\n              @update:checked=\"isBackground = $event\"\n            />\n            <span\n              class=\"text-sm\"\n              @click=\"isBackground = !isBackground\"\n            >\n              {{ i18n.t(\"button.background\") }}\n            </span>\n          </div>\n          <EditorCodeImageBackgroundSwitch v-model:active=\"activeBackground\" />\n        </div>\n        <div>\n          <UiActionButton\n            type=\"iconText\"\n            :tooltip=\"`${i18n.t('button.saveAs')} PNG`\"\n            @click=\"onSave('png')\"\n          >\n            <div class=\"flex items-center gap-1\">\n              PNG <FileDown class=\"h-3 w-3\" />\n            </div>\n          </UiActionButton>\n          <UiActionButton\n            type=\"iconText\"\n            :tooltip=\"`${i18n.t('button.saveAs')} SVG`\"\n            @click=\"onSave('svg')\"\n          >\n            <div class=\"flex items-center gap-1\">\n              SVG <FileDown class=\"h-3 w-3\" />\n            </div>\n          </UiActionButton>\n        </div>\n      </div>\n    </EditorHeaderTool>\n    <div class=\"scrollbar notebook-grid h-full min-h-0 overflow-auto\">\n      <div class=\"relative flex justify-center p-9\">\n        <div\n          ref=\"backgroundRef\"\n          data-background=\"main\"\n          class=\"relative p-5\"\n          :class=\"{\n            'bg-transparent': !isBackground,\n            'gradient-disco': isBackground && activeBackground === 'disco',\n            'gradient-salad': isBackground && activeBackground === 'salad',\n            'gradient-cucumber':\n              isBackground && activeBackground === 'cucumber',\n            'gradient-aqua': isBackground && activeBackground === 'aqua',\n            'gradient-lovely': isBackground && activeBackground === 'lovely',\n          }\"\n          :style=\"{ width: `${width}px` }\"\n        >\n          <div\n            data-frame\n            class=\"relative z-10 rounded-xl border p-3 shadow-lg\"\n            :style=\"{\n              backgroundColor: colorBg,\n              borderColor: colorBorder,\n            }\"\n          >\n            <div data-controls=\"traffic-light\">\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                width=\"54\"\n                height=\"14\"\n                viewBox=\"0 0 54 14\"\n              >\n                <g\n                  fill=\"none\"\n                  fill-rule=\"evenodd\"\n                  transform=\"translate(1 1)\"\n                >\n                  <circle\n                    cx=\"6\"\n                    cy=\"6\"\n                    r=\"6\"\n                    fill=\"#FF5F56\"\n                    stroke=\"#E0443E\"\n                    stroke-width=\".5\"\n                  />\n                  <circle\n                    cx=\"26\"\n                    cy=\"6\"\n                    r=\"6\"\n                    fill=\"#FFBD2E\"\n                    stroke=\"#DEA123\"\n                    stroke-width=\".5\"\n                  />\n                  <circle\n                    cx=\"46\"\n                    cy=\"6\"\n                    r=\"6\"\n                    fill=\"#27C93F\"\n                    stroke=\"#1AAB29\"\n                    stroke-width=\".5\"\n                  />\n                </g>\n              </svg>\n            </div>\n            <div\n              ref=\"editorRef\"\n              class=\"p-2 select-none\"\n            />\n          </div>\n          <div\n            data-controls=\"resize\"\n            class=\"absolute top-1/2 left-0 z-20 h-3 w-3 -translate-x-1/2 -translate-y-1/2 cursor-ew-resize rounded-full border border-neutral-400 bg-white\"\n          />\n          <div\n            data-controls=\"resize\"\n            class=\"absolute top-1/2 right-0 z-20 h-3 w-3 translate-x-1/2 -translate-y-1/2 cursor-ew-resize rounded-full border border-neutral-400 bg-white\"\n          />\n          <div\n            v-if=\"showDimensions\"\n            class=\"absolute right-0 -bottom-12 left-0 z-10 mt-2 flex flex-col items-center\"\n          >\n            <div\n              class=\"relative mb-2 flex items-center justify-center\"\n              :style=\"{ width: `${width}px` }\"\n            >\n              <div class=\"border-text absolute left-0 h-2 border-l\" />\n              <div class=\"border-text absolute right-0 h-2 border-l\" />\n              <div class=\"border-text absolute top-0 right-0 left-0 border-t\" />\n            </div>\n            <div\n              class=\"relative -top-5 rounded bg-neutral-700 px-2 py-1 text-xs text-white tabular-nums transition-opacity\"\n              :class=\"{ 'opacity-0': !showDimensions }\"\n            >\n              {{ Math.round(width) }}px\n            </div>\n          </div>\n          <div\n            v-if=\"!isBackground\"\n            data-background=\"transparent\"\n            class=\"transparent\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<style lang=\"scss\">\n@reference '../../../styles.css';\n\n[data-editor-code-image] {\n  --color-bg-transparent: oklch(50% 0 0);\n\n  .CodeMirror,\n  .CodeMirror-gutters {\n    background-color: var(--color-code-bg-preview) !important;\n  }\n\n  .transparent {\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    background-image:\n      linear-gradient(45deg, var(--color-bg-transparent) 25%, transparent 0),\n      linear-gradient(-45deg, var(--color-bg-transparent) 25%, transparent 0),\n      linear-gradient(45deg, transparent 75%, var(--color-bg-transparent) 0),\n      linear-gradient(-45deg, transparent 75%, var(--color-bg-transparent) 0);\n    background-size: 20px 20px;\n    background-position:\n      0 0,\n      0 10px,\n      10px -10px,\n      -10px 0;\n    z-index: 1;\n  }\n}\n\n.notebook-grid {\n  background-color: transparent;\n\n  background-image:\n    linear-gradient(var(--border) 2px, transparent 2px),\n    linear-gradient(90deg, var(--border) 2px, transparent 2px),\n    linear-gradient(var(--border) 1px, transparent 1px),\n    linear-gradient(90deg, var(--border) 1px, transparent 1px);\n  background-size:\n    50px 50px,\n    50px 50px,\n    10px 10px,\n    10px 10px;\n  background-position:\n    -2px -2px,\n    -2px -2px,\n    -1px -1px,\n    -1px -1px;\n}\n\n.gradient-disco {\n  background: linear-gradient(90deg, #fc466b 0%, #3f5efb 100%);\n}\n\n.gradient-salad {\n  background: linear-gradient(90deg, #00c9ff 0%, #92fe9d 100%);\n}\n\n.gradient-cucumber {\n  background: linear-gradient(90deg, #e3ffe7 0%, #d9e7ff 100%);\n}\n\n.gradient-aqua {\n  background: linear-gradient(90deg, #00d2ff 0%, #3a47d5 100%);\n}\n\n.gradient-lovely {\n  background: linear-gradient(90deg, #efd5ff 0%, #515ada 100%);\n}\n</style>\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/auxiliary-grammars.ts",
    "content": "// Технические грамматики для поддержки синтаксиса внутри других языков или специальных случаев\nexport const auxGrammars = [\n  {\n    source: 'source.sassdoc',\n    language: 'sassdoc',\n    grammar: () => import('./textmate/sassdoc.tmLanguage.json'),\n  },\n  {\n    source: 'source.scss',\n    language: 'scss2',\n    grammar: () => import('./textmate/scss.tmLanguage.json'),\n  },\n  {\n    source: 'source.css.nunjucks',\n    language: 'css-nunjucks',\n    grammar: () => import('./textmate/css.tmLanguage.json'),\n  },\n  {\n    source: 'source.less',\n    language: 'less2',\n    grammar: () => import('./textmate/less.tmLanguage.json'),\n  },\n  {\n    source: 'source.postcss',\n    language: 'postcss',\n    grammar: () => import('./textmate/postcss.tmLanguage.json'),\n  },\n  {\n    source: 'source.js.jquery',\n    languages: 'jquery',\n    grammar: () => import('./textmate/javascript.tmLanguage.json'),\n  },\n  {\n    source: 'source.c++',\n    language: 'c++',\n    grammar: () => import('./textmate/cpp.tmLanguage.json'),\n  },\n  {\n    source: 'source.c',\n    language: 'c',\n    grammar: () => import('./textmate/cpp.tmLanguage.json'),\n  },\n  {\n    source: 'source.cpp.embedded.macro',\n    language: 'c-macro',\n    grammar: () => import('./textmate/cpp.embedded.macro.tmLanguage.json'),\n  },\n  {\n    source: 'source.x86',\n    language: 'x86',\n    grammar: () => import('./textmate/asm.tmLanguage.json'),\n  },\n  {\n    source: 'source.x86_64',\n    language: 'x86_64',\n    grammar: () => import('./textmate/asm.tmLanguage.json'),\n  },\n  {\n    source: 'source.json.comments',\n    language: 'json-comment',\n    grammar: () => import('./textmate/jsonc.tmLanguage.json'),\n  },\n  {\n    source: 'source.js.regexp',\n    language: 'regexp-javascript',\n    grammar: () => import('./textmate/regexp-javascript.tmLanguage.json'),\n  },\n  {\n    source: 'source.regexp.python',\n    language: 'regexp-python',\n    grammar: () => import('./textmate/regexp-python.tmLanguage.json'),\n  },\n  {\n    source: 'source.regexp.posix',\n    language: 'regexp-posix',\n    grammar: () => import('./textmate/regexp-posix.tmLanguage.json'),\n  },\n  {\n    source: 'source.regexp.extended',\n    language: 'regexp-extended',\n    grammar: () => import('./textmate/regexp-extended.tmLanguage.json'),\n  },\n  {\n    source: 'source.sy',\n    language: 'sy',\n    grammar: () => import('./textmate/syon.tmLanguage.json'),\n  },\n  {\n    source: 'text.bibtex',\n    language: 'bibtex',\n    grammar: () => import('./textmate/bibtex.tmLanguage.json'),\n  },\n  {\n    source: 'source.gnuplot',\n    language: 'gnuplot',\n    grammar: () => import('./textmate/gnuplot.tmLanguage.json'),\n  },\n  {\n    source: 'source.asymptote',\n    language: 'asymptote',\n    grammar: () => import('./textmate/asymptote.tmLanguage.json'),\n  },\n  {\n    source: 'source.arm',\n    language: 'arm',\n    grammar: () => import('./textmate/arm.tmLanguage.json'),\n  },\n  {\n    source: 'text.elixir',\n    language: 'elixir2',\n    grammar: () => import('./textmate/eex.tmLanguage.json'),\n  },\n  {\n    source: 'text.html.derivative',\n    language: 'html-derivative',\n    grammar: () => import('./textmate/html-derivative.tmLanguage.json'),\n  },\n  {\n    source: 'text.tex.markdown_latex_combined',\n    language: 'markdown-latex-combined',\n    grammar: () => import('./textmate/markdown-latex-combined.tmLanguage.json'),\n  },\n  {\n    source: 'source.cpp.embedded.latex',\n    language: 'cpp-embedded-latex',\n    grammar: () => import('./textmate/cpp-embedded-latex.tmLanguage.json'),\n  },\n  {\n    source: 'text.log',\n    language: 'text-log',\n    grammar: () => import('./textmate/log.tmLanguage.json'),\n  },\n  {\n    source: 'text.git-rebase',\n    language: 'git-rebase',\n    grammar: () => import('./textmate/git-rebase.tmLanguage.json'),\n  },\n  {\n    source: 'text.git-commit',\n    language: 'git-commit',\n    grammar: () => import('./textmate/git-commit.tmLanguage.json'),\n  },\n  {\n    source: 'text.html.javadoc',\n    language: 'javadoc',\n    grammar: () => import('./textmate/javadoc.tmLanguage.json'),\n  },\n  {\n    source: 'source.postscript',\n    language: 'postscript',\n    grammar: () => import('./textmate/postscript.tmLanguage.json'),\n  },\n  {\n    source: 'etc',\n    language: 'etc',\n    grammar: () => import('./textmate/etc.tmLanguage.json'),\n  },\n  {\n    source: 'source.cfscript',\n    language: 'cfscript',\n    grammar: () => import('./textmate/cfscript.tmLanguage.json'),\n  },\n  {\n    source: 'text.html.cfm',\n    language: 'html-cfm',\n    grammar: () => import('./textmate/html-cfml.tmLanguage.json'),\n  },\n  {\n    source: 'source.js.jsx',\n    language: 'jsx2',\n    grammar: () => import('./textmate/jsx.tmLanguage.json'),\n  },\n  {\n    source: 'text.html.php',\n    language: 'php2',\n    grammar: () => import('./textmate/php.tmLanguage.json'),\n  },\n  {\n    source: 'source.xq',\n    language: 'xq',\n    grammar: () => import('./textmate/xquery.tmLanguage.json'),\n  },\n  {\n    source: 'source.md',\n    language: 'md',\n    grammar: () => import('./textmate/markdown.tmLanguage.json'),\n  },\n  {\n    source: 'source.erb',\n    language: 'erb',\n    grammar: () => import('./textmate/html-ruby.tmLanguage.json'),\n  },\n  {\n    source: 'text.jade',\n    language: 'jade',\n    grammar: () => import('./textmate/pug.tmLanguage.json'),\n  },\n  {\n    source: 'text.slm',\n    language: 'slm',\n    grammar: () => import('./textmate/slm.tmLanguage.json'),\n  },\n]\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/index.ts",
    "content": "import type { GrammarOption, Language } from '../types'\nimport { activateLanguage, addGrammar } from 'codemirror-textmate'\nimport { auxGrammars } from './auxiliary-grammars'\nimport { languages } from './languages'\n\nexport async function loadGrammars() {\n  const grammars: Record<string, GrammarOption> = {}\n\n  languages\n    .filter(i => i.grammar)\n    .forEach(async (i) => {\n      if (!i.scopeName || !i.grammar)\n        return\n\n      grammars[i.scopeName] = {\n        grammar: i.grammar,\n        language: i.value,\n        priority: 'defer',\n      }\n    })\n\n  auxGrammars.forEach((i) => {\n    grammars[i.source] = {\n      grammar: i.grammar,\n      language: i.language as Language,\n      priority: 'defer',\n    }\n  })\n\n  await Promise.all(\n    Object.keys(grammars).map(async (scopeName) => {\n      const { grammar, language, priority } = grammars[scopeName]\n      const { default: grammarDoc } = await grammar()\n\n      try {\n        addGrammar(scopeName, grammarDoc)\n        if (language) {\n          const prom = activateLanguage(scopeName, language, priority)\n\n          if (priority === 'now') {\n            await prom\n          }\n        }\n      }\n      catch (err) {\n        console.error(err)\n      }\n    }),\n  )\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/languages.ts",
    "content": "import type { Language, LanguageOption } from '../types'\n\nexport const languages: LanguageOption[] = [\n  {\n    name: 'ABAP',\n    value: 'abap',\n    grammar: () => import('./textmate/abap.tmLanguage.json'),\n    scopeName: 'source.abap',\n  },\n  // Возможно несоответствие\n  {\n    name: 'ABC',\n    value: 'abc',\n    grammar: () => import('./textmate/abc.tmLanguage.json'),\n    scopeName: 'text.abcnotation',\n  },\n  {\n    name: 'ActionScript',\n    value: 'actionscript',\n    grammar: () => import('./textmate/actionscript-3.tmLanguage.json'),\n    scopeName: 'source.actionscript.3',\n  },\n  {\n    name: 'ADA',\n    value: 'ada',\n    grammar: () => import('./textmate/ada.tmLanguage.json'),\n    scopeName: 'source.ada',\n  },\n  {\n    name: 'Alda',\n    value: 'alda',\n    grammar: () => import('./textmate/alda.tmLanguage.json'),\n    scopeName: 'source.alda',\n  },\n  {\n    name: 'Apache Conf',\n    value: 'apache_conf',\n    grammar: () => import('./textmate/apache.tmLanguage.json'),\n    scopeName: 'source.apacheconf',\n  },\n  {\n    name: 'Apex',\n    value: 'apex',\n    grammar: () => import('./textmate/apex.tmLanguage.json'),\n    scopeName: 'source.apex',\n  },\n  {\n    name: 'Apple Script',\n    value: 'applescript',\n    grammar: () => import('./textmate/applescript.tmLanguage.json'),\n    scopeName: 'source.applescript',\n  },\n  {\n    name: 'AsciiDoc',\n    value: 'asciidoc',\n    grammar: () => import('./textmate/asciidoctor.tmLanguage.json'),\n    scopeName: 'text.asciidoc',\n  },\n  {\n    name: 'ASL',\n    value: 'asl',\n    grammar: () => import('./textmate/asl.tmLanguage.json'),\n    scopeName: 'source.asl',\n  },\n  {\n    name: 'ASP vb.NET (VBScript)',\n    value: 'asp_vb_net',\n    grammar: () => import('./textmate/asp-vb-net.tmlanguage.json'),\n    scopeName: 'source.asp.vb.net',\n  },\n  {\n    name: 'Assembly x86',\n    value: 'assembly_x86',\n    grammar: () => import('./textmate/asm.tmLanguage.json'),\n    scopeName: 'source.asm',\n  },\n  {\n    name: 'AutoHotkey / AutoIt',\n    value: 'autohotkey',\n    grammar: () => import('./textmate/autohotkey.tmLanguage.json'),\n    scopeName: 'source.ahk',\n  },\n  {\n    name: 'Bash',\n    value: 'sh',\n    grammar: () => import('./textmate/shell-unix-bash.tmLanguage.json'),\n    scopeName: 'source.shell',\n  },\n  {\n    name: 'BatchFile',\n    value: 'batchfile',\n    grammar: () => import('./textmate/batchfile.tmLanguage.json'),\n    scopeName: 'source.batchfile',\n  },\n  {\n    name: 'Bicep',\n    value: 'bicep',\n    grammar: () => import('./textmate/bicep.tmLanguage.json'),\n    scopeName: 'source.bicep',\n  },\n  {\n    name: 'C and C++',\n    value: 'c_cpp',\n    grammar: () => import('./textmate/cpp.tmLanguage.json'),\n    scopeName: 'source.cpp',\n  },\n  {\n    name: 'C#',\n    value: 'csharp',\n    grammar: () => import('./textmate/csharp.tmLanguage.json'),\n    scopeName: 'source.cs',\n  },\n  {\n    name: 'Cirru',\n    value: 'cirru',\n    grammar: () => import('./textmate/cirru.tmLanguage.json'),\n    scopeName: 'source.cirru',\n  },\n  {\n    name: 'Clojure',\n    value: 'clojure',\n    grammar: () => import('./textmate/clojure.tmLanguage.json'),\n    scopeName: 'source.clojure',\n  },\n  {\n    name: 'Cobol',\n    value: 'cobol',\n    grammar: () => import('./textmate/cobol.tmLanguage.json'),\n    scopeName: 'source.cobol',\n  },\n  {\n    name: 'CoffeeScript',\n    value: 'coffee',\n    grammar: () => import('./textmate/coffee.tmLanguage.json'),\n    scopeName: 'source.coffee',\n  },\n  {\n    name: 'ColdFusion',\n    value: 'coldfusion',\n    grammar: () => import('./textmate/coldfusion.tmLanguage.json'),\n    scopeName: 'text.cfml.basic',\n  },\n  {\n    name: 'Crystal',\n    value: 'crystal',\n    grammar: () => import('./textmate/crystal.tmLanguage.json'),\n    scopeName: 'source.crystal',\n  },\n  {\n    name: 'Csound',\n    value: 'csound_orchestra',\n    grammar: () => import('./textmate/csound.tmLanguage.json'),\n    scopeName: 'source.csound',\n  },\n  {\n    name: 'Csound Document',\n    value: 'csound_document',\n    grammar: () => import('./textmate/csound-document.tmLanguage.json'),\n    scopeName: 'source.csound-document',\n  },\n  {\n    name: 'Csound Score',\n    value: 'csound_score',\n    grammar: () => import('./textmate/csound-score.tmLanguage.json'),\n    scopeName: 'source.csound-score',\n  },\n  {\n    name: 'CSS',\n    value: 'css',\n    grammar: () => import('./textmate/css.tmLanguage.json'),\n    scopeName: 'source.css',\n  },\n  {\n    name: 'Curly',\n    value: 'curly',\n    grammar: () => import('./textmate/curly.tmLanguage.json'),\n    scopeName: 'text.html.curly',\n  },\n  {\n    name: 'D',\n    value: 'd',\n    grammar: () => import('./textmate/d.tmLanguage.json'),\n    scopeName: 'source.d',\n  },\n  {\n    name: 'Dart',\n    value: 'dart',\n    grammar: () => import('./textmate/dart.tmLanguage.json'),\n    scopeName: 'source.dart',\n  },\n  {\n    name: 'Diff',\n    value: 'diff',\n    grammar: () => import('./textmate/diff.tmLanguage.json'),\n    scopeName: 'source.diff',\n  },\n  {\n    name: 'Django',\n    value: 'django',\n    grammar: () => import('./textmate/django.tmLanguage.json'),\n    scopeName: 'source.python.django',\n  },\n  {\n    name: 'Dockerfile',\n    value: 'dockerfile',\n    grammar: () => import('./textmate/docker.tmLanguage.json'),\n    scopeName: 'source.dockerfile',\n  },\n  {\n    name: 'Dot',\n    value: 'dot',\n    grammar: () => import('./textmate/dot.tmLanguage.json'),\n    scopeName: 'source.dot',\n  },\n  {\n    name: 'Drools',\n    value: 'drools',\n    grammar: () => import('./textmate/drools.tmLanguage.json'),\n    scopeName: 'source.drools',\n  },\n  {\n    name: 'Edifact',\n    value: 'edifact',\n    grammar: () => import('./textmate/edifact.tmLanguage.json'),\n    scopeName: 'text.plain.edifact',\n  },\n  {\n    name: 'Eiffel',\n    value: 'eiffel',\n    grammar: () => import('./textmate/eiffel.tmLanguage.json'),\n    scopeName: 'source.eiffel',\n  },\n  {\n    name: 'EJS',\n    value: 'ejs',\n    grammar: () => import('./textmate/ejs.tmLanguage.json'),\n    scopeName: 'text.html.js',\n  },\n  {\n    name: 'Elixir',\n    value: 'elixir',\n    grammar: () => import('./textmate/elixir.tmLanguage.json'),\n    scopeName: 'source.elixir',\n  },\n  {\n    name: 'Elm',\n    value: 'elm',\n    grammar: () => import('./textmate/elm.tmLanguage.json'),\n    scopeName: 'source.elm',\n  },\n  {\n    name: 'Erlang',\n    value: 'erlang',\n    grammar: () => import('./textmate/erlang.tmLanguage.json'),\n    scopeName: 'source.erlang',\n  },\n  {\n    name: 'Forth',\n    value: 'forth',\n    grammar: () => import('./textmate/forth.tmLanguage.json'),\n    scopeName: 'source.forth',\n  },\n  {\n    name: 'Fortran',\n    value: 'fortran',\n    grammar: () => import('./textmate/fortran.tmLanguage.json'),\n    scopeName: 'source.fortran',\n  },\n  {\n    name: 'F#',\n    value: 'fsharp',\n    grammar: () => import('./textmate/fsharp.tmLanguage.json'),\n    scopeName: 'source.fsharp',\n  },\n  {\n    name: 'Gcode',\n    value: 'gcode',\n    grammar: () => import('./textmate/gcode.tmLanguage.json'),\n    scopeName: 'source.gcode',\n  },\n  {\n    name: 'Gherkin',\n    value: 'gherkin',\n    grammar: () => import('./textmate/gherkin.tmLanguage.json'),\n    scopeName: 'text.gherkin.feature',\n  },\n  {\n    name: 'Gitignore',\n    value: 'gitignore',\n    grammar: () => import('./textmate/gitignore.tmLanguage.json'),\n    scopeName: 'source.gitignore',\n  },\n  {\n    name: 'Glsl',\n    value: 'glsl',\n    grammar: () => import('./textmate/glsl.tmLanguage.json'),\n    scopeName: 'source.glsl',\n  },\n  {\n    name: 'Go',\n    value: 'golang',\n    grammar: () => import('./textmate/go.tmLanguage.json'),\n    scopeName: 'source.go',\n  },\n  {\n    name: 'GraphQL',\n    value: 'graphqlschema',\n    grammar: () => import('./textmate/graphql.tmLanguage.json'),\n    scopeName: 'source.graphql',\n  },\n  {\n    name: 'Groovy',\n    value: 'groovy',\n    grammar: () => import('./textmate/groovy.tmLanguage.json'),\n    scopeName: 'source.groovy',\n  },\n  {\n    name: 'HAML',\n    value: 'haml',\n    grammar: () => import('./textmate/haml.tmLanguage.json'),\n    scopeName: 'text.haml',\n  },\n  {\n    name: 'Handlebars',\n    value: 'handlebars',\n    grammar: () => import('./textmate/handlebars.tmLanguage.json'),\n    scopeName: 'text.html.handlebars',\n  },\n  // Возможно несоответствие\n  {\n    name: 'Haskell Cabal',\n    value: 'haskell_cabal',\n    grammar: () => import('./textmate/haskell-cabal.tmLanguage.json'),\n    scopeName: 'source.cabal',\n  },\n  {\n    name: 'Haskell',\n    value: 'haskell',\n    grammar: () => import('./textmate/haskell.tmLanguage.json'),\n    scopeName: 'source.haskell',\n  },\n  {\n    name: 'haXe',\n    value: 'haxe',\n    grammar: () => import('./textmate/haxe.tmLanguage.json'),\n    scopeName: 'source.hx',\n  },\n  {\n    name: 'Hjson',\n    value: 'hjson',\n    grammar: () => import('./textmate/hjson.tmLanguage.json'),\n    scopeName: 'source.hjson',\n  },\n  {\n    name: 'HTML (Elixir)',\n    value: 'html_elixir',\n    grammar: () => import('./textmate/html-elixir.tmLanguage.json'),\n    scopeName: 'text.html.elixir',\n  },\n  {\n    name: 'HTML (Ruby)',\n    value: 'html_ruby',\n    grammar: () => import('./textmate/html-ruby.tmLanguage.json'),\n    scopeName: 'text.html.erb',\n  },\n  {\n    name: 'HTML',\n    value: 'html',\n    grammar: () => import('./textmate/html.tmLanguage.json'),\n    scopeName: 'text.html.basic',\n  },\n  {\n    name: 'INI',\n    value: 'ini',\n    grammar: () => import('./textmate/ini.tmLanguage.json'),\n    scopeName: 'source.ini',\n  },\n  {\n    name: 'Io',\n    value: 'io',\n    grammar: () => import('./textmate/io.tmLanguage.json'),\n    scopeName: 'source.io',\n  },\n  {\n    name: 'Java',\n    value: 'java',\n    grammar: () => import('./textmate/java.tmLanguage.json'),\n    scopeName: 'source.java',\n  },\n  {\n    name: 'JavaScript',\n    value: 'javascript',\n    grammar: () => import('./textmate/javascript.tmLanguage.json'),\n    scopeName: 'source.js',\n  },\n  {\n    name: 'JSON',\n    value: 'json',\n    grammar: () => import('./textmate/json.tmLanguage.json'),\n    scopeName: 'source.json',\n  },\n  {\n    name: 'JSON5',\n    value: 'json5',\n    grammar: () => import('./textmate/json5.tmLanguage.json'),\n    scopeName: 'source.json5',\n  },\n  {\n    name: 'JSONiq',\n    value: 'jsoniq',\n    grammar: () => import('./textmate/jsoniq.tmLanguage.json'),\n    scopeName: 'source.jsoniq',\n  },\n  {\n    name: 'JSP',\n    value: 'jsp',\n    grammar: () => import('./textmate/jsp.tmLanguage.json'),\n    scopeName: 'text.html.jsp',\n  },\n  // TODO: сделать общими стилизованые (.jsx, tsx) грамматики\n  {\n    name: 'JSX',\n    value: 'jsx',\n    grammar: () => import('./textmate/jsx.tmLanguage.json'),\n    scopeName: 'source.jsx',\n  },\n  {\n    name: 'Julia',\n    value: 'julia',\n    grammar: () => import('./textmate/julia.tmLanguage.json'),\n    scopeName: 'source.julia',\n  },\n  {\n    name: 'Kotlin',\n    value: 'kotlin',\n    grammar: () => import('./textmate/kotlin.tmLanguage.json'),\n    scopeName: 'source.kotlin',\n  },\n  {\n    name: 'Kusto (KQL)',\n    value: 'kusto',\n    grammar: () => import('./textmate/kusto.tmLanguage.json'),\n    scopeName: 'source.kusto',\n  },\n  {\n    name: 'LaTeX',\n    value: 'latex',\n    grammar: () => import('./textmate/latex.tmLanguage.json'),\n    scopeName: 'text.tex.latex',\n  },\n  {\n    name: 'Latte',\n    value: 'latte',\n    grammar: () => import('./textmate/latte.tmLanguage.json'),\n    scopeName: 'source.latte',\n  },\n  {\n    name: 'LESS',\n    value: 'less',\n    grammar: () => import('./textmate/less.tmLanguage.json'),\n    scopeName: 'source.css.less',\n  },\n  {\n    name: 'Liquid',\n    value: 'liquid',\n    grammar: () => import('./textmate/liquid.tmLanguage.json'),\n    scopeName: 'source.liquid',\n  },\n  {\n    name: 'Lisp',\n    value: 'lisp',\n    grammar: () => import('./textmate/lisp.tmLanguage.json'),\n    scopeName: 'source.lisp',\n  },\n  {\n    name: 'LiveScript',\n    value: 'livescript',\n    grammar: () => import('./textmate/livescript.tmLanguage.json'),\n    scopeName: 'source.livescript',\n  },\n  {\n    name: 'LSL',\n    value: 'lsl',\n    grammar: () => import('./textmate/lsl.tmLanguage.json'),\n    scopeName: 'source.lsl',\n  },\n  {\n    name: 'Lua',\n    value: 'lua',\n    grammar: () => import('./textmate/lua.tmLanguage.json'),\n    scopeName: 'source.lua',\n  },\n  {\n    name: 'Makefile',\n    value: 'makefile',\n    grammar: () => import('./textmate/make.tmLanguage.json'),\n    scopeName: 'source.makefile',\n  },\n  {\n    name: 'Markdown',\n    value: 'markdown',\n    grammar: () => import('./textmate/markdown.tmLanguage.json'),\n    scopeName: 'text.html.markdown',\n  },\n  {\n    name: 'Mask',\n    value: 'mask',\n    grammar: () => import('./textmate/mask.tmLanguage.json'),\n    scopeName: 'source.mask',\n  },\n  {\n    name: 'MATLAB',\n    value: 'matlab',\n    grammar: () => import('./textmate/matlab.tmLanguage.json'),\n    scopeName: 'source.matlab',\n  },\n  {\n    name: 'MediaWiki',\n    value: 'mediawiki',\n    grammar: () => import('./textmate/mediawiki.tmLanguage.json'),\n    scopeName: 'text.html.mediawiki',\n  },\n  {\n    name: 'MEL',\n    value: 'mel',\n    grammar: () => import('./textmate/mel.tmLanguage.json'),\n    scopeName: 'source.mel',\n  },\n  {\n    name: 'Mikrotik',\n    value: 'mikrotik',\n    grammar: () => import('./textmate/mikrotik.tmLanguage.json'),\n    scopeName: 'source.mikrotik-script',\n  },\n  {\n    name: 'MIPS',\n    value: 'mips',\n    grammar: () => import('./textmate/mips.tmLanguage.json'),\n    scopeName: 'source.mips',\n  },\n  {\n    name: 'MySQL',\n    value: 'mysql',\n    grammar: () => import('./textmate/mysql.tmLanguage.json'),\n    scopeName: 'source.sql.mysql',\n  },\n  {\n    name: 'Nginx',\n    value: 'nginx',\n    grammar: () => import('./textmate/nginx.tmLanguage.json'),\n    scopeName: 'source.nginx',\n  },\n  {\n    name: 'Nim',\n    value: 'nim',\n    grammar: () => import('./textmate/nim.tmLanguage.json'),\n    scopeName: 'source.nim',\n  },\n  {\n    name: 'Nix',\n    value: 'nix',\n    grammar: () => import('./textmate/nix.tmLanguage.json'),\n    scopeName: 'source.nix',\n  },\n  {\n    name: 'Nushell',\n    value: 'nu',\n    grammar: () => import('./textmate/nu.tmLanguage.json'),\n    scopeName: 'source.nushell',\n  },\n  {\n    name: 'NSIS',\n    value: 'nsis',\n    grammar: () => import('./textmate/nsis.tmLanguage.json'),\n    scopeName: 'source.nsis',\n  },\n  {\n    name: 'Nunjucks',\n    value: 'nunjucks',\n    grammar: () => import('./textmate/nunjucks.tmLanguage.json'),\n    scopeName: 'text.html.nunjucks',\n  },\n  {\n    name: 'Objective-C',\n    value: 'objectivec',\n    grammar: () => import('./textmate/objective-c.tmLanguage.json'),\n    scopeName: 'source.objc',\n  },\n  {\n    name: 'OCaml',\n    value: 'ocaml',\n    grammar: () => import('./textmate/ocaml.tmLanguage.json'),\n    scopeName: 'source.ocaml',\n  },\n  {\n    name: 'OpenEdge ABL',\n    value: 'oeabl',\n    grammar: () => import('./textmate/oeabl.tmLanguage.json'),\n    scopeName: 'source.oeabl',\n  },\n  {\n    name: 'OpenGL',\n    value: 'glsl',\n    grammar: () => import('./textmate/glsl.tmLanguage.json'),\n    scopeName: 'source.glsl',\n  },\n  {\n    name: 'Pascal',\n    value: 'pascal',\n    grammar: () => import('./textmate/pascal.tmLanguage.json'),\n    scopeName: 'source.pascal',\n  },\n  {\n    name: 'Perl',\n    value: 'perl',\n    grammar: () => import('./textmate/perl.tmLanguage.json'),\n    scopeName: 'source.perl',\n  },\n  {\n    name: 'pgSQL',\n    value: 'pgsql',\n    grammar: () => import('./textmate/pgsql.tmLanguage.json'),\n    scopeName: 'source.pgsql',\n  },\n  {\n    name: 'PHP (Blade Template)',\n    value: 'php_laravel_blade',\n    grammar: () => import('./textmate/php-blade.tmLanguage.json'),\n    scopeName: 'text.html.php.blade',\n  },\n  {\n    name: 'PHP',\n    value: 'php',\n    grammar: () => import('./textmate/php.tmLanguage.json'),\n    scopeName: 'source.php',\n  },\n  {\n    name: 'Pig',\n    value: 'pig',\n    grammar: () => import('./textmate/pig.tmLanguage.json'),\n    scopeName: 'source.pig',\n  },\n  {\n    name: 'Plain Text',\n    value: 'plain_text',\n    grammar: () => import('./textmate/plain-text.tmLanguage.json'),\n    scopeName: 'text.plain',\n  },\n  {\n    name: 'Powershell',\n    value: 'powershell',\n    grammar: () => import('./textmate/powershell.tmLanguage.json'),\n    scopeName: 'source.powershell',\n  },\n  {\n    name: 'Power Query',\n    value: 'powerquery',\n    grammar: () => import('./textmate/powerquery.tmLanguage.json'),\n    scopeName: 'source.powerquery',\n  },\n  {\n    name: 'Praat',\n    value: 'praat',\n    grammar: () => import('./textmate/praat.tmLanguage.json'),\n    scopeName: 'source.praat',\n  },\n  {\n    name: 'Prisma',\n    value: 'prisma',\n    grammar: () => import('./textmate/prisma.tmLanguage.json'),\n    scopeName: 'source.prisma',\n  },\n  {\n    name: 'Prolog',\n    value: 'prolog',\n    grammar: () => import('./textmate/prolog.tmLanguage.json'),\n    scopeName: 'source.prolog',\n  },\n  {\n    name: 'Properties',\n    value: 'properties',\n    grammar: () => import('./textmate/properties.tmLanguage.json'),\n    scopeName: 'source.tm-properties',\n  },\n  {\n    name: 'Protobuf',\n    value: 'protobuf',\n    grammar: () => import('./textmate/protobuf.tmLanguage.json'),\n    scopeName: 'source.proto',\n  },\n  {\n    name: 'Pug',\n    value: 'pug',\n    grammar: () => import('./textmate/pug.tmLanguage.json'),\n    scopeName: 'text.pug',\n  },\n  {\n    name: 'Puppet',\n    value: 'puppet',\n    grammar: () => import('./textmate/puppet.tmLanguage.json'),\n    scopeName: 'source.puppet',\n  },\n  {\n    name: 'Python',\n    value: 'python',\n    grammar: () => import('./textmate/python.tmLanguage.json'),\n    scopeName: 'source.python',\n  },\n  {\n    name: 'QML',\n    value: 'qml',\n    grammar: () => import('./textmate/qml.tmLanguage.json'),\n    scopeName: 'source.qml',\n  },\n  {\n    name: 'R',\n    value: 'r',\n    grammar: () => import('./textmate/r.tmLanguage.json'),\n    scopeName: 'source.r',\n  },\n  {\n    name: 'Raku',\n    value: 'raku',\n    grammar: () => import('./textmate/raku.tmLanguage.json'),\n    scopeName: 'source.perl.6',\n  },\n  {\n    name: 'Razor',\n    value: 'razor',\n    grammar: () => import('./textmate/razor.tmLanguage.json'),\n    scopeName: 'text.aspnetcorerazor',\n  },\n  {\n    name: 'Red',\n    value: 'red',\n    grammar: () => import('./textmate/red.tmLanguage.json'),\n    scopeName: 'source.red',\n  },\n  {\n    name: 'RegExp',\n    value: 'regexp',\n    grammar: () => import('./textmate/regexp.tmLanguage.json'),\n    scopeName: 'source.regexp',\n  },\n  {\n    name: 'RST',\n    value: 'rst',\n    grammar: () => import('./textmate/rst.tmLanguage.json'),\n    scopeName: 'source.rst',\n  },\n  {\n    name: 'Ruby',\n    value: 'ruby',\n    grammar: () => import('./textmate/ruby.tmLanguage.json'),\n    scopeName: 'source.ruby',\n  },\n  {\n    name: 'Rust',\n    value: 'rust',\n    grammar: () => import('./textmate/rust.tmLanguage.json'),\n    scopeName: 'source.rust',\n  },\n  {\n    name: 'SAS',\n    value: 'sas',\n    grammar: () => import('./textmate/sas.tmLanguage.json'),\n    scopeName: 'source.sas',\n  },\n  {\n    name: 'SASS',\n    value: 'sass',\n    grammar: () => import('./textmate/sass.tmLanguage.json'),\n    scopeName: 'source.sass',\n  },\n  {\n    name: 'SCAD',\n    value: 'scad',\n    grammar: () => import('./textmate/scad.tmLanguage.json'),\n    scopeName: 'source.scad',\n  },\n  {\n    name: 'Scala',\n    value: 'scala',\n    grammar: () => import('./textmate/scala.tmLanguage.json'),\n    scopeName: 'source.scala',\n  },\n  {\n    name: 'Scheme',\n    value: 'scheme',\n    grammar: () => import('./textmate/scheme.tmLanguage.json'),\n    scopeName: 'source.scheme',\n  },\n  {\n    name: 'sCrypt',\n    value: 'scrypt',\n    grammar: () => import('./textmate/scrypt.tmLanguage.json'),\n    scopeName: 'source.scrypt',\n  },\n  {\n    name: 'SCSS',\n    value: 'scss',\n    grammar: () => import('./textmate/scss.tmLanguage.json'),\n    scopeName: 'source.css.scss',\n  },\n  {\n    name: 'SJS',\n    value: 'sjs',\n    grammar: () => import('./textmate/sjs.tmLanguage.json'),\n    scopeName: 'source.sjs',\n  },\n  {\n    name: 'Slim',\n    value: 'slim',\n    grammar: () => import('./textmate/slim.tmLanguage.json'),\n    scopeName: 'text.slim',\n  },\n  {\n    name: 'Smalltalk',\n    value: 'smalltalk',\n    grammar: () => import('./textmate/smalltalk.tmLanguage.json'),\n    scopeName: 'source.smalltalk',\n  },\n  {\n    name: 'Smarty',\n    value: 'smarty',\n    grammar: () => import('./textmate/smarty.tmLanguage.json'),\n    scopeName: 'source.smarty',\n  },\n  {\n    name: 'Smithy',\n    value: 'smithy',\n    grammar: () => import('./textmate/smithy.tmLanguage.json'),\n    scopeName: 'source.smithy',\n  },\n  {\n    name: 'Solidity',\n    value: 'solidity',\n    grammar: () => import('./textmate/solidity.tmLanguage.json'),\n    scopeName: 'source.solidity',\n  },\n  {\n    name: 'Soy Template',\n    value: 'soy_template',\n    grammar: () => import('./textmate/soytemplate.tmLanguage.json'),\n    scopeName: 'source.soy',\n  },\n  {\n    name: 'SQL',\n    value: 'sql',\n    grammar: () => import('./textmate/sql.tmLanguage.json'),\n    scopeName: 'source.sql',\n  },\n  {\n    name: 'SQLServer',\n    value: 'sqlserver',\n    grammar: () => import('./textmate/sql.tmLanguage.json'),\n    scopeName: 'source.sqlserver',\n  },\n  {\n    name: 'Stylus',\n    value: 'stylus',\n    grammar: () => import('./textmate/less.tmLanguage.json'),\n    scopeName: 'source.stylus',\n  },\n  {\n    name: 'SVG',\n    value: 'svg',\n    grammar: () => import('./textmate/svg.tmLanguage.json'),\n    scopeName: 'text.xml.svg',\n  },\n  {\n    name: 'Swift',\n    value: 'swift',\n    grammar: () => import('./textmate/swift.tmLanguage.json'),\n    scopeName: 'source.swift',\n  },\n  {\n    name: 'Tcl',\n    value: 'tcl',\n    grammar: () => import('./textmate/tcl.tmLanguage.json'),\n    scopeName: 'source.tcl',\n  },\n  {\n    name: 'Terraform',\n    value: 'terraform',\n    grammar: () => import('./textmate/terraform.tmLanguage.json'),\n    scopeName: 'source.terraform',\n  },\n  {\n    name: 'Tex',\n    value: 'tex',\n    grammar: () => import('./textmate/tex.tmLanguage.json'),\n    scopeName: 'text.tex',\n  },\n  {\n    name: 'Textile',\n    value: 'textile',\n    grammar: () => import('./textmate/textile.tmLanguage.json'),\n    scopeName: 'text.html.textile',\n  },\n  {\n    name: 'TOML',\n    value: 'toml',\n    grammar: () => import('./textmate/toml.tmLanguage.json'),\n    scopeName: 'source.toml',\n  },\n  {\n    name: 'TSX',\n    value: 'tsx',\n    grammar: () => import('./textmate/tsx.tmLanguage.json'),\n    scopeName: 'source.tsx',\n  },\n  {\n    name: 'Twig',\n    value: 'twig',\n    grammar: () => import('./textmate/twig.tmLanguage.json'),\n    scopeName: 'text.html.twig',\n  },\n  {\n    name: 'TypeScript',\n    value: 'typescript',\n    grammar: () => import('./textmate/typescript.tmLanguage.json'),\n    scopeName: 'source.ts',\n  },\n  {\n    name: 'Vala',\n    value: 'vala',\n    grammar: () => import('./textmate/vala.tmLanguage.json'),\n    scopeName: 'source.vala',\n  },\n  {\n    name: 'Velocity',\n    value: 'velocity',\n    grammar: () => import('./textmate/velocity.tmLanguage.json'),\n    scopeName: 'text.velocity',\n  },\n  {\n    name: 'Verilog',\n    value: 'verilog',\n    grammar: () => import('./textmate/systemverilog.tmLanguage.json'),\n    scopeName: 'source.systemverilog',\n  },\n  {\n    name: 'VHDL',\n    value: 'vhdl',\n    grammar: () => import('./textmate/vhdl.tmLanguage.json'),\n    scopeName: 'source.vhdl',\n  },\n  {\n    name: 'Visualforce',\n    value: 'visualforce',\n    grammar: () => import('./textmate/visualforce.tmLanguage.json'),\n    scopeName: 'text.visualforce.markup',\n  },\n  {\n    name: 'Vue',\n    value: 'vue',\n    grammar: () => import('./textmate/vue.tmLanguage.json'),\n    scopeName: 'text.html.vue',\n  },\n  {\n    name: 'Wollok',\n    value: 'wollok',\n    grammar: () => import('./textmate/wollok.tmLanguage.json'),\n    scopeName: 'source.wollok',\n  },\n  {\n    name: 'XML',\n    value: 'xml',\n    grammar: () => import('./textmate/xml.tmLanguage.json'),\n    scopeName: 'text.xml',\n  },\n  {\n    name: 'XSL',\n    value: 'xsl',\n    grammar: () => import('./textmate/xsl.tmLanguage.json'),\n    scopeName: 'text.xml.xsl',\n  },\n  {\n    name: 'XQuery',\n    value: 'xquery',\n    grammar: () => import('./textmate/xquery.tmLanguage.json'),\n    scopeName: 'source.xquery',\n  },\n  {\n    name: 'YAML',\n    value: 'yaml',\n    grammar: () => import('./textmate/yaml.tmLanguage.json'),\n    scopeName: 'source.yaml',\n  },\n  {\n    name: 'Zeek',\n    value: 'zeek',\n    grammar: () => import('./textmate/zeek.tmLanguage.json'),\n    scopeName: 'source.zeek',\n  },\n]\n\n// Маппинг с версии v1\nexport const oldLanguageMap: Record<any, Language> = {\n  'azcli': 'plain_text',\n  'bat': 'sh',\n  'cameligo': 'plain_text',\n  'coffeescript': 'coffee',\n  'c': 'c_cpp',\n  'csp': 'plain_text',\n  'go': 'golang',\n  'graphql': 'graphqlschema',\n  'msdax': 'plain_text',\n  'objective-c': 'objectivec',\n  'pascaligo': 'plain_text',\n  'postiats': 'plain_text',\n  'pug': 'jade',\n  'redis': 'plain_text',\n  'sb': 'plain_text',\n  'shell': 'sh',\n  'sol': 'plain_text',\n  'aes': 'plain_text',\n  'st': 'plain_text',\n  'vb': 'vbscript',\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/abap.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"abap\", \"ABAP\"],\n  \"foldingStartMarker\": \"/\\\\*\\\\*|\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"\\\\*\\\\*/|^\\\\s*\\\\}\",\n  \"keyEquivalent\": \"^~A\",\n  \"name\": \"abap\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.abap\"\n        }\n      },\n      \"match\": \"^\\\\*.*\\\\n?\",\n      \"name\": \"comment.line.full.abap\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.abap\"\n        }\n      },\n      \"match\": \"\\\".*\\\\n?\",\n      \"name\": \"comment.line.partial.abap\"\n    },\n    {\n      \"match\": \"(?<![^\\\\s])##.*?(?=([\\\\.:,\\\\s]))\",\n      \"name\": \"comment.line.pragma.abap\"\n    },\n    {\n      \"match\": \"(?i)(?<=(?:^|\\\\s|~|->|-|=>))([a-z_/][a-z_0-9/]*)(?=\\\\s+(?:=|\\\\+=|-=|\\\\*=|\\\\/=|&&=)\\\\s+)\",\n      \"name\": \"variable.other.abap\"\n    },\n    {\n      \"match\": \"\\\\b[0-9]+(\\\\b|\\\\.|,)\",\n      \"name\": \"constant.numeric.abap\"\n    },\n    {\n      \"match\": \"(?ix)(^|\\\\s+)((PUBLIC|PRIVATE|PROTECTED)\\\\sSECTION)(?=\\\\s+|:|\\\\.)\",\n      \"name\": \"storage.modifier.class.abap\"\n    },\n    {\n      \"begin\": \"(?<!\\\\\\\\)(\\\\|)(.*?)\",\n      \"end\": \"(?<!\\\\\\\\)(\\\\||(\\\\\\\\\\\\\\\\\\\\|))\",\n      \"name\": \"string.interpolated.abap\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.abap\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.abap\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"({ )|( })\",\n          \"name\": \"constant.character.escape\"\n        },\n        {\n          \"match\": \"(?<={ ).*?(?= })\",\n          \"name\": \"variable.other.abap\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\|\",\n          \"name\": \"constant.character.escape.abap\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.abap\",\n      \"patterns\": [\n        {\n          \"match\": \"''\",\n          \"name\": \"constant.character.escape.abap\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"`\",\n      \"end\": \"`\",\n      \"name\": \"string.quoted.single.abap\",\n      \"patterns\": [\n        {\n          \"match\": \"``\",\n          \"name\": \"constant.character.escape.abap\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?i)^\\\\s*(class)\\\\s([a-z_/][a-z_0-9/]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.block.abap\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.block.abap\"\n        }\n      },\n      \"end\": \"\\\\s*\\\\.\\\\s*\\\\n?\",\n      \"name\": \"meta.block.begin.implementation.abap\",\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)(^|\\\\s+)(definition|implementation|public|inheriting\\\\s+from|final|deferred|abstract|shared\\\\s+memory\\\\s+enabled|(global|local)*\\\\s*friends|(create\\\\s+(public|protected|private))|for\\\\s+testing|risk\\\\s+level\\\\s+(critical|dangerous|harmless))|duration\\\\s(short|medium|long)(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.class.abap\"\n        },\n        {\n          \"begin\": \"(?=[A-Za-z_][A-Za-z0-9_]*)\",\n          \"contentName\": \"entity.name.type.block.abap\",\n          \"end\": \"(?![A-Za-z0-9_])\",\n          \"patterns\": [\n            {\n              \"include\": \"#generic_names\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)^\\\\s*(method)\\\\s(?:([a-z_\\\\/][a-z_0-9\\\\/]*)~)?([a-z_\\\\/][a-z_0-9\\\\/]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.block.abap\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.abap\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.abap\"\n        }\n      },\n      \"end\": \"\\\\s*\\\\.\\\\s*\\\\n?\",\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(BY\\\\s+DATABASE(\\\\s+PROCEDURE|\\\\s+FUNCTION|\\\\s+GRAPH\\\\s+WORKSPACE))(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        },\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(FOR\\\\s+(HDB|LLANG))(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        },\n        {\n          \"match\": \"(?ix)(?<=\\\\s)(OPTIONS\\\\s+(READ-ONLY|DETERMINISTIC|SUPPRESS\\\\s+SYNTAX\\\\s+ERRORS))(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        },\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(LANGUAGE\\\\s+(SQLSCRIPT|SQL|GRAPH))(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        },\n        {\n          \"match\": \"(?ix)(?<=\\\\s)(USING)\\\\s+([a-z_\\\\/][a-z_0-9\\\\/=\\\\>]*)+(?=\\\\s+|\\\\.)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.method.abap\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?=[A-Za-z_][A-Za-z0-9_]*)\",\n          \"end\": \"(?![A-Za-z0-9_])\",\n          \"patterns\": [\n            {\n              \"include\": \"#generic_names\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)^\\\\s*(INTERFACE)\\\\s([a-z_\\\\/][a-z_0-9\\\\/]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.block.abap\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.abap\"\n        }\n      },\n      \"end\": \"\\\\s*\\\\.\\\\s*\\\\n?\",\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(DEFERRED|PUBLIC)(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)^\\\\s*(FORM)\\\\s([a-z_\\\\/][a-z_0-9\\\\/]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.block.abap\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.abap\"\n        }\n      },\n      \"end\": \"\\\\s*\\\\.\\\\s*\\\\n?\",\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(USING|TABLES|CHANGING|RAISING)(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.form.abap\"\n        },\n        {\n          \"include\": \"#abaptypes\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?i)(endclass|endmethod|endform|endinterface)\",\n      \"name\": \"storage.type.block.end.abap\"\n    },\n    {\n      \"match\": \"(?i)(<[A-Za-z_][A-Za-z0-9_]*>)\",\n      \"name\": \"variable.other.field.symbol.abap\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#abap_constants\"\n    },\n    {\n      \"include\": \"#reserved_names\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#builtin_functions\"\n    },\n    {\n      \"include\": \"#abaptypes\"\n    },\n    {\n      \"include\": \"#system_fields\"\n    }\n  ],\n  \"repository\": {\n    \"abap_constants\": {\n      \"match\": \"(?ix)(?<=\\\\s)(initial|null|space|abap_true|abap_false|table_line)(?=\\\\s|\\\\.|,)\",\n      \"name\": \"constant.language.abap\"\n    },\n    \"reserved_names\": {\n      \"match\": \"(?ix)(?<=\\\\s)(me|super)(?=\\\\s|\\\\.|,|->)\",\n      \"name\": \"constant.language.abap\"\n    },\n    \"abaptypes\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)\\\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|c|n|i|p|f|d|t|x)(?=\\\\s|\\\\.|,)\",\n          \"name\": \"support.type.abap\"\n        },\n        {\n          \"match\": \"(?ix)\\\\s(TYPE|REF|TO|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=\\\\s|\\\\.|,)\",\n          \"name\": \"keyword.control.simple.abap\"\n        }\n      ]\n    },\n    \"arithmetic_operator\": {\n      \"match\": \"(?i)(?<=\\\\s)(\\\\+|\\\\-|\\\\*|\\\\*\\\\*|/|%|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\\\s)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"comparison_operator\": {\n      \"match\": \"(?i)(?<=\\\\s)(<|>|<\\\\=|>\\\\=|\\\\=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|o|z|m)(?=\\\\s)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"control_keywords\": {\n      \"match\": \"(?ix)(^|\\\\s)(\\n\\t        at|case|catch|continue|do|elseif|else|endat|endcase|enddo|endif|\\n\\t        endloop|endon|if|loop|on|raise|try)(?=\\\\s|\\\\.|:)\",\n      \"name\": \"keyword.control.flow.abap\"\n    },\n    \"generic_names\": {\n      \"match\": \"[A-Za-z_][A-Za-z0-9_]*\"\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"include\": \"#main_keywords\"\n        },\n        {\n          \"include\": \"#text_symbols\"\n        },\n        {\n          \"include\": \"#control_keywords\"\n        },\n        {\n          \"include\": \"#keywords_followed_by_braces\"\n        }\n      ]\n    },\n    \"logical_operator\": {\n      \"match\": \"(?i)(?<=\\\\s)(not|or|and)(?=\\\\s)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"system_fields\": {\n      \"match\": \"(?ix)\\\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=\\\\.|\\\\s)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.language.abap\"\n        },\n        \"2\": {\n          \"name\": \"variable.language.abap\"\n        }\n      }\n    },\n    \"main_keywords\": {\n      \"match\": \"(?ix)(?<=^|\\\\s)(\\n\\t        abstract|access|add|add-corresponding|adjacent|alias|aliases|all|amdp|append|appending|ascending|as|assert|assign|assigned|assigning|association|authority-check|\\n\\t        back|badi|base|begin|between|binary|blanks|block|bound|break-point|by|by\\\\s+database|byte|\\n\\t        call|calling|cast|casting|cds\\\\s+session|changing|check|checkbox|class-data|class-events|class-method|class-methods|class-pool|cleanup|clear|client|clients|close|cnt|collect|commit|comment|cond|character|\\n\\t        corresponding|communication|comparing|component|components|compute|concatenate|condense|constants|conv|count|\\n\\t        controls|convert|create|currency|current|\\n\\t        data|database|ddl|decimals|default|define|deferred|delete|descending|describe|destination|detail|display|divide|divide-corresponding|display-mode|distinct|duplicates|\\n\\t        deleting|\\n\\t        editor-call|empty|end|endenhancement|endexec|endfunction|ending|endmodule|end-of-definition|end-of-page|end-of-selection|end-test-injection|end-test-seam|exit-command|extension|\\n\\t        endprovide|endselect|entries|endtry|endwhile|enhancement|enum|event|events|excluding|exec|exit|export|\\n\\t        exporting|extract|exception|exceptions|\\n\\t        field-symbols|field-groups|field|first|fetch|fields|format|frame|free|from|function|find|for|found|function-pool|\\n\\t        generate|get|group|\\n\\t        handle|handler|hide|hashed|header|help-request|\\n\\t        include|import|importing|index|infotypes|initial|initialization|\\n\\t\\tid|implemented|ignoring|is|in|inner|interface|interfaces|interface-pool|intervals|init|input|insert|instance|into|\\n\\t\\tjoin|\\n\\t\\tkey|\\n\\t        language|language\\\\s+graph|language\\\\s+sql|left-justified|leave|let|like|line|lines|line-count|line-size|listbox|list-processing|load|local|log-point|length|left|leading|lower|\\n\\t        matchcode|memory|method|mesh|message|message-id|methods|mode|modify|module|move|move-corresponding|multiply|multiply-corresponding|match|modif|\\n\\t\\tnew|new-line|new-page|new-section|next|no|no-display|no-gap|no-gaps|no-sign|no-zero|non-unique|number|\\n\\t        occurrence|object|obligatory|of|order|output|overlay|optional|others|occurrences|occurs|offset|options|\\n\\t        pack|parameter|parameters|partially|perform|pf-status|places|position|preferred|primary|print-control|private|privileged|program|protected|provide|public|pushbutton|put|\\n\\t        radiobutton\\\\s+group|raising|range|ranges|receive|receiving|redefinition|reduce|reference|refresh|regex|reject|results|requested|\\n\\t        ref|replace|report|required|reserve|respecting|restore|result\\\\s+xml|result\\\\s+\\\\(|return|returning|right|right-justified|rollback|read|read-only|rp-provide-from-last|run|\\n\\t        scan|screen|scroll|search|select|select-options|selection-screen|set|stamp|state|source|subkey|\\n\\t        seconds|selection-table|separated|set|shift|single|skip|sort|sorted|split|stable|standard|stamp|starting|start-of-selection|sum|subscreen|subtract-corresponding|statics|step|stop|structure|submatches|submit|subtract|summary|supplied|suppress|section|syntax-check|syntax-trace|system-call|switch|\\n\\t        tabbed|tables|table|task|testing|test-seam|test-injection|textpool|then|time|times|title|titlebar|to|top-of-page|trailing|transaction|transfer|transformation|translate|transporting|types|type|type-pool|type-pools|\\n\\t        unassign|unique|uline|union|unpack|until|update|upper|using|user-command|\\n\\t        value|value-request|visible|\\n\\t        wait|when|while|window|write|where|with|work|workspace|\\n\\t\\txml)(?=\\\\s|\\\\.|:|,)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"text_symbols\": {\n      \"match\": \"(?ix)(?<=^|\\\\s)(text)-([A-Z0-9]{1,3})(?=\\\\s|\\\\.|:|,)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.simple.abap\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.abap\"\n        }\n      }\n    },\n    \"keywords_followed_by_braces\": {\n      \"match\": \"(?ix)\\\\b(data|value|field-symbol)\\\\((<?[a-z_\\\\/][a-z_0-9\\\\/]*>?)\\\\)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.simple.abap\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.abap\"\n        }\n      }\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#other_operator\"\n        },\n        {\n          \"include\": \"#arithmetic_operator\"\n        },\n        {\n          \"include\": \"#comparison_operator\"\n        },\n        {\n          \"include\": \"#logical_operator\"\n        }\n      ]\n    },\n    \"other_operator\": {\n      \"match\": \"(?<=\\\\s)(&&|\\\\?=|\\\\+=|-=|\\\\/=|\\\\*=|&&=)(?=\\\\s)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"builtin_functions\": {\n      \"match\": \"(?ix)(?<=\\\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\\\()\",\n      \"name\": \"entity.name.function.builtin.abap\"\n    }\n  },\n  \"scopeName\": \"source.abap\",\n  \"uuid\": \"0357FFB4-EFFF-4DE9-8371-B0F9C8DF1B21\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/abc.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.abcnotation\",\n  \"fileTypes\": [\"abc\"],\n  \"patterns\": [\n    { \"comment\": \"Comments\", \"match\": \"%.*\", \"name\": \"comment.line\" },\n    {\n      \"comment\": \"Bar lines\",\n      \"match\": \"[\\\\[:]*[|:][|\\\\]:]*(\\\\[?[0-9]+)?|(\\\\[[0-9]+)\",\n      \"name\": \"keyword.operator\"\n    },\n    {\n      \"match\": \"^[A-Za-z]:([^%\\\\\\\\]*)\",\n      \"comment\": \"Header lines\",\n      \"name\": \"entity.name.function\",\n      \"captures\": { \"1\": { \"name\": \"string.unquoted\" } }\n    },\n    {\n      \"comment\": \"Inline fields\",\n      \"match\": \"\\\\[([A-Z]:)(.*?)\\\\]\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.function\" },\n        \"2\": { \"name\": \"string.unquoted\" }\n      }\n    },\n    {\n      \"comment\": \"Notes\",\n      \"match\": \"([\\\\^=_]*)([A-Ga-gz][,']*)([0-9]*/*[><0-9]*)\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.language\" },\n        \"2\": { \"name\": \"constant.character\" },\n        \"3\": { \"name\": \"constant.numeric\" }\n      }\n    },\n    {\n      \"comment\": \"Chord names + other annotations\",\n      \"match\": \"[\\\\\\\"!].*?[\\\\\\\"!]\",\n      \"name\": \"string.quoted\"\n    }\n  ],\n  \"name\": \"ABC Notation\",\n  \"uuid\": \"431a5f26-5897-4146-8415-25a3c4b859c0\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/actionscript-3.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"as\"],\n  \"name\": \"actionscript-3\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#package\"\n    },\n    {\n      \"include\": \"#class\"\n    },\n    {\n      \"include\": \"#interface\"\n    },\n    {\n      \"include\": \"#namespace_declaration\"\n    },\n    {\n      \"include\": \"#import\"\n    },\n    {\n      \"include\": \"#mxml\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#regexp\"\n    },\n    {\n      \"include\": \"#variable_declaration\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#primitive_types\"\n    },\n    {\n      \"include\": \"#primitive_error_types\"\n    },\n    {\n      \"include\": \"#dynamic_type\"\n    },\n    {\n      \"include\": \"#primitive_functions\"\n    },\n    {\n      \"include\": \"#language_constants\"\n    },\n    {\n      \"include\": \"#language_variables\"\n    },\n    {\n      \"include\": \"#guess_type\"\n    },\n    {\n      \"include\": \"#guess_constant\"\n    },\n    {\n      \"include\": \"#other_operators\"\n    },\n    {\n      \"include\": \"#arithmetic_operators\"\n    },\n    {\n      \"include\": \"#logical_operators\"\n    },\n    {\n      \"include\": \"#array_access_operators\"\n    },\n    {\n      \"include\": \"#vector_creation_operators\"\n    },\n    {\n      \"include\": \"#control_keywords\"\n    },\n    {\n      \"include\": \"#other_keywords\"\n    },\n    {\n      \"include\": \"#use_namespace\"\n    },\n    {\n      \"include\": \"#functions\"\n    }\n  ],\n  \"repository\": {\n    \"arithmetic_operators\": {\n      \"match\": \"(\\\\+|\\\\-|/|%|(?<!:)\\\\*)\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    },\n    \"array_access_operators\": {\n      \"match\": \"(\\\\[|\\\\])\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    },\n    \"class\": {\n      \"begin\": \"(?x) (^|\\\\s+|;) (\\\\b(dynamic|final|abstract)\\\\b\\\\s+)? (\\\\b(internal|public)\\\\b\\\\s+)? (\\\\b(dynamic|final|abstract)\\\\b\\\\s+)? (?=\\\\bclass\\\\b)\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"5\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"7\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.class.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#class_declaration\"\n        },\n        {\n          \"include\": \"#metadata\"\n        },\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#primitive_functions\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#language_variables\"\n        },\n        {\n          \"include\": \"#other_operators\"\n        },\n        {\n          \"include\": \"#other_keywords\"\n        },\n        {\n          \"include\": \"#use_namespace\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        },\n        {\n          \"include\": \"#arithmetic_operators\"\n        },\n        {\n          \"include\": \"#array_access_operators\"\n        },\n        {\n          \"include\": \"#vector_creation_operators\"\n        },\n        {\n          \"include\": \"#variable_declaration\"\n        },\n        {\n          \"include\": \"#object_literal\"\n        }\n      ]\n    },\n    \"namespace_declaration\": {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) ((\\\\w+)\\\\s+)? (namespace) \\\\s+ (?:[A-Za-z0-9_\\\\$]+)\",\n      \"name\": \"meta.namespace_declaration.actionscript.3\"\n    },\n    \"class_declaration\": {\n      \"begin\": \"(?x) \\\\b(class)\\\\b \\\\s+ ([\\\\.\\\\w]+|\\\\*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.class.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\{\",\n      \"name\": \"meta.class_declaration.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#extends\"\n        },\n        {\n          \"include\": \"#implements\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"code_block\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.code_block.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#code_block\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#variable_declaration\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#primitive_functions\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#language_variables\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        },\n        {\n          \"include\": \"#other_operators\"\n        },\n        {\n          \"include\": \"#arithmetic_operators\"\n        },\n        {\n          \"include\": \"#logical_operators\"\n        },\n        {\n          \"include\": \"#array_access_operators\"\n        },\n        {\n          \"include\": \"#vector_creation_operators\"\n        },\n        {\n          \"include\": \"#control_keywords\"\n        },\n        {\n          \"include\": \"#other_keywords\"\n        },\n        {\n          \"include\": \"#use_namespace\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#import\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation.actionscript.3\",\n          \"patterns\": [\n            {\n              \"match\": \"@(copy|default|eventType|example|exampleText|includeExample|inheritDoc|internal|param|private|return|see|since|throws)\\\\b\",\n              \"name\": \"keyword.other.documentation.actionscript.3.asdoc\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.actionscript.3\"\n        },\n        {\n          \"match\": \"//.*\",\n          \"name\": \"comment.line.actionscript.3\"\n        }\n      ]\n    },\n    \"control_keywords\": {\n      \"match\": \"\\\\b(if|else|do|while|for|each|continue|return|switch|case|default|break|try|catch|finally|throw)\\\\b\",\n      \"name\": \"keyword.control.actionscript.3\"\n    },\n    \"dynamic_type\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.actionscript.3\"\n        }\n      },\n      \"match\": \"(?<=:)\\\\s*(\\\\*)\"\n    },\n    \"escapes\": {\n      \"match\": \"\\\\\\\\(x\\\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)\",\n      \"name\": \"constant.character.escape.actionscript.3\"\n    },\n    \"extends\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.inherited-class.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) \\\\b(extends)\\\\b \\\\s+ ([\\\\.\\\\w]+) \\\\s* (?:, \\\\s* ([\\\\.\\\\w]+))* \\\\s*\",\n      \"name\": \"meta.extends.actionscript.3\"\n    },\n    \"function_arguments\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"meta.function_arguments.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#parameters\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"begin\": \"(\\\\.\\\\.\\\\.)?\\\\s*([A-Za-z\\\\_\\\\$][A-Za-z0-9_\\\\$]*)(?:\\\\s*(\\\\:)\\\\s*(?:(?:([A-Za-z\\\\$][A-Za-z0-9_\\\\$]+(?:\\\\.[A-Za-z\\\\$][A-Za-z0-9_\\\\$]+)*)(?:\\\\.<([A-Za-z\\\\$][A-Za-z0-9_\\\\$]+(?:\\\\.[A-Za-z\\\\$][A-Za-z0-9_\\\\$]+)*)>)?)|(\\\\*)))?(?:\\\\s*(=))?\",\n      \"end\": \",|(?=\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        },\n        \"4\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"5\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"6\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"7\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        }\n      ]\n    },\n    \"functions\": {\n      \"begin\": \"(?x) \\\\b(function)\\\\b (?:\\\\s+\\\\b(get|set)\\\\b\\\\s+)? \\\\s* ([a-zA-Z0-9_\\\\$]+\\\\b)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.actionscript.3\"\n        }\n      },\n      \"end\": \"($|;|(?=\\\\{))\",\n      \"name\": \"meta.function.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_arguments\"\n        },\n        {\n          \"include\": \"#return_type\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"guess_constant\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.actionscript.3\"\n        }\n      },\n      \"comment\": \"Following convention, let's guess that anything in all caps/digits (possible underscores) is a constant.\",\n      \"match\": \"\\\\b([A-Z\\\\$][A-Z0-9_]+)\\\\b\"\n    },\n    \"guess_type\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.actionscript.3\"\n        }\n      },\n      \"comment\": \"Following convention, let's guess that any word starting with one or more capital letters (that contains at least some lower-case letters so that constants aren't detected) refers to a class/type. May be fully-qualified.\",\n      \"match\": \"\\\\b((?:[A-Za-z0-9_\\\\$]+\\\\.)*[A-Z][A-Z0-9]*[a-z]+[A-Za-z0-9_\\\\$]*)\\\\b\"\n    },\n    \"implements\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.inherited-class.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) \\\\b(implements)\\\\b \\\\s+ ([\\\\.\\\\w]+) \\\\s* (?:, \\\\s* ([\\\\.\\\\w]+))* \\\\s*\",\n      \"name\": \"meta.implements.actionscript.3\"\n    },\n    \"import\": {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"keyword.control.import.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"support.type.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) (^|\\\\s+|;) \\\\b(import)\\\\b \\\\s+ ([A-Za-z0-9\\\\$_\\\\.]+(?:\\\\.\\\\*)?) \\\\s* (?=;|$)\",\n      \"name\": \"meta.import.actionscript.3\"\n    },\n    \"interface\": {\n      \"begin\": \"(?x) (^|\\\\s+|;) (\\\\b(internal|public)\\\\b\\\\s+)? (?=\\\\binterface\\\\b)\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.interface.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#interface_declaration\"\n        },\n        {\n          \"include\": \"#metadata\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"interface_declaration\": {\n      \"begin\": \"(?x) \\\\b(interface)\\\\b \\\\s+ ([\\\\.\\\\w]+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.interface.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.class.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\{\",\n      \"name\": \"meta.class_declaration.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#extends\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"language_constants\": {\n      \"match\": \"\\\\b(true|false|null|Infinity|-Infinity|NaN|undefined)\\\\b\",\n      \"name\": \"constant.language.actionscript.3\"\n    },\n    \"language_variables\": {\n      \"match\": \"\\\\b(super|this|arguments)\\\\b\",\n      \"name\": \"variable.language.actionscript.3\"\n    },\n    \"logical_operators\": {\n      \"match\": \"(&|<|~|\\\\||>|\\\\^|!|\\\\?)\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    },\n    \"metadata_info\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.actionscript.3\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.actionscript.3\"\n            }\n          },\n          \"match\": \"(\\\\w+)\\\\s*(=)\"\n        }\n      ]\n    },\n    \"method\": {\n      \"begin\": \"(?x) (^|\\\\s+) ((\\\\w+)\\\\s+)? ((\\\\w+)\\\\s+)? ((\\\\w+)\\\\s+)? ((\\\\w+)\\\\s+)? (?=\\\\bfunction\\\\b)\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"5\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"7\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"8\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"end\": \"(?<=(;|\\\\}))\",\n      \"name\": \"meta.method.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#code_block\"\n        }\n      ]\n    },\n    \"mxml\": {\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"end\": \"\\\\]\\\\]>\",\n      \"name\": \"meta.cdata.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#import\"\n        },\n        {\n          \"include\": \"#metadata\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#namespace_declaration\"\n        },\n        {\n          \"include\": \"#use_namespace\"\n        },\n        {\n          \"include\": \"#class_declaration\"\n        },\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#primitive_functions\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#language_variables\"\n        },\n        {\n          \"include\": \"#other_keywords\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        },\n        {\n          \"include\": \"#other_operators\"\n        },\n        {\n          \"include\": \"#arithmetic_operators\"\n        },\n        {\n          \"include\": \"#array_access_operators\"\n        },\n        {\n          \"include\": \"#vector_creation_operators\"\n        },\n        {\n          \"include\": \"#variable_declaration\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\\\b\",\n      \"name\": \"constant.numeric.actionscript.3\"\n    },\n    \"object_literal\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.object_literal.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#object_literal\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#primitive_functions\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#language_variables\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        },\n        {\n          \"include\": \"#array_access_operators\"\n        },\n        {\n          \"include\": \"#vector_creation_operators\"\n        },\n        {\n          \"include\": \"#functions\"\n        }\n      ]\n    },\n    \"other_keywords\": {\n      \"match\": \"\\\\b(as|delete|in|instanceof|is|native|new|to|typeof)\\\\b\",\n      \"name\": \"keyword.other.actionscript.3\"\n    },\n    \"other_operators\": {\n      \"match\": \"(\\\\.|=)\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    },\n    \"package\": {\n      \"begin\": \"(^|\\\\s+)(package)\\\\b\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.package.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#package_name\"\n        },\n        {\n          \"include\": \"#variable_declaration\"\n        },\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#return_type\"\n        },\n        {\n          \"include\": \"#import\"\n        },\n        {\n          \"include\": \"#use_namespace\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#metadata\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#interface\"\n        },\n        {\n          \"include\": \"#namespace_declaration\"\n        }\n      ]\n    },\n    \"package_name\": {\n      \"begin\": \"(?<=package)\\\\s+([\\\\w\\\\._]*)\\\\b\",\n      \"end\": \"\\\\{\",\n      \"name\": \"meta.package_name.actionscript.3\"\n    },\n    \"primitive_types\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.class.builtin.actionscript.3\"\n        }\n      },\n      \"match\": \"\\\\b(Array|Boolean|Class|Date|Function|int|JSON|Math|Namespace|Number|Object|QName|RegExp|String|uint|Vector|XML|XMLList|\\\\*(?<=a))\\\\b\"\n    },\n    \"primitive_error_types\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.class.error.actionscript.3\"\n        }\n      },\n      \"match\": \"\\\\b((Argument|Definition|Eval|Internal|Range|Reference|Security|Syntax|Type|URI|Verify)?Error)\\\\b\"\n    },\n    \"primitive_functions\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.actionscript.3\"\n        }\n      },\n      \"match\": \"\\\\b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|isFinite|isNaN|isXMLName|parseFloat|parseInt|trace|unescape)(?=\\\\s*\\\\()\"\n    },\n    \"regexp\": {\n      \"begin\": \"(?<=[=(:,\\\\[]|^|return|&&|\\\\|\\\\||!)\\\\s*(/)(?![/*+{}?])\",\n      \"end\": \"$|(/)[igm]*\",\n      \"name\": \"string.regex.actionscript.3\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.actionscript.3\"\n        },\n        {\n          \"match\": \"\\\\[(\\\\\\\\\\\\]|[^\\\\]])*\\\\]\",\n          \"name\": \"constant.character.class.actionscript.3\"\n        }\n      ]\n    },\n    \"return_type\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"4\": {\n          \"name\": \"support.type.actionscript.3\"\n        }\n      },\n      \"match\": \"(\\\\:)\\\\s*(?:([A-Za-z\\\\$][A-Za-z0-9_\\\\$]+(?:\\\\.[A-Za-z\\\\$][A-Za-z0-9_\\\\$]+)*)(?:\\\\.<([A-Za-z\\\\$][A-Za-z0-9_\\\\$]+(?:\\\\.[A-Za-z\\\\$][A-Za-z0-9_\\\\$]+)*)>)?)|(\\\\*)\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.actionscript.3\",\n          \"patterns\": [\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"name\": \"string.quoted.single.actionscript.3\",\n          \"patterns\": [\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"metadata\": {\n      \"begin\": \"\\\\[\\\\s*\\\\b(\\\\w+)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"name\": \"meta.metadata_info.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#metadata_info\"\n        }\n      ]\n    },\n    \"use_namespace\": {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        },\n        \"4\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) (^|\\\\s+|;) (use\\\\s+)? (namespace) \\\\s+ (\\\\w+) \\\\s* (;|$)\"\n    },\n    \"variable_declaration\": {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"4\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"6\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"7\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"8\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) ((static)\\\\s+)? ((\\\\w+)\\\\s+)? ((static)\\\\s+)? (const|var) \\\\s+ (?:[A-Za-z0-9_\\\\$]+)(?:\\\\s*(:))?\",\n      \"name\": \"meta.variable_declaration.actionscript.3\"\n    },\n    \"vector_creation_operators\": {\n      \"match\": \"(<|>)\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    }\n  },\n  \"scopeName\": \"source.actionscript.3\",\n  \"uuid\": \"aa6f75ba-ab10-466e-8c6f-28c69aca1e9d\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/ada.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"adb\", \"ads\"],\n  \"keyEquivalent\": \"^~A\",\n  \"uuid\": \"0AB8A36E-6B1D-11D9-B034-000D93589AF6\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(?i:(function|procedure))\\\\b\\\\s+(\\\\w+(\\\\.\\\\w+)?|\\\"(?:\\\\+|-|=|\\\\*|/)\\\")\",\n      \"name\": \"meta.function.ada\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.function.ada\" },\n        \"2\": { \"name\": \"entity.name.function.ada\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(?i:(package)(?:\\\\b\\\\s+(body))?)\\\\b\\\\s+(\\\\w+(\\\\.\\\\w+)*|\\\"(?:\\\\+|-|=|\\\\*|/)\\\")\",\n      \"name\": \"meta.function.ada\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.package.ada\" },\n        \"2\": { \"name\": \"keyword.other.body.ada\" },\n        \"3\": { \"name\": \"entity.name.type.package.ada\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(?i:(end))\\\\b\\\\s+(\\\\w+(\\\\.\\\\w+)*|\\\"(\\\\+|-|=|\\\\*|/)\\\")\\\\s?;\",\n      \"name\": \"meta.function.end.ada\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.function.ada\" },\n        \"2\": { \"name\": \"entity.name.function.ada\" }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(?:(limited)\\\\s+)?(?:(private)\\\\s+)?(with)\\\\s+(\\\\w+(\\\\.\\\\w+)*)\\\\s*;\",\n      \"name\": \"meta.import.ada\",\n      \"captures\": {\n        \"3\": { \"name\": \"keyword.control.import.ada\" },\n        \"1\": { \"name\": \"keyword.control.import.limited.ada\" },\n        \"4\": { \"name\": \"entity.name.function.ada\" },\n        \"2\": { \"name\": \"keyword.control.import.private.ada\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(?i:(begin|end|package))\\\\b\",\n      \"name\": \"keyword.control.ada\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(\\\\=>|abort|abs|abstract|accept|access|aliased|all|and|array|at|body|case|constant|declare|delay|delta|digits|do|else|elsif|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor))\\\\b\",\n      \"name\": \"keyword.other.ada\"\n    },\n    {\n      \"match\": \"\\\\b(?i:([0-9](_?[0-9])*((#[0-9a-f](_?[0-9a-f])*#((e(\\\\+|-)?[0-9](_?[0-9])*\\\\b)|\\\\B))|((\\\\.[0-9](_?[0-9])*)?(e(\\\\+|-)?[0-9](_?[0-9])*)?\\\\b))))\",\n      \"name\": \"constant.numeric.ada\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.ada\" }\n      },\n      \"end\": \"\\\"(?!\\\")\",\n      \"patterns\": [\n        { \"match\": \"\\\"\\\"\", \"name\": \"constant.character.escape.ada\" },\n        { \"match\": \"\\\\n\", \"name\": \"invalid.illegal.lf-in-string.ada\" }\n      ],\n      \"name\": \"string.quoted.double.ada\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.ada\" }\n      }\n    },\n    {\n      \"match\": \"(').(')\",\n      \"name\": \"string.quoted.single.ada\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.begin.ada\" },\n        \"2\": { \"name\": \"punctuation.definition.string.end.ada\" }\n      }\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=--)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"--\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.double-dash.ada\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.ada\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.ada\" }\n      }\n    }\n  ],\n  \"comment\": \"Ada -- chris@cjack.com. Feel free to modify, distribute, be happy. Share and enjoy.\",\n  \"name\": \"Ada\",\n  \"scopeName\": \"source.ada\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/alda.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.alda\",\n  \"fileTypes\": [\"alda\"],\n  \"patterns\": [\n    {\n      \"match\": \"^([a-zA-Z]{2}[\\\\w-]*)(?:\\\\s(\\\\\\\"[a-z]{2}[\\\\w-]*\\\\\\\"))?:\",\n      \"name\": \"entity.name.function.part.alda\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.type.instrument.alda\" },\n        \"2\": { \"name\": \"string.quoted.double.quickname.alda\" }\n      }\n    },\n    { \"match\": \"^[Vv][0-9]+:\", \"name\": \"entity.name.function.voice.alda\" },\n    {\n      \"match\": \"[~.]|(?<=[a-g\\\\+\\\\-\\\\~])\\\\d+|r\\\\d*\",\n      \"name\": \"variable.parameter.timing.alda\"\n    },\n    {\n      \"match\": \"(?<=[a-g])[\\\\-\\\\+]+\",\n      \"name\": \"variable.parameter.pitch-shift.alda\"\n    },\n    { \"match\": \"o\\\\d+\", \"name\": \"keyword.operator.octave-set.alda\" },\n    {\n      \"match\": \"%[a-zA-Z]{2}[\\\\w\\\\-]*\",\n      \"name\": \"entity.name.tag.sync-marker.alda\"\n    },\n    { \"match\": \"@[a-zA-Z]{2}[\\\\w\\\\-]*\", \"name\": \"entity.name.tag.sync.alda\" },\n    { \"match\": \"[\\\\<\\\\>]\", \"name\": \"keyword.operator.octave-shift.alda\" },\n    { \"match\": \"/\", \"name\": \"keyword.operator.subchord.alda\" },\n    { \"match\": \"\\\\|\", \"name\": \"comment.character.pipe.alda\" },\n    { \"match\": \"#.*$\", \"name\": \"comment.line.number-sign.alda\" },\n    { \"begin\": \"\\\\(\\\\*\", \"end\": \"\\\\*\\\\)\", \"name\": \"comment.block.alda\" }\n  ],\n  \"name\": \"Alda\",\n  \"uuid\": \"8e03bdb0-70f9-4e1f-b998-c69d3821bfa1\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/apache.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\n    \"conf\",\n    \"CONF\",\n    \"envvars\",\n    \"htaccess\",\n    \"HTACCESS\",\n    \"htgroups\",\n    \"HTGROUPS\",\n    \"htpasswd\",\n    \"HTPASSWD\",\n    \".htaccess\",\n    \".HTACCESS\",\n    \".htgroups\",\n    \".HTGROUPS\",\n    \".htpasswd\",\n    \".HTPASSWD\"\n  ],\n  \"name\": \"apache\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.apacheconf\"\n        }\n      },\n      \"match\": \"^(\\\\s)*(#).*$\\\\n?\",\n      \"name\": \"comment.line.hash.ini\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.apacheconf\"\n        },\n        \"2\": {\n          \"name\": \"entity.tag.apacheconf\"\n        },\n        \"4\": {\n          \"name\": \"string.value.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.tag.apacheconf\"\n        }\n      },\n      \"match\": \"(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost|Macro|If|Else|ElseIf)(\\\\s(.+?))?(>)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.apacheconf\"\n        },\n        \"2\": {\n          \"name\": \"entity.tag.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.apacheconf\"\n        }\n      },\n      \"match\": \"(</)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost|Macro|If|Else|ElseIf)(>)\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"string.regexp.apacheconf\"\n        },\n        \"4\": {\n          \"name\": \"string.replacement.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=(Rewrite(Rule|Cond)))\\\\s+(.+?)\\\\s+(.+?)($|\\\\s)\"\n    },\n    {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.status.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"string.regexp.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"string.path.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=RedirectMatch)(\\\\s+(\\\\d\\\\d\\\\d|permanent|temp|seeother|gone))?\\\\s+(.+?)\\\\s+((.+?)($|\\\\s))?\"\n    },\n    {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.status.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"string.path.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"string.path.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=Redirect)(\\\\s+(\\\\d\\\\d\\\\d|permanent|temp|seeother|gone))?\\\\s+(.+?)\\\\s+((.+?)($|\\\\s))?\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.regexp.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"string.path.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=ScriptAliasMatch|AliasMatch)\\\\s+(.+?)\\\\s+((.+?)\\\\s)?\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.path.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"string.path.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=RedirectPermanent|RedirectTemp|ScriptAlias|Alias)\\\\s+(.+?)\\\\s+((.+?)($|\\\\s))?\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.core.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|Define|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include(Optional)?|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|Mutex|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|Time(O|o)ut|TraceEnable|UseCanonicalName|Use|ErrorLogFormat|GlobalLog|PHPIniDir|SSLHonorCipherOrder|SSLCompression|SSLUseStapling|SSLStapling\\\\w+|SSLCARevocationCheck|SSLSRPVerifierFile|SSLSessionTickets|RequestReadTimeout|ProxyHTML\\\\w+|MaxRanges)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.mpm.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxConnectionsPerChild|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxRequestWorkers|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.access.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Allow|Deny|Order)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.actions.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Action|Script)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.alias.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AuthAuthoritative|AuthGroupFile|AuthUserFile|AuthBasicProvider|AuthBasicFake|AuthBasicAuthoritative|AuthBasicUseDigestAlgorithm)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth_anon.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth_dbm.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth_digest.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize|AuthDigestProvider)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth_ldap.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.autoindex.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|IndexStyleSheet|IndexHeadInsert|ReadmeName)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.filter.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(BalancerMember|BalancerGrowth|BalancerPersist|BalancerInherit)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.cache.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.cern_meta.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(MetaDir|MetaFiles|MetaSuffix)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.cgi.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ScriptLog|ScriptLogBuffer|ScriptLogLength)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.cgid.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.charset_lite.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CharsetDefault|CharsetOptions|CharsetSourceEnc)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.dav.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.deflate.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.dir.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(DirectoryIndex|DirectorySlash|FallbackResource)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.disk_cache.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.dumpio.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(DumpIOInput|DumpIOOutput)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.env.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(PassEnv|SetEnv|UnsetEnv)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.expires.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ExpiresActive|ExpiresByType|ExpiresDefault)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.ext_filter.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ExtFilterDefine|ExtFilterOptions)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.file_cache.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CacheFile|MMapFile)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.filter.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AddOutputFilterByType|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.headers.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Header|RequestHeader)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.imap.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ImapBase|ImapDefault|ImapMenu)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.include.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.isapi.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.ldap.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.log.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.mem_cache.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.mime.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.misc.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.negotiation.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.nw_ssl.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.proxy.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassMatch|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.rewrite.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.setenvif.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.so.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(LoadFile|LoadModule)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.ssl.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth|SSLInsecureRenegotiation|SSLOpenSSLConfCmd)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.substitute.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Substitute|SubstituteInheritBefore|SubstituteMaxLineLength)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.usertrack.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.vhost_alias.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.php.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"entity.property.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"string.value.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(php_value|php_flag|php_admin_value|php_admin_flag)\\\\b(\\\\s+(.+?)(\\\\s+(\\\".+?\\\"|.+?))?)?\\\\s\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.variable.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"variable.env.apacheconf\"\n        },\n        \"4\": {\n          \"name\": \"variable.misc.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.variable.apacheconf\"\n        }\n      },\n      \"match\": \"(%\\\\{)((HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\\\})\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.mime-type.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b((text|image|application|video|audio)/.+?)\\\\s\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.helper.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(?i)(export|from|unset|set|on|off)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.integer.decimal.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(\\\\d+)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.flag.apacheconf\"\n        },\n        \"2\": {\n          \"name\": \"string.flag.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.flag.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\s(\\\\[)(.*?)(\\\\])\\\\s\"\n    }\n  ],\n  \"scopeName\": \"source.apacheconf\",\n  \"uuid\": \"8747d9e4-b308-4fc2-9aa1-66b6919bc7b9\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/apex.tmLanguage.json",
    "content": "{\n  \"name\": \"apex\",\n  \"scopeName\": \"source.apex\",\n  \"fileTypes\": [\"apex\", \"cls\", \"trigger\"],\n  \"uuid\": \"F5FC6824-F257-43B1-B53A-14E1CCD18631\",\n  \"patterns\": [\n    {\n      \"include\": \"#javadoc-comment\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#declarations\"\n    },\n    {\n      \"include\": \"#script-top-level\"\n    }\n  ],\n  \"repository\": {\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-declarations\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"script-top-level\": {\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#statement\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"type-declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#annotation-declaration\"\n        },\n        {\n          \"include\": \"#storage-modifier\"\n        },\n        {\n          \"include\": \"#sharing-modifier\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#trigger-declaration\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"class-or-trigger-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#storage-modifier\"\n        },\n        {\n          \"include\": \"#sharing-modifier\"\n        },\n        {\n          \"include\": \"#type-declarations\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#property-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#constructor-declaration\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"interface-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#while-statement\"\n        },\n        {\n          \"include\": \"#do-statement\"\n        },\n        {\n          \"include\": \"#for-statement\"\n        },\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#when-else-statement\"\n        },\n        {\n          \"include\": \"#when-sobject-statement\"\n        },\n        {\n          \"include\": \"#when-statement\"\n        },\n        {\n          \"include\": \"#when-multiple-statement\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"include\": \"#else-part\"\n        },\n        {\n          \"include\": \"#goto-statement\"\n        },\n        {\n          \"include\": \"#return-statement\"\n        },\n        {\n          \"include\": \"#break-or-continue-statement\"\n        },\n        {\n          \"include\": \"#throw-statement\"\n        },\n        {\n          \"include\": \"#try-statement\"\n        },\n        {\n          \"include\": \"#soql-query-expression\"\n        },\n        {\n          \"include\": \"#local-declaration\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#merge-expression\"\n        },\n        {\n          \"include\": \"#support-expression\"\n        },\n        {\n          \"include\": \"#throw-expression\"\n        },\n        {\n          \"include\": \"#this-expression\"\n        },\n        {\n          \"include\": \"#trigger-context-declaration\"\n        },\n        {\n          \"include\": \"#conditional-operator\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#soql-query-expression\"\n        },\n        {\n          \"include\": \"#object-creation-expression\"\n        },\n        {\n          \"include\": \"#array-creation-expression\"\n        },\n        {\n          \"include\": \"#invocation-expression\"\n        },\n        {\n          \"include\": \"#member-access-expression\"\n        },\n        {\n          \"include\": \"#element-access-expression\"\n        },\n        {\n          \"include\": \"#cast-expression\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#initializer-expression\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"annotation-declaration\": {\n      \"begin\": \"([@][_[:alpha:]]+)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.annotation.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\)|$)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"support-expression\": {\n      \"begin\": \"(?x)\\n(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)(?=\\\\.|\\\\s) # supported apex namespaces\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.class.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\)|$)|(?=\\\\})|(?=;)|(?=\\\\)|(?=\\\\]))|(?=\\\\,)\",\n      \"patterns\": [\n        {\n          \"include\": \"#support-type\"\n        },\n        {\n          \"match\": \"(?:(\\\\.))([[:alpha:]]*)(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"support.function.apex\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.))([[:alpha:]]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"support.type.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"support-type\": {\n      \"name\": \"support.apex\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#support-class\"\n        },\n        {\n          \"include\": \"#support-functions\"\n        },\n        {\n          \"include\": \"#support-name\"\n        }\n      ]\n    },\n    \"support-class\": {\n      \"match\": \"\\\\b(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.class.apex\"\n        }\n      }\n    },\n    \"support-functions\": {\n      \"match\": \"\\\\b(delete|execute|finish|insert|start|undelete|update|upsert)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.apex\"\n        }\n      }\n    },\n    \"support-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\.)\\\\s*([[:alpha:]]*)(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"support.function.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*([_[:alpha:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"support.type.apex\"\n            }\n          }\n        }\n      ]\n    },\n    \"support-arguments\": {\n      \"begin\": \"<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.apex\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#support-type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"merge-expression\": {\n      \"begin\": \"(merge)\\\\b\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#object-creation-expression\"\n        },\n        {\n          \"include\": \"#merge-type-statement\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"merge-type-statement\": {\n      \"match\": \"([_[:alpha:]]*)\\\\b\\\\s+([_[:alpha:]]*)\\\\b\\\\s*(\\\\;)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.readwrite.apex\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.readwrite.apex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.terminator.statement.apex\"\n        }\n      }\n    },\n    \"sharing-modifier\": {\n      \"name\": \"sharing.modifier.apex\",\n      \"match\": \"(?<!\\\\.)\\\\b(with sharing|without sharing|inherited sharing)\\\\b\"\n    },\n    \"storage-modifier\": {\n      \"name\": \"storage.modifier.apex\",\n      \"match\": \"(?<!\\\\.)\\\\b(new|public|protected|private|abstract|virtual|override|global|static|final|transient)\\\\b\"\n    },\n    \"class-declaration\": {\n      \"begin\": \"(?=\\\\bclass\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\\\b(class)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.class.apex\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.apex\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#extends-class\"\n            },\n            {\n              \"include\": \"#implements-class\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.apex\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-or-trigger-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"trigger-declaration\": {\n      \"begin\": \"(?=\\\\btrigger\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\\\b(trigger)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\n\\\\b(on)\\\\b\\\\s+\\n([_[:alpha:]][_[:alnum:]]*)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.trigger.apex\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.trigger.apex\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.trigger.on.apex\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.apex\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.parenthesis.open.apex\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.parenthesis.close.apex\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#trigger-type-statement\"\n                },\n                {\n                  \"include\": \"#trigger-operator-statement\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                },\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.apex\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            },\n            {\n              \"include\": \"#class-or-trigger-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"trigger-type-statement\": {\n      \"match\": \"\\\\b(?:(before)|(after))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.trigger.before.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.trigger.after.apex\"\n        }\n      }\n    },\n    \"trigger-operator-statement\": {\n      \"name\": \"keyword.operator.trigger.apex\",\n      \"match\": \"\\\\b(insert|update|delete|merge|upsert|undelete)\\\\b\"\n    },\n    \"trigger-context-declaration\": {\n      \"begin\": \"\\\\b(?:(Trigger))\\\\b(\\\\.)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.class.trigger.apex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.apex\"\n        }\n      },\n      \"end\": \"(?=\\\\})|(?=;)|(?=\\\\)|(?=\\\\]))\",\n      \"patterns\": [\n        {\n          \"name\": \"support.type.trigger.apex\",\n          \"match\": \"\\\\b(isExecuting|isInsert|isUpdate|isDelete|isBefore|isAfter|isUndelete|new|newMap|old|oldMap|size)\\\\b\"\n        },\n        {\n          \"match\": \"(?:(\\\\??\\\\.))([[:alpha:]]+)(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#punctuation-accessor\"\n                },\n                {\n                  \"include\": \"#operator-safe-navigation\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"support.function.trigger.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#trigger-type-statement\"\n            },\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"enum-declaration\": {\n      \"begin\": \"(?=\\\\benum\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=enum)\",\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"(enum)\\\\s+(@?[_[:alpha:]][_[:alnum:]]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.enum.apex\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.enum.apex\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.apex\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"begin\": \"@?[_[:alpha:]][_[:alnum:]]*\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.variable.enum-member.apex\"\n                }\n              },\n              \"end\": \"(?=(,|\\\\}))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#javadoc-comment\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"begin\": \"(?=\\\\binterface\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(interface)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.interface.apex\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface.apex\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#extends-class\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.apex\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interface-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"extends-class\": {\n      \"begin\": \"(extends)\\\\b\\\\s+([_[:alpha:]][_[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.extends.apex\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.extends.apex\"\n        }\n      },\n      \"end\": \"(?={|implements)\"\n    },\n    \"implements-class\": {\n      \"begin\": \"(implements)\\\\b\\\\s+([_[:alpha:]][_[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.implements.apex\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.implements.apex\"\n        }\n      },\n      \"end\": \"(?={|extends)\"\n    },\n    \"soql-query-expression\": {\n      \"begin\": \"\\\\b(SELECT)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.select.apex\"\n        }\n      },\n      \"end\": \"(?=;)|(?=\\\\])|(?=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#soql-query-body\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#operator-assignment\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"match\": \"([_.[:alpha:]][_.[:alnum:]]*)\\\\s*(\\\\,)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.query.field.apex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.comma.apex\"\n            }\n          }\n        }\n      ]\n    },\n    \"soql-query-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#trigger-context-declaration\"\n        },\n        {\n          \"include\": \"#soql-colon-vars\"\n        },\n        {\n          \"include\": \"#soql-functions\"\n        },\n        {\n          \"include\": \"#from-clause\"\n        },\n        {\n          \"include\": \"#where-clause\"\n        },\n        {\n          \"include\": \"#query-operators\"\n        },\n        {\n          \"include\": \"#date-literals\"\n        },\n        {\n          \"include\": \"#date-literal-with-params\"\n        },\n        {\n          \"include\": \"#using-scope\"\n        },\n        {\n          \"include\": \"#soql-group-clauses\"\n        },\n        {\n          \"include\": \"#orderby-clause\"\n        },\n        {\n          \"include\": \"#ordering-direction\"\n        },\n        {\n          \"include\": \"#ordering-nulls\"\n        }\n      ]\n    },\n    \"soql-colon-vars\": {\n      \"begin\": \"(\\\\:)\\\\s*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.colon.apex\"\n        }\n      },\n      \"end\": \"(?![_[:alnum:]]|\\\\(|(\\\\?)?\\\\[|<)\",\n      \"patterns\": [\n        {\n          \"include\": \"#trigger-context-declaration\"\n        },\n        {\n          \"match\": \"([_[:alpha:]][_[:alnum:]]*)(\\\\??\\\\.)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.object.apex\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#punctuation-accessor\"\n                },\n                {\n                  \"include\": \"#operator-safe-navigation\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#soql-colon-method-statement\"\n        },\n        {\n          \"name\": \"entity.name.variable.local.apex\",\n          \"match\": \"[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"soql-colon-method-statement\": {\n      \"begin\": \"(:?\\\\.)?([_[:alpha:]][_[:alnum:]]*)(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.apex\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"soql-group-clauses\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#soql-query-expression\"\n        },\n        {\n          \"include\": \"#soql-colon-vars\"\n        },\n        {\n          \"include\": \"#soql-group-clauses\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#operator-assignment\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#query-operators\"\n        },\n        {\n          \"include\": \"#date-literals\"\n        },\n        {\n          \"include\": \"#date-literal-with-params\"\n        },\n        {\n          \"include\": \"#using-scope\"\n        },\n        {\n          \"name\": \"keyword.query.field.apex\",\n          \"match\": \"[_.[:alpha:]][_.[:alnum:]]*\"\n        }\n      ]\n    },\n    \"soql-functions\": {\n      \"begin\": \"\\\\b(AVG|CALENDAR_MONTH|CALENDAR_QUARTER|CALENDAR_YEAR|convertCurrency|convertTimezone|COUNT|COUNT_DISTINCT|DAY_IN_MONTH|DAY_IN_WEEK|DAY_IN_YEAR|DAY_ONLY|toLabel|INCLUDES|EXCLUDES|FISCAL_MONTH|FISCAL_QUARTER|FISCAL_YEAR|FORMAT|GROUPING|GROUP BY CUBE|GROUP BY ROLLUP|HOUR_IN_DAY|MAX|MIN|SUM|WEEK_IN_MONTH|WEEK_IN_YEAR)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.query.apex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#soql-functions\"\n        },\n        {\n          \"name\": \"keyword.query.field.apex\",\n          \"match\": \"[_.[:alpha:]][_.[:alnum:]]*\"\n        }\n      ]\n    },\n    \"from-clause\": {\n      \"match\": \"(FROM)\\\\b\\\\s*([_\\\\.[:alnum:]]+\\\\b)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.from.apex\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.apex\"\n        }\n      }\n    },\n    \"where-clause\": {\n      \"match\": \"\\\\b(WHERE)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.where.apex\"\n        }\n      }\n    },\n    \"orderby-clause\": {\n      \"match\": \"\\\\b(ORDER BY)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.orderby.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#ordering-direction\"\n        },\n        {\n          \"include\": \"#ordering-nulls\"\n        }\n      ]\n    },\n    \"ordering-direction\": {\n      \"match\": \"\\\\b(?:(ASC)|(DESC))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.ascending.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.query.descending.apex\"\n        }\n      }\n    },\n    \"ordering-nulls\": {\n      \"match\": \"\\\\b(?:(NULLS FIRST)|(NULLS LAST))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.nullsfirst.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.query.nullslast.apex\"\n        }\n      }\n    },\n    \"query-operators\": {\n      \"match\": \"\\\\b(ABOVE|AND|AT|FOR REFERENCE|FOR UPDATE|FOR VIEW|GROUP BY|HAVING|IN|LIKE|LIMIT|NOT IN|NOT|OFFSET|OR|TYPEOF|UPDATE TRACKING|UPDATE VIEWSTAT|WITH DATA CATEGORY|WITH)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.apex\"\n        }\n      }\n    },\n    \"date-literals\": {\n      \"match\": \"\\\\b(YESTERDAY|TODAY|TOMORROW|LAST_WEEK|THIS_WEEK|NEXT_WEEK|LAST_MONTH|THIS_MONTH|NEXT_MONTH|LAST_90_DAYS|NEXT_90_DAYS|THIS_QUARTER|LAST_QUARTER|NEXT_QUARTER|THIS_YEAR|LAST_YEAR|NEXT_YEAR|THIS_FISCAL_QUARTER|LAST_FISCAL_QUARTER|NEXT_FISCAL_QUARTER|THIS_FISCAL_YEAR|LAST_FISCAL_YEAR|NEXT_FISCAL_YEAR)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.date.apex\"\n        }\n      }\n    },\n    \"date-literal-with-params\": {\n      \"match\": \"\\\\b((LAST_N_DAYS|NEXT_N_DAYS|NEXT_N_WEEKS|LAST_N_WEEKS|NEXT_N_MONTHS|LAST_N_MONTHS|NEXT_N_QUARTERS|LAST_N_QUARTERS|NEXT_N_YEARS|LAST_N_YEARS|NEXT_N_FISCAL_QUARTERS|LAST_N_FISCAL_QUARTERS|NEXT_N_FISCAL_YEARS|LAST_N_FISCAL_YEARS)\\\\s*\\\\:\\\\d+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.date.apex\"\n        }\n      }\n    },\n    \"using-scope\": {\n      \"match\": \"((USING SCOPE)\\\\b\\\\s*(Delegated|Everything|Mine|My_Territory|My_Team_Territory|Team))\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.using.apex\"\n        }\n      }\n    },\n    \"type-parameter-list\": {\n      \"begin\": \"\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.apex\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.type-parameter.apex\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"begin\": \"(?x)\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s* # first field name\\n(?!=>|==)(?=,|;|=|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"entity.name.variable.field.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.field.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#class-or-trigger-members\"\n        }\n      ]\n    },\n    \"property-declaration\": {\n      \"begin\": \"(?x)\\n(?!.*\\\\b(?:class|interface|enum)\\\\b)\\\\s*\\n(?<return-type>\\n  (?<type-name>\\n    (?:\\n      (?:ref\\\\s+)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\\\s+\\n)\\n(?<interface-name>\\\\g<type-name>\\\\s*\\\\.\\\\s*)?\\n(?<property-name>\\\\g<identifier>)\\\\s*\\n(?=\\\\{|=>|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.property.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-accessors\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#class-or-trigger-members\"\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"begin\": \"(?x)\\n(?<return-type>\\n  (?<type-name>\\n    (?:\\n      (?:ref\\\\s+)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\\\s+\\n)\\n(?<interface-name>\\\\g<type-name>\\\\s*\\\\.\\\\s*)?\\n(?<indexer-name>this)\\\\s*\\n(?=\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"keyword.other.this.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-accessors\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"property-accessors\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.apex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier.apex\",\n          \"match\": \"\\\\b(private|protected)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.get.apex\",\n          \"match\": \"\\\\b(get)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.set.apex\",\n          \"match\": \"\\\\b(set)\\\\b\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"begin\": \"(?x)\\n(?<return-type>\\n  (?<type-name>\\n    (?:\\n      (?:ref\\\\s+)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\\\s+\\n)\\n(?<interface-name>\\\\g<type-name>\\\\s*\\\\.\\\\s*)?\\n(\\\\g<identifier>)\\\\s*\\n(<([^<>]+)>)?\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#method-name-custom\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-parameter-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"method-name-custom\": {\n      \"name\": \"entity.name.function.apex\",\n      \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n    },\n    \"constructor-declaration\": {\n      \"begin\": \"(?=@?[_[:alpha:]][_[:alnum:]]*\\\\s*\\\\()\",\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.colon.apex\"\n            }\n          },\n          \"end\": \"(?=\\\\{|=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#constructor-initializer\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"constructor-initializer\": {\n      \"begin\": \"\\\\b(?:(this))\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.this.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"block\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.apex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"begin\": \"(?<!=|!)(=)(?!=|>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.assignment.apex\"\n        }\n      },\n      \"end\": \"(?=[,\\\\)\\\\];}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"expression-body\": {\n      \"begin\": \"=>\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.arrow.apex\"\n        }\n      },\n      \"end\": \"(?=[,\\\\);}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"goto-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(goto)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.goto.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(case)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.apex\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(default)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.apex\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.label.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"return-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(return)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.return.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"break-or-continue-statement\": {\n      \"match\": \"(?<!\\\\.)\\\\b(?:(break)|(continue))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.break.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.continue.apex\"\n        }\n      }\n    },\n    \"throw-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(throw)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.throw.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(if)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.if.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"else-part\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(else)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.else.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"begin\": \"(?x)\\n(switch)\\\\b\\\\s+\\n(on)\\\\b\\\\s+\\n(?:([_.?\\\\'\\\\(\\\\)[:alnum:]]+)\\\\s*)?\\n(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.switch.on.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            },\n            {\n              \"include\": \"#parenthesized-expression\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.curlybrace.open.apex\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#when-string\"\n        },\n        {\n          \"include\": \"#when-else-statement\"\n        },\n        {\n          \"include\": \"#when-sobject-statement\"\n        },\n        {\n          \"include\": \"#when-statement\"\n        },\n        {\n          \"include\": \"#when-multiple-statement\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"when-statement\": {\n      \"begin\": \"(when)\\\\b\\\\s+([\\\\'_\\\\-[:alnum:]]+)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"when-string\": {\n      \"begin\": \"(when)(\\\\b\\\\s*)((\\\\')[_.\\\\,\\\\'\\\\s*[:alnum:]]+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.whitespace.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#when-string-statement\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"when-string-statement\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.apex\",\n          \"begin\": \"\\\\'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.apex\"\n            }\n          },\n          \"end\": \"\\\\'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.apex\"\n            }\n          }\n        }\n      ]\n    },\n    \"when-else-statement\": {\n      \"begin\": \"(when)\\\\b\\\\s+(else)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.switch.else.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"when-multiple-statement\": {\n      \"begin\": \"(when)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"when-sobject-statement\": {\n      \"begin\": \"(when)\\\\b\\\\s+([_[:alnum:]]+)\\\\s+([_[:alnum:]]+)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.apex\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.variable.local.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"do-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(do)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.do.apex\"\n        }\n      },\n      \"end\": \"(?=;|})\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"while-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(while)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.while.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"for-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(for)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.for.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#for-apex-syntax\"\n            },\n            {\n              \"include\": \"#local-variable-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            },\n            {\n              \"include\": \"#colon-expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"for-apex-syntax\": {\n      \"match\": \"([_.[:alpha:]][_.[:alnum:]]+)\\\\s+([_.[:alpha:]][_.[:alnum:]]*)\\\\s*(\\\\:)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.local.apex\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.iterator.colon.apex\"\n        }\n      }\n    },\n    \"try-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#try-block\"\n        },\n        {\n          \"include\": \"#catch-clause\"\n        },\n        {\n          \"include\": \"#finally-clause\"\n        }\n      ]\n    },\n    \"try-block\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(try)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"finally-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(finally)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.finally.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"catch-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(catch)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.catch.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(?:(\\\\g<identifier>)\\\\b)?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#support-type\"\n                    },\n                    {\n                      \"include\": \"#type\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"entity.name.variable.local.apex\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"local-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#local-constant-declaration\"\n        },\n        {\n          \"include\": \"#local-variable-declaration\"\n        }\n      ]\n    },\n    \"local-variable-declaration\": {\n      \"begin\": \"(?x)\\n(?:\\n  (?:(\\\\bref)\\\\s+)?(\\\\bvar\\\\b)| # ref local\\n  (?<type-name>\\n    (?:\\n      (?:ref\\\\s+)?   # ref local\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(?=,|;|=|\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.var.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.local.apex\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.local.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"local-constant-declaration\": {\n      \"begin\": \"(?x)\\n(?<const-keyword>\\\\b(?:const)\\\\b)\\\\s*\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(?=,|;|=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.variable.local.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.local.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"throw-expression\": {\n      \"match\": \"(?<!\\\\.)\\\\b(throw)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.throw.apex\"\n        }\n      }\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#string-literal\"\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.apex\",\n          \"match\": \"(?<!\\\\.)\\\\btrue\\\\b\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.apex\",\n          \"match\": \"(?<!\\\\.)\\\\bfalse\\\\b\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.apex\",\n      \"match\": \"(?<!\\\\.)\\\\bnull\\\\b\"\n    },\n    \"numeric-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.datetime.apex\",\n          \"match\": \"\\\\b(\\\\d{4}\\\\-\\\\d{2}\\\\-\\\\d{2}T\\\\d{2}\\\\:\\\\d{2}\\\\:\\\\d{2}(\\\\.\\\\d{1,3})?(\\\\-|\\\\+)\\\\d{2}\\\\:\\\\d{2})\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.datetime.apex\",\n          \"match\": \"\\\\b(\\\\d{4}\\\\-\\\\d{2}\\\\-\\\\d{2}T\\\\d{2}\\\\:\\\\d{2}\\\\:\\\\d{2}(\\\\.\\\\d{1,3})?(Z)?)\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.date.apex\",\n          \"match\": \"\\\\b(\\\\d{4}\\\\-\\\\d{2}\\\\-\\\\d{2})\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.hex.apex\",\n          \"match\": \"\\\\b0(x|X)[0-9a-fA-F_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.binary.apex\",\n          \"match\": \"\\\\b0(b|B)[01_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.decimal.apex\",\n          \"match\": \"\\\\b([0-9_]+)?\\\\.[0-9_]+((e|E)[0-9]+)?(F|f|D|d|M|m)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.decimal.apex\",\n          \"match\": \"\\\\b[0-9_]+(e|E)[0-9_]+(F|f|D|d|M|m)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.decimal.apex\",\n          \"match\": \"\\\\b[0-9_]+(F|f|D|d|M|m)\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.decimal.apex\",\n          \"match\": \"\\\\b[0-9_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\\\b\"\n        }\n      ]\n    },\n    \"string-literal\": {\n      \"name\": \"string.quoted.single.apex\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.apex\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.apex\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.apex\",\n      \"match\": \"\\\\\\\\.\"\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.assignment.compound.apex\",\n          \"match\": \"\\\\*=|/=|%=|\\\\+=|-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.apex\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.apex\",\n          \"match\": \"<<|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.apex\",\n          \"match\": \"==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.apex\",\n          \"match\": \"<=|>=|<|>\"\n        },\n        {\n          \"name\": \"keyword.operator.logical.apex\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.apex\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.apex\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.apex\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.apex\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.apex\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        }\n      ]\n    },\n    \"conditional-operator\": {\n      \"begin\": \"(?<!\\\\?)\\\\?(?!\\\\?|\\\\.|\\\\[)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.question-mark.apex\"\n        }\n      },\n      \"end\": \":\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.colon.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"colon-expression\": {\n      \"name\": \"keyword.operator.conditional.colon.apex\",\n      \"match\": \":\"\n    },\n    \"parenthesized-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"initializer-expression\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.apex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"name\": \"variable.other.readwrite.apex\",\n      \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n    },\n    \"cast-expression\": {\n      \"match\": \"(?x)\\n(\\\\()\\\\s*\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(\\\\))(?=\\\\s*@?[_[:alnum:]\\\\(])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      }\n    },\n    \"this-expression\": {\n      \"match\": \"\\\\b(?:(this))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.this.apex\"\n        }\n      }\n    },\n    \"invocation-expression\": {\n      \"begin\": \"(?x)\\n(?:(\\\\??\\\\.)\\\\s*)?                                  # safe navigator or accessor\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*                 # method name\\n(?<type-args>\\\\s*<([^<>]|\\\\g<type-args>)+>\\\\s*)?\\\\s* # type arguments\\n(?=\\\\()                                           # open paren of argument list\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#punctuation-accessor\"\n            },\n            {\n              \"include\": \"#operator-safe-navigation\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"element-access-expression\": {\n      \"begin\": \"(?x)\\n(?:(\\\\??\\\\.)\\\\s*)?                       # safe navigator or accessor\\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*)? # property name\\n(?:(\\\\?)\\\\s*)?                          # null-conditional operator?\\n(?=\\\\[)                                # open bracket of argument list\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#punctuation-accessor\"\n            },\n            {\n              \"include\": \"#operator-safe-navigation\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"variable.other.object.property.apex\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.null-conditional.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\])(?!\\\\s*\\\\[)\",\n      \"patterns\": [\n        {\n          \"include\": \"#bracketed-argument-list\"\n        }\n      ]\n    },\n    \"member-access-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(\\\\??\\\\.)\\\\s*                       # safe navigator or accessor\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s* # property name\\n(?![_[:alnum:]]|\\\\(|(\\\\?)?\\\\[|<)    # next character is not alpha-numeric, nor a (, [, or <. Also, test for ?[\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#punctuation-accessor\"\n                },\n                {\n                  \"include\": \"#operator-safe-navigation\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.property.apex\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\??\\\\.)?\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\n(?<type-params>\\\\s*<([^<>]|\\\\g<type-params>)+>\\\\s*)\\n(?=\\n  (\\\\s*\\\\?)?\\n  \\\\s*\\\\.\\\\s*@?[_[:alpha:]][_[:alnum:]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#punctuation-accessor\"\n                },\n                {\n                  \"include\": \"#operator-safe-navigation\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.apex\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type-arguments\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(@?[_[:alpha:]][_[:alnum:]]*)\\n(?=\\n  (\\\\s*\\\\?)?\\n  \\\\s*\\\\.\\\\s*@?[_[:alpha:]][_[:alnum:]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.object.apex\"\n            }\n          }\n        }\n      ]\n    },\n    \"object-creation-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-creation-expression-with-parameters\"\n        },\n        {\n          \"include\": \"#object-creation-expression-with-no-parameters\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-creation-expression-with-parameters\": {\n      \"begin\": \"(?x)\\n(delete|insert|undelete|update|upsert)?\\n\\\\s*(new)\\\\s+\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.new.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"object-creation-expression-with-no-parameters\": {\n      \"match\": \"(?x)\\n(delete|insert|undelete|update|upsert)?\\n\\\\s*(new)\\\\s+\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(?=\\\\{|$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.new.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"array-creation-expression\": {\n      \"begin\": \"(?x)\\n\\\\b(new)\\\\b\\\\s*\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)?\\\\s*\\n(?=\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.new.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\])\",\n      \"patterns\": [\n        {\n          \"include\": \"#bracketed-argument-list\"\n        }\n      ]\n    },\n    \"parenthesized-parameter-list\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parameter\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"parameter\": {\n      \"match\": \"(?x)\\n(?:(?:\\\\b(this)\\\\b)\\\\s+)?\\n(?<type-name>\\n  (?:\\n    (?:ref\\\\s+)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.variable.parameter.apex\"\n        }\n      }\n    },\n    \"argument-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#named-argument\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"bracketed-argument-list\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.open.apex\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#soql-query-expression\"\n        },\n        {\n          \"include\": \"#named-argument\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"named-argument\": {\n      \"begin\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.parameter.apex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.colon.apex\"\n        }\n      },\n      \"end\": \"(?=(,|\\\\)|\\\\]))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"type\": {\n      \"name\": \"meta.type.apex\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-builtin\"\n        },\n        {\n          \"include\": \"#type-name\"\n        },\n        {\n          \"include\": \"#type-arguments\"\n        },\n        {\n          \"include\": \"#type-array-suffix\"\n        },\n        {\n          \"include\": \"#type-nullable-suffix\"\n        }\n      ]\n    },\n    \"type-builtin\": {\n      \"match\": \"\\\\b(Blob|Boolean|byte|Date|Datetime|Decimal|Double|ID|Integer|Long|Object|String|Time|void)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.type.apex\"\n        }\n      }\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(\\\\.)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.apex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.apex\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.apex\"\n            }\n          }\n        },\n        {\n          \"name\": \"storage.type.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"type-arguments\": {\n      \"begin\": \"<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.apex\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#support-type\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-array-suffix\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.open.apex\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-nullable-suffix\": {\n      \"match\": \"\\\\?\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.question-mark.apex\"\n        }\n      }\n    },\n    \"operator-assignment\": {\n      \"name\": \"keyword.operator.assignment.apex\",\n      \"match\": \"(?<!=|!)(=)(?!=)\"\n    },\n    \"operator-safe-navigation\": {\n      \"name\": \"keyword.operator.safe-navigation.apex\",\n      \"match\": \"\\\\?\\\\.\"\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.apex\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.apex\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"name\": \"punctuation.accessor.apex\",\n      \"match\": \"\\\\.\"\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.apex\",\n          \"begin\": \"/\\\\*(\\\\*)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.apex\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.apex\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"patterns\": [\n            {\n              \"name\": \"comment.block.documentation.apex\",\n              \"begin\": \"(?<!/)///(?!/)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.apex\"\n                }\n              },\n              \"end\": \"(?=$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#xml-doc-comment\"\n                }\n              ]\n            },\n            {\n              \"name\": \"comment.line.double-slash.apex\",\n              \"begin\": \"(?<!/)//(?:(?!/)|(?=//))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.apex\"\n                }\n              },\n              \"end\": \"(?=$)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"javadoc-comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.javadoc.apex\",\n          \"begin\": \"^\\\\s*(/\\\\*\\\\*)(?!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.apex\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"@(deprecated|author|return|see|serial|since|version|usage|name|link)\\\\b\",\n              \"name\": \"keyword.other.documentation.javadoc.apex\"\n            },\n            {\n              \"match\": \"(@param)\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.apex\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.variable.parameter.apex\"\n                }\n              }\n            },\n            {\n              \"match\": \"(@(?:exception|throws))\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.apex\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.apex\"\n                }\n              }\n            },\n            {\n              \"match\": \"(`([^`]+?)`)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"string.quoted.single.apex\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"xml-doc-comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#xml-comment\"\n        },\n        {\n          \"include\": \"#xml-character-entity\"\n        },\n        {\n          \"include\": \"#xml-cdata\"\n        },\n        {\n          \"include\": \"#xml-tag\"\n        }\n      ]\n    },\n    \"xml-tag\": {\n      \"name\": \"meta.tag.apex\",\n      \"begin\": \"(?x)\\n(</?)\\n(\\n  (?:\\n    ([-_[:alnum:]]+)\\n    (:)\\n  )?\\n  ([-_[:alnum:]]+)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.apex\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.apex\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.namespace.apex\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.colon.apex\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.localname.apex\"\n        }\n      },\n      \"end\": \"(/?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xml-attribute\"\n        }\n      ]\n    },\n    \"xml-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?:^|\\\\s+)\\n(\\n  (?:\\n    ([-_[:alnum:]]+)\\n    (:)\\n  )?\\n  ([-_[:alnum:]]+)\\n)\\n(=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.apex\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.namespace.apex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.apex\"\n            },\n            \"4\": {\n              \"name\": \"entity.other.attribute-name.localname.apex\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.equals.apex\"\n            }\n          }\n        },\n        {\n          \"include\": \"#xml-string\"\n        }\n      ]\n    },\n    \"xml-cdata\": {\n      \"name\": \"string.unquoted.cdata.apex\",\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.apex\"\n        }\n      },\n      \"end\": \"\\\\]\\\\]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.apex\"\n        }\n      }\n    },\n    \"xml-string\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.apex\",\n          \"begin\": \"\\\\'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.apex\"\n            }\n          },\n          \"end\": \"\\\\'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-character-entity\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.apex\",\n          \"begin\": \"\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.stringdoublequote.begin.apex\"\n            }\n          },\n          \"end\": \"\\\\\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.stringdoublequote.end.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-character-entity\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xml-character-entity\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.apex\",\n          \"match\": \"(?x)\\n(&)\\n(\\n  (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\\n  (?:\\\\#[[:digit:]]+)|\\n  (?:\\\\#x[[:xdigit:]]+)\\n)\\n(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.apex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.constant.apex\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.apex\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"xml-comment\": {\n      \"name\": \"comment.block.apex\",\n      \"begin\": \"<!--\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.apex\"\n        }\n      },\n      \"end\": \"-->\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.apex\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/applescript.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"applescript\", \"scpt\", \"script editor\"],\n  \"firstLineMatch\": \"^#!.*(osascript)\",\n  \"keyEquivalent\": \"^~A\",\n  \"name\": \"applescript\",\n  \"patterns\": [\n    {\n      \"include\": \"#blocks\"\n    },\n    {\n      \"include\": \"#inline\"\n    }\n  ],\n  \"repository\": {\n    \"attributes.considering-ignoring\": {\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.attributes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(and)\\\\b\",\n          \"name\": \"keyword.control.attributes.and.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:case|diacriticals|hyphens|numeric\\\\s+strings|punctuation|white\\\\s+space)\\\\b\",\n          \"name\": \"constant.other.attributes.text.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:application\\\\s+responses)\\\\b\",\n          \"name\": \"constant.other.attributes.application.applescript\"\n        }\n      ]\n    },\n    \"blocks\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(script)\\\\s+(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.script.applescript\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.script-object.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+script)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.script.applescript\"\n            }\n          },\n          \"name\": \"meta.block.script.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(?x)\\n\\t\\t\\t\\t\\t\\t\\\\s*(to|on)\\\\s+ \\t\\t\\t\\t\\t# \\\"on\\\" or \\\"to\\\"\\n\\t\\t\\t\\t\\t\\t(\\\\w+)\\t\\t\\t\\t\\t\\t\\t# function name\\n\\t\\t\\t\\t\\t\\t(\\\\()\\t\\t\\t\\t\\t\\t\\t# opening paren\\n\\t\\t\\t\\t\\t\\t\\t((?:[\\\\s,:\\\\{\\\\}]*(?:\\\\w+)?)*)\\t# parameters\\n\\t\\t\\t\\t\\t\\t(\\\\))\\t\\t\\t\\t\\t\\t\\t# closing paren\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.handler.applescript\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.applescript\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.handler.applescript\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.end.applescript\"\n            }\n          },\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tThis is not a very well-designed rule.  For now,\\n\\t\\t\\t\\t\\t\\twe can leave it like this though, as it sorta works.\\n\\t\\t\\t\\t\\t\",\n          \"end\": \"^\\\\s*(end)(?:\\\\s+(\\\\2))?(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            }\n          },\n          \"name\": \"meta.function.positional.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(?x)\\n\\t\\t\\t\\t\\t\\t\\\\s*(to|on)\\\\s+ \\t\\t\\t\\t\\t# \\\"on\\\" or \\\"to\\\"\\n\\t\\t\\t\\t\\t\\t(\\\\w+)\\t\\t\\t\\t\\t\\t\\t# function name\\n\\t\\t\\t\\t\\t\\t(?:\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t(of|in)\\\\s+\\t\\t\\t\\t\\t# \\\"of\\\" or \\\"in\\\"\\n\\t\\t\\t\\t\\t\\t\\t(\\\\w+)\\t\\t\\t\\t\\t\\t# direct parameter\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t(?=\\\\s+(above|against|apart\\\\s+from|around|aside\\\\s+from|at|below|beneath|beside|between|by|for|from|instead\\\\s+of|into|on|onto|out\\\\s+of|over|thru|under)\\\\b)\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.handler.applescript\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.function.applescript\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.handler.direct.applescript\"\n            }\n          },\n          \"comment\": \"TODO: match `given` parameters\",\n          \"end\": \"^\\\\s*(end)(?:\\\\s+(\\\\2))?(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            }\n          },\n          \"name\": \"meta.function.prepositional.applescript\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.preposition.applescript\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.handler.applescript\"\n                }\n              },\n              \"match\": \"\\\\b(?i:above|against|apart\\\\s+from|around|aside\\\\s+from|at|below|beneath|beside|between|by|for|from|instead\\\\s+of|into|on|onto|out\\\\s+of|over|thru|under)\\\\s+(\\\\w+)\\\\b\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(?x)\\n\\t\\t\\t\\t\\t\\t\\\\s*(to|on)\\\\s+ \\t\\t\\t\\t\\t# \\\"on\\\" or \\\"to\\\"\\n\\t\\t\\t\\t\\t\\t(\\\\w+)\\t\\t\\t\\t\\t\\t\\t# function name\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*(--.*?)?$)\\t\\t\\t\\t# nothing else\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.handler.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end)(?:\\\\s+(\\\\2))?(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            }\n          },\n          \"name\": \"meta.function.parameterless.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#blocks.tell\"\n        },\n        {\n          \"include\": \"#blocks.repeat\"\n        },\n        {\n          \"include\": \"#blocks.statement\"\n        },\n        {\n          \"include\": \"#blocks.other\"\n        }\n      ]\n    },\n    \"blocks.other\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(considering)\\\\b\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+considering)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.considering.applescript\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=considering)\",\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.array.attributes.considering.applescript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes.considering-ignoring\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=ignoring)\",\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.array.attributes.ignoring.applescript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes.considering-ignoring\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(but)\\\\b\",\n              \"name\": \"keyword.control.but.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(ignoring)\\\\b\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+ignoring)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.ignoring.applescript\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=considering)\",\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.array.attributes.considering.applescript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes.considering-ignoring\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=ignoring)\",\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.array.attributes.ignoring.applescript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes.considering-ignoring\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(but)\\\\b\",\n              \"name\": \"keyword.control.but.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(if)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+if)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.if.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(then)\\\\b\",\n              \"name\": \"keyword.control.then.applescript\"\n            },\n            {\n              \"match\": \"\\\\b(else\\\\s+if)\\\\b\",\n              \"name\": \"keyword.control.else-if.applescript\"\n            },\n            {\n              \"match\": \"\\\\b(else)\\\\b\",\n              \"name\": \"keyword.control.else.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(try)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.try.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+(try|error))?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.try.applescript\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*(on\\\\s+error)\\\\b\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.exception.on-error.applescript\"\n                }\n              },\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.property.error.applescript\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(?i:number|partial|from|to)\\\\b\",\n                  \"name\": \"keyword.control.exception.modifier.applescript\"\n                },\n                {\n                  \"include\": \"#inline\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(using\\\\s+terms\\\\s+from)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.terms.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+using\\\\s+terms\\\\s+from)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.terms.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(with\\\\s+timeout(\\\\s+of)?)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.timeout.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+timeout)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.timeout.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(with\\\\s+transaction(\\\\s+of)?)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.transaction.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+transaction)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.transaction.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"blocks.repeat\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\s+(until)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.until.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.until.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\s+(while)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.while.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.while.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\s+(with)\\\\s+(\\\\w+)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.until.applescript\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.loop.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.with.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(from|to|by)\\\\b\",\n              \"name\": \"keyword.control.modifier.range.applescript\"\n            },\n            {\n              \"match\": \"\\\\b(in)\\\\b\",\n              \"name\": \"keyword.control.modifier.list.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\b(?=\\\\s*(--.*?)?$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.forever.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.times.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(times)\\\\b\",\n              \"name\": \"keyword.control.times.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"blocks.statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(prop(?:erty)?)\\\\s+(\\\\w+)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.def.property.applescript\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.property.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.key-value.property.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(set)\\\\s+(\\\\w+)\\\\s+(to)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.def.set.applescript\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.set.applescript\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.def.set.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.set.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(local)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.def.local.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.local.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.variables.local.applescript\"\n            },\n            {\n              \"match\": \"\\\\b\\\\w+\",\n              \"name\": \"variable.other.readwrite.local.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(global)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.def.global.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.global.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.variables.global.applescript\"\n            },\n            {\n              \"match\": \"\\\\b\\\\w+\",\n              \"name\": \"variable.other.readwrite.global.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(error)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.exception.error.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.error.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(number|partial|from|to)\\\\b\",\n              \"name\": \"keyword.control.exception.modifier.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(if)\\\\b(?=.*\\\\bthen\\\\b(?!\\\\s*(--.*?)?$))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.if-then.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        }\n      ]\n    },\n    \"blocks.tell\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+\\\"(?i:textmate)\\\")(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell Textmate\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.textmate.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#textmate\"\n            },\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+\\\"(?i:finder)\\\")(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell Finder\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.finder.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#finder\"\n            },\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+\\\"(?i:system events)\\\")(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell System Events\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.system-events.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#system-events\"\n            },\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+\\\"(?i:itunes)\\\")(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell iTunes\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.itunes.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#itunes\"\n            },\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+process\\\\b)(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell generic application process\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application-process.generic.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\b)(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell generic application\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.generic.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"generic tell block\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.generic.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=.*\\\\bto\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell … to statement\",\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.block.tell.generic.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"built-in\": {\n      \"patterns\": [\n        {\n          \"include\": \"#built-in.constant\"\n        },\n        {\n          \"include\": \"#built-in.keyword\"\n        },\n        {\n          \"include\": \"#built-in.support\"\n        },\n        {\n          \"include\": \"#built-in.punctuation\"\n        }\n      ]\n    },\n    \"built-in.constant\": {\n      \"patterns\": [\n        {\n          \"comment\": \"yes/no can’t always be used as booleans, e.g. in an if() expression. But they work e.g. for boolean arguments.\",\n          \"match\": \"\\\\b(?i:true|false|yes|no)\\\\b\",\n          \"name\": \"constant.language.boolean.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:null|missing\\\\s+value)\\\\b\",\n          \"name\": \"constant.language.null.applescript\"\n        },\n        {\n          \"match\": \"-?\\\\b\\\\d+((\\\\.(\\\\d+\\\\b)?)?(?i:e\\\\+?\\\\d*\\\\b)?|\\\\b)\",\n          \"name\": \"constant.numeric.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:space|tab|return|linefeed|quote)\\\\b\",\n          \"name\": \"constant.other.text.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:all\\\\s+(caps|lowercase)|bold|condensed|expanded|hidden|italic|outline|plain|shadow|small\\\\s+caps|strikethrough|(sub|super)script|underline)\\\\b\",\n          \"name\": \"constant.other.styles.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\\\\b\",\n          \"name\": \"constant.other.time.month.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:Mon(day)?|Tue(sday)?|Wed(nesday)?|Thu(rsday)?|Fri(day)?|Sat(urday)?|Sun(day)?)\\\\b\",\n          \"name\": \"constant.other.time.weekday.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:AppleScript|pi|result|version|current\\\\s+application|its?|m[ey])\\\\b\",\n          \"name\": \"constant.other.miscellaneous.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:text\\\\s+item\\\\s+delimiters|print\\\\s+(length|depth))\\\\b\",\n          \"name\": \"variable.language.applescript\"\n        }\n      ]\n    },\n    \"built-in.keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&|\\\\*|\\\\+|-|/|÷|\\\\^)\",\n          \"name\": \"keyword.operator.arithmetic.applescript\"\n        },\n        {\n          \"match\": \"(=|≠|>|<|≥|>=|≤|<=)\",\n          \"name\": \"keyword.operator.comparison.applescript\"\n        },\n        {\n          \"match\": \"(?ix)\\\\b\\n\\t\\t\\t\\t\\t\\t(and|or|div|mod|as|not\\n\\t\\t\\t\\t\\t\\t|(a\\\\s+)?(ref(\\\\s+to)?|reference\\\\s+to)\\n\\t\\t\\t\\t\\t\\t|equal(s|\\\\s+to)|contains?|comes\\\\s+(after|before)|(start|begin|end)s?\\\\s+with\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\\\b\",\n          \"name\": \"keyword.operator.word.applescript\"\n        },\n        {\n          \"comment\": \"In double quotes so we can use a single quote in the keywords.\",\n          \"match\": \"(?ix)\\\\b\\n\\t\\t\\t\\t\\t\\t(is(n't|\\\\s+not)?(\\\\s+(equal(\\\\s+to)?|(less|greater)\\\\s+than(\\\\s+or\\\\s+equal(\\\\s+to)?)?|in|contained\\\\s+by))?\\n\\t\\t\\t\\t\\t\\t|does(n't|\\\\s+not)\\\\s+(equal|come\\\\s+(before|after)|contain)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\\\b\",\n          \"name\": \"keyword.operator.word.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:some|every|whose|where|that|id|index|\\\\d+(st|nd|rd|th)|first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth|last|front|back|middle|named|beginning|end|from|to|thr(u|ough)|before|(front|back|beginning|end)\\\\s+of|after|behind|in\\\\s+(front|back|beginning|end)\\\\s+of)\\\\b\",\n          \"name\": \"keyword.operator.reference.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:continue|return|exit(\\\\s+repeat)?)\\\\b\",\n          \"name\": \"keyword.control.loop.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:about|above|after|against|and|apart\\\\s+from|around|as|aside\\\\s+from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|contains|copy|div|does|eighth|else|end|equal|equals|error|every|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead\\\\s+of|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|out\\\\s+of|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\\\b\",\n          \"name\": \"keyword.other.applescript\"\n        }\n      ]\n    },\n    \"built-in.punctuation\": {\n      \"patterns\": [\n        {\n          \"match\": \"¬\",\n          \"name\": \"punctuation.separator.continuation.line.applescript\"\n        },\n        {\n          \"comment\": \"the : in property assignments\",\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.key-value.property.applescript\"\n        },\n        {\n          \"comment\": \"the parentheses in groups\",\n          \"match\": \"[()]\",\n          \"name\": \"punctuation.section.group.applescript\"\n        }\n      ]\n    },\n    \"built-in.support\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:POSIX\\\\s+path|frontmost|id|name|running|version|days?|weekdays?|months?|years?|time|date\\\\s+string|time\\\\s+string|length|rest|reverse|items?|contents|quoted\\\\s+form|characters?|paragraphs?|words?)\\\\b\",\n          \"name\": \"support.function.built-in.property.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:activate|log|clipboard\\\\s+info|set\\\\s+the\\\\s+clipboard\\\\s+to|the\\\\s+clipboard|info\\\\s+for|list\\\\s+(disks|folder)|mount\\\\s+volume|path\\\\s+to(\\\\s+resource)?|close\\\\s+access|get\\\\s+eof|open\\\\s+for\\\\s+access|read|set\\\\s+eof|write|open\\\\s+location|current\\\\s+date|do\\\\s+shell\\\\s+script|get\\\\s+volume\\\\s+settings|random\\\\s+number|round|set\\\\s+volume|system\\\\s+(attribute|info)|time\\\\s+to\\\\s+GMT|load\\\\s+script|run\\\\s+script|scripting\\\\s+components|store\\\\s+script|copy|count|get|launch|run|set|ASCII\\\\s+(character|number)|localized\\\\s+string|offset|summarize|beep|choose\\\\s+(application|color|file(\\\\s+name)?|folder|from\\\\s+list|remote\\\\s+application|URL)|delay|display\\\\s+(alert|dialog)|say)\\\\b\",\n          \"name\": \"support.function.built-in.command.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:get|run)\\\\b\",\n          \"name\": \"support.function.built-in.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:anything|data|text|upper\\\\s+case|propert(y|ies))\\\\b\",\n          \"name\": \"support.class.built-in.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:alias|class)(es)?\\\\b\",\n          \"name\": \"support.class.built-in.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:app(lication)?|boolean|character|constant|date|event|file(\\\\s+specification)?|handler|integer|item|keystroke|linked\\\\s+list|list|machine|number|picture|preposition|POSIX\\\\s+file|real|record|reference(\\\\s+form)?|RGB\\\\s+color|script|sound|text\\\\s+item|type\\\\s+class|vector|writing\\\\s+code(\\\\s+info)?|zone|((international|styled(\\\\s+(Clipboard|Unicode))?|Unicode)\\\\s+)?text|((C|encoded|Pascal)\\\\s+)?string)s?\\\\b\",\n          \"name\": \"support.class.built-in.applescript\"\n        },\n        {\n          \"match\": \"(?ix)\\\\b\\n\\t\\t\\t\\t\\t\\t(\\t(cubic\\\\s+(centi)?|square\\\\s+(kilo)?|centi|kilo)met(er|re)s\\n\\t\\t\\t\\t\\t\\t|\\tsquare\\\\s+(yards|feet|miles)|cubic\\\\s+(yards|feet|inches)|miles|inches\\n\\t\\t\\t\\t\\t\\t|\\tlit(re|er)s|gallons|quarts\\n\\t\\t\\t\\t\\t\\t|\\t(kilo)?grams|ounces|pounds\\n\\t\\t\\t\\t\\t\\t|\\tdegrees\\\\s+(Celsius|Fahrenheit|Kelvin)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\\\b\",\n          \"name\": \"support.class.built-in.unit.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:seconds|minutes|hours|days)\\\\b\",\n          \"name\": \"support.class.built-in.time.applescript\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#!)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.applescript\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.applescript\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.applescript\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.applescript\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.number-sign.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.applescript\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"--\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.applescript\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.applescript\"\n            }\n          },\n          \"end\": \"\\\\*\\\\)\",\n          \"name\": \"comment.block.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments.nested\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments.nested\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.applescript\"\n            }\n          },\n          \"end\": \"\\\\*\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.applescript\"\n            }\n          },\n          \"name\": \"comment.block.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments.nested\"\n            }\n          ]\n        }\n      ]\n    },\n    \"data-structures\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.begin.applescript\"\n            }\n          },\n          \"comment\": \"We cannot necessarily distinguish \\\"records\\\" from \\\"arrays\\\", and so this could be either.\",\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.applescript\"\n            }\n          },\n          \"name\": \"meta.array.applescript\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.other.key.applescript\"\n                },\n                \"2\": {\n                  \"name\": \"meta.identifier.applescript\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.applescript\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.applescript\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.separator.key-value.applescript\"\n                }\n              },\n              \"match\": \"(\\\\w+|((\\\\|)[^|\\\\n]*(\\\\|)))\\\\s*(:)\"\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.key-value.applescript\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.array.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=application )|(?<=app ))(\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.applescript\"\n            }\n          },\n          \"end\": \"(\\\")\",\n          \"name\": \"string.quoted.double.application-name.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.applescript\"\n            }\n          },\n          \"end\": \"(\\\")\",\n          \"name\": \"string.quoted.double.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.applescript\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.identifier.applescript\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.identifier.applescript\"\n            }\n          },\n          \"match\": \"(\\\\|)[^|\\\\n]*(\\\\|)\",\n          \"name\": \"meta.identifier.applescript\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            },\n            \"2\": {\n              \"name\": \"support.class.built-in.applescript\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.utxt.applescript\"\n            },\n            \"4\": {\n              \"name\": \"string.unquoted.data.applescript\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.applescript\"\n            },\n            \"7\": {\n              \"name\": \"support.class.built-in.applescript\"\n            }\n          },\n          \"match\": \"(«)(data) (utxt|utf8)([[:xdigit:]]*)(»)(?:\\\\s+(as)\\\\s+(?i:Unicode\\\\s+text))?\",\n          \"name\": \"constant.other.data.utxt.applescript\"\n        },\n        {\n          \"begin\": \"(«)(\\\\w+)\\\\b(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            },\n            \"2\": {\n              \"name\": \"support.class.built-in.applescript\"\n            }\n          },\n          \"end\": \"(»)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            }\n          },\n          \"name\": \"constant.other.data.raw.applescript\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            }\n          },\n          \"match\": \"(«)[^»]*(»)\",\n          \"name\": \"invalid.illegal.data.applescript\"\n        }\n      ]\n    },\n    \"finder\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(item|container|(computer|disk|trash)-object|disk|folder|((alias|application|document|internet location) )?file|clipping|package)s?\\\\b\",\n          \"name\": \"support.class.finder.items.applescript\"\n        },\n        {\n          \"match\": \"\\\\b((Finder|desktop|information|preferences|clipping) )windows?\\\\b\",\n          \"name\": \"support.class.finder.window-classes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(preferences|(icon|column|list) view options|(label|column|alias list)s?)\\\\b\",\n          \"name\": \"support.class.finder.type-definitions.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(copy|find|sort|clean up|eject|empty( trash)|erase|reveal|update)\\\\b\",\n          \"name\": \"support.function.finder.items.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(insertion location|product version|startup disk|desktop|trash|home|computer container|finder preferences)\\\\b\",\n          \"name\": \"support.constant.finder.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(visible)\\\\b\",\n          \"name\": \"support.variable.finder.applescript\"\n        }\n      ]\n    },\n    \"inline\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#data-structures\"\n        },\n        {\n          \"include\": \"#built-in\"\n        },\n        {\n          \"include\": \"#standardadditions\"\n        }\n      ]\n    },\n    \"itunes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(artwork|application|encoder|EQ preset|item|source|visual|(EQ |browser )?window|((audio CD|device|shared|URL|file) )?track|playlist window|((audio CD|device|radio tuner|library|folder|user) )?playlist)s?\\\\b\",\n          \"name\": \"support.class.itunes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(add|back track|convert|fast forward|(next|previous) track|pause|play(pause)?|refresh|resume|rewind|search|stop|update|eject|subscribe|update(Podcast|AllPodcasts)|download)\\\\b\",\n          \"name\": \"support.function.itunes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(current (playlist|stream (title|URL)|track)|player state)\\\\b\",\n          \"name\": \"support.constant.itunes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(current (encoder|EQ preset|visual)|EQ enabled|fixed indexing|full screen|mute|player position|sound volume|visuals enabled|visual size)\\\\b\",\n          \"name\": \"support.variable.itunes.applescript\"\n        }\n      ]\n    },\n    \"standard-suite\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(colors?|documents?|items?|windows?)\\\\b\",\n          \"name\": \"support.class.standard-suite.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(close|count|delete|duplicate|exists|make|move|open|print|quit|save|activate|select|data size)\\\\b\",\n          \"name\": \"support.function.standard-suite.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(name|frontmost|version)\\\\b\",\n          \"name\": \"support.constant.standard-suite.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(selection)\\\\b\",\n          \"name\": \"support.variable.standard-suite.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(attachments?|attribute runs?|characters?|paragraphs?|texts?|words?)\\\\b\",\n          \"name\": \"support.class.text-suite.applescript\"\n        }\n      ]\n    },\n    \"standardadditions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((alert|dialog) reply)\\\\b\",\n          \"name\": \"support.class.standardadditions.user-interaction.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(file information)\\\\b\",\n          \"name\": \"support.class.standardadditions.file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(POSIX files?|system information|volume settings)\\\\b\",\n          \"name\": \"support.class.standardadditions.miscellaneous.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(URLs?|internet address(es)?|web pages?|FTP items?)\\\\b\",\n          \"name\": \"support.class.standardadditions.internet.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(info for|list (disks|folder)|mount volume|path to( resource)?)\\\\b\",\n          \"name\": \"support.function.standardadditions.file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(beep|choose (application|color|file( name)?|folder|from list|remote application|URL)|delay|display (alert|dialog)|say)\\\\b\",\n          \"name\": \"support.function.standardadditions.user-interaction.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(ASCII (character|number)|localized string|offset|summarize)\\\\b\",\n          \"name\": \"support.function.standardadditions.string.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(set the clipboard to|the clipboard|clipboard info)\\\\b\",\n          \"name\": \"support.function.standardadditions.clipboard.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(open for access|close access|read|write|get eof|set eof)\\\\b\",\n          \"name\": \"support.function.standardadditions.file-i-o.applescript\"\n        },\n        {\n          \"match\": \"\\\\b((load|store|run) script|scripting components)\\\\b\",\n          \"name\": \"support.function.standardadditions.scripting.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(current date|do shell script|get volume settings|random number|round|set volume|system attribute|system info|time to GMT)\\\\b\",\n          \"name\": \"support.function.standardadditions.miscellaneous.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(opening folder|(closing|moving) folder window for|adding folder items to|removing folder items from)\\\\b\",\n          \"name\": \"support.function.standardadditions.folder-actions.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(open location|handle CGI request)\\\\b\",\n          \"name\": \"support.function.standardadditions.internet.applescript\"\n        }\n      ]\n    },\n    \"system-events\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(audio (data|file))\\\\b\",\n          \"name\": \"support.class.system-events.audio-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(alias(es)?|(Classic|local|network|system|user) domain objects?|disk( item)?s?|domains?|file( package)?s?|folders?|items?)\\\\b\",\n          \"name\": \"support.class.system-events.disk-folder-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(delete|open|move)\\\\b\",\n          \"name\": \"support.function.system-events.disk-folder-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(folder actions?|scripts?)\\\\b\",\n          \"name\": \"support.class.system-events.folder-actions.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(attach action to|attached scripts|edit action of|remove action from)\\\\b\",\n          \"name\": \"support.function.system-events.folder-actions.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(movie data|movie file)\\\\b\",\n          \"name\": \"support.class.system-events.movie-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(log out|restart|shut down|sleep)\\\\b\",\n          \"name\": \"support.function.system-events.power.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(((application |desk accessory )?process|(check|combo )?box)(es)?|(action|attribute|browser|(busy|progress|relevance) indicator|color well|column|drawer|group|grow area|image|incrementor|list|menu( bar)?( item)?|(menu |pop up |radio )?button|outline|(radio|tab|splitter) group|row|scroll (area|bar)|sheet|slider|splitter|static text|table|text (area|field)|tool bar|UI element|window)s?)\\\\b\",\n          \"name\": \"support.class.system-events.processes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(click|key code|keystroke|perform|select)\\\\b\",\n          \"name\": \"support.function.system-events.processes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(property list (file|item))\\\\b\",\n          \"name\": \"support.class.system-events.property-list.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(annotation|QuickTime (data|file)|track)s?\\\\b\",\n          \"name\": \"support.class.system-events.quicktime-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b((abort|begin|end) transaction)\\\\b\",\n          \"name\": \"support.function.system-events.system-events.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(XML (attribute|data|element|file)s?)\\\\b\",\n          \"name\": \"support.class.system-events.xml.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(print settings|users?|login items?)\\\\b\",\n          \"name\": \"support.class.sytem-events.other.applescript\"\n        }\n      ]\n    },\n    \"textmate\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(print settings)\\\\b\",\n          \"name\": \"support.class.textmate.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(get url|insert|reload bundles)\\\\b\",\n          \"name\": \"support.function.textmate.applescript\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.applescript\",\n  \"uuid\": \"777CF925-14B9-428E-B07B-17FAAB8FA27E\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/arm.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.arm\",\n  \"fileTypes\": [\"s\", \"S\"],\n  \"patterns\": [\n    { \"match\": \"@.*$\", \"name\": \"comment.line\" },\n    { \"match\": \"//.*$\", \"name\": \"comment.line\" },\n    { \"match\": \";.*$\", \"name\": \"comment.line\" },\n    {\n      \"begin\": \"^\\\\s*\\\\#\\\\s*if\\\\s+0\\\\b\",\n      \"end\": \"^\\\\s*\\\\#\\\\s*endif\\\\b\",\n      \"name\": \"comment.preprocessor\"\n    },\n    { \"begin\": \"/\\\\*\", \"end\": \"\\\\*/\", \"name\": \"comment.block\" },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t^\\\\s*\\\\#\\\\s*(define)\\\\s+             # define\\n\\t\\t\\t((?<id>[a-zA-Z_][a-zA-Z0-9_]*))  # macro name\\n\\t\\t\\t(?:                              # and optionally:\\n\\t\\t\\t    (\\\\()                         # an open parenthesis\\n\\t\\t\\t        (\\n\\t\\t\\t            \\\\s* \\\\g<id> \\\\s*       # first argument\\n\\t\\t\\t            ((,) \\\\s* \\\\g<id> \\\\s*)*  # additional arguments\\n\\t\\t\\t            (?:\\\\.\\\\.\\\\.)?          # varargs ellipsis?\\n\\t\\t\\t        )\\n\\t\\t\\t    (\\\\))                         # a close parenthesis\\n\\t\\t\\t)?\\n\\t\\t\\t\",\n      \"end\": \"(?=(?://|/\\\\*))|$\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.c\"\n        },\n        { \"include\": \"$base\" }\n      ],\n      \"name\": \"meta.preprocessor.macro.c\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.import.define.c\" },\n        \"8\": { \"name\": \"punctuation.definition.parameters.c\" },\n        \"4\": { \"name\": \"punctuation.definition.parameters.c\" },\n        \"2\": { \"name\": \"entity.name.function.preprocessor.c\" },\n        \"7\": { \"name\": \"punctuation.separator.parameters.c\" },\n        \"5\": { \"name\": \"variable.parameter.preprocessor.c\" }\n      }\n    },\n    {\n      \"begin\": \"^\\\\s*#\\\\s*(error|warning)\\\\b\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.c\"\n        }\n      ],\n      \"name\": \"meta.preprocessor.diagnostic.c\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.import.error.c\" } }\n    },\n    {\n      \"begin\": \"^\\\\s*#\\\\s*(include|import)\\\\b\\\\s+\",\n      \"end\": \"(?=(?://|/\\\\*))|$\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.c\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.c\" }\n          },\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.include.c\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.c\" }\n          }\n        },\n        {\n          \"begin\": \"<\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.c\" }\n          },\n          \"end\": \">\",\n          \"name\": \"string.quoted.other.lt-gt.include.c\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.c\" }\n          }\n        }\n      ],\n      \"name\": \"meta.preprocessor.c.include\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.import.include.c\" } }\n    },\n    {\n      \"match\": \"((?i)([xw][0-9]|[xw]1[0-9]||[xw]2[0-9]|[wx]30|wzr|xzr|wsp|fpsr|fpcr|[rcp]1[0-5]|[rcp][0-9]|a[1-4]|v[1-8]|sl|sb|fp|ip|sp|lr|(c|s)psr(_c)?|pc|[sd]3[0-1]|[sd][12][0-9]|[sd][0-9]|fpsid|fpscr|fpexc|q3[0-1]|q2[0-9]|q1[0-9]|q[0-9]|APSR_nzcv|sy)!?(?-i))?\\\\b\",\n      \"name\": \"storage.other.register\"\n    },\n    {\n      \"match\": \"\\\\.(?i)(globl|global|macro|endm|purgem|if|elseif|else|endif|section|text|arm|align|balign|irp|rept|endr|req|unreq|error|short|func|endfunc|hidden|type|fpu|arch|code|altmacro|object_arch|word|int|string)(?-i)\\\\b\",\n      \"name\": \"keyword.control.directive\"\n    },\n    {\n      \"match\": \"armv(2a?|3m?|4t?|5t?e?6(j|t2|zk?|-m)?|7v?e?(-(a|r|m))?|8-a(\\\\+crc)?)\",\n      \"name\": \"keyword.control.arch.arm\"\n    },\n    {\n      \"begin\": \"^\\\\s*#\\\\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef|endif)\\\\b\",\n      \"end\": \"(?=(?://|/\\\\*))|$\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.c\"\n        }\n      ],\n      \"name\": \"meta.preprocessor.c\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.import.c\" } }\n    },\n    {\n      \"match\": \"(?x)\\\\b((?i)\\n\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t(bf(c|i)|(u|s)bfx|(u|s)xta?(h|b)?) |\\n\\t\\t\\t\\t\\t(v(add|cvt|sub|mov|trn|cmp|div|qdmulh|mrs|mul|ld1|qadd|qshrun|st[1234]|addw|mull|mlal|rshrn|swp|qmovun)|qmovun)(\\\\.([isup]?8|[isupf]?16|[isuf]?32|[isu]?64))* |\\n\\t\\t\\t\\t\\t(and|m(rs|sr)|eor|sub|rsb|add|adc|sbc|rsc|tst|teq|cmp|cmn|orr|mov|bic|mvn |\\n\\t\\t\\t\\t\\t\\t(neg) |\\n\\t\\t\\t\\t\\t\\t(lsr|lsl|ror|asr) # shift ops either pseudo ops or actual shifts\\n\\t\\t\\t\\t\\t)s? |\\n\\t\\t\\t\\t\\t(mul|mla|mull|smlabb) |\\n\\t\\t\\t\\t\\t(mov(w|t)) |\\n\\t\\t\\t\\t\\trev(8|16)? |\\n\\t\\t\\t\\t\\t(pld|adr|adrl|vswp)\\n\\t\\t\\t\\t)\\n\\t\\t\\t\\t(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))?\\\\b\",\n      \"name\": \"support.function.mnemonic.arithmetic\"\n    },\n    {\n      \"match\": \"(?x)\\\\b((?i)(\\n\\t\\t\\t\\t\\tswi|svc|wfi|\\n\\t\\t\\t\\t\\tdmb | clrex | dsb | isb |\\n\\t\\t\\t\\t\\tv(ldr|str|push|pop) |\\n\\t\\t\\t\\t\\t(push|pop) |\\n\\t\\t\\t\\t\\t(st|ld)(\\n\\t\\t\\t\\t\\t    p |\\n\\t\\t\\t\\t\\t\\tr(ex|s?(h|b)|d)? |\\n\\t\\t\\t\\t\\t\\tm(\\n\\t\\t\\t\\t\\t\\t\\t(f|e)(d|a) |\\n\\t\\t\\t\\t\\t\\t\\t(d|i)(b|a)\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t) |\\n\\t\\t\\t\\t\\tb(l|x|lx|lr|r)? |\\n\\t\\t\\t\\t\\t(i|e)?ret|\\n\\t\\t\\t\\t\\tb\\\\.(eq|ne|hs|cs|lo|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|nv)+ |\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t(c|t)?bn?z|\\n\\t\\t\\t\\t)+(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))\\\\b\",\n      \"name\": \"support.function.mnemonic.memory\"\n    },\n    {\n      \"match\": \"\\\\b((?i)(def(b|w|s)|equ|(include|get)(\\\\s+([a-zA-Z_]+[0-9a-zA-Z_]*|[0-9]+[a-zA-Z_]+[0-9a-zA-Z_]*?)\\\\.s)?)?(?-i))\\\\b\",\n      \"name\": \"meta.preprocessor.c.include\"\n    },\n    {\n      \"match\": \"\\\\b((?i)(align)(?-i))?\\\\b\",\n      \"name\": \"storage.type.c.memaccess\"\n    },\n    { \"match\": \"\\\\s+\\\\\\\".+\\\\\\\"\", \"name\": \"string\" },\n    {\n      \"match\": \"\\\\b((?i)nop(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))?\\\\b\",\n      \"name\": \"comment.nop\"\n    },\n    {\n      \"begin\": \"\\\\s\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.c\"\n        },\n        { \"include\": \"$base\" }\n      ],\n      \"name\": \"storage.type.c.memaccess\"\n    },\n    { \"match\": \"(\\\\b|\\\\s+)\\\\=\\\\b\", \"name\": \"keyword.control.evaluation\" },\n    {\n      \"match\": \"(\\\\b|\\\\s+)(\\\\#)?-?(0x|&)[0-9a-fA-F_]+\\\\b\",\n      \"name\": \"constant.numeric.hex\"\n    },\n    {\n      \"match\": \"(\\\\b|\\\\s+)\\\\#-?[0-9a-zA-Z_]+\\\\b\",\n      \"name\": \"constant.numeric.literal\"\n    },\n    { \"match\": \"(\\\\b|\\\\s+)[0-9]+\\\\b\", \"name\": \"constant.numeric.dec\" },\n    {\n      \"match\": \"\\\\b([a-zA-Z_]+[0-9a-zA-Z_]*|[0-9]+[a-zA-Z_]+[0-9a-zA-Z_]*)\\\\b\",\n      \"name\": \"meta.function.source.arm.label\"\n    }\n  ],\n  \"name\": \"ARM Assembly\",\n  \"uuid\": \"433AE307-8DE5-4856-8113-37659B1AFDA4\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/asciidoctor.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.asciidoc\",\n  \"fileTypes\": [\"adoc\", \"ad\", \"asciidoc\"],\n  \"patterns\": [\n    { \"include\": \"#lists\" },\n    { \"include\": \"#blocks\" },\n    { \"include\": \"#section_titles\" },\n    { \"include\": \"#lines\" },\n    { \"include\": \"#inline\" },\n    { \"include\": \"#characters\" }\n  ],\n  \"repository\": {\n    \"block_admonition_label\": {\n      \"comment\": \"Label of an admonition block.\\n\\nExamples:\\n  NOTE: This is a admonition block.\\n  WARNING:  Be aware of them!\\n\",\n      \"match\": \"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):(?=\\\\s+)\",\n      \"name\": \"support.constant.admonitionword.asciidoc\"\n    },\n    \"mark_double\": {\n      \"end\": \"\\\\#\\\\#\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?  # might start with an attribute list (indeed, that is its purpose)\\n(?<!\\\\\\\\)         # must not be preceded by escape\\n(\\\\#\\\\#)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.unquoted.double.begin.asciidoc\"\n        }\n      },\n      \"contentName\": \"string.unquoted.unquotedinner.double.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#strong_double\" },\n        { \"include\": \"#emphasis_double\" },\n        { \"include\": \"#monospaced_double\" },\n        { \"include\": \"#strong\" },\n        { \"include\": \"#emphasis\" },\n        { \"include\": \"#monospaced\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#subscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Marked text (unconstrained variant).\\n\\nExamples:\\n  Lo##re##m ##ipsum dolor##.\\n  Lo[red]##re##m\\n\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.unquoted.double.end.asciidoc\"\n        }\n      },\n      \"name\": \"string.other.unquoted.double.asciidoc\"\n    },\n    \"title_level_0\": {\n      \"match\": \"^(=) (\\\\w.*)$\\\\n?\",\n      \"name\": \"markup.heading.level.0.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.heading.asciidoc\" },\n        \"2\": { \"name\": \"entity.name.section.asciidoc\" }\n      }\n    },\n    \"attribute_list_line\": {\n      \"match\": \"^(\\\\[)[^\\\\[\\\\]]*(\\\\])\\\\s*$\\\\n?\",\n      \"comment\": \"Attribute list as paragraph: single brackets. No need for special treatment of escape; follows literal block, section template as being a more general regex.\\n\",\n      \"name\": \"support.variable.attributelist.asciidoc\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.attributelistline.begin.asciidoc\"\n        },\n        \"2\": { \"name\": \"punctuation.definition.attributelistline.end.asciidoc\" }\n      }\n    },\n    \"title_level_2\": {\n      \"match\": \"^(===) (\\\\w.*)$\\\\n?\",\n      \"name\": \"markup.heading.level.2.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.heading.asciidoc\" },\n        \"2\": { \"name\": \"entity.name.section.asciidoc\" }\n      }\n    },\n    \"xref\": {\n      \"match\": \"(?<!<)(<<)([^,]*?)((,\\\\s*)(.*?))?(>>)(?!<)\",\n      \"comment\": \"Internal cross-reference\\n\\nExamples:\\n  <<lorem>>\\n  <<lorem, see here>>\\n\",\n      \"name\": \"meta.xref.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.character.xref.begin.asciidoc\" },\n        \"6\": { \"name\": \"constant.character.xref.end.asciidoc\" },\n        \"2\": { \"name\": \"markup.underline.term.xref.asciidoc\" },\n        \"5\": { \"name\": \"variable.parameter.xref.asciidoc\" }\n      }\n    },\n    \"title_level_4\": {\n      \"match\": \"^(=====) (\\\\w.*)$\\\\n?\",\n      \"name\": \"markup.heading.level.4.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.heading.asciidoc\" },\n        \"2\": { \"name\": \"entity.name.section.asciidoc\" }\n      }\n    },\n    \"passthrough\": {\n      \"end\": \"\\\\1\",\n      \"begin\": \"(\\\\+\\\\+\\\\+|\\\\$\\\\$)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"constant.character.passthru.begin.asciidoc\" }\n      },\n      \"contentName\": \"variable.parameter.passthruinner.asciidoc\",\n      \"comment\": \"Inline triple-plus and double dolar passthrough.\\n\\nExamples:\\n  Lo+++re++++m +++ipsum dolor+++.\\n  Lo$$re$$m $$ipsum dolor$$.\\n\\nNote: Must be dead first among the inlines, so as to take priority.\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.character.passthru.end.asciidoc\" }\n      },\n      \"name\": \"meta.passthru.inline.asciidoc\"\n    },\n    \"blocks\": {\n      \"patterns\": [\n        { \"include\": \"#block_literal\" },\n        { \"include\": \"#block_comment\" },\n        { \"include\": \"#block_listing\" },\n        { \"include\": \"#block_source_fenced\" },\n        { \"include\": \"#block_sidebar\" },\n        { \"include\": \"#block_pass\" },\n        { \"include\": \"#block_quote\" },\n        { \"include\": \"#block_example\" },\n        { \"include\": \"#block_open\" }\n      ]\n    },\n    \"block_source_fenced\": {\n      \"end\": \"^\\\\1\\\\s*$\\\\n?\",\n      \"begin\": \"^(```)(\\\\w+)?\\\\s*$\\\\n?\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.listing.begin.asciidoc\" }\n      },\n      \"contentName\": \"source.block.listing.content.asciidoc\",\n      \"patterns\": [{ \"include\": \"#inline_callout\" }],\n      \"comment\": \"Fenced code block (ala Markdown)\\n\\nExamples:\\n  ```rb\\n  puts 'Hello world!'\\n  ```\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.listing.end.asciidoc\" }\n      },\n      \"name\": \"meta.embedded.block.listing.asciidoc\"\n    },\n    \"section_template\": {\n      \"match\": \"(?x)^\\n(\\\\[)  # in square brackets\\n(template\\\\s*=\\\\s*)?(\\\")?  # might start with template-equals and might have template name in quotes\\n(\\nsect\\\\d|abstract|preface|colophon|dedication|glossary|bibliography|synopsis|appendix|index # fixed list of known templates\\n)\\n(\\\".*(\\\\])|(\\\\]))  # either close the quote (and perhaps go on) and close the bracket, or close the bracket immediately\\n\\\\s*$\\\\n?\",\n      \"comment\": \"fixed list of known template names\",\n      \"name\": \"variable.parameter.sectiontemplate.asciidoc\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.sectiontemplate.begin.asciidoc\"\n        },\n        \"6\": { \"name\": \"punctuation.definition.sectiontemplate.end.asciidoc\" },\n        \"4\": { \"name\": \"meta.tag.sectiontemplate.asciidoc\" },\n        \"7\": { \"name\": \"punctuation.definition.sectiontemplate.end.asciidoc\" }\n      }\n    },\n    \"block_id\": {\n      \"match\": \"^(\\\\[\\\\[)([^\\\\[].*)(\\\\]\\\\])\\\\s*$\\\\n?\",\n      \"comment\": \"A block id (i.e. anchor).\\n\\nExamples:\\n  [[myid]]\\n  Lorem ipsum dolor.\\n\",\n      \"name\": \"meta.tag.blockid.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.blockid.begin.asciidoc\" },\n        \"2\": { \"name\": \"markup.underline.blockid.id.asciidoc\" },\n        \"3\": { \"name\": \"punctuation.definition.blockid.end.asciidoc\" }\n      }\n    },\n    \"monospaced_double\": {\n      \"end\": \"``\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?  # might start with attribute list\\n(?<!\\\\\\\\)         # must not be preceded by escape\\n(``)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": { \"name\": \"punctuation.definition.literal.double.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.literalinner.double.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#strong_double\" },\n        { \"include\": \"#emphasis_double\" },\n        { \"include\": \"#mark_double\" },\n        { \"include\": \"#strong\" },\n        { \"include\": \"#emphasis\" },\n        { \"include\": \"#mark\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#subscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Monospaced text (unconstrained variant).\\n\\nExamples:\\n  Lo``re``m ``ipsum dolor``.\\n  Lo[red]``re``m\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.literal.double.end.asciidoc\" }\n      },\n      \"name\": \"string.other.literal.double.asciidoc\"\n    },\n    \"subscript\": {\n      \"end\": \"~\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?  # might start with attribute list\\n(?<!\\\\\\\\)         # must not be preceded by escape\\n(~)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.subscript.begin.asciidoc\"\n        }\n      },\n      \"contentName\": \"meta.subscriptinner.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#strong_double\" },\n        { \"include\": \"#emphasis_double\" },\n        { \"include\": \"#monospaced_double\" },\n        { \"include\": \"#mark_double\" },\n        { \"include\": \"#strong\" },\n        { \"include\": \"#emphasis\" },\n        { \"include\": \"#monospaced\" },\n        { \"include\": \"#mark\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Subscript text.\\n\\nExamples:\\n  E=mc^2^\\n  E=mc[red]^2^\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.subscript.end.asciidoc\" }\n      },\n      \"name\": \"string.other.subscript.asciidoc\"\n    },\n    \"entity_name\": {\n      \"comment\": \"Character entity reference\\n\\nExamples:\\n  &nbsp;\\n  &sup2;\\n\",\n      \"match\": \"(?<!\\\\\\\\)&([a-zA-Z][a-zA-Z0-9]*);\",\n      \"name\": \"constant.character.entity.xml.asciidoc\"\n    },\n    \"superscript\": {\n      \"end\": \"^\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?  # might start with attribute list\\n(?<!\\\\\\\\)         # no preceding escape\\n(\\\\^)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.superscript.begin.asciidoc\"\n        }\n      },\n      \"contentName\": \"meta.superscriptinner.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#strong_double\" },\n        { \"include\": \"#emphasis_double\" },\n        { \"include\": \"#monospaced_double\" },\n        { \"include\": \"#mark_double\" },\n        { \"include\": \"#strong\" },\n        { \"include\": \"#emphasis\" },\n        { \"include\": \"#monospaced\" },\n        { \"include\": \"#mark\" },\n        { \"include\": \"#subscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Superscript text.\\n\\nExamples:\\n  H~2~O\\n  H[red]~2~O\\n\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.superscript.end.asciidoc\"\n        }\n      },\n      \"name\": \"string.other.superscript.asciidoc\"\n    },\n    \"biblio_anchor\": {\n      \"match\": \"(?<!\\\\[)(\\\\[\\\\[\\\\[).*?(\\\\]\\\\]\\\\])(?!\\\\])\",\n      \"comment\": \"Bibliography anchor\\n\\nExamples:\\n  [[[Lorem ipsum]]]\\n\",\n      \"name\": \"storage.type.reference.biblioanchor.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.biblioanchor.begin.asciidoc\" },\n        \"2\": { \"name\": \"punctuation.definition.biblioanchor.end.asciidoc\" }\n      }\n    },\n    \"block_comment\": {\n      \"end\": \"^\\\\1\\\\s*$\\\\n?\",\n      \"begin\": \"^(/{4,})\\\\s*$\\\\n?\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.comment.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.block.comment.content.asciidoc\",\n      \"patterns\": [{ \"include\": \"#macro\" }],\n      \"comment\": \"Examples:\\n  ////\\n  A multi-line comment.\\n  Notice it's a delimited block.\\n  ////\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.comment.end.asciidoc\" }\n      },\n      \"name\": \"comment.block.asciidoc\"\n    },\n    \"ulist_item_marker\": {\n      \"match\": \"^(\\\\s*(\\\\-|\\\\*{1,5}))\\\\s+(?=\\\\S)\",\n      \"comment\": \"Marker of an unordered (bullet) list item.\\n\\nExamples:\\n  * level 1\\n  ** level 2\\n  *** level 3\\n  **** level 4\\n  ***** level 5\\n  - level 1\\n  -- level 2\\n  --- level 3\\n  ---- level 4\\n  ----- level 5\\n\",\n      \"name\": \"markup.list.bulleted.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"string.unquoted.list.bullet.asciidoc\" },\n        \"2\": { \"name\": \"constant.numeric.list.bullet.asciidoc\" }\n      }\n    },\n    \"indexterm_double\": {\n      \"match\": \"(?<!\\\\()(\\\\({2})([^\\\\(\\\\s].*?)(\\\\){2})(?!\\\\))\",\n      \"comment\": \"Double parenthesis indexterm.\\n\\nExamples:\\n  ((Arthur))\\n\",\n      \"name\": \"variable.other.indexterm.double.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.character.indexterm.double.begin.asciidoc\" },\n        \"3\": { \"name\": \"constant.character.indexterm.double.end.asciidoc\" }\n      }\n    },\n    \"inline\": {\n      \"patterns\": [\n        { \"include\": \"#passthrough\" },\n        { \"include\": \"#strong_double\" },\n        { \"include\": \"#emphasis_double\" },\n        { \"include\": \"#monospaced_double\" },\n        { \"include\": \"#mark_double\" },\n        { \"include\": \"#strong\" },\n        { \"include\": \"#emphasis\" },\n        { \"include\": \"#monospaced\" },\n        { \"include\": \"#mark\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#subscript\" }\n      ]\n    },\n    \"macro\": {\n      \"match\": \"(?x)\\n(?:\\n  ((?:https?|mailto|ftp|file)  # specify separately so we can mark them as links that TextMate opens\\n  ?:{1}  # inline only\\n  \\\\S*)   # (others such as image are partial URLs and/or TextMate cannot handle them)\\n|\\n  (([a-zA-Z0-9][a-zA-Z0-9_]*)\\n  (:{1,2})\\n  (\\\\S*))\\n)\\n(?:(\\\\[)([^\\\\]]*)(\\\\]))\",\n      \"comment\": \"Note: There are other macro notations, but I match only those that end in\\nsquare brackets.\\n\",\n      \"name\": \"meta.macro.asciidoc\",\n      \"captures\": {\n        \"7\": { \"name\": \"variable.parameter.attributes.macro.asciidoc\" },\n        \"3\": { \"name\": \"keyword.control.name.macro.asciidoc\" },\n        \"8\": { \"name\": \"constant.character.attributes.macro.end.asciidoc\" },\n        \"4\": { \"name\": \"constant.character.separator.macro.asciidoc\" },\n        \"5\": { \"name\": \"markup.underline.target.macro.asciidoc\" },\n        \"1\": { \"name\": \"markup.underline.link.macro.asciidoc\" },\n        \"6\": { \"name\": \"constant.character.attributes.macro.begin.asciidoc\" }\n      }\n    },\n    \"strong\": {\n      \"end\": \"(?x)\\n(?<=\\\\S)(\\\\*)       # delimiter star that must be preceded by a nonspace character\\n(?!\\\\w)            # ...and followed by a nonword character\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?      # might start with an attributes list\\n(?<=^|\\\\W)(?<!\\\\\\\\|})  # must be preceded by nonword character, and not by escape or } (attribute)\\n(\\\\*)(?=\\\\S)          # delimiter star that must be followed by a nonspace character\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": { \"name\": \"punctuation.definition.bold.single.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.boldinner.single.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#emphasis_double\" },\n        { \"include\": \"#monospaced_double\" },\n        { \"include\": \"#mark_double\" },\n        { \"include\": \"#emphasis\" },\n        { \"include\": \"#monospaced\" },\n        { \"include\": \"#mark\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#subscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Strong (bold) text (constrained variant).\\n\\nExamples:\\n  *Lorem ipsum* dolor\\n  [red]*Lorem ipsum* dolor\\n\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.bold.single.end.asciidoc\" }\n      },\n      \"name\": \"markup.bold.single.asciidoc\"\n    },\n    \"attribute_entry\": {\n      \"end\": \"$\\\\n?\",\n      \"begin\": \"(?x)\\n^(:)                          # opening delimiter\\n(!)?                          # bang symbol (unset attribute)\\n([A-Za-z0-9_][A-Za-z0-9_-]*)  # attribute name\\n(!)?                          # bang symbol (unset attribute)\\n(:)                           # closing delimiter\\n(?:\\\\s+|(?=$))\",\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"support.variable.attribute.asciidoc\" },\n        \"1\": {\n          \"name\": \"punctuation.definition.attributeentry.attrname.begin.asciidoc\"\n        },\n        \"4\": { \"name\": \"punctuation.definition.attributeentry.unset.asciidoc\" },\n        \"2\": { \"name\": \"punctuation.definition.attributeentry.unset.asciidoc\" },\n        \"5\": {\n          \"name\": \"punctuation.definition.attributeentry.attrname.end.asciidoc\"\n        }\n      },\n      \"contentName\": \"meta.attributeentry.value.asciidoc\",\n      \"patterns\": [{ \"include\": \"#characters\" }],\n      \"comment\": \"An attribute entry.\\n\\nExamples:\\n  :my-attribute: value\\n  :sectnums!:\\n  :!sectnums:\\n\",\n      \"name\": \"meta.attributeentry.asciidoc\"\n    },\n    \"block_listing\": {\n      \"end\": \"^\\\\1\\\\s*$\\\\n?\",\n      \"begin\": \"^(\\\\-{4,})\\\\s*$\\\\n?\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.listing.begin.asciidoc\" }\n      },\n      \"contentName\": \"source.block.listing.content.asciidoc\",\n      \"patterns\": [{ \"include\": \"#inline_callout\" }],\n      \"comment\": \"Examples:\\n  ----\\n  Lorem ipsum.\\n  ----\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.listing.end.asciidoc\" }\n      },\n      \"name\": \"meta.embedded.block.listing.asciidoc\"\n    },\n    \"monospaced\": {\n      \"end\": \"(?x)\\n(?<=\\\\S)(`)        # delimiter backtick that must be preceded by a nonspace character\\n(?!\\\\w)            # ...and followed by a nonword character\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?      # might start with attributes list\\n(?<=^|\\\\W)(?<!\\\\\\\\|})  # must be preceded by nonword character, and not by escape or } (attribute)\\n(`)(?=\\\\S)           # delimiter backtick that must be followed by a nonspace character\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": { \"name\": \"punctuation.definition.literal.single.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.literalinner.single.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#strong_double\" },\n        { \"include\": \"#emphasis_double\" },\n        { \"include\": \"#mark_double\" },\n        { \"include\": \"#strong\" },\n        { \"include\": \"#emphasis\" },\n        { \"include\": \"#mark\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#subscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Monospaced text (constrained variant).\\n\\nExamples:\\n  `Lorem ipsum` dolor\\n  [red]`Lorem ipsum` dolor\\n\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.literal.single.end.asciidoc\" }\n      },\n      \"name\": \"string.other.literal.single.asciidoc\"\n    },\n    \"lists\": {\n      \"comment\": \"My strategy for lists (and similar) is not to try to treat entire paragraphs as lists, but only call out the opening.\\n\",\n      \"patterns\": [\n        { \"include\": \"#block_admonition_label\" },\n        { \"include\": \"#ulist_item_marker\" },\n        { \"include\": \"#olist_item_marker\" },\n        { \"include\": \"#dlist_item_label\" },\n        { \"include\": \"#colist_item_marker\" }\n      ]\n    },\n    \"dlist_item_label\": {\n      \"end\": \"(:{2,4})(?:\\\\s|$\\\\n?)\",\n      \"begin\": \"^\\\\s*(?=.*:{2,4}(?:\\\\s|$))\",\n      \"contentName\": \"meta.list.label.asciidoc\",\n      \"patterns\": [{ \"include\": \"#inline\" }, { \"include\": \"#characters\" }],\n      \"comment\": \"Label of a definition (labeled) list item.\\n\\nExamples:\\n  Label level 1:: lorem ipsum\\n  Label level 2::: dolor sit amet\\n  Label level 3:::: consectetur\\n  Label level 1::\\n    lorem ipsum\\n  Another label :: lorem ipsum\\n  Last::label:: dolor sit amet\\n\\nNote: This rule is not strictly correct, because Asciidoctor allows\\ndouble colon followed by a space inside a label, i.e. it matches the\\n*last* double colon, not the first. I don't know how to do that\\n*effectively.\\n\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"constant.labeledlist.separator.asciidoc\" }\n      },\n      \"name\": \"markup.list.labeled.asciidoc\"\n    },\n    \"inline_callout\": {\n      \"match\": \"(?<!\\\\\\\\)(<)\\\\d+(>)\",\n      \"comment\": \"Callout label\\n\\nExamples:\\n  <1>\\n  <42>\\n\",\n      \"name\": \"constant.other.callout.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.callout.begin.asciidoc\" },\n        \"2\": { \"name\": \"punctuation.definition.callout.end.asciidoc\" }\n      }\n    },\n    \"block_sidebar\": {\n      \"end\": \"^\\\\1\\\\s*$\\\\n?\",\n      \"begin\": \"^(\\\\*{4,})\\\\s*$\\\\n?\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.sidebar.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.block.sidebar.content.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#lists\" },\n        { \"include\": \"#block_comment\" },\n        { \"include\": \"#block_listing\" },\n        { \"include\": \"#lines\" },\n        { \"include\": \"#inline\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Examples:\\n  ****\\n  Lorem ipsum\\n  ****\\n\\nNote: Might need to add more includes, but these are the ones that arise\\nfor me in practice.\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.sidebar.end.asciidoc\" }\n      },\n      \"name\": \"string.quoted.block.sidebar.asciidoc\"\n    },\n    \"emphasis_double\": {\n      \"end\": \"__\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?  # might start with attribute list\\n(?<!\\\\\\\\)         # must not be preceded by escape\\n(__)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": { \"name\": \"punctuation.definition.italic.double.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.italicinner.double.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#strong_double\" },\n        { \"include\": \"#monospaced_double\" },\n        { \"include\": \"#mark_double\" },\n        { \"include\": \"#strong\" },\n        { \"include\": \"#monospaced\" },\n        { \"include\": \"#mark\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#subscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Emphasized (italic) text (unconstrained variant).\\n\\nExamples:\\n  Lo__re__m __ipsum dolor__.\\n  Lo[red]__re__m\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.italic.double.end.asciidoc\" }\n      },\n      \"name\": \"markup.italic.double.asciidoc\"\n    },\n    \"attribute_reference\": {\n      \"match\": \"({)([A-Za-z0-9_][A-Za-z0-9_-]*)(})\",\n      \"comment\": \"Examples:\\n  {my-attribute}\\n\",\n      \"name\": \"variable.other\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.attributes.reference.begin.asciidoc\"\n        },\n        \"2\": { \"name\": \"support.variable.attribute.asciidoc\" },\n        \"3\": { \"name\": \"constant.character.attributes.reference.end.asciidoc\" }\n      }\n    },\n    \"entity_number\": {\n      \"comment\": \"Numeric character reference\\n\\nExamples:\\n  &#x278a;\\n  &#182;\\n\",\n      \"match\": \"(?<!\\\\\\\\)&#(x?[0-9a-fA-f]{2,4});\",\n      \"name\": \"constant.character.entity.asciidoc\"\n    },\n    \"block_literal\": {\n      \"end\": \"^\\\\1\\\\s*$\\\\n?\",\n      \"begin\": \"^(\\\\.{4,})\\\\s*$\\\\n?\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.literal.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.block.literal.content.asciidoc\",\n      \"patterns\": [{ \"include\": \"#inline_callout\" }],\n      \"comment\": \"Examples:\\n  ....\\n  Lorem ipsum.\\n  ....\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.literal.end.asciidoc\" }\n      },\n      \"name\": \"string.literal.block.delimited.asciidoc\"\n    },\n    \"title_level_1\": {\n      \"match\": \"^(==) (\\\\w.*)$\\\\n?\",\n      \"name\": \"markup.heading.level.1.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.heading.asciidoc\" },\n        \"2\": { \"name\": \"entity.name.section.asciidoc\" }\n      }\n    },\n    \"title_level_3\": {\n      \"match\": \"^(====) (\\\\w.*)$\\\\n?\",\n      \"name\": \"markup.heading.level.3.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.heading.asciidoc\" },\n        \"2\": { \"name\": \"entity.name.section.asciidoc\" }\n      }\n    },\n    \"title_level_5\": {\n      \"match\": \"^(======) (\\\\w.*)$\\\\n?\",\n      \"name\": \"markup.heading.level.5.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.heading.asciidoc\" },\n        \"2\": { \"name\": \"entity.name.section.asciidoc\" }\n      }\n    },\n    \"inline_break\": {\n      \"comment\": \"Line hard break with a plus sign (+).\\n\\nExamples:\\n  Rubies are red, +\\n  Topazes are blue.\\n\",\n      \"match\": \"(?<=\\\\s)\\\\+$\\\\n?\",\n      \"name\": \"constant.linebreak.asciidoc\"\n    },\n    \"block_pass\": {\n      \"end\": \"^\\\\1\\\\s*$\\\\n?\",\n      \"begin\": \"^(\\\\+{4,})\\\\s*$\\\\n?\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.passthrough.begin.asciidoc\" }\n      },\n      \"contentName\": \"text.xml.block.passthrough.content.asciidoc\",\n      \"patterns\": [{ \"include\": \"text.xml\" }],\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.passthrough.end.asciidoc\" }\n      },\n      \"name\": \"meta.embedded.block.passthrough.asciidoc\"\n    },\n    \"strong_double\": {\n      \"end\": \"\\\\*\\\\*\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?  # might start with an attribute list\\n(?<!\\\\\\\\)         # must not be preceded by escape\\n(\\\\*\\\\*)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": { \"name\": \"punctuation.definition.bold.double.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.boldinner.double.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#emphasis_double\" },\n        { \"include\": \"#monospaced_double\" },\n        { \"include\": \"#mark_double\" },\n        { \"include\": \"#emphasis\" },\n        { \"include\": \"#monospaced\" },\n        { \"include\": \"#mark\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#subscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Strong (bold) text (unconstrained variant).\\n\\nExamples:\\n  Lo**re**m **ipsum dolor**.\\n  Lo[red]**re**m\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.bold.double.end.asciidoc\" }\n      },\n      \"name\": \"markup.bold.double.asciidoc\"\n    },\n    \"block_example\": {\n      \"end\": \"^\\\\1\\\\s*$\\\\n?\",\n      \"begin\": \"^(={4,})\\\\s*$\\\\n?\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.example.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.block.example.content.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#lists\" },\n        { \"include\": \"#block_listing\" },\n        { \"include\": \"#lines\" },\n        { \"include\": \"#inline\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Examples:\\n  ====\\n  Lorem ipsum.\\n  ====\\n\\nNote: Might need to add more includes, but these are the ones that arise in\\npractice for me.\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.example.end.asciidoc\" }\n      },\n      \"name\": \"string.unquoted.block.example.asciidoc\"\n    },\n    \"block_page_break\": {\n      \"comment\": \"A page break.\\n\\nExamples:\\n  <<<\\n  <<<<<\\n\",\n      \"match\": \"^<{3,}$\\\\n?\",\n      \"name\": \"meta.separator.pagebreak.asciidoc\"\n    },\n    \"macro_pass\": {\n      \"end\": \"\\\\]\",\n      \"captures\": {\n        \"3\": { \"name\": \"markup.underline.target.macro.asciidoc\" },\n        \"1\": { \"name\": \"keyword.control.name.macro.pass.asciidoc\" },\n        \"4\": { \"name\": \"constant.character.attributes.macro.begin.asciidoc\" },\n        \"2\": { \"name\": \"constant.character.separator.macro.asciidoc\" }\n      },\n      \"begin\": \"(?x)\\n(pass)\\n(:{1,2})\\n(\\\\S*)\\n(\\\\[)(?=[^\\\\]]*\\\\])\",\n      \"contentName\": \"variable.parameter.attributes.macro.pass.asciidoc\",\n      \"patterns\": [{ \"include\": \"text.xml\" }],\n      \"comment\": \"Passthrough macro\\n\\nExamples:\\n  pass:[Lorem ipsum]\\n  pass::[Lorem ipsum]\\n\",\n      \"name\": \"meta.macro.pass.asciidoc\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.character.attributes.macro.end.asciidoc\" }\n      }\n    },\n    \"mark\": {\n      \"end\": \"(?x)\\n(?<=\\\\S)(\\\\#)       # delimiter hash that must be preceded by a nonspace character\\n(?!\\\\w)            # ...and followed by a nonword character\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?      # might start with attribute list (darned well better or why are we here)\\n(?<=^|\\\\W)(?<!\\\\\\\\|})  # must be preceded by nonword character, and not by escape or } (attribute)\\n(\\\\#)(?=\\\\S)          # delimiter hash that must be followed by a nonspace character\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.unquoted.single.begin.asciidoc\"\n        }\n      },\n      \"contentName\": \"string.unquoted.unquotedinner.single.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#strong_double\" },\n        { \"include\": \"#emphasis_double\" },\n        { \"include\": \"#monospaced_double\" },\n        { \"include\": \"#strong\" },\n        { \"include\": \"#emphasis\" },\n        { \"include\": \"#monospaced\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#subscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Marked text (constrained variant).\\n\\nExamples:\\n  #Lorem ipsum# dolor\\n  [red]#Lorem ipsum# dolor\\n\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.unquoted.single.end.asciidoc\"\n        }\n      },\n      \"name\": \"string.other.unquoted.single.asciidoc\"\n    },\n    \"colist_item_marker\": {\n      \"match\": \"^(\\\\s*((<)\\\\d+?(>)))\\\\s+(?=\\\\S)\",\n      \"comment\": \"Marker of a callout list item.\\n\\nExamples:\\n  <1> a callout\\n  <42> another callout\\n\",\n      \"name\": \"markup.list.numbered.callout.asciidoc\",\n      \"captures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.calloutlistnumber.begin.asciidoc\"\n        },\n        \"1\": { \"name\": \"string.unquoted.list.callout.asciidoc\" },\n        \"4\": {\n          \"name\": \"punctuation.definition.calloutlistnumber.end.asciidoc\"\n        },\n        \"2\": { \"name\": \"constant.numeric.callout.asciidoc\" }\n      }\n    },\n    \"characters\": {\n      \"patterns\": [\n        { \"include\": \"#attribute_reference\" },\n        { \"include\": \"#entity_number\" },\n        { \"include\": \"#entity_name\" },\n        { \"include\": \"#escape\" },\n        { \"include\": \"#replacement\" },\n        { \"include\": \"#macro_pass\" },\n        { \"include\": \"#macro\" },\n        { \"include\": \"#xref\" },\n        { \"include\": \"#biblio_anchor\" },\n        { \"include\": \"#indexterm_triple\" },\n        { \"include\": \"#indexterm_double\" }\n      ]\n    },\n    \"block_title\": {\n      \"match\": \"^(\\\\.)\\\\w.*$\\\\n?\",\n      \"comment\": \"Title of a block.\\n\\nExamples:\\n  .My title\\n  Lorem ipsum dolor.\\n\",\n      \"name\": \"markup.heading.block.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.blockheading.asciidoc\" }\n      }\n    },\n    \"replacement\": {\n      \"match\": \"(?x)\\n(?<!\\\\\\\\)  # must not be escaped\\n(\\n  \\\\(C\\\\)\\n  | \\\\(TM\\\\)\\n  | \\\\(R\\\\)\\n  | ((?<!\\\\-)\\\\-\\\\-(?!\\\\-))    # exactly two, and even this may not rule out all that I want to\\n  | ((?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.))  # exactly three\\n  | \\\\->\\n  | <\\\\-\\n  | =>\\n  | <=\\n)\",\n      \"name\": \"constant.character.replacement.asciidoc\"\n    },\n    \"block_quote\": {\n      \"end\": \"^\\\\1\\\\s*$\\\\n?\",\n      \"begin\": \"^(_{4,})\\\\s*$\\\\n?\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.quote.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.block.quote.content.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#lines\" },\n        { \"include\": \"#inline\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Examples:\\n  ____\\n  Lorem ipsum\\n  ____\\n\\nNote: Might need to add more includes, but these are the ones that arise for me in practice.\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.quote.end.asciidoc\" }\n      },\n      \"name\": \"markup.quote.block.asciidoc\"\n    },\n    \"olist_item_marker\": {\n      \"match\": \"^(\\\\s*(\\\\.{1,5}))\\\\s+(?=\\\\S)\",\n      \"comment\": \"Marker of an ordered (numbered) list item.\\n\\nExamples:\\n  . level 1\\n  .. level 2\\n  ... level 3\\n  .... level 4\\n  ..... level 5\\n\\nNote: The space distinguishes it from a block title.\\n\",\n      \"name\": \"markup.list.numbered.dotted.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"string.unquoted.list.dotted.asciidoc\" },\n        \"2\": { \"name\": \"constant.numeric.list.dot.asciidoc\" }\n      }\n    },\n    \"emphasis\": {\n      \"end\": \"(?x)\\n(?<=\\\\S)(_)        # delimiter underscore that must be preceded by a nonspace character\\n(?!\\\\w)            # ...and followed by a nonword character\",\n      \"begin\": \"(?x)\\n(\\\\[[^\\\\]]*?\\\\])?      # might be preceded by an attributes list\\n(?<=^|\\\\W)(?<!\\\\\\\\|})  # must be preceded by nonword character, and not by escape or } (attribute)\\n(_)(?=\\\\S)           # delimiter underscore that must be followed by a nonspace character\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.variable.attributelist.asciidoc\" },\n        \"2\": { \"name\": \"punctuation.definition.italic.single.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.italicinner.single.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#strong_double\" },\n        { \"include\": \"#monospaced_double\" },\n        { \"include\": \"#mark_double\" },\n        { \"include\": \"#strong\" },\n        { \"include\": \"#monospaced\" },\n        { \"include\": \"#mark\" },\n        { \"include\": \"#superscript\" },\n        { \"include\": \"#subscript\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Emphasized (italic) text (constrained variant).\\n\\nExamples:\\n  _Lorem ipsum_ dolor\\n  [red]_Lorem ipsum_ dolor\\n\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.italic.single.end.asciidoc\" }\n      },\n      \"name\": \"markup.italic.single.asciidoc\"\n    },\n    \"escape\": {\n      \"comment\": \"List of special characters that may be escaped.\\n\\nNote: I do not really know if this is a good list, adopted wholesale from\\noriginal bundle.\\n\",\n      \"match\": \"\\\\\\\\(?=[-`*_#+.!(){}\\\\[\\\\]\\\\\\\\>:])\",\n      \"name\": \"constant.character.escape.asciidoc\"\n    },\n    \"inline_comment\": {\n      \"match\": \"^(//)([^/\\\\n].*|)$\\\\n?\",\n      \"comment\": \"Inline comment.\\n\\nExamples:\\n  // This is just a comment!\\n\",\n      \"name\": \"comment.line.double-slash.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.line.asciidoc\" },\n        \"2\": { \"name\": \"meta.line.comment.content.asciidoc\" }\n      }\n    },\n    \"indexterm_triple\": {\n      \"match\": \"(?<!\\\\()(\\\\({3})([^\\\\(].*?)(\\\\){3})(?!\\\\))\",\n      \"comment\": \"Triple parenthesis indexterm.\\n\\nExamples:\\n  (((Sword, Broadsword, Excalibur)))\\n\",\n      \"name\": \"variable.other.indexterm.triple.asciidoc\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.character.indexterm.triple.begin.asciidoc\" },\n        \"3\": { \"name\": \"constant.character.indexterm.triple.end.asciidoc\" }\n      }\n    },\n    \"block_open\": {\n      \"end\": \"^\\\\-\\\\-\\\\s*$\\\\n?\",\n      \"begin\": \"^\\\\-\\\\-\\\\s*$\\\\n?\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.open.begin.asciidoc\" }\n      },\n      \"contentName\": \"meta.block.open.content.asciidoc\",\n      \"patterns\": [\n        { \"include\": \"#lists\" },\n        { \"include\": \"#block_comment\" },\n        { \"include\": \"#block_listing\" },\n        { \"include\": \"#block_pass\" },\n        { \"include\": \"#lines\" },\n        { \"include\": \"#inline\" },\n        { \"include\": \"#characters\" }\n      ],\n      \"comment\": \"Examples:\\n  --\\n  Lorem ipsum\\n  --\\nNote: Might need to check on these includes.\\n\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"constant.delimiter.block.open.end.asciidoc\" }\n      },\n      \"name\": \"meta.block.open.asciidoc\"\n    },\n    \"list_continuation\": {\n      \"match\": \"^\\\\+\\\\s*$\\\\n?\",\n      \"name\": \"constant.listcontinuation.asciidoc\"\n    },\n    \"lines\": {\n      \"patterns\": [\n        { \"include\": \"#inline_comment\" },\n        { \"include\": \"#list_continuation\" },\n        { \"include\": \"#inline_break\" },\n        { \"include\": \"#block_page_break\" },\n        { \"include\": \"#block_thematic_break\" },\n        { \"include\": \"#block_title\" },\n        { \"include\": \"#block_id\" },\n        { \"include\": \"#section_template\" },\n        { \"include\": \"#attribute_list_line\" },\n        { \"include\": \"#attribute_entry\" }\n      ]\n    },\n    \"section_titles\": {\n      \"comment\": \"Examples:\\n\\n  = Document Title (Level 0)\\n\\n  == Level 1 Section\\n\\n  === Level 2 Section\\n\",\n      \"patterns\": [\n        { \"include\": \"#title_level_5\" },\n        { \"include\": \"#title_level_4\" },\n        { \"include\": \"#title_level_3\" },\n        { \"include\": \"#title_level_2\" },\n        { \"include\": \"#title_level_1\" },\n        { \"include\": \"#title_level_0\" }\n      ]\n    },\n    \"block_thematic_break\": {\n      \"comment\": \"A thematic break (aka horizontal rule).\\n\\nExamples:\\n  '''\\n  ''''''\\n\",\n      \"match\": \"^'{3,}$\\\\n?\",\n      \"name\": \"meta.separator.ruler.asciidoc\"\n    }\n  },\n  \"name\": \"AsciiDoc (Asciidoctor)\",\n  \"uuid\": \"A2AE6D21-3F08-4978-ADF3-55B5AD580921\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/asl.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"asl\", \"dsl\"],\n  \"name\": \"ASL\",\n  \"scopeName\": \"source.asl\",\n  \"patterns\": [\n    {\n      \"begin\": \"//\",\n      \"end\": \"\\\\n\",\n      \"name\": \"comment.line.double-slash.asl\"\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.asl\"\n    },\n    {\n      \"match\": \"\\\"([^\\\\\\\"]|\\\\\\\\(x|X)[0-9a-fA-F]{1,2}|\\\\\\\\'|\\\\\\\\\\\"|\\\\\\\\a|\\\\\\\\b|\\\\\\\\f|\\\\\\\\n|\\\\\\\\r|\\\\\\\\t|\\\\\\\\v|\\\\\\\\\\\\\\\\|\\\\[0-7]{1,3})*\\\"\",\n      \"name\": \"string.quoted.double.asl\"\n    },\n    {\n      \"match\": \"\\\\+|/|%|\\\\*|-|<<|>>|&|\\\\||\\\\^|~|\\\\+\\\\+|--\",\n      \"name\": \"punctuation.math.asl\"\n    },\n    {\n      \"match\": \"==|!=|<|>|<=|>=|&&|\\\\|\\\\||!\",\n      \"name\": \"punctuation.logical.asl\"\n    },\n    {\n      \"match\": \"=|\\\\+=|/=|%=|\\\\*=|-=|<<=|>>=|&=|\\\\|=|\\\\^=\",\n      \"name\": \"punctuation.assign.asl\"\n    },\n    {\n      \"match\": \"\\\\[|\\\\]|\\\\(|\\\\)|\\\\{|\\\\}\",\n      \"name\": \"meta.brackets.asl\"\n    },\n    {\n      \"match\": \"\\\\b(AccessAs|Acquire|Add|Alias|And|Arg[0-9]|BankField|Break|BreakPoint|Buffer|Case|Concatenate|ConcatenateResTemplate|CondRefOf|Connection|Continue|CopyObject|CreateBitField|CreateByteField|CreateDWordField|CreateField|CreateQWordField|CreateWordField|DataTableRegion|Debug|Decrement|Default|DefinitionBlock|DerefOf|Device|Divide|DMA|DWordIO|DWordMemory|DWordSpace|EisaId|Else|ElseIf|EndDependentFn|Event|ExtendedIO|ExtendedMemory|ExtendedSpace|External|Fatal|Field|FindSetLeftBit|FindSetRightBit|FixedDMA|FixedIO|Fprintf|FromBCD|Function|GpioInt|GpioIo|I2CSerialBusV2|If|Include|Increment|Index|IndexField|Interrupt|IO|IRQ|IRQNoFlags|LAnd|LEqual|LGreater|LGreaterEqual|LLess|LLessEqual|LNot|LNotEqual|Load|LoadTable|Local[0-9]|LOr|Match|Memory24|Memory32|Memory32Fixed|Method|Mid|Mod|Multiply|Mutex|Name|NAnd|NoOp|NOr|Not|Notify|ObjectType|Offset|OperationRegion|Or|Package|PowerResource|Printf|Processor|QWordIO|QWordMemory|QWordSpace|RawDataBuffer|RefOf|Register|Release|Reset|ResourceTemplate|Return|Scope|ShiftLeft|ShiftRight|Signal|SizeOf|Sleep|SPISerialbusV2|Stall|StartDependentFn|StartDependentFnNoPri|Store|Subtract|Switch|ThermalZone|Timer|ToBCD|ToBuffer|ToDecimalString|ToHexString|ToInteger|ToPLD|ToString|ToUUID|Unicode|Unload|UARTSerialBusV2|VendorLong|VendorShort|Wait|While|WordBusNumber|WordIO|WordSpace|Xor)\\\\b\",\n      \"name\": \"support.function.any-method.asl\"\n    },\n    {\n      \"match\": \"\\\\b(_AC[0-9]|_ADR|_AEI|_ALC|_ALI|_ALN|_ALP|_ALR|_ALT|_ART|_ASI|_ASZ|_ATT|_BAS|_BBN|_BCL|_BCM|_BCT|_BDN|_BIF|_BI[0-9]|_BLT|_BM|_BMA|_BMC|_BMD|_BMS|_BQC|_BST|_BTH|_BTM|_BTP|_CBA|_CDM|_CID|_CLS|_CPC|_CRS|_CRT|_CSD|_CST|_CWS|_DBT|_DCK|_DCS|_DDC|_DDN|_DEC|_DEP|_DGS|_DIS|_DLM|_DMA|_DOS|_DPL|_DRS|_DSD|_DSM|_DSS|_DSW|_DTI|_E[0-9][0-9]|_EC|_EDL|_EJD|_EJ[0-9]|_END|_EVT|_FDE|_FDI|_FDM|_FIF|_FIT|_FI[0-9]|_FLC|_FPS|_FSL|_GAI|_GCP|_GHL|_GL|_GLK|_GPD|_GPE|_GRA|_GRT|_GSB|_GTF|_GTM|_GWS|_HE|_HID|_HOT|_HPP|_HP[0-9]|_HRV|_IFT|_INI|_IOR|_IRC|_L[0-9][0-9]|_LCK|_LEN|_LID|_LIN|_LL|_LPI|_MAF|_MAT|_MA[0-9]|_MBM|_MEM|_MIF|_MIN|_MLS|_MOD|_MSG|_MSM|_MTL|_MTP|_NTT|_OFF|_ON|_OS|_OSI|_OST|_PAI|_PAR|_PCL|_PCT|_PDC|_PDL|_PHA|_PIC|_PIF|_PIN|_PLD|_PMC|_PMD|_PMM|_POL|_PPC|_PPE|_PPI|_PR|_PR0|_PR2|_PR3|_PRE|_PRL|_PRR|_PRS|_PRT|_PRW|_PS0|_PS1|_PS2|_PS3|_PSC|_PSD|_PSE|_PSL|_PSR|_PSS|_PSV|_PSW|_PTC|_PTP|_PTS|_PUR|_P[0-9]M|_RBO|_RBW|_RDI|_REG|_REV|_RMV|_RNG|_ROM|_RST|_RT|_RTV|_RW|_R[0-9]L|_S0|_S1|_S2|_S3|_S4|_S5|_S1D|_S2D|_S3D|_S4D|_S1W|_S2W|_S3W|_S4W|_SB|_SBS|_SCP|_SDD|_SEG|_SHL|_SHR|_SI|_SIZ|_SLI|_SLV|_SPD|_SPE|_SRS|_SRT|_SRV|_STA|_STB|_STM|_STR|_STV|_SUB|_SUN|_SWS|_T_[0-9]|_TC1|_TC2|_TDL|_TFP|_TIP|_TIV|_TMP|_TPC|_TPT|_TRA|_TRS|_TRT|_TSD|_TSF|_TSN|_TSP|_TSS|_TTP|_TTS|_T[0-9]L|_TYP|_TZ|_TZD|_TZM|_TZP|_UID|_UPC|_UPD|_UPP|_VEN|_VPO|_WAK|_W[0-9][0-9])\\\\b\",\n      \"name\": \"variable.other.asl\"\n    },\n    {\n      \"match\": \"\\\\b(AttribQuick|AttribSendReceive|AttribByte|AttribBytes|AttribRawBytes|AttribRawProcessBytes|AttribWord|AttribBlock|AttribProcessCall|AttribBlockProcessCall|AnyAcc|ByteAcc|WordAcc|DWordAcc|QWordAcc|BufferAcc|AddressRangeMemory|AddressRangeReserved|AddressRangeNVS|AddressRangeACPI|RegionSpaceKeyword|FFixedHW|PCC|AddressingMode7Bit|AddressingMode10Bit|DataBitsFive|DataBitsSix|DataBitsSeven|DataBitsEight|DataBitsNine|BusMaster|NotBusMaster|ClockPhaseFirst|ClockPhaseSecond|ClockPolarityLow|ClockPolarityHigh|SubDecode|PosDecode|BigEndianing|LittleEndian|FlowControlNone|FlowControlXon|FlowControlHardware|Edge|Level|ActiveHigh|ActiveLow|ActiveBoth|Decode16|Decode10|IoRestrictionNone|IoRestrictionInputOnly|IoRestrictionOutputOnly|IoRestrictionNoneAndPreserve|Lock|NoLock|MTR|MEQ|MLE|MLT|MGE|MGT|MaxFixed|MaxNotFixed|Cacheable|WriteCombining|Prefetchable|NonCacheable|MinFixed|MinNotFixed|UnknownObj|IntObj|StrObj|BuffObj|PkgObj|FieldUnitObj|DeviceObj|EventObj|MethodObj|MutexObj|OpRegionObj|PowerResObj|ProcessorObj|ThermalZoneObj|BuffFieldObj|DDBHandleObj|ParityTypeNone|ParityTypeSpace|ParityTypeMark|ParityTypeOdd|ParityTypeEven|PullDefault|PullUp|PullDown|PullNone|PolarityHigh|PolarityLow|ISAOnlyRanges|NonISAOnlyRanges|EntireRange|ReadWrite|ReadOnly|UserDefRegionSpace|SystemIO|SystemMemory|PCI_Config|EmbeddedControl|SMBus|SystemCMOS|PciBarTarget|IPMI|GeneralPurposeIO|GenericSerialBus|ResourceConsumer|ResourceProducer|Serialized|NotSerialized|Shared|Exclusive|SharedAndWake|ExclusiveAndWake|ControllerInitiated|DeviceInitiated|StopBitsZero|StopBitsOne|StopBitsOnePlusHalf|StopBitsTwo|Width8Bit|Width16Bit|Width32Bit|Width64Bit|Width128Bit|Width256Bit|SparseTranslation|DenseTranslation|TypeTranslation|TypeStatic|Preserve|WriteAsOnes|WriteAsZeros|Transfer8|Transfer16|Transfer8_16|ThreeWireMode|FourWireMode)\\\\b\",\n      \"name\": \"keyword.other.asl\"\n    },\n    {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]+)|(0[0-7]+)|[0-9]|One|Ones|Zero)\\\\b\",\n      \"name\": \"constant.numeric.asl\"\n    },\n    {\n      \"match\": \"\\\\b(Revision)\\\\b\",\n      \"name\": \"constant.other.asl\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/asm.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"asm\", \"nasm\", \"yasm\", \"inc\", \"s\"],\n  \"name\": \"asm\",\n  \"patterns\": [\n    {\n      \"include\": \"#registers\"\n    },\n    {\n      \"include\": \"#mnemonics\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#entities\"\n    },\n    {\n      \"include\": \"#support\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#preprocessor\"\n    },\n    {\n      \"include\": \"#strings\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"(;|(^|\\\\s)#\\\\s).*$\",\n          \"name\": \"comment.line\"\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block\"\n        },\n        {\n          \"begin\": \"^\\\\s*[\\\\#%]\\\\s*if\\\\s+0\\\\b\",\n          \"end\": \"^\\\\s*[\\\\#%]\\\\s*endif\\\\b\",\n          \"name\": \"comment.preprocessor\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b0[by](?:[01][01_]*)\\\\.(?:(?:[01][01_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.binary.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[by](?:[01][01_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.binary.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[oq](?:[0-7][0-7_]*)\\\\.(?:(?:[0-7][0-7_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.octal.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[oq](?:[0-7][0-7_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.octal.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:0[dt])?(?:[0-9][0-9_]*)\\\\.(?:(?:[0-9][0-9_]*)?(?:e[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.decimal.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[0-9][0-9_]*)(?:e[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.decimal.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[0-9][0-9_]*)p(?:[0-9][0-9_]*)?\\\\b\",\n          \"name\": \"constant.numeric.decimal.packed-bcd.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)\\\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.hex.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.hex.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\$[0-9]\\\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?\\\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.hex.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\$[0-9]\\\\_?(?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.hex.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:0[by](?:[01][01_]*))|(?:(?:[01][01_]*)[by]))\\\\b\",\n          \"name\": \"constant.numeric.binary.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:0[oq](?:[0-7][0-7_]*))|(?:(?:[0-7][0-7_]*)[oq]))\\\\b\",\n          \"name\": \"constant.numeric.octal.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:0[dt](?:[0-9][0-9_]*))|(?:(?:[0-9][0-9_]*)[dt]?))\\\\b\",\n          \"name\": \"constant.numeric.decimal.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)(?:\\\\$[0-9]\\\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?)\\\\b\",\n          \"name\": \"constant.numeric.hex.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:0[xh](?:[[:xdigit:]][[:xdigit:]_]*))|(?:(?:[[:xdigit:]][[:xdigit:]_]*)[hxHX]))\\\\b\",\n          \"name\": \"constant.numeric.hex.asm.x86_64\"\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"((section|segment)\\\\s+)?\\\\.((ro)?data|bss|text)\",\n          \"name\": \"entity.name.section\"\n        },\n        {\n          \"match\": \"^\\\\.?(globa?l|extern)\\\\b\",\n          \"name\": \"entity.directive\"\n        },\n        {\n          \"match\": \"(\\\\$\\\\w+)\\\\b\",\n          \"name\": \"text.variable\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.special.asm.x86_64\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.asm.x86_64\"\n            }\n          },\n          \"match\": \"(\\\\.\\\\.@)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\\\:)?|\\\\b)\",\n          \"name\": \"entity.name.function.asm.x86_64\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.asm.x86_64\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.asm.x86_64\"\n            }\n          },\n          \"match\": \"(?:(\\\\.)?|\\\\b)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\\\:))\",\n          \"name\": \"entity.name.function.asm.x86_64\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.asm.x86_64\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.asm.x86_64\"\n            }\n          },\n          \"match\": \"(\\\\.)([0-9]+(?:[[:alnum:]_$#@~.?]*))(?:(\\\\:)?|\\\\b)\",\n          \"name\": \"entity.name.function.asm.x86_64\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.entity.name.function.asm.x86_64\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.asm.x86_64\"\n            }\n          },\n          \"match\": \"(?:(\\\\.)?|\\\\b)([0-9$@~](?:[[:alnum:]_$#@~.?]*))(?:(\\\\:))\",\n          \"name\": \"invalid.illegal.entity.name.function.asm.x86_64\"\n        }\n      ]\n    },\n    \"mnemonics\": {\n      \"patterns\": [\n        {\n          \"include\": \"#mnemonics-general-purpose\"\n        },\n        {\n          \"include\": \"#mnemonics-fpu\"\n        },\n        {\n          \"include\": \"#mnemonics-mmx\"\n        },\n        {\n          \"include\": \"#mnemonics-sse\"\n        },\n        {\n          \"include\": \"#mnemonics-sse2\"\n        },\n        {\n          \"include\": \"#mnemonics-sse3\"\n        },\n        {\n          \"include\": \"#mnemonics-sse4\"\n        },\n        {\n          \"include\": \"#mnemonics-aesni\"\n        },\n        {\n          \"include\": \"#mnemonics-avx\"\n        },\n        {\n          \"include\": \"#mnemonics-avx2\"\n        },\n        {\n          \"include\": \"#mnemonics-tsx\"\n        },\n        {\n          \"include\": \"#mnemonics-system\"\n        },\n        {\n          \"include\": \"#mnemonics-64bit\"\n        },\n        {\n          \"include\": \"#mnemonics-vmx\"\n        },\n        {\n          \"include\": \"#mnemonics-smx\"\n        },\n        {\n          \"include\": \"#mnemonics-intel-isa-sgx\"\n        },\n        {\n          \"include\": \"#mnemonics-intel-isa-mpx\"\n        },\n        {\n          \"include\": \"#mnemonics-intel-isa-sha\"\n        },\n        {\n          \"include\": \"#mnemonics-supplemental-amd\"\n        },\n        {\n          \"include\": \"#mnemonics-supplemental-cyrix\"\n        },\n        {\n          \"include\": \"#mnemonics-supplemental-via\"\n        },\n        {\n          \"include\": \"#mnemonics-undocumented\"\n        },\n        {\n          \"include\": \"#mnemonics-future-intel\"\n        },\n        {\n          \"include\": \"#mnemonics-pseudo-ops\"\n        }\n      ]\n    },\n    \"mnemonics-64bit\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(cdqe|cqo|(cmp|lod|mov|sto)sq|cmpxchg16b|mov(ntq|sxd)|scasq|swapgs|sys(call|ret))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.64-bit-mode\"\n        }\n      ]\n    },\n    \"mnemonics-aesni\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(aes((dec|enc)(last)?|imc|keygenassist)|pclmulqdq)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.aesni\"\n        }\n      ]\n    },\n    \"mnemonics-avx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(v((test|permil|maskmov)p[ds]|zero(all|upper)|(perm2|insert|extract|broadcast)f128|broadcasts[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vaes((dec|enc)(last)?|imc|keygenassist)|vpclmulqdq)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.aes\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v((cmp[ps]|u?comis)[ds]|pcmp([ei]str[im]|(eq|gt)[bdqw])))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(cvt(dq2pd|dq2ps|pd2ps|ps2pd|sd2ss|si2sd|si2ss|ss2sd|t?(pd2dq|ps2dq|sd2si|ss2si))))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vh((add|sub)p[ds])|vph((add|sub)([dw]|sw)|minposuw))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.horizontal-packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v((andn?|x?or)p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(mov(([ahl]|msk|nt|u)p[ds]|(hl|lh)ps|s([ds]|[hl]dup)|q)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v((add|div|mul|sub|max|min|round|sqrt)[ps][ds]|(addsub|dp)p[ds]|(rcp|rsqrt)[ps]s))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(pack[su]s(dw|wb)|punpck[hl](bw|dq|wd|qdq)|unpck[hl]p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(shuf([bd]|[hl]w))|vshufp[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-shuffle\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp((abs|sign|(max|min)[su])[bdw]|(add|sub)([bdqw]|u?s[bw])|avg[bw]|extr[bdqw]|madd(wd|ubsw)|mul(hu?w|hrsw|l[dw]|u?dq)|sadbw))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.supplemental.arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(andn?|x?or))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.supplemental.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpblend(vb|w))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.supplemental.blending\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpmov(mskb|[sz]x(b[dqw]|w[dq]|dq)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.supplemental.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(insr[bdqw]|sll(dq|[dqw])|srl(dq)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.simd-integer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(sra[dwq]|srl[dqw]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.shift-and-rotate\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vblendv?p[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-blending\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(test|alignr))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vmov(d(dup|qa|qu)?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.simd-integer.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v((extract|insert)ps|lddqu|(ld|st)mxcsr|mpsadbw))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(maskmovdqu|movntdqa?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.cacheability-control\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vcvt(ph2ps|ps2ph))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.16-bit-floating-point-conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vfn?m((add|sub)(132|213|231)[ps][ds])|vfm((addsub|subadd)(132|213|231)p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fma\"\n        }\n      ]\n    },\n    \"mnemonics-avx2\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(v((broadcast|extract|insert|perm2)i128|pmaskmov[dq]|perm([dsq]|p[sd])))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx2.promoted.simd\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpbroadcast[bdqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx2.promoted.packed\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(blendd|s[lr]lv[dq]|sravd))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx2.blend\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp?gather[dq][dq]|vgather([dq]|dq)p[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx2.gather\"\n        }\n      ]\n    },\n    \"mnemonics-fpu\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(fcmov(n?([beu]|be)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.data-transfer.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f(i?(ld|stp?)|b(ld|stp)|xch))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.data-transfer.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f((add|div|mul|sub)p?|i(add|div|mul|sub)|(div|sub)rp?|i(div|sub)r))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.basic-arithmetic.basic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f(prem1?|abs|chs|rndint|scale|sqrt|xtract))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.basic-arithmetic.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f(u?com[ip]?p?|icomp?|tst|xam))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f(sin|cos|sincos|pa?tan|2xm1|yl2x(p1)?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.transcendental\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(fld(1|z|pi|l2[et]|l[ng]2))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.load-constants\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f((inc|dec)stp|free|n?(init|clex|st[cs]w|stenv|save)|ld(cw|env)|rstor|nop)|f?wait)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.control-management\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(fx(save|rstor)(64)?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.state-management\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel\": {\n      \"patterns\": [\n        {\n          \"include\": \"#mnemonics-future-intel-avx512\"\n        },\n        {\n          \"include\": \"#mnemonics-future-intel-opmask\"\n        },\n        {\n          \"include\": \"#mnemonics-future-intel-cet\"\n        },\n        {\n          \"include\": \"#mnemonics-future-intel-other\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel-avx512\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(vblendm(pd|ps)|vpblendm[bdqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.blend\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vbroadcast[fi](32x[248]|64x[24])|v(extract|insert)[fi](32x[48]|64x[24])|vshuf[fi](32x4|64x2)|vpbroadcastm(b2q|w2d))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.bits-mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(compress|expand)p[ds]|vp(compress|expand|conflict)[dq])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.compress\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vcvt(t?p[sd]2(udq|u?qq)|(udq|u?qq)2p[ds]|t?s[ds]2usi|usi2s[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(fixupimm|fpclass|get(exp|mant)|range|(rcp|rsqrt)(14|28)|reduce|rndscale|scalef)([ps][ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.math\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(exp2p[ds]|(scatter|(gather|scatter)pf[01])[dq]p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.math\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vmovdq(a(32|64)|u(8|16|32|64)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.simd-integer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(andn?|x?or)[dq])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpcmpu?[dqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(absq|(lzcnt|ternlog)[dq]|madd52[lh]uq|(max|min)[su]q|mullq))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-math\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpmov(m2[bdqw]|[bdqw]2m|(u?s)?([qd][bw]|qd|wb)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(ro[rl]v?[dq]|scatter[dq][dq]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-shift\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vptestn?m[bdqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-test\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vperm([bdw]|[it]2([bdwq]|p[ds])))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.permutations\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(valign[dq]|vdbpsadbw|vpmultishiftqb|vpsrav[dqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.other\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel-cet\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b((inc|save|rstor)ssp|wru?ss|(set|clr)ssbsy|endbranch|endbr(32|64))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.cet\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel-opmask\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(k(add|andn?|(xn?)?or|mov|not|(or)?test|shift[lr])[bdqw]|kunpck(bw|wd|dq))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.opmask\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel-other\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(clflushopt|clwb|pcommit)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.other\"\n        }\n      ]\n    },\n    \"mnemonics-general-purpose\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(?:mov(?:[sz]x)?|cmov(?:n?[abceglopsz]|n?[abgl]e|p[eo]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.data-transfer.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(xchg|bswap|xadd|cmpxchg(8b)?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.data-transfer.xchg\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((push|pop)(ad?)?|cwde?|cdq|cbw)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.data-transfer.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(adcx?|adox|add|sub|sbb|i?mul|i?div|inc|dec|neg|cmp)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.binary-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(daa|das|aaa|aas|aam|aad)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.decimal-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(and|x?or|not)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s[ah][rl]|sh[rl]d|r[co][rl])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.rotate\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(set(n?[abceglopsz]|n?[abgl]e|p[eo]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.bit-and-byte.set\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(bt[crs]?|bs[fr]|test|crc32|popcnt)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.bit-and-byte.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(jmp|jn?[abceglopsz]|jn?[abgl]e|jp[eo]|j[er]?cxz)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.control-transfer.jmp\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(loop(n?[ez])?|call|ret|iret[dq]?|into?|bound|enter|leave)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.control-transfer.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((mov|cmp|sca|lod|sto)(s[bdw]?)|rep(n?[ez])?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.strings\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((in|out)(s[bdw]?)?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.io\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((st|cl)[cdi]|cmc|[ls]ahf|(push|pop)f[dq]?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.flag-control\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(l[defgs]s)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.segment-registers\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(lea|nop|ud2|xlatb?|cpuid|movbe)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.misc\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(rdrand|rdseed)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.rng\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(andn|bextr|bls(i|r|msk)|bzhi|pdep|pext|[lt]zcnt|(mul|ror|sar|shl|shr)x)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.bmi\"\n        }\n      ]\n    },\n    \"mnemonics-intel-isa-mpx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(bnd(mk|c[lnu]|mov|ldx|stx))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mpx\"\n        }\n      ]\n    },\n    \"mnemonics-intel-isa-sgx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\be(add|block|create|dbg(rd|wr)|extend|init|ld[bu]|pa|remove|track|wb)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sgx1.supervisor\"\n        },\n        {\n          \"match\": \"(?i)\\\\be(enter|exit|getkey|report|resume)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sgx1.user\"\n        },\n        {\n          \"match\": \"(?i)\\\\be(aug|mod(pr|t))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sgx2.supervisor\"\n        },\n        {\n          \"match\": \"(?i)\\\\be(accept(copy)?|modpe)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sgx2.user\"\n        }\n      ]\n    },\n    \"mnemonics-intel-isa-sha\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(sha(1rnds4|256rnds2|1nexte|(1|256)msg[12]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sha\"\n        }\n      ]\n    },\n    \"mnemonics-invalid\": {\n      \"patterns\": [\n        {\n          \"include\": \"#mnemonics-invalid-amd-sse5\"\n        }\n      ]\n    },\n    \"mnemonics-invalid-amd-sse5\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(com[ps][ds]|pcomu?[bdqw])\\\\b\",\n          \"name\": \"invalid.keyword.operator.word.mnemonic.sse5.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cvtp(h2ps|s2ph)|frcz[ps][ds])\\\\b\",\n          \"name\": \"invalid.keyword.operator.word.mnemonic.sse5.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(fn?m((add|sub)[ps][ds])|ph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd))|pma(css?(d(d|q[hl])|w[dw])|dcss?wd))\\\\b\",\n          \"name\": \"invalid.keyword.operator.word.mnemonic.sse5.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pcmov|permp[ds]|pperm|prot[bdqw]|psh[al][bdqw])\\\\b\",\n          \"name\": \"invalid.keyword.operator.word.mnemonic.sse5.simd-integer\"\n        }\n      ]\n    },\n    \"mnemonics-mmx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(mov[dq])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.data-transfer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pack(ssdw|[su]swb)|punpck[hl](bw|dq|wd))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p(((add|sub)(d|(u?s)?[bw]))|maddwd|mul[lh]w))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pcmp((eq|gt)[bdw]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pandn?|px?or)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ps([rl]l[dwq]|raw|rad))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.shift-and-rotate\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(emms)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.state-management\"\n        }\n      ]\n    },\n    \"mnemonics-pseudo-ops\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(cmp(n?(eq|lt|le)|(un)?ord)[ps][ds])\\\\b\",\n          \"name\": \"keyword.pseudo-mnemonic.sse2.compare\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v?pclmul([hl]q[hl]q|[hl]qh)dq)\\\\b\",\n          \"name\": \"keyword.pseudo-mnemonic.avx.promoted.aes\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vcmp(eq(_(os|uq|us))?|neq(_(oq|os|us))?|[gl][et](_oq)?|n[gl][et](_uq)?|(un)?ord(_s)?|false(_os)?|true(_us)?)[ps][ds])\\\\b\",\n          \"name\": \"keyword.pseudo-mnemonic.avx.promoted.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpcom(n?eq|[gl][et]|false|true)(b|uw))\\\\b\",\n          \"name\": \"keyword.pseudo-mnemonic.supplemental.amd.xop.simd\"\n        }\n      ]\n    },\n    \"mnemonics-smx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(getsec)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.smx.getsec\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(capabilities|enteraccs|exitac|senter|sexit|parameters|smctrl|wakeup)\\\\b\",\n          \"name\": \"support.constant\"\n        }\n      ]\n    },\n    \"mnemonics-sse\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(mov(([ahlu]|hl|lh|msk)ps|ss))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.data-transfer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((add|div|max|min|mul|rcp|r?sqrt|sub)[ps]s)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cmp[ps]s|u?comiss)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((andn?|x?or)ps)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((shuf|unpck[hl])ps)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.shuffle-and-unpack\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cvt(pi2ps|si2ss|ps2pi|tps2pi|ss2si|tss2si))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((ld|st)mxcsr)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.state-management\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p(avg[bw]|extrw|insrw|(max|min)(sw|ub)|sadbw|shufw|mulhuw|movmskb))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.simd-integer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(maskmovq|movntps|sfence)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.cacheability-control\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(prefetch(nta|t[0-2]|w(t1)?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.prefetch\"\n        }\n      ]\n    },\n    \"mnemonics-sse2\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(mov([auhl]|msk)pd)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.data-transfer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((add|div|max|min|mul|sub|sqrt)[ps]d)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((andn?|x?or)pd)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((cmpp|u?comis)d)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.compare\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((shuf|unpck[hl])pd)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.shuffle-and-unpack\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cvt(dq2pd|pi2pd|ps2pd|pd2ps|si2sd|sd2ss|ss2sd|t?(pd2dq|pd2pi|sd2si)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cvt(dq2ps|ps2dq|tps2dq))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.packed-floating-point\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(mov(dq[au]|q2dq|dq2q))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.simd-integer.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p((add|sub|(s[lr]l|mulu|unpck[hl]q)d)q|shuf(d|[hl]w)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.simd-integer.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(clflush|[lm]fence|pause|maskmovdqu|movnt(dq|i|pd))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.cacheability-control\"\n        }\n      ]\n    },\n    \"mnemonics-sse3\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(fisttp|lddqu|(addsub|h(add|sub))p[sd]|mov(sh|sl|d)dup|monitor|mwait)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse3\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ph(add|sub)(s?w|d))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse3.supplimental.horizontal-packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p((abs|sign)[bdw]|maddubsw|mulhrsw|shufb|alignr))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse3.supplimental.other\"\n        }\n      ]\n    },\n    \"mnemonics-sse4\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(pmul(ld|dq)|dpp[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(movntdqa)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.load-hint\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(blendv?p[ds]|pblend(vb|w))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.packed-blending\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p(min|max)(u[dw]|s[bd]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.packed-integer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(round[ps][sd])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.packed-floating-point\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((extract|insert)ps|p((ins|ext)(r[bdq])))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.insertion-and-extraction\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pmov([sz]x(b[dqw]|dq|wd|wq)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(mpsadbw|phminposuw|ptest|pcmpeqq|packusdw)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pcmp([ei]str[im]|gtq))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.2\"\n        }\n      ]\n    },\n    \"mnemonics-supplemental-amd\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(bl([cs](fill|ic?|msk)|cs)|t1mskc|tzmsk)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.general-purpose\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(clgi|int3|invlpga|iretw|skinit|stgi|vm(load|mcall|run|save)|monitorx|mwaitx)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.system\"\n        },\n        {\n          \"match\": \"(?i)\\\\b([ls]lwpcb|lwp(ins|val))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.profiling\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(movnts[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.memory-management\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(prefetch|clzero)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.cache-management\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((extr|insert)q)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.sse4.a\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vfn?m((add|sub)[ps][ds])|vfm((addsub|subadd)p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.fma4\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(cmov|(comu?|rot|sh[al])[bdqw]|mac(s?s(d(d|q[hl])|w[dw]))|madcss?wd|perm))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.xop.simd\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.xop.simd-horizontal\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vfrcz[ps][ds]|vpermil2p[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.xop.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(femms)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.3dnow\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p(avgusb|(f2i|i2f)[dw]|mulhrw|swapd)|pf((p?n)?acc|add|max|min|mul|rcp(it[12])?|rsqit1|rsqrt|subr?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.3dnow.simd\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pfcmp(eq|ge|gt))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.3dnow.comparison\"\n        }\n      ]\n    },\n    \"mnemonics-supplemental-cyrix\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b((sv|rs)dc|(wr|rd)shr|paddsiw)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.cyrix\"\n        }\n      ]\n    },\n    \"mnemonics-supplemental-via\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(montmul)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.via\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(x(store(rng)?|crypt(ecb|cbc|ctr|cfb|ofb)|sha(1|256)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.via.padlock\"\n        }\n      ]\n    },\n    \"mnemonics-system\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b((cl|st)ac|[ls]([gli]dt|tr|msw)|clts|arpl|lar|lsl|ver[rw]|inv(d|lpg|pcid)|wbinvd)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.system\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(lock|hlt|rsm|(rd|wr)(msr|pkru|[fg]sbase)|rd(pmc|tscp?)|sys(enter|exit))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.system\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(x((save(c|opt|s)?|rstors?)(64)?|[gs]etbv))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.system\"\n        }\n      ]\n    },\n    \"mnemonics-tsx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(x(abort|acquire|release|begin|end|test))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.tsx\"\n        }\n      ]\n    },\n    \"mnemonics-undocumented\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(ret[nf]|icebp|int1|int03|smi|ud1)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.undocumented\"\n        }\n      ]\n    },\n    \"mnemonics-vmx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(vm(ptr(ld|st)|clear|read|write|launch|resume|xo(ff|n)|call|func)|inv(ept|vpid))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.vmx\"\n        }\n      ]\n    },\n    \"preprocessor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*[#%]\\\\s*(error|warning)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.error.c\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"meta.preprocessor.diagnostic.c\",\n          \"patterns\": [\n            {\n              \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n              \"name\": \"punctuation.separator.continuation.c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*[#%]\\\\s*(include|import)\\\\b\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.include.c\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|$\",\n          \"name\": \"meta.preprocessor.c.include\",\n          \"patterns\": [\n            {\n              \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n              \"name\": \"punctuation.separator.continuation.c\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.c\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.c\"\n                }\n              },\n              \"name\": \"string.quoted.double.include.c\"\n            },\n            {\n              \"begin\": \"<\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.c\"\n                }\n              },\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.c\"\n                }\n              },\n              \"name\": \"string.quoted.other.lt-gt.include.c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*[%#]\\\\s*((xi?)?define|defined|elif(def)?|else|if(macro|ctx|idni?|num|str)?|ifn?def|line|(end)?macro|pragma|undef|endif)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.c\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|$\",\n          \"name\": \"meta.preprocessor.c\",\n          \"patterns\": [\n            {\n              \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n              \"name\": \"punctuation.separator.continuation.c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*[#%]\\\\s*(assign|strlen|substr|(end|exit)?rep|push|pop)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"meta.preprocessor.nasm\",\n          \"patterns\": [\n            {\n              \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n              \"name\": \"punctuation.separator.continuation.c\"\n            }\n          ]\n        }\n      ]\n    },\n    \"registers\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(?:[abcd][hl]|[er]?[abcd]x|[er]?(?:di|si|bp|sp)|dil|sil|bpl|spl|r(?:8|9|1[0-5])[bdlw]?)\\\\b\",\n          \"name\": \"constant.language.register.general-purpose.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[cdefgs]s)\\\\b\",\n          \"name\": \"constant.language.register.segment.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[er]?flags)\\\\b\",\n          \"name\": \"constant.language.register.flags.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[er]?ip)\\\\b\",\n          \"name\": \"constant.language.register.instruction-pointer.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:cr[02-4])\\\\b\",\n          \"name\": \"constant.language.register.control.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:mm|st|fpr)[0-7])\\\\b\",\n          \"name\": \"constant.language.register.mmx.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[xy]mm(?:[0-9]|1[0-5])|mxcsr)\\\\b\",\n          \"name\": \"constant.language.register.sse_avx.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:zmm(?:[12]?[0-9]|30|31))\\\\b\",\n          \"name\": \"constant.language.register.avx512.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:bnd(?:[0-3]|cfg[su]|status))\\\\b\",\n          \"name\": \"constant.language.register.memory-protection.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:[gil]dt)r?|tr)\\\\b\",\n          \"name\": \"constant.language.register.system-table-pointer.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:dr[0-367])\\\\b\",\n          \"name\": \"constant.language.register.debug.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:cr8|dr(?:[89]|1[0-5])|efer|tpr|syscfg)\\\\b\",\n          \"name\": \"constant.language.register.amd.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:db[0-367]|t[67]|tr[3-7]|st)\\\\b\",\n          \"name\": \"invalid.deprecated.constant.language.register.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b[xy]mm(?:1[6-9]|2[0-9]|3[01])\\\\b\",\n          \"name\": \"constant.language.register.general-purpose.alias.asm.x86_64\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.asm\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.asm\"\n            }\n          },\n          \"name\": \"string.quoted.double.asm\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.asm\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.asm\"\n            }\n          },\n          \"name\": \"string.quoted.single.asm\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.asm\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.asm\"\n            }\n          },\n          \"name\": \"string.quoted.backquote.asm\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            }\n          ]\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(?:s?byte|(?:[doqtyz]|dq|s[dq]?)?word|(?:d|res)[bdoqtwyz]|ddq)\\\\b\",\n          \"name\": \"storage.type.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:incbin|equ|times)\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:strict|nosplit|near|far|abs|rel)\\\\b\",\n          \"name\": \"storage.modifier.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[ao](?:16|32|64))\\\\b\",\n          \"name\": \"storage.modifier.prefix.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:rep(?:n?[ez])?|lock|xacquire|xrelease|(?:no)?bnd)\\\\b\",\n          \"name\": \"storage.modifier.prefix.asm.x86_64\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.prefix.vex.asm.x86_64\"\n            }\n          },\n          \"match\": \"{(vex[23]|evex)}\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.opmask.asm.x86_64\"\n            }\n          },\n          \"match\": \"{(k[1-7])}\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.precision.asm.x86_64\"\n            }\n          },\n          \"match\": \"{(1to(?:8|16))}\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.rounding.asm.x86_64\"\n            }\n          },\n          \"match\": \"{(z|(?:r[nudz]-)?sae)}\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.(?:start|imagebase|tlvp|got(?:pc(?:rel)?|(?:tp)?off)?|plt|sym|tlsie)\\\\b\",\n          \"name\": \"support.constant.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__(?:utf(?:(?:16|32)(?:[lb]e)?)|float(?:8|16|32|64|80[me]|128[lh])|Infinity|[QS]?NaN)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__NASM_(?:MAJOR|(?:SUB)?MINOR|SNAPSHOT|VER(?:SION_ID)?)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b___NASM_PATCHLEVEL__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__(?:FILE|LINE|BITS|OUTPUT_FORMAT)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__(?:(?:UTC_)?(?:DATE|TIME)(?:_NUM)?|POSIX_TIME)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__USE_(?:ALTREG|SMARTALIGN|FP|IFUNC)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__PASS__\\\\b\",\n          \"name\": \"invalid.deprecated.support.constant.altreg.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__ALIGNMODE__\\\\b\",\n          \"name\": \"support.constant.smartalign.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b(?:Inf|[QS]?NaN)\\\\b\",\n          \"name\": \"support.constant.fp.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b(?:float(?:8|16|32|64|80[me]|128[lh]))\\\\b\",\n          \"name\": \"support.function.fp.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\bilog2(?:[ewfc]|[fc]w)?\\\\b\",\n          \"name\": \"support.function.ifunc.asm.x86_64\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.asm.x86_64\",\n  \"uuid\": \"05d6565d-991a-4e88-8e28-63bb21197f32\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/asp-vb-net.tmlanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/asp.vb.net.tmbundle/blob/master/Syntaxes/ASP%20VB.net.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/asp.vb.net.tmbundle/commit/72d44550b3286d0382d7be0624140cf97857ff69\",\n  \"name\": \"ASP vb.NET\",\n  \"scopeName\": \"source.asp.vb.net\",\n  \"comment\": \"Modified from the original ASP bundle. Originally modified by Thomas Aylott subtleGradient.com\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\n\",\n      \"name\": \"meta.ending-space\"\n    },\n    {\n      \"include\": \"#round-brackets\"\n    },\n    {\n      \"begin\": \"^(?=\\\\t)\",\n      \"end\": \"(?=[^\\\\t])\",\n      \"name\": \"meta.leading-space\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.odd-tab.tabs\"\n            },\n            \"2\": {\n              \"name\": \"meta.even-tab.tabs\"\n            }\n          },\n          \"match\": \"(\\\\t)(\\\\t)?\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(?= )\",\n      \"end\": \"(?=[^ ])\",\n      \"name\": \"meta.leading-space\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.odd-tab.spaces\"\n            },\n            \"2\": {\n              \"name\": \"meta.even-tab.spaces\"\n            }\n          },\n          \"match\": \"(  )(  )?\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.asp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.asp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.asp\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.asp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.parameters.asp\"\n        }\n      },\n      \"match\": \"^\\\\s*((?i:function|sub))\\\\s*([a-zA-Z_]\\\\w*)\\\\s*(\\\\()([^)]*)(\\\\)).*\\\\n?\",\n      \"name\": \"meta.function.asp\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=')\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.asp\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.asp\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.apostrophe.asp\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?i:\\\\b(If|Then|Else|ElseIf|Else If|End If|While|Wend|For|To|Each|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub|IIf)\\\\b)\",\n      \"name\": \"keyword.control.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Mod|And|Not|Or|Xor|as)\\\\b)\",\n      \"name\": \"keyword.operator.asp\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.asp\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.bfeac.asp\"\n        },\n        \"3\": {\n          \"name\": \"meta.separator.comma.asp\"\n        }\n      },\n      \"match\": \"(?i:(dim)\\\\s*(?:(\\\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b)\\\\s*(,?)))\",\n      \"name\": \"variable.other.dim.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\s*\\\\b(Call|Class|Const|Dim|Redim|Function|Sub|Private Sub|Public Sub|End Sub|End Function|End Class|End Property|Public Property|Private Property|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo)\\\\b\\\\s*)\",\n      \"name\": \"storage.type.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Private|Public|Default)\\\\b)\",\n      \"name\": \"storage.modifier.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\s*\\\\b(Empty|False|Nothing|Null|True)\\\\b)\",\n      \"name\": \"constant.language.asp\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.asp\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.asp\"\n        }\n      },\n      \"name\": \"string.quoted.double.asp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\"\\\"\",\n          \"name\": \"constant.character.escape.apostrophe.asp\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.asp\"\n        }\n      },\n      \"match\": \"(\\\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b\\\\s*\",\n      \"name\": \"variable.other.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Application|ObjectContext|Request|Response|Server|Session)\\\\b)\",\n      \"name\": \"support.class.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\\\\b)\",\n      \"name\": \"support.class.collection.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\\\\b)\",\n      \"name\": \"support.constant.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex)\\\\b)\",\n      \"name\": \"support.function.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\\\\b)\",\n      \"name\": \"support.function.event.asp\"\n    },\n    {\n      \"match\": \"(?i:(?<=as )(\\\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b))\",\n      \"name\": \"support.type.vb.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\\\\b)\",\n      \"name\": \"support.function.vb.asp\"\n    },\n    {\n      \"match\": \"-?\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\\\b\",\n      \"name\": \"constant.numeric.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\\\\b)\",\n      \"name\": \"support.type.vb.asp\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.asp\"\n        }\n      },\n      \"match\": \"(?i:(\\\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b)(?=\\\\(\\\\)?))\",\n      \"name\": \"support.function.asp\"\n    },\n    {\n      \"match\": \"(?i:((?<=(\\\\+|=|-|\\\\&|\\\\\\\\|/|<|>|\\\\(|,))\\\\s*\\\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\\\b(?!(\\\\(|\\\\.))|\\\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\\\b(?=\\\\s*(\\\\+|=|-|\\\\&|\\\\\\\\|/|<|>|\\\\(|\\\\)))))\",\n      \"name\": \"variable.other.asp\"\n    },\n    {\n      \"match\": \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|/=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(in|instanceof|new|delete|typeof|void)\\\\b\",\n      \"name\": \"keyword.operator.js\"\n    }\n  ],\n  \"repository\": {\n    \"round-brackets\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.round-brackets.begin.asp\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.round-brackets.end.asp\"\n        }\n      },\n      \"name\": \"meta.round-brackets\",\n      \"patterns\": [\n        {\n          \"include\": \"source.asp.vb.net\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/asymptote.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"scopeName\": \"source.asymptote\",\n  \"name\": \"Asymptote\",\n  \"foldingStartMarker\": \"(\\\\{|\\\\[|\\\\()\\\\s*$\",\n  \"foldingStopMarker\": \"^\\\\s*(\\\\}|\\\\]\\\\))\",\n  \"repository\": {\n    \"const_keywords\": {\n      \"match\": \"\\\\b(deepmagenta|deepblue|Dotted|deepgray|left|arrowangle|identity4|yellow|realEpsilon|mediumyellow|darkred|invert|realDigits|arcarrowangle|defaultpen|default|red|arrowtexfactor|Allow|mantissaBits|Suppress|lightblue|settings|legendmargin|gray|royalblue|darkcyan|defaultfilename|heavygreen|SSW|olive|labelmargin|Yellow|palemagenta|spinner|invisible|sqrtEpsilon|lightmagenta|nan|palegray|infinity|nomarker|CCW|dotfactor|NoAlign|ESE|realMax|stdout|Fill|legendhskip|plain_scaling|mediumblue|beveljoin|lightgray|expansionfactor|SW|blue|legendvskip|heavyred|palecyan|bracedefaultratio|magenta|pt|longdashed|NNE|currentpatterns|NoSide|squarepen|NoFill|darkbrown|E|chartreuse|Move|Black|nullpen|version|arrowhookfactor|lightred|lightyellow|MarkFill|salmon|count|dashed|currentpicture|extendcap|bracemidangle|inXasyMode|defaultseparator|arrowlength|nullpath|zerowinding|lightcyan|VERSION|NW|cm|mediumred|N|lightgrey|plus|braceinnerangle|dot|BeginPoint|viewportmargin|evenodd|cputimeformat|circlescale|currentprojection|pink|Label|paleyellow|deepcyan|mediummagenta|defaultformat|roundcap|randMax|SuppressQuiet|braceouterangle|ocgindex|IgnoreAspect|miterjoin|unitcircle|Draw|dotted|right|palegrey|plain|Mark|inches|inch|LeftSide|Cyan|ignore|basealign|darkmagenta|grey|arcarrowfactor|NE|currentpen|mediumcyan|viewportsize|intMax|arrow2sizelimit|squarecap|CW|diagnostics|heavycyan|mediumgrey|white|W|deepyellow|lightgreen|TeXHead|Aspect|undefined|arrowfactor|stdin|fuchsia|legendmaxrelativewidth|heavygrey|intMin|JOIN_IN|down|Magenta|HookHead|orange|dotframe|colorPen|debugging|heavyblue|SE|longdashdotted|UnFill|darkgrey|mediumgreen|deepgreen|black|MarkPath|deepgrey|ENE|currentlight|darkgray|roundjoin|circleprecision|cyan|Align|arrowbarb|EndPoint|up|Center|paleblue|debuggerlines|pi|MidPoint|legendlinelength|darkblue|file3|palered|S|FillDraw|heavygray|barfactor|lightolive|deepred|xformStack|arrowdir|bp|shipped|brown|arrowsizelimit|WNW|NNW|mm|mediumgray|MoveQuiet|springgreen|plain_bounds|solid|darkolive|heavymagenta|dashdotted|unitsquare|SSE|monoPen|DefaultHead|purple|SimpleHead|inf|I|nobasealign|green|JOIN_OUT|realMin|palegreen|WSW|camerafactor|RightSide|darkgreen)\\\\b\",\n      \"name\": \"support.constant\"\n    },\n    \"type_keywords\": {\n      \"match\": \"\\\\b(pen|scaleT|marginT|autoscaleT|slice|coord|int|Legend|bool|pair|indexedTransform|transformation|projection|processtime|bool3|light|pairOrTriple|align|marker|filltype|coords3|arrowhead|frame|framedTransformStack|real|scaling|side|transform|file|hsv|path3|Label|position|string|ScaleT|picture|object|triple|path|cputime|coords2|bounds|guide)\\\\b\",\n      \"name\": \"support.class\"\n    },\n    \"operator_keywords\": {\n      \"match\": \"(\\\\*|\\\\+|\\\\#|\\\\-\\\\-|\\\\>\\\\=|\\\\-|\\\\,|\\\\-\\\\-\\\\-|\\\\.\\\\.|\\\\<|\\\\!|\\\\&|\\\\=\\\\=|\\\\<\\\\=|\\\\>|\\\\=|\\\\||\\\\%|\\\\/|\\\\^|\\\\:\\\\:|\\\\!\\\\=)\",\n      \"name\": \"keyword.operator\"\n    },\n    \"prim_type_keywords\": {\n      \"match\": \"\\\\b(void|code)\\\\b\",\n      \"name\": \"storage.type\"\n    }\n  },\n  \"patterns\": [\n    {\n      \"match\": \"//.*$\",\n      \"name\": \"comment.line.double-slash\"\n    },\n    {\n      \"match\": \"\\\\b(const|static|explicit|struct|typedef)\\\\b\",\n      \"name\": \"storage.modifier\"\n    },\n    {\n      \"match\": \"\\\\b(true|false)\\\\b\",\n      \"name\": \"constant.language\"\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block\"\n    },\n    {\n      \"match\": \"\\\\s+\\\"(.*)\\\"\",\n      \"name\": \"string.quoted.double\"\n    },\n    {\n      \"begin\": \"(?<!\\\\s)\\\"{1}\",\n      \"end\": \"\\\"{1}\",\n      \"name\": \"string.quoted.double\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex.latex\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\'.*?\\\\'\",\n      \"name\": \"string.quoted.single\"\n    },\n    {\n      \"match\": \"\\\\b(if|else|while|for|do|break|return|continue|unravel)\\\\b\",\n      \"name\": \"keyword.control\"\n    },\n    {\n      \"match\": \"\\\\b(new|cast|ecast|init)\\\\b\",\n      \"name\": \"keyword.operator\"\n    },\n    {\n      \"match\": \"\\\\b(import|include|as|access|from|operator|quote)\\\\b\",\n      \"name\": \"keyword.other\"\n    },\n    {\n      \"match\": \"\\\\b(\\\\d*)(\\\\.?)\\\\d+\",\n      \"name\": \"constant.numeric\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z_]\\\\w*)\\\\s*\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function\"\n        }\n      }\n    },\n    {\n      \"begin\": \"\\\\b(quote)\\\\s*\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#const_keywords\"\n    },\n    {\n      \"include\": \"#type_keywords\"\n    },\n    {\n      \"include\": \"#operator_keywords\"\n    },\n    {\n      \"include\": \"#prim_type_keywords\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/autohotkey.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.ahk\",\n  \"fileTypes\": [\"ahk\"],\n  \"patterns\": [\n    {\n      \"match\": \"(^\\\\s*|\\\\s+)(;)(.*)$\",\n      \"name\": \"comment.line.ahk\",\n      \"captures\": {\n        \"1\": { \"name\": \"comment.line.ahk\" },\n        \"2\": { \"name\": \"comment.line.ahk\" }\n      }\n    },\n    { \"begin\": \"^\\\\s*/\\\\*\", \"end\": \"^\\\\s*\\\\*/\", \"name\": \"comment.block.ahk\" },\n    {\n      \"match\": \"^(?i)\\\\s*((?!if|while)\\\\w+)(\\\\()(.*)(\\\\))\\\\s*({)\\\\s*(;?.*)$\",\n      \"name\": \"functionline.ahk\",\n      \"captures\": {\n        \"3\": { \"name\": \"string.function.arguments.ahk\" },\n        \"1\": { \"name\": \"entity.name.function.ahk\" },\n        \"6\": { \"name\": \"comment.line.semicolon.functionline.ahk\" },\n        \"4\": { \"name\": \"punctuation.bracket.parenthesis.ahk\" },\n        \"2\": { \"name\": \"punctuation.bracket.parenthesis.ahk\" },\n        \"5\": { \"name\": \"punctuation.bracket.curly.ahk\" }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(\\\\w+)(:)\\\\s*(;.*)?$\",\n      \"name\": \"labelline.ahk\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.function.label.ahk\" },\n        \"2\": { \"name\": \"punctuation.colon.ahk\" },\n        \"3\": { \"name\": \"comment.line.semicolon.label.ahk\" }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(\\\\S+(?:\\\\s+&\\\\s+\\\\S+)*)(::)\",\n      \"name\": \"hotkeyline.ahk\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.function.label.ahk\" },\n        \"2\": { \"name\": \"punctuation.definition.equals.colon\" }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(#)((?i:includeagain|include))\\\\s+(.*?)\\\\s*(;.*)?$\",\n      \"name\": \"importline.ahk\",\n      \"captures\": {\n        \"3\": { \"name\": \"entity.name.section.namespace.ahk\" },\n        \"1\": { \"name\": \"keyword.control.import.ahk\" },\n        \"4\": { \"name\": \"comment.line.semicolon.label.ahk\" },\n        \"2\": { \"name\": \"keyword.control.import.ahk\" }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(#)((?i:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|iftimeout|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|if|inputlevel|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreadsbuffer|maxthreadsperhotkey|maxthreads|menumaskkey|noenv|notrayicon|persistent|singleinstance|usehook|warn|winactivateforce)),*?\\\\s*?(.*?)\\\\s*(;.*)?$\",\n      \"name\": \"preprocessordirective.ahk\",\n      \"captures\": {\n        \"3\": { \"name\": \"string.ahk\" },\n        \"1\": { \"name\": \"keyword.control.ahk\" },\n        \"4\": { \"name\": \"comment.line.semicolon.label.ahk\" },\n        \"2\": { \"name\": \"keyword.control.ahk\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(?i:IfEqual|IfNotEqual|IfLess|IfLessOrEqual|IfGreater|IfGreaterOrEqual|IfExist|IfNotExist|IfInString|IfNotInString|IfWinActive|IfWinNotActive|IfWinExist|IfWinNotExist|OnExit|SetEnv|EnvDiv|EnvMult|SetFormat|StringGetPos|StringLeft|StringRight|StringLen|StringGetPos|StringMid|StringReplace|StringSplit|StringTrimLeft|StringTrimRight)\\\\b\",\n      \"name\": \"invalid.deprecated.ahk\"\n    },\n    {\n      \"match\": \"\\\\b(?i:autotrim|blockinput|click|clipwait|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|control|coordmode|detecthiddentext|detecthiddenwindows|driveget|drivespacefree|drive|edit|envadd|envget|envset|envsub|envupdate|fileappend|filecopydir|filecopy|filecreatedir|filecreateshortcut|filedelete|fileencoding|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemovedir|filemove|filereadline|fileread|filerecycleempty|filerecycle|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|groupactivate|groupadd|groupclose|groupdeactivate|guicontrol|guicontrolget|gui|hotkey|ifmsgbox|imagesearch|inidelete|iniread|iniwrite|inputbox|input|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclickdrag|mouseclick|mousegetpos|mousemove|msgbox|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|run|runas|runwait|sendevent|sendinput|sendlevel|sendmessage|sendmode|sendplay|sendraw|send|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|setregview|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundgetwavevolume|soundget|soundplay|soundsetwavevolume|soundset|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringlen|stringlower|stringmid|stringreplace|stringsplit|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|winactivatebottom|winactivate|winclose|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winget|winhide|winkill|winmaximize|winmenuselectitem|winminimizeallundo|winminimizeall|winminimize|winmove|winrestore|winsettitle|winset|winshow|winwaitactive|winwaitclose|winwaitnotactive|winwait)\\\\b\",\n      \"name\": \"support.function.ahk\"\n    },\n    {\n      \"match\": \"\\\\b(?i:abs|acos|asc|asin|atan|ceil|chr|cos|comobjcreate|comobjactive|comobjarray|comobjconnect|comobjenwrap|comobjerror|comobjflags|comobjget|comobjmissing|comobjparameter|comobjquery|comobjtype|comobjunwrap|comobjvalue|dllcall|exp|fileexist|fileopen|floor|format|func|getkeyname|getkeyvk|getkeysc|getkeystate|il_add|il_create|il_destroy|instr|isbyref|isfunc|islabel|isobject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modifycol|lv_modify|lv_setimagelist|mod|onmessage|numget|numput|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strget|strlen|strput|strsplit|strreplace|substr|tan|trim|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)(?=\\\\()\\\\b\",\n      \"name\": \"support.function.ahk\"\n    },\n    {\n      \"match\": \"\\\\b(?<=\\\\.)(?i:read|write|readline|writeline|readuint|readint|readint64|readshort|readushort|readchar|readuchar|readdouble|readfloat|writeuint|writeint|writeint64|writeshort|writeushort|writechar|writeuchar|writedouble|writefloat|rawread|rawwrite|seek|tell|close|insert|remove|minindex|maxindex|setcapacity|getcapacity|getaddress|newenum|haskey|clone|isoptional|__new|__call|__get|__set|__delete)(?=\\\\()\\\\b\",\n      \"name\": \"support.function.ahk\"\n    },\n    {\n      \"match\": \"\\\\b(?<=\\\\.)(?i:length|ateof|encoding|__handle|name|isbuiltin|isvariadic|minparams|maxparams|position|pos)(?!\\\\[|\\\\(|\\\\.)\\\\b\",\n      \"name\": \"support.function.ahk\"\n    },\n    {\n      \"match\": \"\\\\b(?i:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles|true|false)\\\\b\",\n      \"name\": \"constant.language.builtin.ahk\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.)(?i:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|containsinteger|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|global|local|byref|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian|alwayson|alwaysoff|dpiscale|parent)(?!\\\\[|\\\\(|\\\\.)\\\\b\",\n      \"name\": \"constant.language.builtin.ahk\"\n    },\n    {\n      \"match\": \"\\\\b(?i:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\\\b\",\n      \"name\": \"constant.language.hotkey.ahk\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.)(?i:if|else|return|loop|break|for|while|class|extends|catch|finally|throw|try|until|continue|critical|exit|exitapp|gosub|goto||not|or|and|is|in|switch|case)\\\\b\",\n      \"name\": \"keyword.control.ahk\"\n    },\n    {\n      \"match\": \"(?x) \\\\b\\n((0(x|X)[0-9a-fA-F]*)\\n|(\\n  ([0-9]+\\\\.?[0-9]*)\\n  |(\\\\.[0-9]+)\\n )((e|E)(\\\\+|-)?[0-9]+)?\\n)\\\\b\\n\",\n      \"name\": \"constant.numeric.ahk\"\n    },\n    {\n      \"match\": \"\\\\+|-|\\\\*|\\\\^|/|&|#|!|~|\\\\|\",\n      \"name\": \"keyword.operator.arithmetic.ahk\"\n    },\n    { \"match\": \":=|\\\\.=|=|::\", \"name\": \"punctuation.definition.equals.ahk\" },\n    {\n      \"match\": \"<|>|<>|[<>=]=|!=\",\n      \"name\": \"punctuation.definition.comparison.ahk\"\n    },\n    { \"match\": \":|\\\\?|`|,\", \"name\": \"punctuation.ahk\" },\n    { \"match\": \"[\\\\[\\\\](){}]\", \"name\": \"punctuation.bracket.ahk\" },\n    { \"match\": \"%\", \"name\": \"punctuation.definition.variable.percent.ahk\" },\n    {\n      \"begin\": \"(\\\")\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.string.ahk\" } },\n      \"end\": \"(\\\")(?!\\\")|^\",\n      \"patterns\": [\n        { \"match\": \"\\\"\\\"\", \"name\": \"constant.character.escape.ahk\" }\n      ],\n      \"name\": \"string.quoted.double.ahk\",\n      \"beginCaptures\": { \"1\": { \"name\": \"punctuation.definition.string.ahk\" } }\n    }\n  ],\n  \"name\": \"AutoHotkey\",\n  \"uuid\": \"77AC23B6-8A90-11D9-BAA4-000A9584EC8D\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/batchfile.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/mmims/language-batchfile/blob/master/grammars/batchfile.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/mmims/language-batchfile/commit/6154ae25a24e01ac9329e7bcf958e093cd8733a9\",\n  \"name\": \"Batch File\",\n  \"scopeName\": \"source.batchfile\",\n  \"injections\": {\n    \"L:meta.block.repeat.batchfile\": {\n      \"patterns\": [\n        {\n          \"include\": \"#repeatParameter\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"include\": \"#commands\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#controls\"\n    },\n    {\n      \"include\": \"#escaped_characters\"\n    },\n    {\n      \"include\": \"#labels\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#parens\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#variables\"\n    }\n  ],\n  \"repository\": {\n    \"commands\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|[\\\\s@])(?i:adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|brea|cacls|cd|certreq|certutil|change|chcp|chdir|chglogon|chgport|chgusr|chkdsk|chkntfs|choice|cipher|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color|comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm|edit|endlocal|eraseesentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract|fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl|hashgen|hep|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile|makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group|net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb|nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd|powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess|query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset session|rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|sc|schtasks|scp|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|setspn|setx|sfc|sftp|shadow|shift|showmount|shutdown|sort|ssh|ssh-add|ssh-agent|ssh-keygen|ssh-keyscan|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time|timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|wmic|wscript|wsl|xcopy)(?=$|\\\\s)\",\n          \"name\": \"keyword.command.batchfile\"\n        },\n        {\n          \"begin\": \"(?i)(?<=^|[\\\\s@])(echo)(?:(?=$|\\\\.|:)|\\\\s+(?:(on|off)(?=\\\\s*$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.command.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.special-method.batchfile\"\n            }\n          },\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_characters\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#strings\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(?<=^|[\\\\s@])(setlocal)(?:\\\\s*$|\\\\s+(EnableExtensions|DisableExtensions|EnableDelayedExpansion|DisableDelayedExpansion)(?=\\\\s*$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.command.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.special-method.batchfile\"\n            }\n          }\n        },\n        {\n          \"include\": \"#command_set\"\n        }\n      ]\n    },\n    \"command_set\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=^|[\\\\s@])(?i:SET)(?=$|\\\\s)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.command.batchfile\"\n            }\n          },\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#command_set_inside\"\n            }\n          ]\n        }\n      ]\n    },\n    \"command_set_inside\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_characters\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#command_set_strings\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"begin\": \"([^ ][^=]*)(=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.batchfile\"\n            }\n          },\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_characters\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#strings\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s+/[aA]\\\\s+\",\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"name\": \"meta.expression.set.batchfile\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.batchfile\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.batchfile\"\n                }\n              },\n              \"name\": \"string.quoted.double.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#command_set_inside_arithmetic\"\n                },\n                {\n                  \"include\": \"#command_set_group\"\n                },\n                {\n                  \"include\": \"#variables\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#command_set_inside_arithmetic\"\n            },\n            {\n              \"include\": \"#command_set_group\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s+/[pP]\\\\s+\",\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#command_set_strings\"\n            },\n            {\n              \"begin\": \"([^ ][^=]*)(=)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.readwrite.batchfile\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.batchfile\"\n                }\n              },\n              \"end\": \"(?=$\\\\n|[&|><)])\",\n              \"name\": \"meta.prompt.set.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#strings\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"command_set_group\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.batchfile\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.batchfile\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#command_set_inside_arithmetic\"\n            }\n          ]\n        }\n      ]\n    },\n    \"command_set_inside_arithmetic\": {\n      \"patterns\": [\n        {\n          \"include\": \"#command_set_operators\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.batchfile\"\n        }\n      ]\n    },\n    \"command_set_operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"([^ ]*)(\\\\+\\\\=|\\\\-\\\\=|\\\\*\\\\=|\\\\/\\\\=|%%\\\\=|&\\\\=|\\\\|\\\\=|\\\\^\\\\=|<<\\\\=|>>\\\\=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.augmented.batchfile\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\+|\\\\-|/|\\\\*|%%|\\\\||&|\\\\^|<<|>>|~\",\n          \"name\": \"keyword.operator.arithmetic.batchfile\"\n        },\n        {\n          \"match\": \"!\",\n          \"name\": \"keyword.operator.logical.batchfile\"\n        },\n        {\n          \"match\": \"([^ =]*)(=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.batchfile\"\n            }\n          }\n        }\n      ]\n    },\n    \"command_set_strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\")\\\\s*([^ ][^=]*)(=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.batchfile\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.assignment.batchfile\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.batchfile\"\n            }\n          },\n          \"name\": \"string.quoted.double.batchfile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#escaped_characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:^|(&))\\\\s*(?=((?::[+=,;: ])))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.conditional.batchfile\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"patterns\": [\n            {\n              \"begin\": \"((?::[+=,;: ]))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.batchfile\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"name\": \"comment.line.colon.batchfile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|[\\\\s@])(?i)(REM)(\\\\.)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.command.rem.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.batchfile\"\n            }\n          },\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"name\": \"comment.line.rem.batchfile\"\n        },\n        {\n          \"begin\": \"(?<=^|[\\\\s@])(?i:rem)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.command.rem.batchfile\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.rem.batchfile\",\n          \"patterns\": [\n            {\n              \"match\": \"[><|]\",\n              \"name\": \"invalid.illegal.unexpected-character.batchfile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:NUL)\\\\b\",\n          \"name\": \"constant.language.batchfile\"\n        }\n      ]\n    },\n    \"controls\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?<=^|\\\\s)(?:call|exit(?=$|\\\\s)|goto(?=$|\\\\s|:))\",\n          \"name\": \"keyword.control.statement.batchfile\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(?i)(if)\\\\s+(?:(not)\\\\s+)?(exist|defined|errorlevel|cmdextversion)(?=\\\\s)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.conditional.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.logical.batchfile\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.special-method.batchfile\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(?i)(?:if|else)(?=$|\\\\s)\",\n          \"name\": \"keyword.control.conditional.batchfile\"\n        },\n        {\n          \"begin\": \"(?<=^|[\\\\s(&^])(?i)for(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.repeat.batchfile\"\n            }\n          },\n          \"name\": \"meta.block.repeat.batchfile\",\n          \"end\": \"\\\\n\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=[\\\\s^])(?i)in(?=\\\\s)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.repeat.in.batchfile\"\n                }\n              },\n              \"end\": \"(?<=[\\\\s)^])(?i)do(?=\\\\s)|\\\\n\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.repeat.do.batchfile\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"escaped_characters\": {\n      \"patterns\": [\n        {\n          \"match\": \"%%|\\\\^\\\\^!|\\\\^(?=.)|\\\\^\\\\n\",\n          \"name\": \"constant.character.escape.batchfile\"\n        }\n      ]\n    },\n    \"labels\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?:^\\\\s*|(?<=call|goto)\\\\s*)(:)([^+=,;:\\\\s]\\\\S*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.special-method.batchfile\"\n            }\n          }\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|\\\\s|=)(0[xX][0-9A-Fa-f]*|[+-]?\\\\d+)(?=$|\\\\s|<|>)\",\n          \"name\": \"constant.numeric.batchfile\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"@(?=\\\\S)\",\n          \"name\": \"keyword.operator.at.batchfile\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)(?i:EQU|NEQ|LSS|LEQ|GTR|GEQ)(?=\\\\s)|==\",\n          \"name\": \"keyword.operator.comparison.batchfile\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)(?i)(NOT)(?=\\\\s)\",\n          \"name\": \"keyword.operator.logical.batchfile\"\n        },\n        {\n          \"match\": \"(?<!\\\\^)&&?|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.conditional.batchfile\"\n        },\n        {\n          \"match\": \"(?<!\\\\^)\\\\|\",\n          \"name\": \"keyword.operator.pipe.batchfile\"\n        },\n        {\n          \"match\": \"<&?|>[&>]?\",\n          \"name\": \"keyword.operator.redirection.batchfile\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.batchfile\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.batchfile\"\n            }\n          },\n          \"name\": \"meta.group.batchfile\",\n          \"patterns\": [\n            {\n              \"match\": \",|;\",\n              \"name\": \"punctuation.separator.batchfile\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"repeatParameter\": {\n      \"patterns\": [\n        {\n          \"match\": \"(%%)(?:(?i:~[fdpnxsatz]*(?:\\\\$PATH:)?)?[a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.batchfile\"\n            }\n          },\n          \"name\": \"variable.parameter.repeat.batchfile\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.batchfile\"\n            }\n          },\n          \"end\": \"(\\\")|(\\\\n)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.batchfile\"\n            }\n          },\n          \"name\": \"string.quoted.double.batchfile\",\n          \"patterns\": [\n            {\n              \"match\": \"%%\",\n              \"name\": \"constant.character.escape.batchfile\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"(%)(?:(?i:~[fdpnxsatz]*(?:\\\\$PATH:)?)?\\\\d|\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.batchfile\"\n            }\n          },\n          \"name\": \"variable.parameter.batchfile\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#variable_delayed_expansion\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"begin\": \"%(?=[^%]+%)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.begin.batchfile\"\n            }\n          },\n          \"end\": \"(%)|\\\\n\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.end.batchfile\"\n            }\n          },\n          \"name\": \"variable.other.readwrite.batchfile\",\n          \"patterns\": [\n            {\n              \"begin\": \":~\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.batchfile\"\n                }\n              },\n              \"end\": \"(?=%|\\\\n)\",\n              \"name\": \"meta.variable.substring.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#variable_substring\"\n                }\n              ]\n            },\n            {\n              \"begin\": \":\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.batchfile\"\n                }\n              },\n              \"end\": \"(?=%|\\\\n)\",\n              \"name\": \"meta.variable.substitution.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#variable_replace\"\n                },\n                {\n                  \"begin\": \"=\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.separator.batchfile\"\n                    }\n                  },\n                  \"end\": \"(?=%|\\\\n)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#variable_delayed_expansion\"\n                    },\n                    {\n                      \"match\": \"[^%]+\",\n                      \"name\": \"string.unquoted.batchfile\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"variable_delayed_expansion\": {\n      \"patterns\": [\n        {\n          \"begin\": \"!(?=[^!]+!)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.begin.batchfile\"\n            }\n          },\n          \"end\": \"(!)|\\\\n\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.end.batchfile\"\n            }\n          },\n          \"name\": \"variable.other.readwrite.batchfile\",\n          \"patterns\": [\n            {\n              \"begin\": \":~\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.batchfile\"\n                }\n              },\n              \"end\": \"(?=!|\\\\n)\",\n              \"name\": \"meta.variable.substring.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#variable_substring\"\n                }\n              ]\n            },\n            {\n              \"begin\": \":\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.batchfile\"\n                }\n              },\n              \"end\": \"(?=!|\\\\n)\",\n              \"name\": \"meta.variable.substitution.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_characters\"\n                },\n                {\n                  \"include\": \"#variable_replace\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"begin\": \"=\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.separator.batchfile\"\n                    }\n                  },\n                  \"end\": \"(?=!|\\\\n)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#variable\"\n                    },\n                    {\n                      \"match\": \"[^!]+\",\n                      \"name\": \"string.unquoted.batchfile\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"variable_replace\": {\n      \"patterns\": [\n        {\n          \"match\": \"[^=%!\\\\n]+\",\n          \"name\": \"string.unquoted.batchfile\"\n        }\n      ]\n    },\n    \"variable_substring\": {\n      \"patterns\": [\n        {\n          \"match\": \"([+-]?\\\\d+)(?:(,)([+-]?\\\\d+))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.batchfile\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.batchfile\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/bibtex.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/Bibtex.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jlelong/vscode-latex-basics/commit/b98c2d4911652824fc990f4b26c9c30be59b78a2\",\n  \"name\": \"bibtex\",\n  \"scopeName\": \"text.bibtex\",\n  \"comment\": \"Grammar based on description from http://artis.imag.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html#comment\\n\\t\\n\\tTODO: Does not support @preamble\\n\\t\",\n  \"patterns\": [\n    {\n      \"begin\": \"@Comment\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.bibtex\"\n        }\n      },\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.line.at-sign.bibtex\"\n    },\n    {\n      \"begin\": \"((@)(?i:string))\\\\s*(\\\\{)\\\\s*([a-zA-Z]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.string-constant.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.string-constant.begin.bibtex\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.bibtex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.string-constant.end.bibtex\"\n        }\n      },\n      \"name\": \"meta.string-constant.braces.bibtex\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((@)i(?i::string))\\\\s*(\\\\()\\\\s*([a-zA-Z]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.string-constant.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.string-constant.begin.bibtex\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.bibtex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.string-constant.end.bibtex\"\n        }\n      },\n      \"name\": \"meta.string-constant.parenthesis.bibtex\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((@)[a-zA-Z]+)\\\\s*(\\\\{)\\\\s*([^\\\\s,]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.entry-type.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.entry.begin.bibtex\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.entry-key.bibtex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.entry.end.bibtex\"\n        }\n      },\n      \"name\": \"meta.entry.braces.bibtex\",\n      \"patterns\": [\n        {\n          \"begin\": \"([a-zA-Z0-9\\\\!\\\\$\\\\&\\\\*\\\\+\\\\-\\\\.\\\\/\\\\:\\\\;\\\\<\\\\>\\\\?\\\\[\\\\]\\\\^\\\\_\\\\`\\\\|]+)\\\\s*(\\\\=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.key.bibtex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.bibtex\"\n            }\n          },\n          \"end\": \"(?=[,}])\",\n          \"name\": \"meta.key-assignment.bibtex\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_var\"\n            },\n            {\n              \"include\": \"#string_content\"\n            },\n            {\n              \"include\": \"#integer\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"((@)[a-zA-Z]+)\\\\s*(\\\\()\\\\s*([^\\\\s,]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.entry-type.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.entry.begin.bibtex\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.entry-key.bibtex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.entry.end.bibtex\"\n        }\n      },\n      \"name\": \"meta.entry.parenthesis.bibtex\",\n      \"patterns\": [\n        {\n          \"begin\": \"([a-zA-Z0-9\\\\!\\\\$\\\\&\\\\*\\\\+\\\\-\\\\.\\\\/\\\\:\\\\;\\\\<\\\\>\\\\?\\\\[\\\\]\\\\^\\\\_\\\\`\\\\|]+)\\\\s*(\\\\=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.key.bibtex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.bibtex\"\n            }\n          },\n          \"end\": \"(?=[,)])\",\n          \"name\": \"meta.key-assignment.bibtex\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_var\"\n            },\n            {\n              \"include\": \"#string_content\"\n            },\n            {\n              \"include\": \"#integer\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"[^@\\\\n]\",\n      \"end\": \"(?=@)\",\n      \"name\": \"comment.block.bibtex\"\n    }\n  ],\n  \"repository\": {\n    \"integer\": {\n      \"match\": \"\\\\d+\",\n      \"name\": \"constant.numeric.bibtex\"\n    },\n    \"nested_braces\": {\n      \"begin\": \"(?<!\\\\\\\\)\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.group.begin.bibtex\"\n        }\n      },\n      \"end\": \"(?<!\\\\\\\\)\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.group.end.bibtex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#nested_braces\"\n        }\n      ]\n    },\n    \"string_var\": {\n      \"match\": \"(#)?\\\\s*([a-zA-Z]+)\\\\s*(#)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"support.variable.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.bibtex\"\n        }\n      }\n    },\n    \"string_content\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.bibtex\"\n            }\n          },\n          \"end\": \"(\\\\})(?=(?:,?\\\\s*\\\\}?\\\\s*\\\\n)|(?:\\\\s*#))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.bibtex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"@\",\n              \"name\": \"invalid.illegal.at-sign.bibtex\"\n            },\n            {\n              \"include\": \"#nested_braces\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.bibtex\"\n            }\n          },\n          \"end\": \"\\\"(?=(?:,?\\\\s*\\\\}?\\\\s*\\\\n)|(?:\\\\s*#))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.bibtex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"@\",\n              \"name\": \"invalid.illegal.at-sign.bibtex\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/bicep.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.bicep\",\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"patterns\": [{ \"include\": \"#expression\" }, { \"include\": \"#comments\" }],\n  \"repository\": {\n    \"line-comment\": {\n      \"name\": \"comment.line.double-slash.bicep\",\n      \"match\": \"//.*(?=$)\"\n    },\n    \"keyword\": {\n      \"name\": \"keyword.control.declaration.bicep\",\n      \"match\": \"\\\\b(metadata|targetScope|resource|module|param|var|output|for|in|if|existing|import|as|type|with)\\\\b\"\n    },\n    \"object-literal\": {\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"patterns\": [\n        { \"include\": \"#object-property-key\" },\n        { \"include\": \"#expression\" },\n        { \"include\": \"#comments\" }\n      ],\n      \"name\": \"meta.object-literal.bicep\"\n    },\n    \"string-literal-subst\": {\n      \"begin\": \"(?<!\\\\\\\\)(\\\\${)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.template-expression.end.bicep\" }\n      },\n      \"end\": \"(})\",\n      \"patterns\": [{ \"include\": \"#expression\" }, { \"include\": \"#comments\" }],\n      \"name\": \"meta.string-literal-subst.bicep\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.template-expression.begin.bicep\"\n        }\n      }\n    },\n    \"array-literal\": {\n      \"begin\": \"\\\\[(?!(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\bfor\\\\b)\",\n      \"end\": \"]\",\n      \"patterns\": [{ \"include\": \"#expression\" }, { \"include\": \"#comments\" }],\n      \"name\": \"meta.array-literal.bicep\"\n    },\n    \"object-property-key\": {\n      \"name\": \"variable.other.property.bicep\",\n      \"match\": \"\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?=(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*:)\"\n    },\n    \"string-verbatim\": {\n      \"begin\": \"'''\",\n      \"end\": \"'''\",\n      \"patterns\": [],\n      \"name\": \"string.quoted.multi.bicep\"\n    },\n    \"lambda-start\": {\n      \"begin\": \"(\\\\((?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*(,(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*)*\\\\)|\\\\((?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\)|(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*)(?=(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*=>)\",\n      \"end\": \"(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*=>\",\n      \"name\": \"meta.lambda-start.bicep\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.undefined.bicep\",\n          \"patterns\": [{ \"include\": \"#identifier\" }, { \"include\": \"#comments\" }]\n        }\n      }\n    },\n    \"function-call\": {\n      \"begin\": \"(\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b)(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#expression\" }, { \"include\": \"#comments\" }],\n      \"name\": \"meta.function-call.bicep\",\n      \"beginCaptures\": { \"1\": { \"name\": \"entity.name.function.bicep\" } }\n    },\n    \"escape-character\": {\n      \"name\": \"constant.character.escape.bicep\",\n      \"match\": \"\\\\\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\\\\\|'|\\\\${)\"\n    },\n    \"identifier\": {\n      \"name\": \"variable.other.readwrite.bicep\",\n      \"match\": \"\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?!(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\()\"\n    },\n    \"string-literal\": {\n      \"begin\": \"'(?!'')\",\n      \"end\": \"'\",\n      \"patterns\": [\n        { \"include\": \"#escape-character\" },\n        { \"include\": \"#string-literal-subst\" }\n      ],\n      \"name\": \"string.quoted.single.bicep\"\n    },\n    \"directive-variable\": {\n      \"name\": \"keyword.control.declaration.bicep\",\n      \"match\": \"\\\\b[_a-zA-Z-0-9]+\\\\b\"\n    },\n    \"directive\": {\n      \"begin\": \"#\\\\b[_a-zA-Z-0-9]+\\\\b\",\n      \"end\": \"$\",\n      \"patterns\": [\n        { \"include\": \"#directive-variable\" },\n        { \"include\": \"#comments\" }\n      ],\n      \"name\": \"meta.directive.bicep\"\n    },\n    \"decorator\": {\n      \"begin\": \"@(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*(?=\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b)\",\n      \"end\": \"\",\n      \"patterns\": [{ \"include\": \"#expression\" }, { \"include\": \"#comments\" }],\n      \"name\": \"meta.decorator.bicep\"\n    },\n    \"block-comment\": {\n      \"name\": \"comment.block.bicep\",\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        { \"include\": \"#line-comment\" },\n        { \"include\": \"#block-comment\" }\n      ]\n    },\n    \"numeric-literal\": { \"name\": \"constant.numeric.bicep\", \"match\": \"[0-9]+\" },\n    \"expression\": {\n      \"patterns\": [\n        { \"include\": \"#string-literal\" },\n        { \"include\": \"#string-verbatim\" },\n        { \"include\": \"#numeric-literal\" },\n        { \"include\": \"#named-literal\" },\n        { \"include\": \"#object-literal\" },\n        { \"include\": \"#array-literal\" },\n        { \"include\": \"#keyword\" },\n        { \"include\": \"#identifier\" },\n        { \"include\": \"#function-call\" },\n        { \"include\": \"#decorator\" },\n        { \"include\": \"#lambda-start\" },\n        { \"include\": \"#directive\" }\n      ]\n    },\n    \"named-literal\": {\n      \"name\": \"constant.language.bicep\",\n      \"match\": \"\\\\b(true|false|null)\\\\b\"\n    }\n  },\n  \"name\": \"Bicep\",\n  \"fileTypes\": [\".bicep\"]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/c.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-c-syntax/blob/master/autogenerated/c.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-c-syntax/commit/34712a6106a4ffb0a04d2fa836fd28ff6c5849a4\",\n  \"name\": \"c\",\n  \"scopeName\": \"source.c\",\n  \"patterns\": [\n    {\n      \"include\": \"#preprocessor-rule-enabled\"\n    },\n    {\n      \"include\": \"#preprocessor-rule-disabled\"\n    },\n    {\n      \"include\": \"#preprocessor-rule-conditional\"\n    },\n    {\n      \"include\": \"#predefined_macros\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#switch_statement\"\n    },\n    {\n      \"include\": \"#anon_pattern_1\"\n    },\n    {\n      \"include\": \"#storage_types\"\n    },\n    {\n      \"include\": \"#anon_pattern_2\"\n    },\n    {\n      \"include\": \"#anon_pattern_3\"\n    },\n    {\n      \"include\": \"#anon_pattern_4\"\n    },\n    {\n      \"include\": \"#anon_pattern_5\"\n    },\n    {\n      \"include\": \"#anon_pattern_6\"\n    },\n    {\n      \"include\": \"#anon_pattern_7\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_1\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_2\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_3\"\n    },\n    {\n      \"include\": \"#pragma-mark\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_4\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_5\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_6\"\n    },\n    {\n      \"include\": \"#anon_pattern_8\"\n    },\n    {\n      \"include\": \"#anon_pattern_9\"\n    },\n    {\n      \"include\": \"#anon_pattern_10\"\n    },\n    {\n      \"include\": \"#anon_pattern_11\"\n    },\n    {\n      \"include\": \"#anon_pattern_12\"\n    },\n    {\n      \"include\": \"#anon_pattern_13\"\n    },\n    {\n      \"include\": \"#block\"\n    },\n    {\n      \"include\": \"#parens\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_7\"\n    },\n    {\n      \"include\": \"#line_continuation_character\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_8\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_9\"\n    },\n    {\n      \"include\": \"#anon_pattern_14\"\n    },\n    {\n      \"include\": \"#anon_pattern_15\"\n    }\n  ],\n  \"repository\": {\n    \"access-method\": {\n      \"name\": \"meta.function-call.member.c\",\n      \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))\\\\s*(?:(\\\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\\\s*(?:(?:\\\\.)|(?:->)))*)\\\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.object.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.dot-access.c\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.pointer-access.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\.\",\n              \"name\": \"punctuation.separator.dot-access.c\"\n            },\n            {\n              \"match\": \"->\",\n              \"name\": \"punctuation.separator.pointer-access.c\"\n            },\n            {\n              \"match\": \"[a-zA-Z_][a-zA-Z_0-9]*\",\n              \"name\": \"variable.object.c\"\n            },\n            {\n              \"name\": \"everything.else.c\",\n              \"match\": \".+\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"entity.name.function.member.c\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.c\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        }\n      ]\n    },\n    \"anon_pattern_1\": {\n      \"match\": \"\\\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\\\b\",\n      \"name\": \"keyword.control.c\"\n    },\n    \"anon_pattern_10\": {\n      \"match\": \"(?x) \\\\b\\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\\n|uintmax_t|uintmax_t)\\n\\\\b\",\n      \"name\": \"support.type.stdint.c\"\n    },\n    \"anon_pattern_11\": {\n      \"match\": \"\\\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\\\b\",\n      \"name\": \"support.constant.mac-classic.c\"\n    },\n    \"anon_pattern_12\": {\n      \"match\": \"(?x) \\\\b\\n(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam\\n|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr\\n|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber\\n|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64\\n|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32\\n|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr\\n|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\\n\\\\b\",\n      \"name\": \"support.type.mac-classic.c\"\n    },\n    \"anon_pattern_13\": {\n      \"match\": \"\\\\b([A-Za-z0-9_]+_t)\\\\b\",\n      \"name\": \"support.type.posix-reserved.c\"\n    },\n    \"anon_pattern_14\": {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.statement.c\"\n    },\n    \"anon_pattern_15\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.c\"\n    },\n    \"anon_pattern_2\": {\n      \"match\": \"typedef\",\n      \"name\": \"keyword.other.typedef.c\"\n    },\n    \"anon_pattern_3\": {\n      \"match\": \"\\\\b(const|extern|register|restrict|static|volatile|inline)\\\\b\",\n      \"name\": \"storage.modifier.c\"\n    },\n    \"anon_pattern_4\": {\n      \"match\": \"\\\\bk[A-Z]\\\\w*\\\\b\",\n      \"name\": \"constant.other.variable.mac-classic.c\"\n    },\n    \"anon_pattern_5\": {\n      \"match\": \"\\\\bg[A-Z]\\\\w*\\\\b\",\n      \"name\": \"variable.other.readwrite.global.mac-classic.c\"\n    },\n    \"anon_pattern_6\": {\n      \"match\": \"\\\\bs[A-Z]\\\\w*\\\\b\",\n      \"name\": \"variable.other.readwrite.static.mac-classic.c\"\n    },\n    \"anon_pattern_7\": {\n      \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n      \"name\": \"constant.language.c\"\n    },\n    \"anon_pattern_8\": {\n      \"match\": \"\\\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\\\b\",\n      \"name\": \"support.type.sys-types.c\"\n    },\n    \"anon_pattern_9\": {\n      \"match\": \"\\\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\\\b\",\n      \"name\": \"support.type.pthread.c\"\n    },\n    \"anon_pattern_range_1\": {\n      \"name\": \"meta.preprocessor.macro.c\",\n      \"begin\": \"((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))((#)\\\\s*define\\\\b)\\\\s+((?<!\\\\w)[a-zA-Z_]\\\\w*(?!\\\\w))(?:(\\\\()([^()\\\\\\\\]+)(\\\\)))?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.directive.define.c\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.preprocessor.c\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.parameters.begin.c\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=[(,])\\\\s*((?<!\\\\w)[a-zA-Z_]\\\\w*(?!\\\\w))\\\\s*\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.preprocessor.c\"\n                }\n              }\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.parameters.c\"\n            },\n            {\n              \"match\": \"\\\\.\\\\.\\\\.\",\n              \"name\": \"ellipses.c punctuation.vararg-ellipses.variable.parameter.preprocessor.c\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.parameters.end.c\"\n        }\n      },\n      \"end\": \"(?<!\\\\\\\\)(?=\\\\n)\",\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-define-line-contents\"\n        }\n      ]\n    },\n    \"anon_pattern_range_2\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*(error|warning))\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.diagnostic.$3.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.diagnostic.c\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.double.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.single.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[^'\\\"]\",\n          \"end\": \"(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"name\": \"string.unquoted.single.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"anon_pattern_range_3\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*(include(?:_next)?|import))\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.$3.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.include.c\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_continuation_character\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.double.include.c\"\n        },\n        {\n          \"begin\": \"<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.other.lt-gt.include.c\"\n        }\n      ]\n    },\n    \"anon_pattern_range_4\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*line)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.line.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.c\",\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"anon_pattern_range_5\": {\n      \"begin\": \"^\\\\s*(?:((#)\\\\s*undef))\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.undef.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.c\",\n      \"patterns\": [\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n          \"name\": \"entity.name.function.preprocessor.c\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"anon_pattern_range_6\": {\n      \"begin\": \"^\\\\s*(?:((#)\\\\s*pragma))\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.pragma.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.pragma.c\",\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n          \"name\": \"entity.other.attribute-name.pragma.preprocessor.c\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"anon_pattern_range_7\": {\n      \"name\": \"meta.function.c\",\n      \"begin\": \"(?<!\\\\w)(?!\\\\s*(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_int_least64_t|atomic_int_least32_t|pthread_rwlockattr_t|atomic_uint_fast16_t|pthread_mutexattr_t|atomic_int_fast16_t|atomic_uint_fast8_t|atomic_int_fast64_t|atomic_int_least8_t|atomic_int_fast32_t|atomic_int_fast8_t|pthread_condattr_t|pthread_rwlock_t|atomic_uintptr_t|atomic_ptrdiff_t|atomic_uintmax_t|atomic_intmax_t|atomic_char32_t|atomic_intptr_t|atomic_char16_t|pthread_mutex_t|pthread_cond_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_once_t|pthread_attr_t|uint_least8_t|int_least32_t|int_least16_t|pthread_key_t|uint_fast32_t|uint_fast64_t|uint_fast16_t|atomic_size_t|atomic_ushort|atomic_ullong|int_least64_t|atomic_ulong|int_least8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|memory_order|atomic_schar|atomic_uchar|atomic_short|atomic_llong|thread_local|atomic_bool|atomic_uint|atomic_long|int_fast8_t|suseconds_t|atomic_char|atomic_int|useconds_t|_Imaginary|uintmax_t|uintmax_t|in_addr_t|in_port_t|_Noreturn|blksize_t|pthread_t|uintptr_t|volatile|u_quad_t|blkcnt_t|intmax_t|intptr_t|_Complex|uint16_t|uint32_t|uint64_t|_Alignof|_Alignas|continue|unsigned|restrict|intmax_t|register|int64_t|qaddr_t|segsz_t|_Atomic|alignas|default|caddr_t|nlink_t|typedef|u_short|fixpt_t|clock_t|swblk_t|ssize_t|alignof|daddr_t|int16_t|int32_t|uint8_t|struct|mode_t|size_t|time_t|ushort|u_long|u_char|int8_t|double|signed|static|extern|inline|return|switch|xor_eq|and_eq|bitand|not_eq|sizeof|quad_t|uid_t|bitor|union|off_t|key_t|ino_t|compl|u_int|short|const|false|while|float|pid_t|break|_Bool|or_eq|div_t|dev_t|gid_t|id_t|long|case|goto|else|bool|auto|id_t|enum|uint|true|NULL|void|char|for|not|int|and|xor|do|or|if)\\\\s*\\\\()(?=[a-zA-Z_]\\\\w*\\\\s*\\\\()\",\n      \"end\": \"(?!\\\\G)(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-innards\"\n        }\n      ]\n    },\n    \"anon_pattern_range_8\": {\n      \"name\": \"meta.bracket.square.access.c\",\n      \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.object.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.c\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.square.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        }\n      ]\n    },\n    \"anon_pattern_range_9\": {\n      \"name\": \"storage.modifier.array.bracket.square.c\",\n      \"match\": \"\\\\[\\\\s*\\\\]\"\n    },\n    \"backslash_escapes\": {\n      \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3][0-7]{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n      \"name\": \"constant.character.escape.c\"\n    },\n    \"block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.c\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.c\"\n            }\n          },\n          \"name\": \"meta.block.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"block_comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*+(\\\\/\\\\*)\",\n          \"end\": \"\\\\*\\\\/\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.c\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.c\"\n            }\n          },\n          \"name\": \"comment.block.c\"\n        },\n        {\n          \"begin\": \"\\\\s*+(\\\\/\\\\*)\",\n          \"end\": \"\\\\*\\\\/\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.c\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.c\"\n            }\n          },\n          \"name\": \"comment.block.c\"\n        }\n      ]\n    },\n    \"block_innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled-block\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled-block\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-conditional-block\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#c_function_call\"\n        },\n        {\n          \"name\": \"meta.initialization.c\",\n          \"begin\": \"(?x)\\n(?:\\n  (?:\\n\\t(?=\\\\s)(?<!else|new|return)\\n\\t(?<=\\\\w) \\\\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)  # or word + space before name\\n  )\\n)\\n(\\n  (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++   # actual name\\n  |\\n  (?:(?<=operator) (?:[-*&<>=+!]+ | \\\\(\\\\) | \\\\[\\\\]))\\n)\\n\\\\s*(\\\\() # opening bracket\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.initialization.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.initialization.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.c\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parens-block\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"c_conditional_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"include\": \"#block_innards\"\n        }\n      ]\n    },\n    \"c_function_call\": {\n      \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(?=\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n      \"end\": \"(?<=\\\\))(?!\\\\w)\",\n      \"name\": \"meta.function-call.c\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        }\n      ]\n    },\n    \"case_statement\": {\n      \"name\": \"meta.conditional.case.c\",\n      \"begin\": \"((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))((?<!\\\\w)case(?!\\\\w))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.case.c\"\n        }\n      },\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.case.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#c_conditional_context\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"patterns\": [\n                {\n                  \"name\": \"comment.line.double-slash.documentation.c\",\n                  \"begin\": \"(?:^)(?>\\\\s*)(\\\\/\\\\/[!\\\\/]+)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.documentation.c\"\n                    }\n                  },\n                  \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#line_continuation_character\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.italic.doxygen.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.bold.doxygen.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.inline.raw.string.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?\\\\s*(?:in|out)\\\\s*)+)\\\\])?\\\\s+(\\\\b\\\\w+\\\\b)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"patterns\": [\n                            {\n                              \"match\": \"in|out\",\n                              \"name\": \"keyword.other.parameter.direction.$0.c\"\n                            }\n                          ]\n                        },\n                        \"3\": {\n                          \"name\": \"variable.parameter.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                      \"name\": \"storage.type.class.gtkdoc\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(\\\\/\\\\*[!*]+(?=\\\\s))(.+)([!*]*\\\\*\\\\/)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.begin.documentation.c\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))\\\\s+(\\\\S+)\",\n                          \"captures\": {\n                            \"1\": {\n                              \"name\": \"storage.type.class.doxygen.c\"\n                            },\n                            \"2\": {\n                              \"name\": \"markup.italic.doxygen.c\"\n                            }\n                          }\n                        },\n                        {\n                          \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)\\\\s+(\\\\S+)\",\n                          \"captures\": {\n                            \"1\": {\n                              \"name\": \"storage.type.class.doxygen.c\"\n                            },\n                            \"2\": {\n                              \"name\": \"markup.bold.doxygen.c\"\n                            }\n                          }\n                        },\n                        {\n                          \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))\\\\s+(\\\\S+)\",\n                          \"captures\": {\n                            \"1\": {\n                              \"name\": \"storage.type.class.doxygen.c\"\n                            },\n                            \"2\": {\n                              \"name\": \"markup.inline.raw.string.c\"\n                            }\n                          }\n                        },\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?\\\\s*(?:in|out)\\\\s*)+)\\\\])?\\\\s+(\\\\b\\\\w+\\\\b)\",\n                          \"captures\": {\n                            \"1\": {\n                              \"name\": \"storage.type.class.doxygen.c\"\n                            },\n                            \"2\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"in|out\",\n                                  \"name\": \"keyword.other.parameter.direction.$0.c\"\n                                }\n                              ]\n                            },\n                            \"3\": {\n                              \"name\": \"variable.parameter.c\"\n                            }\n                          }\n                        },\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                          \"name\": \"storage.type.class.gtkdoc\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.comment.end.documentation.c\"\n                    }\n                  },\n                  \"name\": \"comment.block.documentation.c\"\n                },\n                {\n                  \"name\": \"comment.block.documentation.c\",\n                  \"begin\": \"((?>\\\\s*)\\\\/\\\\*[!*]+(?:(?:\\\\n|$)|(?=\\\\s)))\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.begin.documentation.c\"\n                    }\n                  },\n                  \"end\": \"([!*]*\\\\*\\\\/)\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.end.documentation.c\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.italic.doxygen.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.bold.doxygen.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.inline.raw.string.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?\\\\s*(?:in|out)\\\\s*)+)\\\\])?\\\\s+(\\\\b\\\\w+\\\\b)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"patterns\": [\n                            {\n                              \"match\": \"in|out\",\n                              \"name\": \"keyword.other.parameter.direction.$0.c\"\n                            }\n                          ]\n                        },\n                        \"3\": {\n                          \"name\": \"variable.parameter.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                      \"name\": \"storage.type.class.gtkdoc\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"^\\\\/\\\\* =(\\\\s*.*?)\\\\s*= \\\\*\\\\/$\\\\n?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"meta.toc-list.banner.block.c\"\n                    }\n                  },\n                  \"name\": \"comment.block.banner.c\"\n                },\n                {\n                  \"name\": \"comment.block.c\",\n                  \"begin\": \"(\\\\/\\\\*)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.begin.c\"\n                    }\n                  },\n                  \"end\": \"(\\\\*\\\\/)\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.end.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"^\\\\/\\\\/ =(\\\\s*.*?)\\\\s*=$\\\\n?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"meta.toc-list.banner.line.c\"\n                    }\n                  },\n                  \"name\": \"comment.line.banner.c\"\n                },\n                {\n                  \"begin\": \"((?:^[ \\\\t]+)?)(?=\\\\/\\\\/)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.whitespace.comment.leading.c\"\n                    }\n                  },\n                  \"end\": \"(?!\\\\G)\",\n                  \"patterns\": [\n                    {\n                      \"name\": \"comment.line.double-slash.c\",\n                      \"begin\": \"(\\\\/\\\\/)\",\n                      \"beginCaptures\": {\n                        \"1\": {\n                          \"name\": \"punctuation.definition.comment.c\"\n                        }\n                      },\n                      \"end\": \"(?=\\\\n)\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#line_continuation_character\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_comment\"\n            },\n            {\n              \"include\": \"#line_comment\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#block_comment\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        }\n      ]\n    },\n    \"default_statement\": {\n      \"name\": \"meta.conditional.case.c\",\n      \"begin\": \"((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))((?<!\\\\w)default(?!\\\\w))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.default.c\"\n        }\n      },\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.case.default.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#c_conditional_context\"\n        }\n      ]\n    },\n    \"disabled\": {\n      \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n      \"end\": \"^\\\\s*#\\\\s*endif\\\\b\",\n      \"patterns\": [\n        {\n          \"include\": \"#disabled\"\n        },\n        {\n          \"include\": \"#pragma-mark\"\n        }\n      ]\n    },\n    \"evaluation_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"function-call-innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#block_innards\"\n        }\n      ]\n    },\n    \"function-innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"name\": \"meta.function.definition.parameters.c\",\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.parameters.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parameters.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#probably_a_parameter\"\n            },\n            {\n              \"include\": \"#function-innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-innards\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"inline_comment\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.c\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.c\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.c\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.c\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n            },\n            \"2\": {\n              \"name\": \"comment.block.c\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.c\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"line_comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*+(\\\\/\\\\/)\",\n          \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.c\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"comment.line.double-slash.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*+(\\\\/\\\\/)\",\n          \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.c\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"comment.line.double-slash.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        }\n      ]\n    },\n    \"line_continuation_character\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\)\\\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.character.escape.line-continuation.c\"\n            }\n          }\n        }\n      ]\n    },\n    \"member_access\": {\n      \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*(\\\\b(?!(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_int_least64_t|atomic_int_least32_t|pthread_rwlockattr_t|atomic_uint_fast16_t|pthread_mutexattr_t|atomic_int_fast16_t|atomic_uint_fast8_t|atomic_int_fast64_t|atomic_int_least8_t|atomic_int_fast32_t|atomic_int_fast8_t|pthread_condattr_t|atomic_uintptr_t|atomic_ptrdiff_t|pthread_rwlock_t|atomic_uintmax_t|pthread_mutex_t|atomic_intmax_t|atomic_intptr_t|atomic_char32_t|atomic_char16_t|pthread_attr_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_cond_t|pthread_once_t|uint_fast64_t|uint_fast16_t|atomic_size_t|uint_least8_t|int_least64_t|int_least32_t|int_least16_t|pthread_key_t|atomic_ullong|atomic_ushort|uint_fast32_t|atomic_schar|atomic_short|uint_fast8_t|int_fast64_t|int_fast32_t|int_fast16_t|atomic_ulong|atomic_llong|int_least8_t|atomic_uchar|memory_order|suseconds_t|int_fast8_t|atomic_bool|atomic_char|atomic_uint|atomic_long|atomic_int|useconds_t|_Imaginary|blksize_t|pthread_t|in_addr_t|uintptr_t|in_port_t|uintmax_t|uintmax_t|blkcnt_t|uint16_t|unsigned|_Complex|uint32_t|intptr_t|intmax_t|intmax_t|uint64_t|u_quad_t|int64_t|int32_t|ssize_t|caddr_t|clock_t|uint8_t|u_short|swblk_t|segsz_t|int16_t|fixpt_t|daddr_t|nlink_t|qaddr_t|size_t|time_t|mode_t|signed|quad_t|ushort|u_long|u_char|double|int8_t|ino_t|uid_t|pid_t|_Bool|float|dev_t|div_t|short|gid_t|off_t|u_int|key_t|id_t|uint|long|void|char|bool|id_t|int)\\\\b)[a-zA-Z_]\\\\w*\\\\b(?!\\\\())\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.object.access.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.dot-access.c\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.pointer-access.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.object.access.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.dot-access.c\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.pointer-access.c\"\n                }\n              }\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"variable.other.member.c\"\n        }\n      }\n    },\n    \"method_access\": {\n      \"contentName\": \"meta.function-call.member.c\",\n      \"begin\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*([a-zA-Z_]\\\\w*)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.object.access.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.dot-access.c\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.pointer-access.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.object.access.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.dot-access.c\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.pointer-access.c\"\n                }\n              }\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"entity.name.function.member.c\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.c\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$\",\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?<!')([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.hexadecimal.c\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.c\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.c\"\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.c\"\n                    },\n                    \"11\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"12\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?<!')([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"2\": {\n                      \"name\": \"constant.numeric.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.point.c\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.c\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.c\"\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.c\"\n                    },\n                    \"11\": {\n                      \"name\": \"constant.numeric.exponent.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"12\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.binary.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.octal.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.octal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?<!')([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.c\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.c\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.c\"\n                    },\n                    \"8\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?<!')([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"2\": {\n                      \"name\": \"constant.numeric.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.c\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.c\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.c\"\n                    },\n                    \"8\": {\n                      \"name\": \"constant.numeric.exponent.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![\\\\w$])(sizeof)(?![\\\\w$])\",\n          \"name\": \"keyword.operator.sizeof.c\"\n        },\n        {\n          \"match\": \"--\",\n          \"name\": \"keyword.operator.decrement.c\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.c\"\n        },\n        {\n          \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()/=\",\n          \"name\": \"keyword.operator.assignment.compound.c\"\n        },\n        {\n          \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n          \"name\": \"keyword.operator.assignment.compound.bitwise.c\"\n        },\n        {\n          \"match\": \"<<|>>\",\n          \"name\": \"keyword.operator.bitwise.shift.c\"\n        },\n        {\n          \"match\": \"!=|<=|>=|==|<|>\",\n          \"name\": \"keyword.operator.comparison.c\"\n        },\n        {\n          \"match\": \"&&|!|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.c\"\n        },\n        {\n          \"match\": \"&|\\\\||\\\\^|~\",\n          \"name\": \"keyword.operator.c\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.c\"\n        },\n        {\n          \"match\": \"%|\\\\*|/|-|\\\\+\",\n          \"name\": \"keyword.operator.c\"\n        },\n        {\n          \"begin\": \"(\\\\?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.ternary.c\"\n            }\n          },\n          \"end\": \"(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.ternary.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parens\": {\n      \"name\": \"meta.parens.c\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"parens-block\": {\n      \"name\": \"meta.parens.block.c\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block_innards\"\n        },\n        {\n          \"match\": \"(?-mix:(?<!:):(?!:))\",\n          \"name\": \"punctuation.range-based.c\"\n        }\n      ]\n    },\n    \"pragma-mark\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.pragma.c\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.directive.pragma.pragma-mark.c\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.pragma-mark.c\"\n        }\n      },\n      \"match\": \"^\\\\s*(((#)\\\\s*pragma\\\\s+mark)\\\\s+(.*))\",\n      \"name\": \"meta.section.c\"\n    },\n    \"predefined_macros\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(__cplusplus|__DATE__|__FILE__|__LINE__|__STDC__|__STDC_HOSTED__|__STDC_NO_COMPLEX__|__STDC_VERSION__|__STDCPP_THREADS__|__TIME__|NDEBUG|__OBJC__|__ASSEMBLER__|__ATOM__|__AVX__|__AVX2__|_CHAR_UNSIGNED|__CLR_VER|_CONTROL_FLOW_GUARD|__COUNTER__|__cplusplus_cli|__cplusplus_winrt|_CPPRTTI|_CPPUNWIND|_DEBUG|_DLL|__FUNCDNAME__|__FUNCSIG__|__FUNCTION__|_INTEGRAL_MAX_BITS|__INTELLISENSE__|_ISO_VOLATILE|_KERNEL_MODE|_M_AMD64|_M_ARM|_M_ARM_ARMV7VE|_M_ARM_FP|_M_ARM64|_M_CEE|_M_CEE_PURE|_M_CEE_SAFE|_M_FP_EXCEPT|_M_FP_FAST|_M_FP_PRECISE|_M_FP_STRICT|_M_IX86|_M_IX86_FP|_M_X64|_MANAGED|_MSC_BUILD|_MSC_EXTENSIONS|_MSC_FULL_VER|_MSC_VER|_MSVC_LANG|__MSVC_RUNTIME_CHECKS|_MT|_NATIVE_WCHAR_T_DEFINED|_OPENMP|_PREFAST|__TIMESTAMP__|_VC_NO_DEFAULTLIB|_WCHAR_T_DEFINED|_WIN32|_WIN64|_WINRT_DLL|_ATL_VER|_MFC_VER|__GFORTRAN__|__GNUC__|__GNUC_MINOR__|__GNUC_PATCHLEVEL__|__GNUG__|__STRICT_ANSI__|__BASE_FILE__|__INCLUDE_LEVEL__|__ELF__|__VERSION__|__OPTIMIZE__|__OPTIMIZE_SIZE__|__NO_INLINE__|__GNUC_STDC_INLINE__|__CHAR_UNSIGNED__|__WCHAR_UNSIGNED__|__REGISTER_PREFIX__|__REGISTER_PREFIX__|__SIZE_TYPE__|__PTRDIFF_TYPE__|__WCHAR_TYPE__|__WINT_TYPE__|__INTMAX_TYPE__|__UINTMAX_TYPE__|__SIG_ATOMIC_TYPE__|__INT8_TYPE__|__INT16_TYPE__|__INT32_TYPE__|__INT64_TYPE__|__UINT8_TYPE__|__UINT16_TYPE__|__UINT32_TYPE__|__UINT64_TYPE__|__INT_LEAST8_TYPE__|__INT_LEAST16_TYPE__|__INT_LEAST32_TYPE__|__INT_LEAST64_TYPE__|__UINT_LEAST8_TYPE__|__UINT_LEAST16_TYPE__|__UINT_LEAST32_TYPE__|__UINT_LEAST64_TYPE__|__INT_FAST8_TYPE__|__INT_FAST16_TYPE__|__INT_FAST32_TYPE__|__INT_FAST64_TYPE__|__UINT_FAST8_TYPE__|__UINT_FAST16_TYPE__|__UINT_FAST32_TYPE__|__UINT_FAST64_TYPE__|__INTPTR_TYPE__|__UINTPTR_TYPE__|__CHAR_BIT__|__SCHAR_MAX__|__WCHAR_MAX__|__SHRT_MAX__|__INT_MAX__|__LONG_MAX__|__LONG_LONG_MAX__|__WINT_MAX__|__SIZE_MAX__|__PTRDIFF_MAX__|__INTMAX_MAX__|__UINTMAX_MAX__|__SIG_ATOMIC_MAX__|__INT8_MAX__|__INT16_MAX__|__INT32_MAX__|__INT64_MAX__|__UINT8_MAX__|__UINT16_MAX__|__UINT32_MAX__|__UINT64_MAX__|__INT_LEAST8_MAX__|__INT_LEAST16_MAX__|__INT_LEAST32_MAX__|__INT_LEAST64_MAX__|__UINT_LEAST8_MAX__|__UINT_LEAST16_MAX__|__UINT_LEAST32_MAX__|__UINT_LEAST64_MAX__|__INT_FAST8_MAX__|__INT_FAST16_MAX__|__INT_FAST32_MAX__|__INT_FAST64_MAX__|__UINT_FAST8_MAX__|__UINT_FAST16_MAX__|__UINT_FAST32_MAX__|__UINT_FAST64_MAX__|__INTPTR_MAX__|__UINTPTR_MAX__|__WCHAR_MIN__|__WINT_MIN__|__SIG_ATOMIC_MIN__|__SCHAR_WIDTH__|__SHRT_WIDTH__|__INT_WIDTH__|__LONG_WIDTH__|__LONG_LONG_WIDTH__|__PTRDIFF_WIDTH__|__SIG_ATOMIC_WIDTH__|__SIZE_WIDTH__|__WCHAR_WIDTH__|__WINT_WIDTH__|__INT_LEAST8_WIDTH__|__INT_LEAST16_WIDTH__|__INT_LEAST32_WIDTH__|__INT_LEAST64_WIDTH__|__INT_FAST8_WIDTH__|__INT_FAST16_WIDTH__|__INT_FAST32_WIDTH__|__INT_FAST64_WIDTH__|__INTPTR_WIDTH__|__INTMAX_WIDTH__|__SIZEOF_INT__|__SIZEOF_LONG__|__SIZEOF_LONG_LONG__|__SIZEOF_SHORT__|__SIZEOF_POINTER__|__SIZEOF_FLOAT__|__SIZEOF_DOUBLE__|__SIZEOF_LONG_DOUBLE__|__SIZEOF_SIZE_T__|__SIZEOF_WCHAR_T__|__SIZEOF_WINT_T__|__SIZEOF_PTRDIFF_T__|__BYTE_ORDER__|__ORDER_LITTLE_ENDIAN__|__ORDER_BIG_ENDIAN__|__ORDER_PDP_ENDIAN__|__FLOAT_WORD_ORDER__|__DEPRECATED|__EXCEPTIONS|__GXX_RTTI|__USING_SJLJ_EXCEPTIONS__|__GXX_EXPERIMENTAL_CXX0X__|__GXX_WEAK__|__NEXT_RUNTIME__|__LP64__|_LP64|__SSP__|__SSP_ALL__|__SSP_STRONG__|__SSP_EXPLICIT__|__SANITIZE_ADDRESS__|__SANITIZE_THREAD__|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16|__HAVE_SPECULATION_SAFE_VALUE|__GCC_HAVE_DWARF2_CFI_ASM|__FP_FAST_FMA|__FP_FAST_FMAF|__FP_FAST_FMAL|__FP_FAST_FMAF16|__FP_FAST_FMAF32|__FP_FAST_FMAF64|__FP_FAST_FMAF128|__FP_FAST_FMAF32X|__FP_FAST_FMAF64X|__FP_FAST_FMAF128X|__GCC_IEC_559|__GCC_IEC_559_COMPLEX|__NO_MATH_ERRNO__|__has_builtin|__has_feature|__has_extension|__has_cpp_attribute|__has_c_attribute|__has_attribute|__has_declspec_attribute|__is_identifier|__has_include|__has_include_next|__has_warning|__BASE_FILE__|__FILE_NAME__|__clang__|__clang_major__|__clang_minor__|__clang_patchlevel__|__clang_version__|__fp16|_Float16)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.$1.c\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b__([A-Z_]+)__\\\\b\",\n          \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$1.c\"\n        }\n      ]\n    },\n    \"preprocessor-rule-conditional\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-elif\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-else\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-elif\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"invalid.illegal.stray-$1.c\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-rule-conditional-block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-elif-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-else-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-elif\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"invalid.illegal.stray-$1.c\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-rule-conditional-line\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:\\\\bdefined\\\\b\\\\s*$)|(?:\\\\bdefined\\\\b(?=\\\\s*\\\\(*\\\\s*(?:(?!defined\\\\b)[a-zA-Z_$][\\\\w$]*\\\\b)\\\\s*\\\\)*\\\\s*(?:\\\\n|//|/\\\\*|\\\\?|\\\\:|&&|\\\\|\\\\||\\\\\\\\\\\\s*\\\\n)))\",\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        {\n          \"match\": \"\\\\bdefined\\\\b\",\n          \"name\": \"invalid.illegal.macro-name.c\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"begin\": \"\\\\?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.ternary.c\"\n            }\n          },\n          \"end\": \":\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.ternary.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n          \"name\": \"constant.language.c\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n          \"name\": \"entity.name.function.preprocessor.c\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)|(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-define-line-blocks\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.c\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-blocks\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor-rule-define-line-contents\"\n        }\n      ]\n    },\n    \"preprocessor-rule-define-line-contents\": {\n      \"patterns\": [\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.c\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.c\"\n            }\n          },\n          \"name\": \"meta.block.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-blocks\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n        },\n        {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\\\s*\\\\()\\n(?=\\n  (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n  |\\n  (?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n          \"end\": \"(?<=\\\\))(?!\\\\w)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"name\": \"meta.function.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-functions\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.double.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.single.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"preprocessor-rule-define-line-functions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-functions\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-functions\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor-rule-define-line-contents\"\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-elif\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-else\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-elif\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.c\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.if-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled-block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-elif-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-else-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-elif\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.c\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.if-branch.in-block.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled-elif\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n          \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"\\\\n\",\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n          \"contentName\": \"comment.block.preprocessor.elif-branch.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.preprocessor.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.else-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.if-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.else-branch.in-block.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.if-branch.in-block.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-elif\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n          \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"\\\\n\",\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.elif-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.elif-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-elif-block\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n          \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"\\\\n\",\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.elif-branch.in-block.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.elif-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-else\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-else-block\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#block_innards\"\n        }\n      ]\n    },\n    \"probably_a_parameter\": {\n      \"match\": \"(?<=(?:[a-zA-Z_0-9] |[&*>\\\\]\\\\)]))\\\\s*([a-zA-Z_]\\\\w*)\\\\s*(?=(?:\\\\[\\\\]\\\\s*)?(?:,|\\\\)))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.probably.c\"\n        }\n      }\n    },\n    \"static_assert\": {\n      \"begin\": \"((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))((?<!\\\\w)static_assert|_Static_assert(?!\\\\w))((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.other.static_assert.c\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.static_assert.c\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.static_assert.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"meta.static_assert.message.c\",\n          \"begin\": \"(,)\\\\s*(?=(?:L|u8|u|U\\\\s*\\\\\\\")?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.c\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"storage_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?-mix:(?<!\\\\w)(?:unsigned|signed|double|_Bool|short|float|long|void|char|bool|int)(?!\\\\w))\",\n          \"name\": \"storage.type.built-in.primitive.c\"\n        },\n        {\n          \"match\": \"(?-mix:(?<!\\\\w)(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|pthread_rwlockattr_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_uint_fast16_t|atomic_int_least64_t|atomic_int_least32_t|atomic_int_least16_t|atomic_uint_least8_t|atomic_uint_fast8_t|atomic_int_least8_t|atomic_int_fast16_t|pthread_mutexattr_t|atomic_int_fast32_t|atomic_int_fast64_t|atomic_int_fast8_t|pthread_condattr_t|atomic_ptrdiff_t|pthread_rwlock_t|atomic_uintptr_t|atomic_uintmax_t|atomic_intmax_t|atomic_intptr_t|atomic_char32_t|atomic_char16_t|pthread_mutex_t|pthread_cond_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_once_t|pthread_attr_t|int_least32_t|pthread_key_t|int_least16_t|int_least64_t|uint_least8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|atomic_ushort|atomic_ullong|atomic_size_t|int_fast16_t|int_fast64_t|uint_fast8_t|atomic_short|atomic_uchar|atomic_schar|int_least8_t|memory_order|atomic_llong|atomic_ulong|int_fast32_t|atomic_long|atomic_uint|atomic_char|int_fast8_t|suseconds_t|atomic_bool|atomic_int|_Imaginary|useconds_t|in_port_t|uintmax_t|uintmax_t|pthread_t|blksize_t|in_addr_t|uintptr_t|blkcnt_t|uint16_t|uint32_t|uint64_t|u_quad_t|_Complex|intptr_t|intmax_t|intmax_t|segsz_t|u_short|nlink_t|uint8_t|int64_t|int32_t|int16_t|fixpt_t|daddr_t|caddr_t|qaddr_t|ssize_t|clock_t|swblk_t|u_long|mode_t|int8_t|time_t|ushort|u_char|quad_t|size_t|pid_t|gid_t|uid_t|dev_t|div_t|off_t|u_int|key_t|ino_t|uint|id_t|id_t)(?!\\\\w))\",\n          \"name\": \"storage.type.built-in.c\"\n        },\n        {\n          \"match\": \"(?-mix:\\\\b(enum|struct|union)\\\\b)\",\n          \"name\": \"storage.type.$1.c\"\n        },\n        {\n          \"name\": \"meta.asm.c\",\n          \"begin\": \"(\\\\b(?:__asm__|asm)\\\\b)\\\\s*((?:volatile)?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.asm.c\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.c\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:^)((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))(?:\\\\n|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.c\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.c\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.c\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.c\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.c\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.assembly.c\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"name\": \"string.quoted.double.c\",\n                  \"contentName\": \"meta.embedded.assembly.c\",\n                  \"begin\": \"(R?)(\\\")\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"meta.encoding.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.string.begin.assembly.c\"\n                    }\n                  },\n                  \"end\": \"(\\\")\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.string.end.assembly.c\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.asm\"\n                    },\n                    {\n                      \"include\": \"source.x86\"\n                    },\n                    {\n                      \"include\": \"source.x86_64\"\n                    },\n                    {\n                      \"include\": \"source.arm\"\n                    },\n                    {\n                      \"include\": \"#backslash_escapes\"\n                    },\n                    {\n                      \"include\": \"#string_escaped_char\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(\\\\()\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.inner.c\"\n                    }\n                  },\n                  \"end\": \"(\\\\))\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.section.parens.end.bracket.round.assembly.inner.c\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\[((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))([a-zA-Z_]\\\\w*)((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))\\\\]\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.c\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.c\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"variable.other.asm.label.c\"\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.c\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.c\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \":\",\n                  \"name\": \"punctuation.separator.delimiter.colon.assembly.c\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3]\\\\d{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n          \"name\": \"constant.character.escape.c\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unknown-escape.c\"\n        }\n      ]\n    },\n    \"string_placeholder\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x) %\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n          \"name\": \"constant.other.placeholder.c\"\n        },\n        {\n          \"match\": \"(%)(?!\\\"\\\\s*(PRI|SCN))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.placeholder.c\"\n            }\n          }\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.double.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.single.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        }\n      ]\n    },\n    \"switch_conditional_parentheses\": {\n      \"name\": \"meta.conditional.switch.c\",\n      \"begin\": \"((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.c\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#c_conditional_context\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"name\": \"meta.block.switch.c\",\n      \"begin\": \"(((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))((?<!\\\\w)switch(?!\\\\w)))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.head.switch.c\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"keyword.control.switch.c\"\n        }\n      },\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.head.switch.c\",\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"((?:\\\\{|<%|\\\\?\\\\?<|(?=;)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.switch.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#switch_conditional_parentheses\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.body.switch.c\",\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"(\\\\}|%>|\\\\?\\\\?>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.switch.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#default_statement\"\n            },\n            {\n              \"include\": \"#case_statement\"\n            },\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.tail.switch.c\",\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s\\\\n]*\",\n          \"end\": \"[\\\\s\\\\n]*(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"vararg_ellipses\": {\n      \"match\": \"(?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.)\",\n      \"name\": \"punctuation.vararg-ellipses.c\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/cfscript.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"^.*\\\\bfunction\\\\s*([\\\\w\\\\$]+\\\\s*)?\\\\([^\\\\)]*\\\\)(\\\\s*\\\\{[^\\\\}]*)?\\\\s*$\",\n  \"foldingStopMarker\": \"^\\\\s*\\\\}\",\n  \"repository\": {\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)(\\n                            (\\\\b[0-9]+)\\n                            |\\n                            (\\\\.[0-9]+[0-9\\\\.]*) # decimals\\n                            |\\n                            (0(x|X)[0-9a-fA-F]+) # hex\\n                            # matches really large double/floats\\n                            |(\\\\.[0-9]+)((e|E)(\\\\+|-)?[0-9]+)?([LlFfUuDd]|UL|ul)?\\n                            )\\\\b\\n                        \",\n          \"name\": \"constant.numeric.cfscript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:(true|false|null))\\\\b\",\n          \"name\": \"constant.language.cfscript\"\n        },\n        {\n          \"match\": \"\\\\b_?([A-Z][A-Z0-9_]+)\\\\b\",\n          \"name\": \"constant.other.cfscript\"\n        }\n      ]\n    },\n    \"component-extends-attribute\": {\n      \"begin\": \"\\\\b(extends)\\\\b\\\\s*(=)\\\\s*(?=\\\")\",\n      \"end\": \"(?=[\\\\s{])\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cfscript\" }\n          },\n          \"end\": \"\\\"\",\n          \"contentName\": \"meta.component-operator.extends.value.cfscript\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cfscript\" }\n          },\n          \"name\": \"string.quoted.double.cfml\"\n        },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cfscript\" }\n          },\n          \"end\": \"'\",\n          \"contentName\": \"meta.component-operator.extends.value.cfscript\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cfscript\" }\n          },\n          \"name\": \"string.quoted.single.cfscript\"\n        }\n      ],\n      \"name\": \"meta.component.attribute-with-value.extends.cfml\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.operator-attribute.extends.cfml\" },\n        \"2\": { \"name\": \"keyword.operator.assignment.cfscript\" }\n      }\n    },\n    \"storage-types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:(function|string|date|struct|array|void|binary|numeric|boolean|query|xml|uuid|any))\\\\b\",\n          \"name\": \"storage.type.primitive.cfscript\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\()\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.parameters.end.cfscript\" }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i:required)\",\n              \"name\": \"keyword.other.required.argument.cfscript\"\n            },\n            { \"include\": \"#storage-types\" },\n            {\n              \"match\": \"(=)\",\n              \"name\": \"keyword.operator.argument-assignment.cfscript\"\n            },\n            {\n              \"match\": \"(?i:false|true|no|yes)\",\n              \"name\": \"constant.language.boolean.argument.cfscript\"\n            },\n            { \"match\": \"(?i:\\\\w)\", \"name\": \"variable.parameter.cfscript\" },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.definition.seperator.parameter.cfscript\"\n            },\n            { \"include\": \"#strings\" }\n          ],\n          \"name\": \"meta.function.parameters.cfscript\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.parameters.begin.cfscript\" }\n          }\n        }\n      ]\n    },\n    \"tag-operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(else\\\\s+if|else|if)\\\\b\",\n          \"name\": \"keyword.control.operator.conditional.cfscript\"\n        },\n        {\n          \"match\": \"\\\\b(switch|case|default)\\\\b\",\n          \"name\": \"keyword.control.operator.switch.cfscript\"\n        },\n        {\n          \"begin\": \"(?x)^[\\\\s}]*\\n                        (?i:\\n                        (lock)|(transaction)|(thread)|(abort)\\n                        |(exit)|(include)|(param)|(thread)|(import)\\n                        |(rethrow|throw)|(property)|(interface)|(location)\\n                        |(break)|(pageencoding)|(schedule)|(return)|(try|catch|finally)\\n                        |(for|in|do|while|break|continue)\\n                        |(trace)|(savecontent)|(http|httpparam)\\n                        )\\n                        \\\\b\\n                        \\\\s*\\n                        (?![^\\\\w|\\\"|'|\\\\(|{|;])\\n                    \",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.terminator.cfscript\" },\n            \"3\": { \"name\": \"meta.brace.curly.cfscript\" }\n          },\n          \"end\": \"(;)|({)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.cfscript\" } },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.seperator.arguments.cfscript\"\n                },\n                {\n                  \"match\": \"(?i:(\\\\w+)\\\\s*(?=\\\\=))\",\n                  \"name\": \"entity.other.operator-parameter.cfscript\"\n                },\n                { \"include\": \"#cfscript-code\" }\n              ],\n              \"beginCaptures\": { \"0\": { \"name\": \"meta.brace.curly.cfscript\" } }\n            },\n            {\n              \"match\": \"(?i:(\\\\w+)\\\\s*(?=\\\\=))\",\n              \"name\": \"entity.other.attribute-name.cfscript\"\n            },\n            { \"include\": \"#cfcomments\" },\n            { \"include\": \"#comments\" },\n            { \"include\": \"#cfscript-code\" }\n          ],\n          \"name\": \"meta.operator.cfscript\",\n          \"beginCaptures\": {\n            \"18\": {\n              \"name\": \"keyword.control.operator.catch-exception.cfscript\"\n            },\n            \"10\": {\n              \"name\": \"keyword.control.operator.catch-exception.cfscript\"\n            },\n            \"19\": { \"name\": \"keyword.control.operator.loop.cfscript\" },\n            \"11\": { \"name\": \"entity.name.tag.operator.property.cfscript\" },\n            \"12\": { \"name\": \"entity.name.tag.operator.interface.cfscript\" },\n            \"1\": { \"name\": \"entity.name.tag.operator.lock.cfscript\" },\n            \"20\": { \"name\": \"entity.name.tag.operator.trace.cfscript\" },\n            \"2\": { \"name\": \"entity.name.tag.operator.transaction.cfscript\" },\n            \"13\": { \"name\": \"entity.name.tag.operator.location.cfscript\" },\n            \"3\": { \"name\": \"entity.name.tag.operator.thread.cfscript\" },\n            \"21\": { \"name\": \"entity.name.tag.operator.savecontent.cfscript\" },\n            \"14\": { \"name\": \"keyword.control.operator.break.cfscript\" },\n            \"4\": { \"name\": \"keyword.control.operator.abort.cfscript\" },\n            \"5\": { \"name\": \"keyword.control.operator.exit.cfscript\" },\n            \"15\": { \"name\": \"entity.name.tag.operator.pageencoding.cfscript\" },\n            \"22\": { \"name\": \"entity.name.tag.operator.http.cfscript\" },\n            \"6\": { \"name\": \"entity.name.tag.operator.include.cfscript\" },\n            \"16\": { \"name\": \"entity.name.tag.operator.schedule.cfscript\" },\n            \"7\": { \"name\": \"entity.name.tag.operator.param.cfscript\" },\n            \"8\": { \"name\": \"entity.name.tag.operator.thread.cfscript\" },\n            \"17\": { \"name\": \"keyword.control.operator.return.cfscript\" },\n            \"9\": { \"name\": \"entity.name.tag.operator.import.cfscript\" }\n          }\n        }\n      ]\n    },\n    \"cfscript-code\": {\n      \"patterns\": [\n        { \"include\": \"#braces\" },\n        { \"include\": \"#closures\" },\n        { \"include\": \"#sql-code\" },\n        { \"include\": \"#keywords\" },\n        { \"include\": \"#function-call\" },\n        { \"include\": \"#constants\" },\n        { \"include\": \"#variables\" },\n        { \"include\": \"#strings\" }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        { \"include\": \"#string-quoted-double\" },\n        { \"include\": \"#string-quoted-single\" }\n      ]\n    },\n    \"sql-code\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([\\\\w+\\\\.]+)\\\\.((?i:setsql))\\\\(\\\\s*[\\\"|']\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.parenthesis.end.cfscript\" }\n          },\n          \"end\": \"([\\\"|']\\\\s*\\\\))\",\n          \"patterns\": [\n            { \"include\": \"#nest_hash\" },\n            { \"include\": \"source.sql\" }\n          ],\n          \"name\": \"source.sql.embedded.cfscript\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.query.cfscript, meta.toc-list.query.cfscript\"\n            },\n            \"2\": { \"name\": \"support.function.cfscript\" }\n          }\n        }\n      ]\n    },\n    \"function-properties\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:output)\",\n          \"name\": \"entity.other.attribute-name.output.cfscript\"\n        },\n        {\n          \"match\": \"\\\\b([\\\\w]+)\",\n          \"name\": \"entity.other.attribute-name.any.cfscript\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"(?x)\\n                (?i:\\n                    (abs|acos|addsoaprequestheader|addsoapresponseheader|ajaxlink|ajaxonload|applicationstop\\n                    |arrayappend|arrayavg|arrayclear|arraycontains|arraydelete|arraydeleteat\\n                    |arrayfind|arrayfindnocase|arrayinsertat|arrayisdefined|arrayisempty|arraylen\\n                    |arraymax|arraymin|arraynew|arrayprepend|arrayresize|arrayset|arraysort|arraysum\\n                    |arrayswap|arraytolist|asc|asin|atn|authenticatedcontext|authenticateduser|binarydecode\\n                    |binaryencode|bitand|bitmaskclear|bitmaskread|bitmaskset|bitnot|bitor|bitshln|bitshrn\\n                    |bitxor|cacheget|cachegetallids|cachegetmetadata|cachegetproperties|cachegetsession\\n                    |cacheput|cacheremove|cachesetproperties|ceiling|charsetdecode|charsetencode|chr\\n                    |cjustify|compare|comparenocase|cos|createdate|createdatetime|createobject|createodbcdate\\n                    |createodbcdatetime|createodbctime|createtime|createtimespan|createuuid|dateadd|datecompare\\n                    |dateconvert|datediff|dateformat|datepart|day|dayofweek|dayofweekasstring|dayofyear\\n                    |daysinmonth|daysinyear|decimalformat|decrementvalue|decrypt|decryptbinary\\n                    |deleteclientvariable|deserializejson|de|directorycreate|directorydelete|directoryexists\\n                    |directorylist|directoryrename|dollarformat|dotnettocftype|duplicate|encrypt|encryptbinary\\n                    |entitydelete|entityload|entityloadbyexample|entityloadbypk|entitymerge|entitynew\\n                    |entityreload|entitysave|entitytoquery|evaluate|exp|expandpath|fileclose|filecopy\\n                    |filedelete|fileexists|fileiseof|filemove|fileopen|fileread|filereadbinary|filereadline\\n                    |fileseek|filesetaccessmode|filesetattribute|filesetlastmodified|fileskipbytes|fileupload\\n                    |fileuploadall|filewrite|filewriteline|find|findnocase|findoneof|firstdayofmonth|fix\\n                    |formatbasen|generatesecretkey|getauthuser|getbasetagdata|getbasetaglist|getbasetemplatepath\\n                    |getclientvariableslist|getcomponentmetadata|getcontextroot|getcurrenttemplatepath\\n                    |getdirectoryfrompath|getencoding|getexception|getfilefrompath|getfileinfo\\n                    |getfunctioncalledname|getfunctionlist|getgatewayhelper|gethttprequestdata|gethttptimestring\\n                    |getk2serverdoccount|getk2serverdoccountlimit|getlocale|getlocaledisplayname|getlocalhostip\\n                    |getmetadata|getmetricdata|getpagecontext|getrequest|getrequesturi|getprinterinfo|getprinterlist|getprofilesections\\n                    |getprofilestring|getreadableimageformats|getsoaprequest|getsoaprequestheader|getsoapresponse\\n                    |getsoapresponseheader|gettempdirectory|gettempfile|gettemplatepath|gettickcount\\n                    |gettimezoneinfo|gettoken|getuserroles|getvfsmetadata|getwriteableimageformats|hash|hour\\n                    |htmlcodeformat|htmleditformat|iif|imageaddborder|imageblur|imageclearrect|imagecopy\\n                    |imagecrop|imagedrawarc|imagedrawbeveledrect|imagedrawcubiccurve|imagedrawline|imagedrawlines\\n                    |imagedrawoval|imagedrawpoint|imagedrawquadraticcurve|imagedrawrect|imagedrawroundrect\\n                    |imagedrawtext|imageflip|imagegetblob|imagegetbufferedimage|imagegetexifmetadata|imagegetexiftag\\n                    |imagegetheight|imagegetiptcmetadata|imagegetiptctag|imagegetwidth|imagegrayscale|imageinfo\\n                    |imagenegative|imagenew|imageoverlay|imagepaste|imageread|imagereadbase64|imageresize\\n                    |imagerotate|imagerotatedrawingaxis|imagescaletofit|imagesetantialiasing|imagesetbackgroundcolor\\n                    |imagesetdrawingcolor|imagesetdrawingstroke|imagesetdrawingtransparency|imagesharpen|imageshear\\n                    |imagesheardrawingaxis|imagetranslate|imagetranslatedrawingaxis|imagewrite|imagewritebase64\\n                    |imagexordrawingmode|incrementvalue|inputbasen|insert|int|isarray|isauthenticated|isauthorized\\n                    |isbinary|isboolean|iscustomfunction|isdate|isddx|isdebugmode|isdefined|isimage|isimagefile\\n                    |isinstanceof|isipv6|isjson|isk2serverabroker|isk2serverdoccountexceeded|isk2serveronline|isleapyear\\n                    |islocalhost|isnull|isnumeric|isnumericdate|isobject|ispdffile|ispdfobject|isprotected|isquery\\n                    |issimplevalue|issoaprequest|isspreadsheetfile|isspreadsheetobject|isstruct|isuserinanyrole\\n                    |isuserinrole|isuserloggedin|isvalid|iswddx|isxml|isxmlattribute|isxmldoc|isxmlelem|isxmlnode\\n                    |isxmlroot|javacast|jsstringformat|lcase|left|len|listappend|listchangedelims|listcontains\\n                    |listcontainsnocase|listdeleteat|listfind|listfindnocase|listfirst|listgetat|listinsertat\\n                    |listlast|listlen|listprepend|listqualify|listrest|listsetat|listsort|listtoarray|listvaluecount\\n                    |listvaluecountnocase|ljustify|location|log|log10|lscurrencyformat|lsdateformat|lseurocurrencyformat\\n                    |lsiscurrency|lsisdate|lsisnumeric|lsnumberformat|lsparsecurrency|lsparsedatetime|lsparseeurocurrency\\n                    |lsparsenumber|lstimeformat|ltrim|max|mid|min|minute|month|monthasstring|now|numberformat|objectequals\\n                    |objectload|objectsave|ormclearsession|ormclosesession|ormcloseallsessions|ormevictcollection\\n                    |ormevictentity|ormevictqueries|ormexecutequery|ormflush|ormflushall|ormgetsession|ormgetsessionfactory\\n                    |ormreload|paragraphformat|parameterexists|parsedatetime|pi|precisionevaluate|preservesinglequotes\\n                    |quarter|queryaddcolumn|queryaddrow|queryconvertforgrid|querynew|querysetcell|quotedvaluelist\\n                    |rand|randomize|randrange|refind|refindnocase|rematch|rematchnocase|releasecomobject|removechars\\n                    |repeatstring|replace|replacelist|replacenocase|rereplace|rereplacenocase|reverse|right|rjustify\\n                    |round|rtrim|second|sendgatewaymessage|serializejson|setencoding|setlocale|setprofilestring\\n                    |setvariable|sgn|sin|sleep|spanexcluding|spanincluding|spreadsheetaddcolumn|spreadsheetaddimage\\n                    |spreadsheetaddfreezepane|spreadsheetaddinfo|spreadsheetaddrow|spreadsheetaddrows|spreadsheetaddsplitpane\\n                    |spreadsheetcreatesheet|spreadsheetdeletecolumn|spreadsheetdeletecolumns|spreadsheetdeleterow\\n                    |spreadsheetdeleterows|spreadsheetformatcell|spreadsheetformatcolumn|spreadsheetformatcellrange\\n                    |spreadsheetformatcolumns|spreadsheetformatrow|spreadsheetformatrows|spreadsheetgetcellcomment\\n                    |spreadsheetgetcellformula|spreadsheetgetcellvalue|spreadsheetinfo|spreadsheetmergecells\\n                    |spreadsheetnew|spreadsheetread|spreadsheetreadbinary|spreadsheetremovesheet|spreadsheetsetactivesheet\\n                    |spreadsheetsetactivesheetnumber|spreadsheetsetcellcomment|spreadsheetsetcellformula|spreadsheetsetcellvalue\\n                    |spreadsheetsetcolumnwidth|spreadsheetsetfooter|spreadsheetsetheader|spreadsheetsetrowheight\\n                    |spreadsheetshiftcolumnsspreadsheetshiftrows|spreadsheetwrite|sqr|stripcr|structappend|structclear\\n                    |structcopy|structcount|structdelete|structfind|structfindkey|structfindvalue|structget|structinsert\\n                    |structisempty|structkeyarray|structkeyexists|structkeylist|structnew|structsort|structupdate|tan\\n                    |threadjoin|threadterminate|throw|timeformat|tobase64|tobinary|toscript|tostring|trace|transactioncommit\\n                    |transactionrollback|transactionsetsavepoint|trim|ucase|urldecode|urlencodedformat|urlsessionformat\\n                    |val|valuelist|verifyclient|week|wrap|writedump|writelog|writeoutput|xmlchildpos|xmlelemnew\\n                    |xmlformat|xmlgetnodetype|xmlnew|xmlparse|xmlsearch|xmltransform|xmlvalidate|year|yesnoformat)\\n                    |\\n                    (\\\\w+)\\n                )\\n                \\\\s*\\n                (\\\\()\\n            \",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.arguments.end.cfscript\" }\n      },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.definition.seperator.arguments.cfscript\"\n        },\n        {\n          \"match\": \"(?i:(\\\\w+)\\\\s*(?=\\\\=))\",\n          \"name\": \"entity.other.method-parameter.cfscript\"\n        },\n        { \"include\": \"#cfcomments\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#tag-operators\" },\n        { \"include\": \"#cfscript-code\" }\n      ],\n      \"name\": \"meta.function-call.cfscript\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.function.cfscript\" },\n        \"2\": { \"name\": \"entity.name.function-call.cfscript\" },\n        \"3\": { \"name\": \"punctuation.definition.arguments.begin.cfscript\" }\n      }\n    },\n    \"cfcomments\": {\n      \"patterns\": [\n        { \"match\": \"<!---.*--->\", \"name\": \"comment.line.cfml\" },\n        {\n          \"begin\": \"<!---\",\n          \"end\": \"--->\",\n          \"patterns\": [{ \"include\": \"#cfcomments\" }],\n          \"name\": \"comment.block.cfml\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.cfml\" } }\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        { \"match\": \"\\\\b(?i:new)\\\\b\", \"name\": \"keyword.other.new.cfscript\" },\n        {\n          \"match\": \"(===?|!|!=|<=|>=|<|>)\",\n          \"name\": \"keyword.operator.comparison.cfscript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:(GREATER|LESS|THAN|EQUAL\\\\s+TO|DOES|CONTAINS|EQUAL|EQ|NEQ|LT|LTE|LE|GT|GTE|GE|AND|IS))\\\\b\",\n          \"name\": \"keyword.operator.decision.cfscript\"\n        },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.cfscript\"\n        },\n        {\n          \"match\": \"(?i:(\\\\^|\\\\-|\\\\+|\\\\*|\\\\/|\\\\\\\\|%|\\\\-=|\\\\+=|\\\\*=|\\\\/=|%=|\\\\bMOD\\\\b))\",\n          \"name\": \"keyword.operator.arithmetic.cfscript\"\n        },\n        { \"match\": \"(&|&=)\", \"name\": \"keyword.operator.concat.cfscript\" },\n        { \"match\": \"(=)\", \"name\": \"keyword.operator.assignment.cfscript\" },\n        {\n          \"match\": \"\\\\b(?i:(NOT|!|AND|&&|OR|\\\\|\\\\||XOR|EQV|IMP))\\\\b\",\n          \"name\": \"keyword.operator.logical.cfscript\"\n        },\n        { \"match\": \"(\\\\?|:)\", \"name\": \"keyword.operator.ternary.cfscript\" },\n        { \"match\": \";\", \"name\": \"punctuation.terminator.cfscript\" }\n      ]\n    },\n    \"functions\": {\n      \"begin\": \"(?x)^\\\\s*\\n                    (?:\\n                        (?: # optional access-control modifier and return-type\\n                            (?i:\\\\b(private|package|public|remote)\\\\s+)? # access-control.modifier\\n                            (?i:\\\\b\\n                                (void)\\n                                |\\n                                (any|array|binary|boolean|component|date|guid|numeric|query|string|struct|xml|uuid) # return-type.primitive\\n                                |\\n                                ([A-Za-z0-9_\\\\.$]+) #return-type component/object (may need additional tokens)\\n                            )?\\n                        )\\n                    )\\n                    \\\\s*\\n                    (?i:(function)) # storage.function\\n                    \\\\s+\\n                    (?:\\n                        (init) # entity.name.function.contructor\\n                        |\\n                        ([\\\\w\\\\$]+) # entity.name.function\\n                    )\\\\b\\n                \",\n      \"end\": \"(?={)\",\n      \"patterns\": [\n        { \"include\": \"#parameters\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#function-properties\" },\n        { \"include\": \"#cfscript-code\" }\n      ],\n      \"name\": \"meta.function.cfscript\",\n      \"beginCaptures\": {\n        \"7\": { \"name\": \"entity.name.function.cfscript\" },\n        \"3\": { \"name\": \"storage.type.return-type.primitive.cfscript\" },\n        \"4\": { \"name\": \"storage.type.return-type.object.cfscript\" },\n        \"5\": { \"name\": \"storage.type.function.cfscript\" },\n        \"1\": { \"name\": \"storage.modifier.access-control.cfscript\" },\n        \"6\": { \"name\": \"entity.name.function.constructor.cfscript\" },\n        \"2\": { \"name\": \"storage.type.return-type.void.cfscript\" }\n      }\n    },\n    \"braces\": {\n      \"patterns\": [\n        { \"name\": \"meta.brace.curly.cfscript\", \"match\": \"{|}\" },\n        { \"name\": \"meta.brace.round.cfscript\", \"match\": \"\\\\(|\\\\)\" },\n        {\n          \"begin\": \"([\\\\w]+)?\\\\s*(\\\\[)\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.set.end.cfscript\" }\n          },\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            { \"include\": \"#strings\" },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.definition.set.seperator.cfscript\"\n            },\n            { \"include\": \"$self\" }\n          ],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"variable.other.set.cfscript\" },\n            \"2\": { \"name\": \"punctuation.definition.set.begin.cfscript\" }\n          }\n        }\n      ]\n    },\n    \"component-operators\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n                        \\\\b\\n                        (?i:\\n                        (component)\\n                        )\\n                        \\\\b\\n                        \\\\s+\\n                        (?![\\\\.\\\\/>=,#\\\\)])\\n                    \",\n          \"end\": \"(?=[;{\\\\(])\",\n          \"patterns\": [\n            { \"include\": \"#component-extends-attribute\" },\n            {\n              \"match\": \"(?i:(\\\\w+)\\\\s*(?=\\\\=))\",\n              \"name\": \"entity.other.attribute-name.cfscript\"\n            },\n            { \"include\": \"#cfscript-code\" }\n          ],\n          \"name\": \"meta.operator.cfscript meta.class.component.cfscript\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"entity.name.tag.operator.component.cfscript\" }\n          }\n        }\n      ]\n    },\n    \"comment-block\": {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.cfscript\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.cfscript\" } }\n    },\n    \"string-quoted-double\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.cfscript\" }\n      },\n      \"end\": \"\\\"(?!\\\")\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\"\\\")\",\n          \"name\": \"constant.character.escape.quoted.double.cfscript\"\n        },\n        { \"include\": \"#nest_hash\" }\n      ],\n      \"name\": \"string.quoted.double.cfscript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.cfscript\" }\n      }\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"/\\\\*\\\\*/\",\n          \"name\": \"comment.block.empty.cfscript\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.cfscript\" }\n          }\n        },\n        { \"include\": \"text.html.javadoc\" },\n        { \"include\": \"#comment-block\" },\n        {\n          \"match\": \"((//).*?[^\\\\s])\\\\s*$\\\\n?\",\n          \"captures\": {\n            \"2\": { \"name\": \"punctuation.definition.comment.cfscript\" },\n            \"1\": { \"name\": \"comment.line.double-slash.cfscript\" }\n          }\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        { \"match\": \"\\\\b(?i:var)\\\\b\", \"name\": \"storage.modifier.var.cfscript\" },\n        {\n          \"match\": \"\\\\b(?i:(this|key))(?!\\\\.)\",\n          \"name\": \"variable.language.cfscript\"\n        },\n        {\n          \"match\": \"(\\\\.)\",\n          \"name\": \"punctuation.definition.seperator.variable.cfscript\"\n        },\n        {\n          \"match\": \"(?x)\\n                    (?i:\\n                        \\\\b\\n                        (application|arguments|attributes|caller|cgi|client|\\n                            cookie|flash|form|local|request|server|session|\\n                            this|thistag|thread|thread local|url|variables|\\n                            super|self|argumentcollection)\\n                        \\\\b\\n                        |\\n                        (\\\\w+)\\n                    )\",\n          \"captures\": {\n            \"1\": { \"name\": \"variable.language.cfscript\" },\n            \"2\": { \"name\": \"variable.other.cfscript\" }\n          }\n        }\n      ]\n    },\n    \"string-quoted-single\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.cfscript\" }\n      },\n      \"end\": \"'(?!')\",\n      \"patterns\": [\n        {\n          \"match\": \"('')\",\n          \"name\": \"constant.character.escape.quoted.single.cfscript\"\n        },\n        { \"include\": \"#nest_hash\" }\n      ],\n      \"name\": \"string.quoted.single.cfscript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.cfscript\" }\n      }\n    },\n    \"nest_hash\": {\n      \"patterns\": [\n        { \"match\": \"##\", \"name\": \"string.escaped.hash.cfscript\" },\n        {\n          \"end\": \"(#)\",\n          \"begin\": \"(#)(?=.*#)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.hash.begin.cfscript\" }\n          },\n          \"contentName\": \"source.cfscript.embedded.cfscript\",\n          \"patterns\": [{ \"include\": \"#cfscript-code\" }],\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.hash.end.cfscript\" }\n          },\n          \"name\": \"meta.inline.hash.cfscript\"\n        }\n      ]\n    },\n    \"closures\": {\n      \"begin\": \"(?i:\\\\b(function))\\\\b\",\n      \"end\": \"(?={)\",\n      \"patterns\": [{ \"include\": \"#parameters\" }],\n      \"name\": \"meta.closure.cfscript\",\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.closure.cfscript\" } }\n    }\n  },\n  \"fileTypes\": [],\n  \"uuid\": \"D5324EE0-4226-11E1-B86C-0800200C9A66\",\n  \"patterns\": [\n    { \"include\": \"#comments\" },\n    { \"include\": \"#cfcomments\" },\n    { \"include\": \"#component-operators\" },\n    { \"include\": \"#functions\" },\n    { \"include\": \"#tag-operators\" },\n    { \"include\": \"#cfscript-code\" }\n  ],\n  \"comment\": \"This tmLanguage file is used internally by ColdFusion and Component tmLanguage files\",\n  \"name\": \"CFScript (do not use)\",\n  \"scopeName\": \"source.cfscript\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/cirru.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.cirru\",\n  \"fileTypes\": [\"cirru\", \"cr\"],\n  \"patterns\": [\n    {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.cirru\" }\n      ],\n      \"name\": \"string.quoted.double.cirru\"\n    },\n    { \"match\": \"-?\\\\b\\\\d\\\\S*\\\\b\", \"name\": \"constant.numeric.cirru\" },\n    { \"match\": \"(?=^)\\\\s*\\\\,\", \"name\": \"keyword.operator.cirru\" },\n    { \"match\": \"\\\\s\\\\$\\\\s*$\", \"name\": \"keyword.operator.cirru\" },\n    {\n      \"match\": \"(?=^)\\\\s*[^\\\\(\\\\)\\\\s][^\\\\(\\\\)\\\\s]*\",\n      \"name\": \"support.function.cirru\"\n    },\n    {\n      \"match\": \"(?<=\\\\()[^\\\\(\\\\)\\\\s][^\\\\(\\\\)\\\\s]*\",\n      \"name\": \"support.function.cirru\"\n    },\n    {\n      \"match\": \"(?=\\\\$\\\\s+)[^\\\\(\\\\)\\\\s][^\\\\(\\\\)\\\\s]*\",\n      \"name\": \"support.function.cirru\"\n    },\n    {\n      \"match\": \"\\\\s+((\\\\$\\\\s+)+)([^\\\\(\\\\)\\\\s][^\\\\(\\\\)\\\\s]*)\",\n      \"name\": \"entity.cirru\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.operator.cirru\" },\n        \"3\": { \"name\": \"support.function.cirru\" }\n      }\n    },\n    { \"match\": \"[\\\\)\\\\(]\", \"name\": \"keyword.operator.cirru\" },\n    {\n      \"match\": \"(?!=($\\\\s+))[^\\\\(\\\\)\\\\s][^\\\\(\\\\)\\\\s]*\",\n      \"name\": \"variable.parameter.cirru\"\n    }\n  ],\n  \"name\": \"Cirru\",\n  \"uuid\": \"43471e40-4ccc-45e8-b003-29a2b4f7c191\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/clojure.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-clojure/blob/master/grammars/clojure.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-clojure/commit/45bdb881501d0b8f8b707ca1d3fcc8b4b99fca03\",\n  \"name\": \"clojure\",\n  \"scopeName\": \"source.clojure\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#shebang-comment\"\n    },\n    {\n      \"include\": \"#quoted-sexp\"\n    },\n    {\n      \"include\": \"#sexp\"\n    },\n    {\n      \"include\": \"#keyfn\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#vector\"\n    },\n    {\n      \"include\": \"#set\"\n    },\n    {\n      \"include\": \"#map\"\n    },\n    {\n      \"include\": \"#regexp\"\n    },\n    {\n      \"include\": \"#var\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#dynamic-variables\"\n    },\n    {\n      \"include\": \"#metadata\"\n    },\n    {\n      \"include\": \"#namespace-symbol\"\n    },\n    {\n      \"include\": \"#symbol\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"begin\": \"(?<!\\\\\\\\);\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.clojure\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"comment.line.semicolon.clojure\"\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(nil)(?=(\\\\s|\\\\)|\\\\]|\\\\}))\",\n          \"name\": \"constant.language.nil.clojure\"\n        },\n        {\n          \"match\": \"(true|false)\",\n          \"name\": \"constant.language.boolean.clojure\"\n        },\n        {\n          \"match\": \"(##(?:Inf|-Inf|NaN))\",\n          \"name\": \"constant.numeric.symbol.clojure\"\n        },\n        {\n          \"match\": \"([-+]?\\\\d+/\\\\d+)\",\n          \"name\": \"constant.numeric.ratio.clojure\"\n        },\n        {\n          \"match\": \"([-+]?(?:(?:3[0-6])|(?:[12]\\\\d)|[2-9])[rR][0-9A-Za-z]+N?)\",\n          \"name\": \"constant.numeric.arbitrary-radix.clojure\"\n        },\n        {\n          \"match\": \"([-+]?0[xX][0-9a-fA-F]+N?)\",\n          \"name\": \"constant.numeric.hexadecimal.clojure\"\n        },\n        {\n          \"match\": \"([-+]?0[0-7]+N?)\",\n          \"name\": \"constant.numeric.octal.clojure\"\n        },\n        {\n          \"match\": \"([-+]?[0-9]+(?:(\\\\.|(?=[eEM]))[0-9]*([eE][-+]?[0-9]+)?)M?)\",\n          \"name\": \"constant.numeric.double.clojure\"\n        },\n        {\n          \"match\": \"([-+]?\\\\d+N?)\",\n          \"name\": \"constant.numeric.long.clojure\"\n        },\n        {\n          \"include\": \"#keyword\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"match\": \"(?<=(\\\\s|\\\\(|\\\\[|\\\\{)):[\\\\w\\\\#\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\/\\\\!\\\\?\\\\*]+(?=(\\\\s|\\\\)|\\\\]|\\\\}|\\\\,))\",\n      \"name\": \"constant.keyword.clojure\"\n    },\n    \"keyfn\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=(\\\\s|\\\\(|\\\\[|\\\\{))(if(-[-\\\\p{Ll}\\\\?]*)?|when(-[-\\\\p{Ll}]*)?|for(-[-\\\\p{Ll}]*)?|cond|do|let(-[-\\\\p{Ll}\\\\?]*)?|binding|loop|recur|fn|throw[\\\\p{Ll}\\\\-]*|try|catch|finally|([\\\\p{Ll}]*case))(?=(\\\\s|\\\\)|\\\\]|\\\\}))\",\n          \"name\": \"storage.control.clojure\"\n        },\n        {\n          \"match\": \"(?<=(\\\\s|\\\\(|\\\\[|\\\\{))(declare-?|(in-)?ns|import|use|require|load|compile|(def[\\\\p{Ll}\\\\-]*))(?=(\\\\s|\\\\)|\\\\]|\\\\}))\",\n          \"name\": \"keyword.control.clojure\"\n        }\n      ]\n    },\n    \"dynamic-variables\": {\n      \"match\": \"\\\\*[\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\d]+\\\\*\",\n      \"name\": \"meta.symbol.dynamic.clojure\"\n    },\n    \"map\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.map.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\}(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.map.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.map.end.clojure\"\n        }\n      },\n      \"name\": \"meta.map.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"metadata\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\^\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.metadata.map.begin.clojure\"\n            }\n          },\n          \"end\": \"(\\\\}(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.metadata.map.end.trailing.clojure\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.metadata.map.end.clojure\"\n            }\n          },\n          \"name\": \"meta.metadata.map.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\^)\",\n          \"end\": \"(\\\\s)\",\n          \"name\": \"meta.metadata.simple.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"#keyword\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"quoted-sexp\": {\n      \"begin\": \"(['``]\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\))$|(\\\\)(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.expression.end.trailing.clojure\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.expression.end.clojure\"\n        }\n      },\n      \"name\": \"meta.quoted-expression.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"regexp\": {\n      \"begin\": \"#\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regexp.begin.clojure\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regexp.end.clojure\"\n        }\n      },\n      \"name\": \"string.regexp.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"#regexp_escaped_char\"\n        }\n      ]\n    },\n    \"regexp_escaped_char\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape.clojure\"\n    },\n    \"set\": {\n      \"begin\": \"(\\\\#\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.set.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\}(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.set.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.set.end.clojure\"\n        }\n      },\n      \"name\": \"meta.set.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"sexp\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\))$|(\\\\)(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.expression.end.trailing.clojure\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.expression.end.clojure\"\n        }\n      },\n      \"name\": \"meta.expression.clojure\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\()(ns|declare|def[\\\\w\\\\d._:+=><!?*-]*|[\\\\w._:+=><!?*-][\\\\w\\\\d._:+=><!?*-]*/def[\\\\w\\\\d._:+=><!?*-]*)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.clojure\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.definition.global.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"#metadata\"\n            },\n            {\n              \"include\": \"#dynamic-variables\"\n            },\n            {\n              \"match\": \"([\\\\p{L}\\\\.\\\\-\\\\_\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*][\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*\\\\d]*)\",\n              \"name\": \"entity.global.clojure\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#keyfn\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#vector\"\n        },\n        {\n          \"include\": \"#map\"\n        },\n        {\n          \"include\": \"#set\"\n        },\n        {\n          \"include\": \"#sexp\"\n        },\n        {\n          \"match\": \"(?<=\\\\()(.+?)(?=\\\\s|\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.clojure\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"shebang-comment\": {\n      \"begin\": \"^(#!)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.shebang.clojure\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"comment.line.shebang.clojure\"\n    },\n    \"string\": {\n      \"begin\": \"(?<!\\\\\\\\)(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\")\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.clojure\"\n        }\n      },\n      \"name\": \"string.quoted.double.clojure\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.clojure\"\n        }\n      ]\n    },\n    \"namespace-symbol\": {\n      \"patterns\": [\n        {\n          \"match\": \"([\\\\p{L}\\\\.\\\\-\\\\_\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*][\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*\\\\d]*)/\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.symbol.namespace.clojure\"\n            }\n          }\n        }\n      ]\n    },\n    \"symbol\": {\n      \"patterns\": [\n        {\n          \"match\": \"([\\\\p{L}\\\\.\\\\-\\\\_\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*][\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*\\\\d]*)\",\n          \"name\": \"meta.symbol.clojure\"\n        }\n      ]\n    },\n    \"var\": {\n      \"match\": \"(?<=(\\\\s|\\\\(|\\\\[|\\\\{)\\\\#)'[\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\/\\\\!\\\\?\\\\*]+(?=(\\\\s|\\\\)|\\\\]|\\\\}))\",\n      \"name\": \"meta.var.clojure\"\n    },\n    \"vector\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.vector.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\](?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.vector.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.vector.end.clojure\"\n        }\n      },\n      \"name\": \"meta.vector.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/cobol.tmLanguage.json",
    "content": "{\n  \"_copyright\": \"The MIT License (MIT)\\nCopyright (c) 2015-2022 spgennard\\nSource: https://github.com/spgennard/vscode_cobol/blob/main/syntaxes/COBOL.tmLanguage.json\",\n  \"$schema\": \"https://raw.githubusercontent.com/spgennard/vscode_cobol/main/schemas/tmlanguage.json\",\n  \"fileTypes\": [\n    \"ccp\",\n    \"scbl\",\n    \"cobol\",\n    \"cbl\",\n    \"cblle\",\n    \"cblsrce\",\n    \"cblcpy\",\n    \"lks\",\n    \"pdv\",\n    \"cpy\",\n    \"copybook\",\n    \"cobcopy\",\n    \"fd\",\n    \"sel\",\n    \"scb\",\n    \"scbl\",\n    \"sqlcblle\",\n    \"cob\",\n    \"dds\",\n    \"def\",\n    \"src\",\n    \"ss\",\n    \"wks\",\n    \"bib\",\n    \"pco\"\n  ],\n  \"name\": \"cobol\",\n  \"patterns\": [\n    {\n      \"match\": \"(^[ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*])([dD]\\\\s.*$)\",\n      \"name\": \"token.info-token.cobol\"\n    },\n    {\n      \"match\": \"(^[ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*])(\\\\/.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.newpage\"\n        }\n      }\n    },\n    {\n      \"match\": \"(^[ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*])(\\\\*.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.fixed\"\n        }\n      }\n    },\n    {\n      \"match\": \"(^[0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s])(\\\\/.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.newpage\"\n        }\n      }\n    },\n    {\n      \"match\": \"^[0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s]$\",\n      \"name\": \"constant.numeric.cobol\"\n    },\n    {\n      \"match\": \"(^[0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s])(\\\\*.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.fixed\"\n        }\n      }\n    },\n    {\n      \"match\": \"(^[0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ])(\\\\*.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.fixed\"\n        }\n      }\n    },\n    {\n      \"match\": \"^\\\\s+(78)\\\\s+([0-9a-zA-Z][a-zA-Z\\\\-0-9_]+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.constant\"\n        }\n      }\n    },\n    {\n      \"match\": \"^\\\\s+([0-9]+)\\\\s+([0-9a-zA-Z][a-zA-Z\\\\-0-9_]+)\\\\s+((?i:constant))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.constant\"\n        },\n        \"3\": {\n          \"name\": \"keyword.identifers.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(^[0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@])(\\\\/.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.newpage\"\n        }\n      }\n    },\n    {\n      \"match\": \"^\\\\*.*$\",\n      \"name\": \"comment.line.cobol.fixed\"\n    },\n    {\n      \"match\": \"((?:^|\\\\s+)(?i:\\\\$set)\\\\s+)((?i:constant)\\\\s+)([0-9a-zA-Z][a-zA-Z\\\\-0-9]+\\\\s*)([a-zA-Z\\\\-0-9]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.cobol\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"((?i:\\\\$\\\\s*set\\\\s+)(ilusing)(\\\\()(.*)(\\\\)))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.begin.bracket.round.cobol\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.other.cobol\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.end.bracket.round.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"((?i:\\\\$\\\\s*set\\\\s+)(ilusing)(\\\")(.*)(\\\"))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.other.cobol\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"((?i:\\\\$set))\\\\s+(\\\\w+)\\\\s*(\\\")(\\\\w*)(\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.other.cobol\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"((?i:\\\\$set))\\\\s+(\\\\w+)\\\\s*(\\\\()(.*)(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.begin.bracket.round.cobol\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.other.cobol\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.end.bracket.round.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?:^|\\\\s+)(?i:\\\\$\\\\s*set\\\\s)((?i:01SHUFFLE|64KPARA|64KSECT|AUXOPT|CHIP|DATALIT|EANIM|EXPANDDATA|FIXING|FLAG-CHIP|MASM|MODEL|OPTSIZE|OPTSPEED|PARAS|PROTMODE|REGPARM|SEGCROSS|SEGSIZE|SIGNCOMPARE|SMALLDD|TABLESEGCROSS|TRICKLECHECK|\\\\s)+).*$\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"1\": {\n          \"name\": \"invalid.illegal.directive\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.set.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\$region|\\\\$end-region)(.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.attribute-name.preprocessor.cobol\"\n        }\n      }\n    },\n    {\n      \"begin\": \"\\\\$(?i:doc)(.*$)\",\n      \"end\": \"\\\\$(?i:end-doc)(.*$)\",\n      \"name\": \"invalid.illegal.iscobol\"\n    },\n    {\n      \"match\": \">>\\\\s*(?i:turn|page|listing|leap-seconds|d)\\\\s+.*$\",\n      \"name\": \"invalid.illegal.meta.preprocessor.cobolit\"\n    },\n    {\n      \"match\": \"((((>>|\\\\$)[\\\\s]*)(?i:if|else|elif|end-if|end-evaluate|end|define|evaluate|when|display|call-convention|set))(.*$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\*>)\\\\s+(@[0-9a-zA-Z][a-zA-Z\\\\-0-9]+)\\\\s+(.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"comment.line.scantoken.cobol\"\n        },\n        \"2\": {\n          \"name\": \"keyword.cobol\"\n        },\n        \"3\": {\n          \"name\": \"string.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\*>.*$)\",\n      \"name\": \"comment.line.modern\"\n    },\n    {\n      \"match\": \"(>>.*)$\",\n      \"name\": \"strong comment.line.set.acucobol\"\n    },\n    {\n      \"match\": \"([nNuU][xX]|[hHxX])'\\\\h*'\",\n      \"name\": \"constant.numeric.integer.hexadecimal.cobol\"\n    },\n    {\n      \"match\": \"([nNuU][xX]|[hHxX])'.*'\",\n      \"name\": \"invalid.illegal.hexadecimal.cobol\"\n    },\n    {\n      \"match\": \"([nNuU][xX]|[hHxX])\\\"\\\\h*\\\"\",\n      \"name\": \"constant.numeric.integer.hexadecimal.cobol\"\n    },\n    {\n      \"match\": \"([nNuU][xX]|[hHxX])\\\".*\\\"\",\n      \"name\": \"invalid.illegal.hexadecimal.cobol\"\n    },\n    {\n      \"match\": \"[bB]\\\"[0-1]\\\"\",\n      \"name\": \"constant.numeric.integer.boolean.cobol\"\n    },\n    {\n      \"match\": \"[bB]'[0-1]'\",\n      \"name\": \"constant.numeric.integer.boolean.cobol\"\n    },\n    {\n      \"match\": \"[oO]\\\"[0-7]*\\\"\",\n      \"name\": \"constant.numeric.integer.octal.cobol\"\n    },\n    {\n      \"match\": \"[oO]\\\".*\\\"\",\n      \"name\": \"invalid.illegal.octal.cobol\"\n    },\n    {\n      \"match\": \"(#)([0-9a-zA-Z][a-zA-Z\\\\-0-9]+)\",\n      \"name\": \"meta.symbol.cobol.forced\"\n    },\n    {\n      \"begin\": \"((?<![-_a-zA-Z0-9()-])(?i:installation|author|source-computer|object-computer|date-written|security|date-compiled)(\\\\.|$))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.identifiers.cobol\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(^[0-9 ][0-9 ][0-9 ][0-9 ][0-9 ][0-9 ])\",\n          \"name\": \"constant.numeric.cobol\"\n        }\n      ],\n      \"name\": \"comment.block.cobol.remark\",\n      \"end\": \"(?=((?<![-_])(?i:remarks|author|date-written|source-computer|object-computer|installation|date-compiled|special-names|security|environment\\\\s+division|data\\\\s+division|working-storage\\\\s+section|input-output\\\\s+section|linkage\\\\s+section|procedure\\\\s+division|local-storage\\\\s+section)|^[ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*]\\\\*.*$|^\\\\+$))\"\n    },\n    {\n      \"match\": \"(?<=(\\\\(|\\\\[))((\\\\-\\\\+)*\\\\s*[0-9 ,\\\\.\\\\+\\\\-\\\\*\\\\/]+)(?=(\\\\)|\\\\]))\",\n      \"name\": \"constant.numeric.cobol\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.start.bracket.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"3\": {\n          \"name\": \"keyword.end.bracket.cobol\"\n        }\n      },\n      \"comment\": \"simple numerics in () and []\"\n    },\n    {\n      \"include\": \"#number-complex-constant\"\n    },\n    {\n      \"include\": \"#number-simple-constant\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:true|false|null|nulls)(?![0-9A-Za-z_-])\",\n      \"name\": \"constant.language.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:zeroes|alphabetic-lower|alphabetic-upper|alphanumeric-edited|alphabetic|alphabet|alphanumeric|zeros|zeros|zero|spaces|space|quotes|quote|low-values|low-value|high-values|high-value)(?=\\\\s+|\\\\.|,|\\\\))\",\n      \"name\": \"constant.language.figurative.cobol\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+sqlims|exec\\\\s+sql)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.sql\",\n      \"patterns\": [\n        {\n          \"match\": \"(^\\\\s*\\\\*.*)$\",\n          \"name\": \"comment.line.sql\"\n        },\n        {\n          \"match\": \"(\\\\:([0-9a-zA-Z\\\\-_])*)\",\n          \"name\": \"variable.cobol\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+cics)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.cics\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\()\",\n          \"name\": \"meta.symbol.cobol\"\n        },\n        {\n          \"include\": \"#cics-keywords\"\n        },\n        {\n          \"include\": \"#string-double-quoted-constant\"\n        },\n        {\n          \"include\": \"#string-quoted-constant\"\n        },\n        {\n          \"include\": \"#number-complex-constant\"\n        },\n        {\n          \"include\": \"#number-simple-constant\"\n        },\n        {\n          \"match\": \"([a-zA-Z-0-9_]*[a-zA-Z0-9]|([#]?[0-9a-zA-Z]+[a-zA-Z-0-9_]*[a-zA-Z0-9]))\",\n          \"name\": \"variable.cobol\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+sqlims)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.sql\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\:([a-zA-Z\\\\-])*)\",\n          \"name\": \"variable.cobol\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+ado)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.sql\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\:([a-zA-Z\\\\-])*)\",\n          \"name\": \"variable.cobol\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+html)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.html\",\n      \"patterns\": [\n        {\n          \"include\": \"text.html.basic\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+java)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.java\",\n      \"patterns\": [\n        {\n          \"include\": \"source.java\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"match\": \"(\\\")(CBL_.*)(\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\")(PC_.*)(\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.double.cobol\"\n    },\n    {\n      \"match\": \"(\\\\')(CBL_.*)(\\\\')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\')(PC_.*)(\\\\')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"('|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.single.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[gGzZ]\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.double.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[gGzZ]'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.single.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[gGnN]\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.double.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[gGnN]'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.single.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[uU]\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.utf8.double.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[uU]'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.utf8.single.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:id\\\\s+division|identification\\\\s+division|identification|id|property-id|getter|setter|entry|function-id|end\\\\s+attribute|attribute|interface-id|indexer-id|factory|ctl|class-control|options|environment\\\\s+division|environment-name|environment-value|environment|configuration\\\\s+section|configuration|decimal-point\\\\s+is|decimal-point|console\\\\s+is|call-convention|special-names|cursor\\\\s+is|update|picture\\\\s+symbol|currency\\\\s+sign|currency|repository|input-output\\\\s+section|input-output|file\\\\s+section|file-control|select|optional|i-o-control|data\\\\s+division|working-storage\\\\s+section|working-storage|section|local-storage|linkage\\\\s+section|linkage|communication|report|screen\\\\s+section|object-storage|object\\\\s+section|class-object|fd|rd|cd|sd|printing|procedure\\\\s+division|procedure|division|references|debugging|end\\\\s+declaratives|declaratives|end\\\\s+static|end\\\\s+factory|end\\\\s+class-object|based-storage|size|font|national-edited|national)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.identifiers.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])((?i:valuetype-id|operator-id|method-id|method|property-id|attribute-id|enum-id|iterator-id|class-id|program-id|operator-id|end\\\\s+program|end\\\\s+valuetype|extension))[\\\\.]*[\\\\s]+([a-zA-Z0-9_-]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.verb.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:implements|inherits|constraints|constrain)(?=\\\\s|\\\\.)\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:end\\\\s+enum|end\\\\s+interface|end\\\\s+class|end\\\\s+property|end\\\\s+method|end\\\\s+object|end\\\\s+iterator|end\\\\s+function|end\\\\s+operator|end\\\\s+program|end\\\\s+indexer|create|reset|instance|delegate|end-delegate|delegate-id|declare|exception-object|as|stop\\\\s+iterator|stop\\\\s+run|stop)(?=\\\\s|\\\\.|,|\\\\))\",\n      \"name\": \"keyword.identifiers.cobol\"\n    },\n    {\n      \"match\": \"\\\\s+(?i:attach\\\\s+method|attach\\\\s+del|attach|detach\\\\s+del|detach\\\\s+method|detach|method|del)(?=\\\\s|\\\\.|$)\",\n      \"name\": \"keyword.identifiers.cobol\"\n    },\n    {\n      \"match\": \"\\\\s+(?i:sync\\\\s+(?i:on))(?=\\\\s|\\\\.)\",\n      \"name\": \"keyword.other.sync.cobol\"\n    },\n    {\n      \"match\": \"\\\\s+(?i:try|finally|catch|end-try|throw)(?=\\\\s|\\\\.|$)\",\n      \"name\": \"keyword.control.catch-exception.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:select|use|thru|varying|giving|remainder|tallying|through|until|execute|returning|using|chaining|yielding|\\\\+\\\\+include|copy|replace)(?=\\\\s)\",\n      \"name\": \"keyword.otherverb.cobol\"\n    },\n    {\n      \"match\": \"(?i:dynamic)\\\\s+(?i:length)(?=\\\\s|\\\\.)\",\n      \"name\": \"storage.type.dynamiclength.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:assign|external|prototype|organization|organisation|indexed|column|plus|line\\\\*s*sequential|sequential|access|dynamic|relative|label|block|contains|standard|records|record\\\\s+key|record|is|alternate|duplicates|reel|tape|terminal|disk\\\\sfilename|disk|disc|recording\\\\smode|mode|random)(?=\\\\s|\\\\.)\",\n      \"name\": \"keyword.identifers.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:max|min|integer-of-date|integer-of-day|integer-part|integer|date-to-yyyymmdd|year-to-yyyy|day-to-yyyyddd|exp|exception-file|exception-location|exception-statement|exception-status|e|variance|integer-of-date|rem|pi|factorial|sqrt|log10|fraction-part|mean|exp|log|char|day-of-integer|date-of-integer|exp10|atan|integer-part|tan|sin|cos|midrange|addr|acos|asin|annuity|present-value|integer-of-day|ord-max|ord-min|ord|random|integer-of-date|sum|standard-deviation|median|reverse|abs|upper-case|lower-case|char-national|numval|mod|range|length|locale-date|locale-time-from-seconds|locale-time|seconds-past-midnight|stored-char-length|substitute-case|substitute|seconds-from-formatted-time|seconds-past-midnight|trim|length-an|numval-c|current-date|national-of|display-of|when-compiled|integer-of-boolean|combined-datetime|concatenate)(?=\\\\s|\\\\.|\\\\(|\\\\))\",\n      \"name\": \"support.function.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:DFHRESP|DFHVALUE)(?=\\\\s|\\\\.|\\\\(|\\\\))\",\n      \"name\": \"support.function.cics.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:function)(?=\\\\s|\\\\.)\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:end-accept|end-add|end-sync|end-compute|end-delete|end-display|end-divide|end-set|end-multiply|end-of-page|end-read|end-receive|end-return|end-rewrite|end-search|end-start|end-string|end-subtract|end-unstring|end-write|program|class|interface|enum|interface)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?:by value|by reference|by content|property-value)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.other.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:attr-string|automatic|auto-skip|footing|next|group|indicate|source|control|full|required|of|input|output|i-o|extend|file|error|exception|overflow|goto|off|on|proceed|procedures|procedure|through|invalid|data|normal|eop|returning|to|for|giving|into|by|params|remainder|also|numeric|free|depending|converting|replacing|after|before|all|leading|first|recursive|initialized|global|common|initial|resident|reference|content|are\\\\sstandard|are|renames|like|format\\\\stime|values|omitted|value|constant|ascending|descending|key|retry|until|varying|with|no|advancing|up|down|uccurs|ignore\\\\s+lock|lock|length|delimited|count|delimiter|redefines|from\\\\s+console|from\\\\s+command-line|from\\\\s+user\\\\s+name|from\\\\s+day\\\\s+yyyyddd|from\\\\s+day|from\\\\s+time|from\\\\s+day-of-week|from\\\\s+escape|from\\\\s+day\\\\s+yyyyddd|from\\\\s+date\\\\s+yyyymmdd|from\\\\s+date|from|raising|crt\\\\s+status|status|class|upon\\\\s+crt|upon|lines|columns|step|linage|auto|line|position|col|reports|code-set|reporting|arithmetic|localize|program|class|interface|in|at\\\\s+end|page|name)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.identifers.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:type|new)\\\\s+([a-zA-Z][a-zA-Z0-9\\\\$\\\\-\\\\._]*|[a-zA-Z])(?=\\\\.$)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.verb.cobol\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.cobol\"\n        }\n      },\n      \"comment\": \"type ssss \"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:string)(?=\\\\s+value|\\\\.)\",\n      \"name\": \"storage.type.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:bit|byte|binary-char|binary-char-unsigned|binary-short|binary-short-unsigned|binary.long|binary-c-long|binary-long-unsigned|binary-long|binary-double|binary-double-unsigned|float-short|float-extended|float-long|bit|condition-value|characters|character\\\\s+type|character|comma|crt|decimal|object\\\\+sreference|object-reference|object|list|dictionary|unsigned)(?=\\\\s|\\\\.|,|\\\\]|\\\\[)\",\n      \"name\": \"storage.type.cobol\"\n    },\n    {\n      \"match\": \"(operator-id\\\\s+[+\\\\-\\\\*\\\\/])\",\n      \"name\": \"keyword.operator-id.cobol\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.verb.cobol\"\n        },\n        \"2\": {\n          \"name\": \"meta.symbol.cobol\"\n        }\n      },\n      \"comment\": \"operator-id ssss \"\n    },\n    {\n      \"match\": \"(?i:self)(\\\\:\\\\:)([0-9a-zA-Z_\\\\-\\\\.]*)(?=\\\\.$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.cobol.b3\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.b3\"\n        }\n      },\n      \"comment\": \" ::.. \"\n    },\n    {\n      \"match\": \"(\\\\:\\\\:)([0-9a-zA-Z_\\\\-\\\\.]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.cobol\"\n        }\n      },\n      \"comment\": \" ::.. \"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:type)\\\\s+([0-9a-zA-Z\\\\.]*)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.verb.cobol.aa\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.cobol.bb\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:if|else|end-if|exit\\\\s+iterator|exit\\\\s+program|exit\\\\s+method|evaluate|end-evaluate|exit\\\\s+perform|perform|end-perform|when\\\\s+other|when|continue|call|end-call|chain|end-chain|invoke|end\\\\s+invoke|go\\\\s+to|go|sort|merge|use|xml|parse|stop\\\\s+run|goback\\\\s+returning|goback|raise|exit\\\\s+function|await)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.control.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])((?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBxXuUpPnNzZ/,.]*)\\\\(([0-9]*)\\\\)([vV][-+sS\\\\*$09aAbBxXuUpPnNzZ/,\\\\.]*)\\\\(([0-9]*)\\\\)[-|+]\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.picture10.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.picture10.cobol\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])((?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBxXuUpPnNzZ/,.]*)\\\\(([0-9]*)\\\\)([vV][-+sS\\\\*$09aAbBxXuUpPnNzZ/,\\\\.]*)\\\\(([0-9]*)\\\\)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.picture9.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.picture9.cobol\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])((?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBxXuUpPnNzZ/,.]*)\\\\(([0-9]*)\\\\)([vV\\\\.][-+s\\\\*$09aAbBsSnNxXuUzZ/,]*[0-9\\\\.()])*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.picture8.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.picture8.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBsSnpPNxXuUzZ/,.]*\\\\([0-9]*\\\\)[Vv\\\\.][-+s\\\\*0$9aAbBsSnNxpPxXuUzZ/,]*\",\n      \"name\": \"storage.type.picture7.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBsSnpPNxXuUzZ/,.]*\\\\([0-9]*\\\\)[-+s\\\\*0$9aAbBsSnNxpPxXuUzZ/,]*[Vv\\\\.][-+s\\\\*0$9aAbBsSnNxpPxXuUzZ/,]*\",\n      \"name\": \"storage.type.picture6.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])((?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBsSnpPNxuUXzZ/,.]*)\\\\(([0-9]*)\\\\)[-+s\\\\*0$9aAbBsSnNxpPxXuUzZ/,]*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.picture5.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBsSnpNNxXuUzZ/,.]*\\\\([0-9]*\\\\)\",\n      \"name\": \"storage.type.picture4.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[sS]?[9aAbBsSnNxXuUzZ]*[Vv][9aAxbXuUzZ]*\\\\([0-9]*\\\\)\",\n      \"name\": \"storage.type.picture3.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[sS]?[9aAbBsSnNxXuUzZ]*[Vv][9aAxbXuUzZ]*\",\n      \"name\": \"storage.type.picture2.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+\\\\*$9aAbBsSnpPNxXuUzZ/,.vV]*\",\n      \"name\": \"storage.type.picture1.cobol\"\n    },\n    {\n      \"match\": \"((?<![-_])(?i:binary|computational-4|comp-4|computational-5|comp-5))\\\\(([0-9]*)\\\\)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.keyword.verb.acu.cobol\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.constant.numeric.integer\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?i:cblt-x1-compx-const|cblt-x2-compx-const|cblt-x4-compx-const|cblt-alphanum-const|cblt-x9-compx|cblt-x8-compx|cblt-x8-comp5|cblt-x4-compx|cblt-x4-comp5|cblt-x2-compx|cblt-x2-comp5|cblt-x1-compx|cblt-x1-comp5|cblt-x1|cblt-vfile-status|cblt-vfile-handle|cblt-sx8-comp5|cblt-sx4-comp5|cblt-sx2-comp5|cblt-sx1-comp5|cblt-subsys-params|cblt-splitjoin-buf|cblt-screen-position|cblt-rtncode|cblt-request-context|cblt-reqhand-service-info|cblt-reqhand-service-funcs|cblt-reqhand-response|cblt-reqhand-funcs|cblt-prog-info-params|cblt-prog-info-arg-info|cblt-printer-properties|cblt-printer-name|cblt-printer-info|cblt-printer-default|cblt-ppointer|cblt-pointer|cblt-os-ssize|cblt-os-size|cblt-os-offset|cblt-os-info-params|cblt-os-flags|cblt-node-name|cblt-nls-msg-params|cblt-nls-msg-number-pair|cblt-nls-msg-ins-struct|cblt-nls-msg-buffer|cblt-mouse-shape|cblt-mouse-rect|cblt-mouse-pos|cblt-mouse-event|cblt-mem-validate-param|cblt-idp-exit-service-funcs|cblt-idp-exit-info|cblt-HWND|cblt-HINSTANCE|cblt-get-scr-line-draw-buffer|cblt-get-scr-graphics-buffer|cblt-generic-attr-value|cblt-generic-attr-rgb-values|cblt-generic-attr-information|cblt-file-status|cblt-fileexist-buf|cblt-exit-params|cblt-exit-info-params|cblt-cancel-proc-params|cblt-bytestream-handle|cblt-alphanum)\",\n      \"name\": \"support.function.cbltypes.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:computational-1|comp-1|computational-2|comp-2|computational-3|comp-3|computational-4|comp-4|computational-x|comp-x|computational-5|comp-5|computational-6|comp-6|computational-n|comp-n|packed-decimal|index|float|double|signed-short|unsigned-short|signed-int|unsigned-int|signed-long|unsigned-long|comp|computational|group-usage|usage\\\\sis\\\\sdisplay|usage\\\\sis\\\\sfont|usage\\\\s+display|binary|mutex-pointer|data-pointer|thread-pointer|sempahore-pointer|event-pointer|program-pointer|procedure-pointer|pointer|window|subwindow|control-type|thread|menu|variant|layout-manager|occurs|typedef|any|times|display\\\\s+blank\\\\s+when|blank\\\\s+when|blank\\\\s+screen|blank|usage\\\\sis|is\\\\spartial|usage|justified|just|right|signed|trailing\\\\s+separate|sign|seperate|sql)(?=\\\\s|\\\\.|\\\\))\",\n      \"name\": \"storage.type.picture.cobol\"\n    },\n    {\n      \"match\": \"(?i:byte-length)\\\\s+[0-9]+\",\n      \"name\": \"storage.type.length.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:accept|add|address|allocate|cancel|close|commit|compute|continue|delete|disable|display|bell|divide|eject|enable|enter|evaluate|exhibit|named|exit|free|generate|go\\\\s+to|initialize\\\\sonly|initialize|initiate|inspect|merge|end-set|set|end-invoke|invoke\\\\s+run|invoke|move|corresponding|corr|multiply|otherwise|open|sharing|sort-merge|purge|ready|read|kept|receive|release|return|rewrite|rounded|rollback|search|send|sort|collating\\\\s+sequence|collating|start|service|subtract|suppress|terminate|then|unlock|string|unstring|validate|write|next|statement|sentence)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:thread-local)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(\\\\s+|^)(?i:foreground-color|background-color|prompt|underline|reverse-video|no-echo|highlight|blink)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.screens.cobol\"\n    },\n    {\n      \"match\": \"(\\\\s+|^)(?i:bold|high|lowlight|low|standard|background-high|background-low|background-standard)(?![0-9A-Za-z_-])\",\n      \"name\": \"invalid.illegal.screens.acu.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:internal|public|protected|final|private|static|new|abstract|override|readonly|property|async-void|async-value|async)(?=\\\\s|\\\\.)\",\n      \"name\": \"storage.modifier.cobol\"\n    },\n    {\n      \"match\": \"=|<|>|<=|>=|<>|\\\\+|\\\\-|\\\\*|\\\\/|(?<![-_])(?i:b-and|b-or|b-xor|b-exor|b-not|b-left|b-right|and|or|equals|equal|greater\\\\s+than|less\\\\s+than|greater)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.operator.cobol\"\n    },\n    {\n      \"match\": \"(?i:not\\\\s+at\\\\s+end)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:not)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.operator.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:sysout-flush|sysin|stderr|stdout|csp|stdin|sysipt|sysout|sysprint|syslist|syslst|printer|syserr|console|c01|c02|c03|c04|c05|c06|c07|c08|c09|c10|c11|c12|formfeed|switch-0|switch-10|switch-11|switch-12|switch-13|switch-13|switch-14|switch-15|switch-1|switch-2|switch-3|switch-4|switch-5|switch-6|switch-7|switch-8|switch-9|sw0|sw11|sw12|sw13|sw14|sw15|sw1|sw2|sw3|sw4|sw5|sw6|sw7|sw8|sw9|sw10|lc_all|lc_collate|lc_ctype|lc_messages|lc_monetary|lc_numeric|lc_time|ucs-4|utf-8|utf-16)(?![0-9A-Za-z_-])\",\n      \"name\": \"support.type.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:end-xml|processing.*procedure|xml\\\\sparse|xml|xml-information|xml-text|xml-schemal|xml-declaration)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.xml.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:json\\\\s+generate|json|end-json|name\\\\sof)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.json.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:modify|inquire|tab|title|event|center|label-offset|cell|help-id|cells|push-button|radio-button|page-layout-screen|entry-field|list-box|label|default-font|id|no-tab|unsorted|color|height|width|bind|thread|erase|modeless|scroll|system|menu|title-bar|wrap|destroy|resizeable|user-gray|large-font|newline|3-d|data-columns|display-columns|alignment|separation|cursor-frame-width|divider-color|drag-color|heading-color|heading-divider-color|num-rows|record-data|tiled-headings|vpadding|centered-headings|column-headings|self-act|cancel-button|vscroll|report-composer|clsid|primary-interface|active-x-control|default-interface|default-source|auto-minimize|auto-resize|resource|engraved|initial-state|frame|acuactivexcontrol|activex-res|grid|box|message|namespace|class-name|module|constructor|version|strong|culture|method|handle|exception-value|read-only|dividers|graphical|indexed|termination-value|permanent|boxed|visible|centered|record-position|convert)(?=\\\\s|\\\\.|,|;|$)\",\n      \"name\": \"invalid.illegal.acu.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:actual|auto|automatic|based-storage|complex|connect|contained|core-index|db-access-control-key|db-data-name|db-exception|db-record-name|db-set-name|db-status|dead-lock|endcobol|end-disable|end-enable|end-send|end-transceive|eos|file-limits|file-limit|formatted|sort-status|usage-mode)(?=\\\\s|\\\\.|,|;|$)\",\n      \"name\": \"invalid.illegal.netcobol.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:System-Info|Terminal-Info)(?![0-9A-Za-z_-])\",\n      \"name\": \"support.type.cobol.acu strong\"\n    },\n    {\n      \"begin\": \"(?<![-_\\\\*])(?i:remarks)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.cobol\"\n        }\n      },\n      \"name\": \"comment.2.block.cobol.remark\",\n      \"end\": \"(?i:end\\\\-remark|\\\\*{Bench}end|environment\\\\s+division|data\\\\s+division|working-storage\\\\s+section|file-control)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:alter)(?=\\\\s|\\\\.)\",\n      \"name\": \"invalid.illegal.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:apply|areas|area|clock-units|code|com-reg|controls|dbcs|destination|detail|display-1|ending|every|insert|kanjikey|last|left|less|limits|limit|memory|metaclass|modules|more-labels|multiple|native_binary|native|negative|number|numeric-edited|other|padding|password|pf|ph|postive|processing|queue|recording|reload|removal|rerun|reserve|reserved|rewind|segment-limit|segment|separate|sequence|skip1|skip2|skip3|standard-1|standard-2|sub-queue-1|sub-queue-2|sub-queue-3|sum|symbolic|synchronized|sync|table|test|text|than|top|trace|trailing|unit|words|write-only|at|basis|beginning|bottom|cbl|cf|ch|de|positive|egcs|egi|emi|end|reversed|rf|rh|run|same|order|heading|esi)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.ibmreserved.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:active-class|aligned|anycase|boolean|cols|col|condition|ec|eo|system-default|function-pointer)(?![0-9A-Za-z_-])\",\n      \"name\": \"strong keyword.potential.reserved.cobol\"\n    },\n    {\n      \"match\": \"(?i:filler)\",\n      \"name\": \"keyword.filler.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:address-of|date|day-of-week|day|debug-content|debug-item|debug-line|debug-item|debug-sub-1|debug-sub-2|debug-sub-3|shift-in|shift-out|sort-control|sort-core-size|sort-file-size|sort-message|sort-return|sort-mode-size|sort-return|tally|time|when-compiled|line-counter|page-counter|return-code|linage-counter|debug-line|debug-name|debug-contents|json-code|json-status|xml-code|xml-event|xml-information|xml-namespace-prefix|xml-namespace|xml-nnamespace-repfix|xml-nnamespace|xml-ntext|jnienvptr)(?![0-9A-Za-z_-])\",\n      \"name\": \"variable.language\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:shortint1|shortint2|shortint3|shortint4|shortint5|shortint6|shortint7|longint1|longint2|longint3|longint4|longint5|longint6|bigint1|bigint2|blob-locator|clob-locator|dbclob-locator|dbclob-file|blob-file|clob-file|clob|dbclob|blob|varbinary|long-varbinary|time-record|timestamp-record|timestamp-offset-record|timestamp-offset|timestamp|rowid|xml|long-varchar)(?=\\\\s|\\\\.|\\\\)|\\\\()\",\n      \"name\": \"storage.type.sql.picture.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:self)\",\n      \"name\": \"keyword.other.self.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:super)\",\n      \"name\": \"keyword.other.super.cobol\"\n    },\n    {\n      \"match\": \"(^[0-9][0-9][0-9][0-9][0-9][0-9])\",\n      \"name\": \"constant.numeric.cobol\"\n    },\n    {\n      \"match\": \"(\\\\()([0-9]*)(:)([0-9]*)(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.symbol.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.integer\"\n        },\n        \"3\": {\n          \"name\": \"meta.symbol.cobol\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.integer\"\n        },\n        \"5\": {\n          \"name\": \"meta.symbol.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"([a-zA-Z-0-9_]*[a-zA-Z0-9]|([#]?[0-9a-zA-Z]+[a-zA-Z-0-9_]*[a-zA-Z0-9]))\",\n      \"name\": \"meta.symbol.cobol\"\n    }\n  ],\n  \"repository\": {\n    \"cics-keywords\": {\n      \"match\": \"(?<![\\\\-\\\\w])(?i:abcode|abdump|abend|abort|abprogram|abstime|accum|acee|acqactivity|acqprocess|acquactivity|action|activity|activityid|actpartn|add|address|after|aid|alarm|all|allocate|alter|alternate|altscrnht|altscrnwd|and|anykey|aplkybd|apltext|applid|as|asa|asis|asktime|asraintrpt|asrakey|asrapsw|asraregs|asraspc|asrastg|assign|asynchronous|at|attach|attachid|attributes|authenticate|autopage|auxiliary|base64|basicauth|below|bif|binary|bit|bodycharset|bookmark|brdata|brdatalength|brexit|bridge|browsetoken|btrans|buffer|build|burgeability|caddrlength|cancel|card|cbuff|ccsid|certificate|change|changetime|channel|char|characterset|check|chunkend|chunking|chunkno|chunkyes|cicsdatakey|ciphers|class|clear|cliconvert|client|clientaddr|clientaddrnu|clientconv|clientname|clntaddr6nu|clntipfamily|close|closestatus|clrpartn|cmdsec|cnamelength|cnotcompl|codepage|color|commarea|commonname|commonnamlen|comparemax|comparemin|complete|composite|compstatus|condition|confirm|confirmation|connect|consistent|console|container|contexttype|control|convdata|converse|convertst|converttime|convid|copy|counter|country|countrylen|create|critical|ctlchar|current|cursor|cwa|cwaleng|data|data1|data2|datalength|datalenth|dataonly|datapointer|dataset|datastr|datatoxml|datatype|datcontainer|date|dateform|datesep|datestring|day|daycount|dayofmonth|dayofweek|dayofyear|days|daysleft|day-of-week|dcounter|ddmmyy|ddmmyyyy|debkey|debrec|debug-contents|debug-item|debug-line|debug-name|debug-sub-1|debug-sub-2|debug-sub-3|deedit|default|define|defresp|defscrnht|defscrnwd|delay|delete|deleteq|delimiter|deq|destcount|destid|destidleng|detail|detaillength|dfhresp|dfhvalue|digest|digesttype|disconnect|docdelete|docsize|docstatus|doctoken|document|ds3270|dsscs|dump|dumpcode|dumpid|duprec|ecaddr|ecblist|eib|elemname|elemnamelen|elemns|elemnslen|end|endactivity|endbr|endbrowse|endfile|endoutput|enq|enter|entry|entryname|eoc|eods|eprfield|eprfrom|eprinto|eprlength|eprset|eprtype|equal|erase|eraseaup|error|errterm|esmreason|esmresp|event|eventtype|eventual|ewasupp|exception|expect|expirytime|extds|external|extract|facility|facilitytokn|false|faultactlen|faultactor|faultcode|faultcodelen|faultcodestr|faultstring|faultstrlen|fci|fct|field|file|firestatus|flength|fmh|fmhparm|for|force|formattime|formfeed|formfield|free|freekb|freemain|from|fromactivity|fromccsid|fromchannel|fromcodepage|fromdoc|fromflength|fromlength|fromprocess|frset|fulldate|function|gchars|gcodes|gds|generic|get|getmain|getnext|gmmi|groupid|gtec|gteq|handle|head|header|hex|high-value|high-values|hilight|hold|honeom|host|hostcodepage|hostlength|hosttype|hours|httpheader|httpmethod|httprnum|httpversion|httpvnum|ignore|immediate|in|increment|initimg|initparm|initparmlen|inpartn|input|inputevent|inputmsg|inputmsglen|inquire|insert|integer|interval|into|intoccsid|intocodepage|invalidcount|invite|invmpsz|invoke|invokingprog|invpartn|invreq|issue|issuer|item|iutype|journalname|jtypeid|jusfirst|juslast|justify|katakana|keep|keylength|keynumber|l40|l64|l80|label|langinuse|languagecode|last|lastusetime|ldc|ldcmnem|ldcnum|leavekb|length|lengthlist|level|lightpen|linage-counter|line|lineaddr|line-counter|link|list|listlength|llid|load|locality|localitylen|logmessage|logmode|logonlogmode|logonmsg|low-value|low-values|luname|main|map|mapcolumn|mapfail|mapheight|mapline|maponly|mapped|mappingdev|mapset|mapwidth|massinsert|maxdatalen|maxflength|maximum|maxlength|maxlifetime|maxproclen|mcc|mediatype|message|messageid|metadata|metadatalen|method|methodlength|milliseconds|minimum|minutes|mmddyy|mmddyyyy|mode|modename|monitor|month|monthofyear|move|msr|msrcontrol|name|namelength|natlang|natlanginuse|netname|newpassword|newphrase|newphraselen|next|nexttransid|nleom|noautopage|nocc|nocheck|nocliconvert|noclose|nodata|node|nodocdelete|nodump|noedit|noflush|nohandle|noinconvert|none|nooutconert|noqueue|noquiesce|nosrvconvert|nosuspend|note|notpurgeable|notruncate|nowait|nscontainer|null|nulls|numciphers|numevents|numitems|numrec|numroutes|numsegments|numtab|of|oidcard|on|opclass|open|operation|operator|operid|operkeys|operpurge|opid|opsecurity|options|or|orgabcode|organization|organizatlen|orgunit|orgunitlen|outdescr|outline|outpartn|output|owner|pa1|pa2|pa3|page|pagenum|page-counter|paging|parse|partn|partner|partnfail|partnpage|partns|partnset|pass|passbk|password|passwordlen|path|pathlength|pct|pf1|pf10|pf11|pf12|pf13|pf14|pf15|pf16|pf17|pf18|pf19|pf2|pf20|pf21|pf22|pf23|pf24|pf3|pf4|pf5|pf6|pf7|pf8|pf9|pfxleng|phrase|phraselen|piplength|piplist|point|pool|pop|portnumber|portnumnu|post|ppt|predicate|prefix|prepare|princonvid|prinsysid|print|priority|privacy|process|processtype|proclength|procname|profile|program|protect|ps|punch|purge|purgeable|push|put|qname|query|queryparm|querystring|querystrlen|queue|quote|quotes|random|rba|rbn|rdatt|read|readnext|readprev|readq|reattach|receive|receiver|recfm|record|recordlen|recordlength|reduce|refparms|refparmslen|relatesindex|relatestype|relatesuri|release|remove|repeatable|repetable|replace|reply|replylength|reqid|requesttype|resclass|reset|resetbr|resid|residlength|resource|resp|resp2|ressec|restart|restype|result|resume|retain|retcode|retcord|retriece|retrieve|return|returnprog|return-code|rewind|rewrite|ridfld|role|rolelength|rollback|route|routecodes|rprocess|rresource|rrn|rtermid|rtransid|run|saddrlength|scheme|schemename|scope|scopelen|scrnht|scrnwd|seconds|security|segmentlist|send|sender|serialnum|serialnumlen|server|serveraddr|serveraddrnu|serverconv|servername|service|session|sesstoken|set|shared|shift-in|shift-out|sigdata|signal|signoff|signon|sit|snamelength|soapfault|sort-control|sort-core-size|sort-file-size|sort-message|sort-mode-size|sort-return|sosi|space|spaces|spoolclose|spoolopen|spoolread|spoolwrite|srvconvert|srvraddr6nu|srvripfamily|ssltype|start|startbr|startbrowse|startcode|state|statelen|stationid|status|statuscode|statuslen|statustext|storage|strfield|stringformat|subaddr|subcodelen|subcodestr|subevent|subevent1|subevent2|subevent3|subevent4|subevent5|subevent6|subevent7|subevent8|sum|suspend|suspstatus|symbol|symbollist|synchronous|synclevel|synconreturn|syncpoint|sysid|tables|tally|task|taskpriority|tcpip|tcpipservice|tct|tctua|tctualeng|td|tellerid|template|termcode|termid|terminal|termpriority|test|text|textkybd|textlength|textprint|time|timeout|timer|timesep|title|to|toactivity|tochannel|tocontainer|toflength|token|tolength|toprocess|trace|tracenum|trailer|tranpriority|transaction|transform|transid|trigger|trt|true|ts|twa|twaleng|type|typename|typenamelen|typens|typenslen|unattend|uncommitted|unescaped|unexpin|unlock|until|uow|update|uri|urimap|url|urllength|userdatakey|userid|username|usernamelen|userpriority|using|validation|value|valuelength|verify|versionlen|volume|volumeleng|wait|waitcics|web|when-compiled|wpmedia1|wpmedia2|wpmedia3|wpmedia4|wrap|write|writeq|wsacontext|wsaepr|xctl|xmlcontainer|xmltodata|xmltransform|xrba|year|yyddd|yyddmm|yymmdd|yyyyddd|yyyyddmm|yyyymmdd|zero|zeroes|zeros)(?![\\\\-\\\\w])\",\n      \"name\": \"keyword.verb.cics\"\n    },\n    \"string-quoted-constant\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"('|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.single.cobol\"\n    },\n    \"string-double-quoted-constant\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    \"number-complex-constant\": {\n      \"match\": \"(\\\\-|\\\\+)?((([0-9]+(\\\\.[0-9]+))|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?(?=\\\\s|\\\\.$|,|\\\\))\",\n      \"name\": \"constant.numeric.cobol\"\n    },\n    \"number-simple-constant\": {\n      \"match\": \"(\\\\-|\\\\+)?([0-9]+)(?=\\\\s|\\\\.$|,|\\\\))\",\n      \"name\": \"constant.numeric.cobol\"\n    }\n  },\n  \"scopeName\": \"source.cobol\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/coffee.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-coffee-script/blob/master/grammars/coffeescript.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-coffee-script/commit/0f6db9143663e18b1ad00667820f46747dba495e\",\n  \"name\": \"coffee\",\n  \"scopeName\": \"source.coffee\",\n  \"patterns\": [\n    {\n      \"include\": \"#jsx\"\n    },\n    {\n      \"match\": \"(new)\\\\s+(?:(?:(class)\\\\s+(\\\\w+(?:\\\\.\\\\w*)*)?)|(\\\\w+(?:\\\\.\\\\w*)*))\",\n      \"name\": \"meta.class.instance.constructor.coffee\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.new.coffee\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.coffee\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.instance.coffee\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.instance.coffee\"\n        }\n      }\n    },\n    {\n      \"begin\": \"'''\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        }\n      },\n      \"end\": \"'''\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      },\n      \"name\": \"string.quoted.single.heredoc.coffee\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.escape.backslash.coffee\"\n            }\n          },\n          \"match\": \"(\\\\\\\\).\",\n          \"name\": \"constant.character.escape.backslash.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      },\n      \"name\": \"string.quoted.double.heredoc.coffee\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.escape.backslash.coffee\"\n            }\n          },\n          \"match\": \"(\\\\\\\\).\",\n          \"name\": \"constant.character.escape.backslash.coffee\"\n        },\n        {\n          \"include\": \"#interpolated_coffee\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(`)(.*)(`)\",\n      \"name\": \"string.quoted.script.coffee\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        },\n        \"2\": {\n          \"name\": \"source.js.embedded.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      }\n    },\n    {\n      \"begin\": \"(?<!#)###(?!#)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.coffee\"\n        }\n      },\n      \"end\": \"###\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.coffee\"\n        }\n      },\n      \"name\": \"comment.block.coffee\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|\\\\s)@\\\\w*(?=\\\\s)\",\n          \"name\": \"storage.type.annotation.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"#\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.coffee\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"comment.line.number-sign.coffee\"\n    },\n    {\n      \"begin\": \"///\",\n      \"end\": \"(///)[gimuy]*\",\n      \"name\": \"string.regexp.multiline.coffee\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#heregexp\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<![\\\\w$])(/)(?=(?![/*+?])(.+)(/)[gimuy]*(?!\\\\s*[\\\\w$/(]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        }\n      },\n      \"end\": \"(/)[gimuy]*(?!\\\\s*[\\\\w$/(])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      },\n      \"name\": \"string.regexp.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"source.js.regexp\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(?<![\\\\.\\\\$])(break|by|catch|continue|else|finally|for|in|of|if|return|switch|then|throw|try|unless|when|while|until|loop|do|export|import|default|from|as|yield|async|await|(?<=for)\\\\s+own)(?!\\\\s*:)\\\\b\",\n      \"name\": \"keyword.control.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<![\\\\.\\\\$])(delete|instanceof|new|typeof)(?!\\\\s*:)\\\\b\",\n      \"name\": \"keyword.operator.$1.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<![\\\\.\\\\$])(case|function|var|void|with|const|let|enum|native|__hasProp|__extends|__slice|__bind|__indexOf|implements|interface|package|private|protected|public|static)(?!\\\\s*:)\\\\b\",\n      \"name\": \"keyword.reserved.coffee\"\n    },\n    {\n      \"begin\": \"(?x)\\n(?<=\\\\s|^)((@)?[a-zA-Z_$][\\\\w$]*)\\n\\\\s*([:=])\\\\s*\\n(?=(\\\\([^\\\\(\\\\)]*\\\\)\\\\s*)?[=-]>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.coffee\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.readwrite.instance.coffee\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.coffee\"\n        }\n      },\n      \"end\": \"[=-]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"storage.type.function.coffee\"\n        }\n      },\n      \"name\": \"meta.function.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_params\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n(?<=\\\\s|^)(?:((')([^']*?)('))|((\\\")([^\\\"]*?)(\\\")))\\n\\\\s*([:=])\\\\s*\\n(?=(\\\\([^\\\\(\\\\)]*\\\\)\\\\s*)?[=-]>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.quoted.single.coffee\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.coffee\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        },\n        \"5\": {\n          \"name\": \"string.quoted.double.coffee\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.coffee\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        },\n        \"9\": {\n          \"name\": \"keyword.operator.assignment.coffee\"\n        }\n      },\n      \"end\": \"[=-]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"storage.type.function.coffee\"\n        }\n      },\n      \"name\": \"meta.function.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_params\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(\\\\([^\\\\(\\\\)]*\\\\)\\\\s*)?[=-]>)\",\n      \"end\": \"[=-]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"storage.type.function.coffee\"\n        }\n      },\n      \"name\": \"meta.function.inline.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_params\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<=\\\\s|^)({)(?=[^'\\\"#]+?}[\\\\s\\\\]}]*=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.destructuring.begin.bracket.curly.coffee\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.destructuring.end.bracket.curly.coffee\"\n        }\n      },\n      \"name\": \"meta.variable.assignment.destructured.object.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"match\": \"[a-zA-Z$_]\\\\w*\",\n          \"name\": \"variable.assignment.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<=\\\\s|^)(\\\\[)(?=[^'\\\"#]+?\\\\][\\\\s\\\\]}]*=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.destructuring.begin.bracket.square.coffee\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.destructuring.end.bracket.square.coffee\"\n        }\n      },\n      \"name\": \"meta.variable.assignment.destructured.array.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"match\": \"[a-zA-Z$_]\\\\w*\",\n          \"name\": \"variable.assignment.coffee\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.|::)(true|on|yes)(?!\\\\s*[:=][^=])\\\\b\",\n      \"name\": \"constant.language.boolean.true.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.|::)(false|off|no)(?!\\\\s*[:=][^=])\\\\b\",\n      \"name\": \"constant.language.boolean.false.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.|::)null(?!\\\\s*[:=][^=])\\\\b\",\n      \"name\": \"constant.language.null.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.|::)extends(?!\\\\s*[:=])\\\\b\",\n      \"name\": \"variable.language.coffee\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\b(?<!\\\\$)(super|this|arguments)(?!\\\\s*[:=][^=]|\\\\$)\\\\b\",\n      \"name\": \"variable.language.$1.coffee\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.coffee\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.inheritance.coffee\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.coffee\"\n        }\n      },\n      \"match\": \"(?<=\\\\s|^|\\\\[|\\\\()(class)\\\\s+(extends)\\\\s+(@?[a-zA-Z\\\\$\\\\._][\\\\w\\\\.]*)\",\n      \"name\": \"meta.class.coffee\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.coffee\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.coffee\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.inheritance.coffee\"\n        },\n        \"4\": {\n          \"name\": \"entity.other.inherited-class.coffee\"\n        }\n      },\n      \"match\": \"(?<=\\\\s|^|\\\\[|\\\\()(class\\\\b)\\\\s+(@?[a-zA-Z\\\\$_][\\\\w\\\\.]*)?(?:\\\\s+(extends)\\\\s+(@?[a-zA-Z\\\\$\\\\._][\\\\w\\\\.]*))?\",\n      \"name\": \"meta.class.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(debugger|\\\\\\\\)\\\\b\",\n      \"name\": \"keyword.other.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(Array|ArrayBuffer|Blob|Boolean|Date|document|Function|Int(8|16|32|64)Array|Math|Map|Number|Object|Proxy|RegExp|Set|String|WeakMap|window|Uint(8|16|32|64)Array|XMLHttpRequest)\\\\b\",\n      \"name\": \"support.class.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(console)\\\\b\",\n      \"name\": \"entity.name.type.object.coffee\"\n    },\n    {\n      \"match\": \"((?<=console\\\\.)(debug|warn|info|log|error|time|timeEnd|assert))\\\\b\",\n      \"name\": \"support.function.console.coffee\"\n    },\n    {\n      \"match\": \"((?<=\\\\.)(apply|call|concat|every|filter|forEach|from|hasOwnProperty|indexOf|isPrototypeOf|join|lastIndexOf|map|of|pop|propertyIsEnumerable|push|reduce(Right)?|reverse|shift|slice|some|sort|splice|to(Locale)?String|unshift|valueOf))\\\\b\",\n      \"name\": \"support.function.method.array.coffee\"\n    },\n    {\n      \"match\": \"((?<=Array\\\\.)(isArray))\\\\b\",\n      \"name\": \"support.function.static.array.coffee\"\n    },\n    {\n      \"match\": \"((?<=Object\\\\.)(create|definePropert(ies|y)|freeze|getOwnProperty(Descriptors?|Names)|getProperty(Descriptor|Names)|getPrototypeOf|is(Extensible|Frozen|Sealed)?|isnt|keys|preventExtensions|seal))\\\\b\",\n      \"name\": \"support.function.static.object.coffee\"\n    },\n    {\n      \"match\": \"((?<=Math\\\\.)(abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|tan|tanh|trunc))\\\\b\",\n      \"name\": \"support.function.static.math.coffee\"\n    },\n    {\n      \"match\": \"((?<=Number\\\\.)(is(Finite|Integer|NaN)|toInteger))\\\\b\",\n      \"name\": \"support.function.static.number.coffee\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\b(module|exports|__filename|__dirname|global|process)(?!\\\\s*:)\\\\b\",\n      \"name\": \"support.variable.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(Infinity|NaN|undefined)\\\\b\",\n      \"name\": \"constant.language.coffee\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#method_calls\"\n    },\n    {\n      \"include\": \"#function_calls\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#objects\"\n    },\n    {\n      \"include\": \"#properties\"\n    },\n    {\n      \"match\": \"::\",\n      \"name\": \"keyword.operator.prototype.coffee\"\n    },\n    {\n      \"match\": \"(?<!\\\\$)\\\\b[0-9]+[\\\\w$]*\",\n      \"name\": \"invalid.illegal.identifier.coffee\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.statement.coffee\"\n    },\n    {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.coffee\"\n    },\n    {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.curly.coffee\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.curly.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.bracket.square.coffee\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.bracket.square.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\.)\\\\.{3}\",\n          \"name\": \"keyword.operator.slice.exclusive.coffee\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\.{2}\",\n          \"name\": \"keyword.operator.slice.inclusive.coffee\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.coffee\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#instance_variable\"\n    },\n    {\n      \"include\": \"#single_quoted_string\"\n    },\n    {\n      \"include\": \"#double_quoted_string\"\n    }\n  ],\n  \"repository\": {\n    \"arguments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.coffee\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.coffee\"\n            }\n          },\n          \"name\": \"meta.arguments.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=(@|@?[\\\\w$]+|[=-]>|\\\\-\\\\d|\\\\[|{|\\\"|'))\",\n          \"end\": \"(?=\\\\s*(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))|(?=\\\\s*(}|\\\\]|\\\\)|#|$))\",\n          \"name\": \"meta.arguments.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"double_quoted_string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.coffee\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.coffee\"\n            }\n          },\n          \"name\": \"string.quoted.double.coffee\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.escape.backslash.coffee\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)\",\n              \"name\": \"constant.character.escape.backslash.coffee\"\n            },\n            {\n              \"include\": \"#interpolated_coffee\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_calls\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(@)?([\\\\w$]+)(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.instance.coffee\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#function_names\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"name\": \"meta.function-call.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#arguments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(@)?([\\\\w$]+)\\n\\\\s*\\n(?=\\\\s+(?!(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))(?=(@?[\\\\w$]+|[=-]>|\\\\-\\\\d|\\\\[|{|\\\"|')))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.instance.coffee\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#function_names\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?=\\\\s*(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))|(?=\\\\s*(}|\\\\]|\\\\)|#|$))\",\n          \"name\": \"meta.function-call.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_names\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\\\b(isNaN|isFinite|eval|uneval|parseInt|parseFloat|decodeURI|\\ndecodeURIComponent|encodeURI|encodeURIComponent|escape|unescape|\\nrequire|set(Interval|Timeout)|clear(Interval|Timeout))\\\\b\",\n          \"name\": \"support.function.coffee\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n          \"name\": \"entity.name.function.coffee\"\n        },\n        {\n          \"match\": \"\\\\d[\\\\w$]*\",\n          \"name\": \"invalid.illegal.identifier.coffee\"\n        }\n      ]\n    },\n    \"function_params\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.coffee\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.coffee\"\n            }\n          },\n          \"name\": \"meta.parameters.coffee\",\n          \"patterns\": [\n            {\n              \"match\": \"([a-zA-Z_$][\\\\w$]*)(\\\\.\\\\.\\\\.)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.function.coffee\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.splat.coffee\"\n                }\n              }\n            },\n            {\n              \"match\": \"(@(?:[a-zA-Z_$][\\\\w$]*)?)(\\\\.\\\\.\\\\.)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.function.readwrite.instance.coffee\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.splat.coffee\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"embedded_comment\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.coffee\"\n            }\n          },\n          \"match\": \"(?<!\\\\\\\\)(#).*$\\\\n?\",\n          \"name\": \"comment.line.number-sign.coffee\"\n        }\n      ]\n    },\n    \"instance_variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"(@)([a-zA-Z_\\\\$]\\\\w*)?\",\n          \"name\": \"variable.other.readwrite.instance.coffee\"\n        }\n      ]\n    },\n    \"interpolated_coffee\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\#\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.coffee\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"source.coffee.embedded.source\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method_calls\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(\\\\.)|(::))\\\\s*([\\\\w$]+)\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.method.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#method_names\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"name\": \"meta.method-call.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#arguments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(\\\\.)|(::))\\\\s*([\\\\w$]+)\\\\s*(?=\\\\s+(?!(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))(?=(@|@?[\\\\w$]+|[=-]>|\\\\-\\\\d|\\\\[|{|\\\"|')))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.method.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#method_names\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?=\\\\s*(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))|(?=\\\\s*(}|\\\\]|\\\\)|#|$))\",\n          \"name\": \"meta.method-call.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method_names\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\\\bon(Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\\nReadystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\\nBefore(cut|deactivate|unload|update|paste|print|editfocus|activate)|\\nBlur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\\nChange|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\\nDatasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\\nDragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\\nErrorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\\\b\",\n          \"name\": \"support.function.event-handler.coffee\"\n        },\n        {\n          \"match\": \"(?x)\\n\\\\b(shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\\nscrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\\nsup|sub|substr|substring|splice|split|send|set(Milliseconds|Seconds|Minutes|Hours|\\nMonth|Year|FullYear|Date|UTC(Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\\nTime|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\\nsavePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\\ncontextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\\ncreateEventObject|to(GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\\ntest|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\\nuntaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\\nprint|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\\nfileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\\nforward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\\nabort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\\nreleaseCapture|releaseEvents|go|get(Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\\nTime|Date|TimezoneOffset|UTC(Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\\nAttention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\\nmoveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back)\\\\b\",\n          \"name\": \"support.function.coffee\"\n        },\n        {\n          \"match\": \"(?x)\\n\\\\b(acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\\nappendChild|appendData|before|blur|canPlayType|captureStream|\\ncaretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\\ncloneContents|cloneNode|cloneRange|close|closest|collapse|\\ncompareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\\nconvertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\\ncreateAttributeNS|createCaption|createCDATASection|createComment|\\ncreateContextualFragment|createDocument|createDocumentFragment|\\ncreateDocumentType|createElement|createElementNS|createEntityReference|\\ncreateEvent|createExpression|createHTMLDocument|createNodeIterator|\\ncreateNSResolver|createProcessingInstruction|createRange|createShadowRoot|\\ncreateTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\\ndeleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\\ndeleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\\nenableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\\nexitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\\ngetAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\\ngetAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\\ngetClientRects|getContext|getDestinationInsertionPoints|getElementById|\\ngetElementsByClassName|getElementsByName|getElementsByTagName|\\ngetElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\\ngetVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\\nhasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\\ninsertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\\ninsertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\\nisPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\\nlookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\\nmoveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\\nparentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\\npreviousSibling|probablySupportsContext|queryCommandEnabled|\\nqueryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\\nquerySelector|querySelectorAll|registerContentHandler|registerElement|\\nregisterProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\\nremoveAttributeNode|removeAttributeNS|removeChild|removeEventListener|\\nremoveItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\\nrequestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\\nscrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\\nsetAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\\nsetCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\\nsetRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\\nslice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\\nsubmit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\\ntoDataURL|toggle|toString|values|write|writeln)\\\\b\",\n          \"name\": \"support.function.dom.coffee\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n          \"name\": \"entity.name.function.coffee\"\n        },\n        {\n          \"match\": \"\\\\d[\\\\w$]*\",\n          \"name\": \"invalid.illegal.identifier.coffee\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0(x|X)[0-9a-fA-F]+\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.hex.coffee\"\n        },\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0(b|B)[01]+\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.binary.coffee\"\n        },\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0(o|O)?[0-7]+\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.octal.coffee\"\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9]+(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9]+(\\\\.)[eE][+-]?[0-9]+\\\\b)|       # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)|       # .1E+3\\n  (?:\\\\b[0-9]+[eE][+-]?[0-9]+\\\\b)|            # 1E+3\\n  (?:\\\\b[0-9]+(\\\\.)[0-9]+\\\\b)|                # 1.1\\n  (?:\\\\b[0-9]+(?=\\\\.{2,3}))|                  # 1 followed by a slice\\n  (?:\\\\b[0-9]+(\\\\.)\\\\B)|                      # 1.\\n  (?:\\\\B(\\\\.)[0-9]+\\\\b)|                      # .1\\n  (?:\\\\b[0-9]+\\\\b(?!\\\\.))                     # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.coffee\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            }\n          }\n        }\n      ]\n    },\n    \"objects\": {\n      \"patterns\": [\n        {\n          \"match\": \"[A-Z][A-Z0-9_$]*(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))\",\n          \"name\": \"constant.other.object.coffee\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))\",\n          \"name\": \"variable.other.object.coffee\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:([a-zA-Z$_][\\\\w$]*)?\\\\s+|(?<![\\\\w$]))(and=|or=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.assignment.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"([a-zA-Z$_][\\\\w$]*)?\\\\s*(%=|\\\\+=|-=|\\\\*=|&&=|\\\\|\\\\|=|\\\\?=|(?<!\\\\()/=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.assignment.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"([a-zA-Z$_][\\\\w$]*)?\\\\s*(&=|\\\\^=|<<=|>>=|>>>=|\\\\|=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.assignment.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.bitwise.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"<<|>>>|>>\",\n          \"name\": \"keyword.operator.bitwise.shift.coffee\"\n        },\n        {\n          \"match\": \"!=|<=|>=|==|<|>\",\n          \"name\": \"keyword.operator.comparison.coffee\"\n        },\n        {\n          \"match\": \"&&|!|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.coffee\"\n        },\n        {\n          \"match\": \"&|\\\\||\\\\^|~\",\n          \"name\": \"keyword.operator.bitwise.coffee\"\n        },\n        {\n          \"match\": \"([a-zA-Z$_][\\\\w$]*)?\\\\s*(=|:(?!:))(?![>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.assignment.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"--\",\n          \"name\": \"keyword.operator.decrement.coffee\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.coffee\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\\\\.\",\n          \"name\": \"keyword.operator.splat.coffee\"\n        },\n        {\n          \"match\": \"\\\\?\",\n          \"name\": \"keyword.operator.existential.coffee\"\n        },\n        {\n          \"match\": \"%|\\\\*|/|-|\\\\+\",\n          \"name\": \"keyword.operator.coffee\"\n        },\n        {\n          \"match\": \"(?x)\\n\\\\b(?<![\\\\.\\\\$])\\n(?:\\n  (and|or|not) # logical\\n  |\\n  (is|isnt) # comparison\\n)\\n(?!\\\\s*:)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.comparison.coffee\"\n            }\n          }\n        }\n      ]\n    },\n    \"properties\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*([A-Z][A-Z0-9_$]*\\\\b\\\\$*)(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"constant.other.object.property.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*(\\\\$*[a-zA-Z_$][\\\\w$]*)(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.object.property.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*([A-Z][A-Z0-9_$]*\\\\b\\\\$*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"constant.other.property.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*(\\\\$*[a-zA-Z_$][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*([0-9][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.identifier.coffee\"\n            }\n          }\n        }\n      ]\n    },\n    \"single_quoted_string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.coffee\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.coffee\"\n            }\n          },\n          \"name\": \"string.quoted.single.coffee\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.escape.backslash.coffee\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\",\n              \"name\": \"constant.character.escape.backslash.coffee\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[wWsSdD]|\\\\.\",\n          \"name\": \"constant.character.character-class.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\",\n          \"name\": \"constant.character.numeric.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\c[A-Z]\",\n          \"name\": \"constant.character.control.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.backslash.regexp\"\n        }\n      ]\n    },\n    \"heregexp\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\",\n          \"name\": \"keyword.control.anchor.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9]\\\\d*\",\n          \"name\": \"keyword.other.back-reference.regexp\"\n        },\n        {\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\",\n          \"name\": \"keyword.operator.quantifier.regexp\"\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"keyword.operator.or.regexp\"\n        },\n        {\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"3\": {\n              \"name\": \"meta.assertion.look-ahead.regexp\"\n            },\n            \"4\": {\n              \"name\": \"meta.assertion.negative-look-ahead.regexp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"name\": \"meta.group.assertion.regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"#heregexp\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\((\\\\?:)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"name\": \"meta.group.regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"#heregexp\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            }\n          },\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                }\n              },\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"name\": \"constant.other.character-class.range.regexp\"\n            },\n            {\n              \"include\": \"#regex-character-class\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regex-character-class\"\n        },\n        {\n          \"include\": \"#interpolated_coffee\"\n        },\n        {\n          \"include\": \"#embedded_comment\"\n        }\n      ]\n    },\n    \"jsx\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag\"\n        },\n        {\n          \"include\": \"#jsx-end-tag\"\n        }\n      ]\n    },\n    \"jsx-expression\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.curly.coffee\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.curly.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double_quoted_string\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"jsx-attribute\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.coffee\"\n            }\n          },\n          \"match\": \"(?:^|\\\\s+)([-\\\\w.]+)\\\\s*(=)\"\n        },\n        {\n          \"include\": \"#double_quoted_string\"\n        },\n        {\n          \"include\": \"#single_quoted_string\"\n        },\n        {\n          \"include\": \"#jsx-expression\"\n        }\n      ]\n    },\n    \"jsx-tag\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<)([-\\\\w\\\\.]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.coffee\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.coffee\"\n            }\n          },\n          \"end\": \"(/?>)\",\n          \"name\": \"meta.tag.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsx-attribute\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx-end-tag\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(</)([-\\\\w\\\\.]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.coffee\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.coffee\"\n            }\n          },\n          \"end\": \"(/?>)\",\n          \"name\": \"meta.tag.coffee\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/coldfusion.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.cfml.basic\",\n  \"patterns\": [\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:cfscript))(?![^>]*/>)\",\n      \"end\": \"(</)((?i:cfscript))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:cfscript))\",\n          \"patterns\": [{ \"include\": \"source.cfscript\" }],\n          \"contentName\": \"source.cfscript.embedded.cfml\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"meta.tag.block.cf.script.cfml\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" }\n          }\n        }\n      ],\n      \"captures\": {\n        \"3\": { \"name\": \"punctuation.definition.tag.end.cfml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n        \"2\": { \"name\": \"entity.name.tag.cf.script.cfml\" },\n        \"0\": { \"name\": \"meta.tag.block.cf.script.cfml\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:cffunction))\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [\n        { \"include\": \"#func-name-attribute\" },\n        { \"include\": \"#tag-stuff\" }\n      ],\n      \"name\": \"meta.tag.block.cf.function.cfml\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n        \"2\": { \"name\": \"entity.name.tag.cf.function.cfml\" }\n      }\n    },\n    {\n      \"end\": \"((?:\\\\s?/)?>)\",\n      \"begin\": \"(<)(?i:(cfset|cfreturn))\\\\b\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n        \"2\": { \"name\": \"entity.name.tag.cf.inline.declaration.cfml\" }\n      },\n      \"contentName\": \"source.cfscript.embedded.cfml\",\n      \"patterns\": [\n        { \"include\": \"#cfcomments\" },\n        { \"include\": \"source.cfscript\" }\n      ],\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" } },\n      \"name\": \"meta.tag.inline.cf.any.cfml\"\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t\\t(<)\\n\\t\\t\\t\\t\\t(?i:\\n\\t\\t\\t\\t\\t\\t(cf(queryparam|location|forward|import|param|break|abort|flush\\n\\t\\t\\t\\t\\t\\t\\t|setting|test|dump|content|include|catch|continue\\n\\t\\t\\t\\t\\t\\t\\t|file|log|object|invoke|throw|property|htmlhead\\n\\t\\t\\t\\t\\t\\t\\t|header|argument|exit|trace)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\\t\\t)\\n\\t\\t\\t\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" } },\n      \"end\": \"((?:\\\\s?/)?>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.inline.cf.any.cfml\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n        \"2\": { \"name\": \"entity.name.tag.cf.inline.other.cfml\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:cfquery))\\\\b(?![^>]*/>)\",\n      \"end\": \"(</)((?i:cfquery))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=cfquery)\\\\s\",\n          \"end\": \"(?=>)\",\n          \"patterns\": [\n            { \"include\": \"#qry-name-attribute\" },\n            { \"include\": \"#tag-stuff\" }\n          ],\n          \"name\": \"meta.tag.block.cf.output.cfml\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:cfquery))\",\n          \"patterns\": [\n            { \"include\": \"#string-double-quoted\" },\n            { \"include\": \"#string-single-quoted\" },\n            { \"include\": \"#embedded-tags\" },\n            {\n              \"begin\": \"(</?)((?i:(?:cfqueryparam))\\\\b)\",\n              \"endCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" }\n              },\n              \"end\": \"((?:\\\\s?/)?>)\",\n              \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n              \"name\": \"meta.tag.inline.cf.query-param.cfml\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n                \"2\": { \"name\": \"entity.name.tag.cf.inline.param.cfml\" }\n              }\n            },\n            { \"include\": \"#nest-hash\" },\n            { \"include\": \"source.sql\" }\n          ],\n          \"contentName\": \"source.sql.embedded.cfml\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"meta.tag.block.cf.query.cfml\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" }\n          }\n        }\n      ],\n      \"captures\": {\n        \"3\": { \"name\": \"punctuation.definition.tag.end.cfml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n        \"2\": { \"name\": \"entity.name.tag.cf.query.cfml\" },\n        \"0\": { \"name\": \"meta.tag.block.cf.query.cfml\" }\n      }\n    },\n    { \"include\": \"#embedded-tags\" },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t\\t(</?)\\n\\t\\t\\t\\t(?i:\\n\\t\\t\\t\\t\\t(cf((output)|(savecontent)|([\\\\w\\\\-_.]+)))\\n\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.block.cf.other.cfml\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n        \"2\": { \"name\": \"entity.name.tag.cf.block.other.cfml\" }\n      }\n    }\n  ],\n  \"repository\": {\n    \"tag-stuff\": {\n      \"patterns\": [\n        { \"include\": \"#cfcomments\" },\n        { \"include\": \"#tag-generic-attribute\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" }\n      ]\n    },\n    \"embedded-tags\": {\n      \"patterns\": [\n        { \"include\": \"#cfcomments\" },\n        { \"include\": \"#conditionals\" },\n        { \"include\": \"#flow-control\" },\n        { \"include\": \"#exception-handling\" },\n        { \"include\": \"#cfoutput\" },\n        { \"include\": \"#cfmail\" }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.cfml\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [{ \"include\": \"#nest-hash\" }, { \"include\": \"#entities\" }],\n      \"name\": \"string.quoted.double.cfml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.cfml\" }\n      }\n    },\n    \"func-name-attribute\": {\n      \"begin\": \"\\\\b(name)\\\\b\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")\",\n      \"patterns\": [\n        {\n          \"end\": \"\\\"\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cfml\" }\n          },\n          \"contentName\": \"meta.toc-list.function.cfml\",\n          \"patterns\": [{ \"include\": \"#entities\" }],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cfml\" }\n          },\n          \"name\": \"string.quoted.double.cfml\"\n        },\n        {\n          \"end\": \"'\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cfml\" }\n          },\n          \"contentName\": \"meta.toc-list.function.cfml\",\n          \"patterns\": [{ \"include\": \"#entities\" }],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cfml\" }\n          },\n          \"name\": \"string.quoted.single.cfml\"\n        }\n      ],\n      \"name\": \"meta.attribute-with-value.name.cfml\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.other.attribute-name.cfml\" },\n        \"2\": { \"name\": \"punctuation.separator.key-value.cfml\" }\n      }\n    },\n    \"nest-hash\": {\n      \"patterns\": [\n        { \"match\": \"##\", \"name\": \"string.escaped.hash.cfml\" },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t(\\\\#)\\n\\t\\t\\t\\t\\t\\t\\t(?!\\t\\t# zero width negative lookahead assertion\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t([\\\\w$]+\\t# assertion for plain variables or function names including currency symbol \\\"$\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\[.*\\\\])\\t\\t\\t\\t# asserts a match for anything in square brackets\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\(.*\\\\))\\t\\t\\t\\t# or anything in parens\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\.[\\\\w$]+)\\t\\t\\t\\t# or zero or more \\\"dot\\\" notated variables\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\s*[\\\\+\\\\-\\\\*\\\\/&]\\\\s*[\\\\w$]+)\\t# or simple arithmentic operators + concatenation\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\s*&\\\\s*[\\\"|'].+[\\\"|']) \\t# or concatenation with a quoted string\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\t\\t# asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\(.*\\\\))\\t # asserts a match for anything in parens\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\\\#\\t\\t# asserts closing hash\\n\\t\\t\\t\\t\\t\\t\\t)\",\n          \"name\": \"invalid.illegal.unescaped.hash.cfml\"\n        },\n        {\n          \"end\": \"(#)\",\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t(\\\\#)\\n\\t\\t\\t\\t\\t\\t\\t(?=\\t\\t# zero width negative lookahead assertion\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t([\\\\w$]+\\t# assertion for plain variables or function names including currency symbol \\\"$\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\[.*\\\\])\\t\\t\\t\\t# asserts a match for anything in square brackets\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\(.*\\\\))\\t\\t\\t\\t# or anything in parens\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\.[\\\\w$]+)\\t\\t\\t\\t# or zero or more \\\"dot\\\" notated variables\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\s*[\\\\+\\\\-\\\\*\\\\/&]\\\\s*[\\\\w$]+)\\t# or simple arithmentic operators + concatenation\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\s*&\\\\s*[\\\"|'].+[\\\"|']) \\t# or concatenation with a quoted string\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\t\\t# asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\(.*\\\\))\\t # asserts a match for anything in parens\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\\\#\\t\\t# asserts closing hash\\n\\t\\t\\t\\t\\t\\t\\t)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.hash.begin.cfml\" }\n          },\n          \"contentName\": \"source.cfscript.embedded.cfml\",\n          \"patterns\": [{ \"include\": \"source.cfscript\" }],\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.hash.end.cfml\" }\n          },\n          \"name\": \"meta.name.interpolated.hash.cfml\"\n        }\n      ]\n    },\n    \"cfmail\": {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:cfmail))\\\\b(?![^>]*/>)\",\n      \"end\": \"(</)((?i:cfmail))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=cfmail)\\\\s\",\n          \"end\": \"(?=>)\",\n          \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n          \"name\": \"meta.tag.block.cf.mail.cfml\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:cfmail))\",\n          \"patterns\": [\n            { \"include\": \"#nest-hash\" },\n            { \"include\": \"text.html.cfm\" }\n          ],\n          \"contentName\": \"meta.scope.between-mail-tags.cfml\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"meta.tag.block.cf.mail.cfml\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" }\n          }\n        }\n      ],\n      \"captures\": {\n        \"3\": { \"name\": \"punctuation.definition.tag.end.cfml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n        \"2\": { \"name\": \"entity.name.tag.cf.mail.cfml\" },\n        \"0\": { \"name\": \"meta.tag.block.cf.mail.cfml\" }\n      }\n    },\n    \"cfcomments\": {\n      \"patterns\": [\n        { \"match\": \"<!---.*?--->\", \"name\": \"comment.line.cfml\" },\n        {\n          \"begin\": \"<!---\",\n          \"end\": \"--->\",\n          \"patterns\": [{ \"include\": \"#cfcomments\" }],\n          \"name\": \"comment.block.cfml\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.cfml\" } }\n        }\n      ]\n    },\n    \"flow-control\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(</?)\\n\\t\\t\\t\\t\\t\\t(?i:\\n\\t\\t\\t\\t\\t\\t\\t(cfloop)|(cfswitch)|(cf(?:default)?case)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" }\n          },\n          \"end\": \"(>)\",\n          \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n          \"name\": \"meta.tag.block.cf.flow-control.cfml\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.tag.cf.flow-control.switch.cfml\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n            \"4\": { \"name\": \"entity.name.tag.cf.flow-control.case.cfml\" },\n            \"2\": { \"name\": \"entity.name.tag.cf.flow-control.loop.cfml\" }\n          }\n        }\n      ]\n    },\n    \"tag-generic-attribute\": {\n      \"match\": \"\\\\b([a-zA-Z\\\\-:]+)\",\n      \"name\": \"entity.other.attribute-name.cfml\"\n    },\n    \"conditionals\": {\n      \"patterns\": [\n        {\n          \"end\": \"(>)\",\n          \"begin\": \"(</?)((?i:cfif))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n            \"2\": { \"name\": \"entity.name.tag.cf.conditional.cfml\" }\n          },\n          \"contentName\": \"source.cfscript.embedded.cfml\",\n          \"patterns\": [{ \"include\": \"source.cfscript\" }],\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" }\n          },\n          \"name\": \"meta.tag.block.cf.conditional.cfml\"\n        },\n        {\n          \"end\": \"(>)\",\n          \"begin\": \"(</?)(?i:(cfelseif|cfelse))\",\n          \"contentName\": \"source.cfscript.embedded.cfml\",\n          \"patterns\": [{ \"include\": \"source.cfscript\" }],\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n            \"2\": { \"name\": \"entity.name.tag.cf.conditional.cfml\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" }\n          },\n          \"name\": \"meta.tag.inline.cf.conditional.cfml\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.cfml\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [{ \"include\": \"#nest-hash\" }, { \"include\": \"#entities\" }],\n      \"name\": \"string.quoted.single.cfml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.cfml\" }\n      }\n    },\n    \"qry-name-attribute\": {\n      \"begin\": \"\\\\b(name)\\\\b\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")\",\n      \"patterns\": [\n        {\n          \"end\": \"\\\"\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cfml\" }\n          },\n          \"contentName\": \"meta.toc-list.query.cfml\",\n          \"patterns\": [{ \"include\": \"#entities\" }],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cfml\" }\n          },\n          \"name\": \"string.quoted.double.cfml\"\n        },\n        {\n          \"end\": \"'\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cfml\" }\n          },\n          \"contentName\": \"meta.toc-list.query.name.cfml\",\n          \"patterns\": [{ \"include\": \"#entities\" }],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cfml\" }\n          },\n          \"name\": \"string.quoted.single.cfml\"\n        }\n      ],\n      \"name\": \"meta.attribute-with-value.name.cfml\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.other.attribute-name.cfml\" },\n        \"2\": { \"name\": \"punctuation.separator.key-value.cfml\" }\n      }\n    },\n    \"cfoutput\": {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:cfoutput))\\\\b(?![^>]*/>)\",\n      \"end\": \"(</)((?i:cfoutput))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=cfoutput)\\\\s\",\n          \"end\": \"(?=>)\",\n          \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n          \"name\": \"meta.tag.block.cf.output.cfml\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:cfoutput))\",\n          \"patterns\": [\n            { \"include\": \"#nest-hash\" },\n            { \"include\": \"text.html.cfm\" }\n          ],\n          \"contentName\": \"meta.scope.between-output-tags.cfml\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"meta.tag.block.cf.output.cfml\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" }\n          }\n        }\n      ],\n      \"captures\": {\n        \"3\": { \"name\": \"punctuation.definition.tag.end.cfml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n        \"2\": { \"name\": \"entity.name.tag.cf.output.cfml\" },\n        \"0\": { \"name\": \"meta.tag.block.cf.output.cfml\" }\n      }\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.cfml\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.entity.cfml\" },\n            \"3\": { \"name\": \"punctuation.definition.entity.cfml\" }\n          }\n        },\n        { \"match\": \"&\", \"name\": \"invalid.illegal.bad-ampersand.cfml\" }\n      ]\n    },\n    \"exception-handling\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(</?)\\n\\t\\t\\t\\t\\t\\t(?i:\\n\\t\\t\\t\\t\\t\\t\\t(cftry)|(cfcatch)|(cflock)|(cffinally|cferror|cfrethrow|cfthrow)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.cfml\" }\n          },\n          \"end\": \"(>)\",\n          \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n          \"name\": \"meta.tag.block.cf.exceptions.cfml\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.tag.cf.exception.catch.cfml\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.cfml\" },\n            \"4\": { \"name\": \"entity.name.tag.cf.lock.cfml\" },\n            \"2\": { \"name\": \"entity.name.tag.cf.exception.try.cfml\" },\n            \"5\": { \"name\": \"entity.name.tag.cf.exception.other.cfml\" }\n          }\n        }\n      ]\n    }\n  },\n  \"name\": \"CFML (do not use)\",\n  \"uuid\": \"C48DE6D0-4226-11E1-B86C-0800200C9A66\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/cpp-embedded-latex.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This code was auto generated by a much-more-readable ruby file\",\n    \"This file essentially an updated/improved fork of the atom syntax\",\n    \"see https://github.com/jeff-hykin/cpp-textmate-grammar/blob/master\"\n  ],\n  \"version\": \"\",\n  \"name\": \"C++\",\n  \"scopeName\": \"source.cpp.embedded.latex\",\n  \"fileTypes\": [\"cc\", \"cpp\", \"cp\", \"cxx\", \"c++\", \"C\", \"h\", \"hh\", \"hpp\", \"h++\"],\n  \"patterns\": [\n    { \"include\": \"#ever_present_context\" },\n    { \"include\": \"#constructor_root\" },\n    { \"include\": \"#destructor_root\" },\n    { \"include\": \"#function_definition\" },\n    { \"include\": \"#operator_overload\" },\n    { \"include\": \"#using_namespace\" },\n    { \"include\": \"#type_alias\" },\n    { \"include\": \"#using_name\" },\n    { \"include\": \"#namespace_alias\" },\n    { \"include\": \"#namespace_block\" },\n    { \"include\": \"#extern_block\" },\n    { \"include\": \"#typedef_class\" },\n    { \"include\": \"#typedef_struct\" },\n    { \"include\": \"#typedef_union\" },\n    { \"include\": \"#misc_keywords\" },\n    { \"include\": \"#standard_declares\" },\n    { \"include\": \"#class_block\" },\n    { \"include\": \"#struct_block\" },\n    { \"include\": \"#union_block\" },\n    { \"include\": \"#enum_block\" },\n    { \"include\": \"#template_isolated_definition\" },\n    { \"include\": \"#template_definition\" },\n    { \"include\": \"#access_control_keywords\" },\n    { \"include\": \"#block\" },\n    { \"include\": \"#static_assert\" },\n    { \"include\": \"#assembly\" },\n    { \"include\": \"#function_pointer\" },\n    { \"include\": \"#evaluation_context\" }\n  ],\n  \"repository\": {\n    \"access_control_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(((?:(?:protected)|(?:private)|(?:public)))(?:(?:\\\\s)+)?(:))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"storage.type.modifier.access.control.$4.cpp\" },\n        \"4\": {},\n        \"5\": { \"name\": \"punctuation.separator.colon.access.control.cpp\" }\n      }\n    },\n    \"alignas_attribute\": {\n      \"begin\": \"alignas\\\\(\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.attribute.begin.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.attribute.end.cpp\" }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        { \"include\": \"#attributes_context\" },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#string_context\" }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.other.using.directive.cpp\" },\n            \"2\": { \"name\": \"entity.name.namespace.cpp\" }\n          }\n        },\n        { \"match\": \",\", \"name\": \"punctuation.separator.attribute.cpp\" },\n        { \"match\": \":\", \"name\": \"punctuation.accessor.attribute.cpp\" },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        { \"include\": \"#number_literal\" }\n      ]\n    },\n    \"alignas_operator\": {\n      \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignas\",\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"alignof_operator\": {\n      \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignof\",\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"assembly\": {\n      \"begin\": \"(\\\\b(?:__asm__|asm)\\\\b)(?:(?:\\\\s)+)?((?:volatile)?)\",\n      \"end\": \"(?!\\\\G)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.type.asm.cpp\" },\n        \"2\": { \"name\": \"storage.modifier.cpp\" }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.asm.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\n)|$)\",\n          \"captures\": {\n            \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": { \"name\": \"comment.block.cpp\" },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            }\n          }\n        },\n        { \"include\": \"#comments\" },\n        {\n          \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\(\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.cpp\"\n            },\n            \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": { \"name\": \"comment.block.cpp\" },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.assembly.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(R?)(\\\")\",\n              \"end\": \"\\\"|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"meta.encoding.cpp\" },\n                \"2\": {\n                  \"name\": \"punctuation.definition.string.begin.assembly.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.assembly.cpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.cpp\",\n              \"contentName\": \"meta.embedded.assembly\",\n              \"patterns\": [\n                { \"include\": \"source.asm\" },\n                { \"include\": \"source.x86\" },\n                { \"include\": \"source.x86_64\" },\n                { \"include\": \"source.arm\" },\n                { \"include\": \"#backslash_escapes\" },\n                { \"include\": \"#string_escaped_char\" }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n            },\n            {\n              \"match\": \"\\\\[((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"5\": { \"name\": \"variable.other.asm.label.cpp\" },\n                \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"7\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"8\": { \"name\": \"comment.block.cpp\" },\n                \"9\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.delimiter.colon.assembly.cpp\"\n            },\n            { \"include\": \"#comments\" }\n          ]\n        }\n      ]\n    },\n    \"assignment_operator\": {\n      \"match\": \"\\\\=\",\n      \"name\": \"keyword.operator.assignment.cpp\"\n    },\n    \"attributes_context\": {\n      \"patterns\": [\n        { \"include\": \"#cpp_attributes\" },\n        { \"include\": \"#gcc_attributes\" },\n        { \"include\": \"#ms_attributes\" },\n        { \"include\": \"#alignas_attribute\" }\n      ]\n    },\n    \"backslash_escapes\": {\n      \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3][0-7]{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n      \"name\": \"constant.character.escape\"\n    },\n    \"block\": {\n      \"begin\": \"{\",\n      \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.block.begin.bracket.curly.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.block.end.bracket.curly.cpp\" }\n      },\n      \"name\": \"meta.block.cpp\",\n      \"patterns\": [{ \"include\": \"#function_body_context\" }]\n    },\n    \"block_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\*)\",\n      \"end\": \"\\\\*\\\\/|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.begin.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.comment.end.cpp\" }\n      },\n      \"name\": \"comment.block.cpp\"\n    },\n    \"builtin_storage_type_initilizer\": {\n      \"begin\": \"(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:double)|(?:signed)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:long)|(?:char)|(?:bool)|(?:int)))|((?:(?:uint_least32_t)|(?:uint_least64_t)|(?:uint_least16_t)|(?:uint_fast64_t)|(?:uint_least8_t)|(?:int_least64_t)|(?:int_least32_t)|(?:int_least16_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:int_fast8_t)|(?:suseconds_t)|(?:useconds_t)|(?:uintmax_t)|(?:uintmax_t)|(?:in_port_t)|(?:uintmax_t)|(?:in_addr_t)|(?:blksize_t)|(?:uintptr_t)|(?:intmax_t)|(?:intptr_t)|(?:blkcnt_t)|(?:intmax_t)|(?:u_quad_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:ssize_t)|(?:fixpt_t)|(?:qaddr_t)|(?:u_short)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:daddr_t)|(?:caddr_t)|(?:swblk_t)|(?:clock_t)|(?:segsz_t)|(?:nlink_t)|(?:time_t)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:u_char)|(?:int8_t)|(?:u_int)|(?:uid_t)|(?:off_t)|(?:pid_t)|(?:gid_t)|(?:dev_t)|(?:div_t)|(?:key_t)|(?:ino_t)|(?:id_t)|(?:id_t)|(?:uint))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_cond_t)|(?:pthread_attr_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)(?:\\\\s)*+(?<!\\\\w)(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n        },\n        \"2\": { \"name\": \"storage.type.cpp storage.type.built-in.cpp\" },\n        \"3\": {\n          \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n        },\n        \"4\": {\n          \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.initializer.cpp\"\n        }\n      },\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"case_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)case(?!\\\\w))\",\n      \"end\": \":|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"keyword.control.case.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.separator.colon.case.cpp\" }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        { \"include\": \"#evaluation_context\" },\n        { \"include\": \"#c_conditional_context\" }\n      ]\n    },\n    \"class_block\": {\n      \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.head.class.cpp\" },\n        \"1\": { \"name\": \"storage.type.$1.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": { \"name\": \"comment.block.cpp\" },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": { \"name\": \"entity.name.type.class.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"6\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": { \"name\": \"comment.block.cpp\" },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": { \"name\": \"comment.block.cpp\" },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": { \"name\": \"comment.block.cpp\" },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"20\": { \"name\": \"punctuation.separator.colon.inheritance.cpp\" }\n      },\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.terminator.statement.cpp\" },\n        \"2\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n      },\n      \"name\": \"meta.block.class.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.head.class.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            { \"include\": \"#inheritance_context\" },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.body.class.cpp\",\n          \"patterns\": [\n            { \"include\": \"#function_pointer\" },\n            { \"include\": \"#static_assert\" },\n            { \"include\": \"#constructor_inline\" },\n            { \"include\": \"#destructor_inline\" },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.class.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"class_declare\": {\n      \"match\": \"((?<!\\\\w)class(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.class.declare.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.type.class.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": { \"name\": \"variable.other.object.declare.cpp\" },\n        \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"comma\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n    },\n    \"comma_in_template_argument\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.comma.template.argument.cpp\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(?:(?:\\\\s)+)?+(\\\\/\\\\/[!\\\\/]+)\",\n          \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.documentation.cpp\" }\n          },\n          \"endCaptures\": {},\n          \"name\": \"comment.line.double-slash.documentation.cpp\",\n          \"patterns\": [\n            { \"include\": \"#line_continuation_character\" },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                \"2\": { \"name\": \"markup.italic.doxygen.cpp\" }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                \"2\": { \"name\": \"markup.bold.doxygen.cpp\" }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                \"2\": { \"name\": \"markup.inline.raw.string.cpp\" }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": { \"name\": \"variable.parameter.cpp\" }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\/\\\\*[!*]+(?=\\\\s))(.+)([!*]*\\\\*\\\\/)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                    \"2\": { \"name\": \"markup.italic.doxygen.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                    \"2\": { \"name\": \"markup.bold.doxygen.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                    \"2\": { \"name\": \"markup.inline.raw.string.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"in|out\",\n                          \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": { \"name\": \"variable.parameter.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                  \"name\": \"storage.type.class.gtkdoc.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\"\n        },\n        {\n          \"begin\": \"(?:(?:\\\\s)+)?+\\\\/\\\\*[!*]+(?:(?:(?:\\\\n)|$)|(?=\\\\s))\",\n          \"end\": \"[!*]*\\\\*\\\\/|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                \"2\": { \"name\": \"markup.italic.doxygen.cpp\" }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                \"2\": { \"name\": \"markup.bold.doxygen.cpp\" }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                \"2\": { \"name\": \"markup.inline.raw.string.cpp\" }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.class.doxygen.cpp\" },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": { \"name\": \"variable.parameter.cpp\" }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        { \"include\": \"#emacs_file_banner\" },\n        { \"include\": \"#block_comment\" },\n        { \"include\": \"#line_comment\" },\n        { \"include\": \"#invalid_comment_end\" }\n      ]\n    },\n    \"constructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [{ \"include\": \"#functional_specifiers_pre_parameters\" }]\n        },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": { \"name\": \"comment.block.cpp\" },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": { \"name\": \"comment.block.cpp\" },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"14\": { \"name\": \"storage.type.modifier.calling-convention.cpp\" },\n        \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": { \"name\": \"comment.block.cpp\" },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.constructor.cpp entity.name.function.definition.special.constructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": { \"name\": \"keyword.operator.assignment.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"6\": { \"name\": \"keyword.other.default.constructor.cpp\" },\n                \"7\": { \"name\": \"keyword.other.delete.constructor.cpp\" }\n              }\n            },\n            { \"include\": \"#functional_specifiers_pre_parameters\" },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": { \"name\": \"punctuation.separator.initializers.cpp\" }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [{ \"include\": \"#template_call_range\" }]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                { \"include\": \"#comments\" }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                { \"include\": \"#function_parameter_context\" },\n                { \"include\": \"#evaluation_context\" }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": { \"1\": { \"name\": \"keyword.operator.$1.cpp\" } }\n            },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [{ \"include\": \"#function_body_context\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"constructor_root\": {\n      \"begin\": \"\\\\s*+((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"storage.type.modifier.calling-convention.cpp\" },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": { \"name\": \"comment.block.cpp\" },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.constructor.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"11\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.constructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": { \"name\": \"comment.block.cpp\" },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": { \"name\": \"comment.block.cpp\" },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"23\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": { \"name\": \"comment.block.cpp\" },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": { \"name\": \"keyword.operator.assignment.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"6\": { \"name\": \"keyword.other.default.constructor.cpp\" },\n                \"7\": { \"name\": \"keyword.other.delete.constructor.cpp\" }\n              }\n            },\n            { \"include\": \"#functional_specifiers_pre_parameters\" },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": { \"name\": \"punctuation.separator.initializers.cpp\" }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [{ \"include\": \"#template_call_range\" }]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                { \"include\": \"#comments\" }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                { \"include\": \"#function_parameter_context\" },\n                { \"include\": \"#evaluation_context\" }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": { \"1\": { \"name\": \"keyword.operator.$1.cpp\" } }\n            },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [{ \"include\": \"#function_body_context\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"control_flow_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:co_return)|(?:co_yield)|(?:co_await)|(?:continue)|(?:default)|(?:switch)|(?:return)|(?:catch)|(?:while)|(?:throw)|(?:break)|(?:case)|(?:goto)|(?:else)|(?:for)|(?:try)|(?:if)|(?:do))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"keyword.control.$3.cpp\" }\n      }\n    },\n    \"cpp_attributes\": {\n      \"begin\": \"\\\\[\\\\[\",\n      \"end\": \"\\\\]\\\\]|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.attribute.begin.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.attribute.end.cpp\" }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        { \"include\": \"#attributes_context\" },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#string_context\" }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.other.using.directive.cpp\" },\n            \"2\": { \"name\": \"entity.name.namespace.cpp\" }\n          }\n        },\n        { \"match\": \",\", \"name\": \"punctuation.separator.attribute.cpp\" },\n        { \"match\": \":\", \"name\": \"punctuation.accessor.attribute.cpp\" },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        { \"include\": \"#number_literal\" }\n      ]\n    },\n    \"curly_initializer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\{)\",\n      \"end\": \"\\\\}|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": { \"name\": \"comment.block.cpp\" },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": { \"name\": \"comment.block.cpp\" },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"13\": {},\n        \"14\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": { \"name\": \"comment.block.cpp\" },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"18\": {},\n        \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": { \"name\": \"comment.block.cpp\" },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"23\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"name\": \"meta.initialization.cpp\",\n      \"patterns\": [\n        { \"include\": \"#evaluation_context\" },\n        { \"include\": \"#comma\" }\n      ]\n    },\n    \"d9bc4796b0b_module_import\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((import))(?:(?:\\\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/)))|((\\\\\\\")[^\\\\\\\"]*((?:\\\\\\\")?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/))))|(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\.(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;)))))|((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;))))(?:(?:\\\\s)+)?(;?)\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"keyword.control.directive.import.cpp\" },\n        \"5\": { \"name\": \"string.quoted.other.lt-gt.include.cpp\" },\n        \"6\": { \"name\": \"punctuation.definition.string.begin.cpp\" },\n        \"7\": { \"name\": \"punctuation.definition.string.end.cpp\" },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"name\": \"string.quoted.double.include.cpp\" },\n        \"11\": { \"name\": \"punctuation.definition.string.begin.cpp\" },\n        \"12\": { \"name\": \"punctuation.definition.string.end.cpp\" },\n        \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"15\": { \"name\": \"entity.name.other.preprocessor.macro.include.cpp\" },\n        \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"18\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"20\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"21\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"22\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n      },\n      \"name\": \"meta.preprocessor.import.cpp\"\n    },\n    \"d9bc4796b0b_preprocessor_number_literal\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"keyword.other.unit.hexadecimal.cpp\" },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": { \"name\": \"constant.numeric.hexadecimal.cpp\" },\n                    \"5\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"10\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": { \"name\": \"constant.numeric.decimal.point.cpp\" },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"6\": { \"name\": \"keyword.other.unit.exponent.decimal.cpp\" },\n                    \"7\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"keyword.other.unit.binary.cpp\" },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": { \"name\": \"keyword.other.unit.suffix.integer.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"keyword.other.unit.octal.cpp\" },\n                    \"2\": {\n                      \"name\": \"constant.numeric.octal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": { \"name\": \"keyword.other.unit.suffix.integer.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"keyword.other.unit.hexadecimal.cpp\" },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"8\": { \"name\": \"keyword.other.unit.suffix.integer.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": { \"name\": \"keyword.other.unit.exponent.decimal.cpp\" },\n                    \"4\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"7\": { \"name\": \"keyword.other.unit.suffix.integer.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.cpp\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"decltype\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"decltype_specifier\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"default_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)default(?!\\\\w))\",\n      \"end\": \":|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"keyword.control.default.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.separator.colon.case.default.cpp\" }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        { \"include\": \"#evaluation_context\" },\n        { \"include\": \"#c_conditional_context\" }\n      ]\n    },\n    \"destructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(~(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": { \"name\": \"comment.block.cpp\" },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"9\": { \"name\": \"storage.type.modifier.calling-convention.cpp\" },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": { \"name\": \"comment.block.cpp\" },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [{ \"include\": \"#functional_specifiers_pre_parameters\" }]\n        },\n        \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": { \"name\": \"comment.block.cpp\" },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.destructor.cpp entity.name.function.definition.special.member.destructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": { \"name\": \"keyword.operator.assignment.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"6\": { \"name\": \"keyword.other.default.constructor.cpp\" },\n                \"7\": { \"name\": \"keyword.other.delete.constructor.cpp\" }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [{ \"include\": \"#function_body_context\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"destructor_root\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))~\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"storage.type.modifier.calling-convention.cpp\" },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": { \"name\": \"comment.block.cpp\" },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.destructor.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"11\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)~(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.member.destructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": { \"name\": \"comment.block.cpp\" },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": { \"name\": \"comment.block.cpp\" },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"23\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": { \"name\": \"comment.block.cpp\" },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": { \"name\": \"keyword.operator.assignment.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"6\": { \"name\": \"keyword.other.default.constructor.cpp\" },\n                \"7\": { \"name\": \"keyword.other.delete.constructor.cpp\" }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [{ \"include\": \"#function_body_context\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"diagnostic\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:error|warning)))\\\\b(?:(?:\\\\s)+)?\",\n      \"end\": \"(?<!\\\\\\\\)(?=\\\\n)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.directive.diagnostic.$7.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": { \"name\": \"punctuation.definition.directive.cpp\" },\n        \"7\": {}\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.diagnostic.$reference(directive).cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"(?:(\\\")|(?<!\\\\\\\\)(?=\\\\n))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cpp\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.end.cpp\" }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [{ \"include\": \"#line_continuation_character\" }]\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"(?:(')|(?<!\\\\\\\\)(?=\\\\n))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cpp\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.end.cpp\" }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [{ \"include\": \"#line_continuation_character\" }]\n        },\n        {\n          \"begin\": \"[^'\\\"]\",\n          \"end\": \"(?<!\\\\\\\\)(?=\\\\n)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"string.unquoted.cpp\",\n          \"patterns\": [\n            { \"include\": \"#line_continuation_character\" },\n            { \"include\": \"#comments\" }\n          ]\n        }\n      ]\n    },\n    \"emacs_file_banner\": {\n      \"match\": \"(?:(^(?:(?:\\\\s)+)?((\\\\/\\\\/)(?:(?:\\\\s)+)?((?:[#;\\\\/=*C~]+)++(?![#;\\\\/=*C~]))(?:(?:\\\\s)+)?.+(?:(?:\\\\s)+)?\\\\4(?:(?:\\\\s)+)?(?:\\\\n|$)))|(^(?:(?:\\\\s)+)?((\\\\/\\\\*)(?:(?:\\\\s)+)?((?:[#;\\\\/=*C~]+)++(?![#;\\\\/=*C~]))(?:(?:\\\\s)+)?.+(?:(?:\\\\s)+)?\\\\8(?:(?:\\\\s)+)?\\\\*\\\\/)))\",\n      \"captures\": {\n        \"1\": { \"name\": \"meta.toc-list.banner.double-slash.cpp\" },\n        \"2\": { \"name\": \"comment.line.double-slash.cpp\" },\n        \"3\": { \"name\": \"punctuation.definition.comment.cpp\" },\n        \"4\": { \"name\": \"meta.banner.character.cpp\" },\n        \"5\": { \"name\": \"meta.toc-list.banner.block.cpp\" },\n        \"6\": { \"name\": \"comment.line.banner.cpp\" },\n        \"7\": { \"name\": \"punctuation.definition.comment.cpp\" },\n        \"8\": { \"name\": \"meta.banner.character.cpp\" }\n      }\n    },\n    \"empty_square_brackets\": {\n      \"name\": \"storage.modifier.array.bracket.square\",\n      \"match\": \"(?<!delete)\\\\[(?:(?:\\\\s)+)?\\\\]\"\n    },\n    \"enum_block\": {\n      \"begin\": \"((?<!\\\\w)enum(?!\\\\w))(?:(?:\\\\s)+(class|struct))?(?:(?:(?:\\\\s)+|((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\))))|(?={))(?:(?:\\\\s)+)?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)(?:(?:(?:\\\\s)+)?(:)(?:(?:\\\\s)+)?(?:((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?(::))?(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))?\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.head.enum.cpp\" },\n        \"1\": { \"name\": \"storage.type.enum.cpp\" },\n        \"2\": { \"name\": \"storage.type.enum.enum-key.$2.cpp\" },\n        \"3\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.type.enum.cpp\" },\n        \"5\": { \"name\": \"punctuation.separator.colon.type-specifier.cpp\" },\n        \"6\": {\n          \"patterns\": [{ \"include\": \"#scope_resolution_inner_generated\" }]\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"9\": {},\n        \"10\": { \"name\": \"entity.name.scope-resolution.cpp\" },\n        \"11\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"12\": {},\n        \"13\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"14\": { \"name\": \"storage.type.integral.$14.cpp\" }\n      },\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.terminator.statement.cpp\" },\n        \"2\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n      },\n      \"name\": \"meta.block.enum.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.head.enum.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.body.enum.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            { \"include\": \"#enumerator_list\" },\n            { \"include\": \"#comments\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#semicolon\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.enum.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"enum_declare\": {\n      \"match\": \"((?<!\\\\w)enum(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.enum.declare.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.type.enum.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": { \"name\": \"variable.other.object.declare.cpp\" },\n        \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"enumerator_list\": {\n      \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?(?:(?:\\\\s)+)?(?:(\\\\=)(?:(?:\\\\s)+)?(.+?)(?:(?:\\\\s)+)?)?(?:(?:((?:[,;](?!')|\\\\n))|(?=\\\\}[^']))|(?=(?:\\\\/\\\\/|\\\\/\\\\*)))\",\n      \"captures\": {\n        \"1\": { \"name\": \"variable.other.enummember.cpp\" },\n        \"2\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"3\": { \"name\": \"keyword.operator.assignment.cpp\" },\n        \"4\": { \"patterns\": [{ \"include\": \"#evaluation_context\" }] },\n        \"5\": {\n          \"patterns\": [{ \"include\": \"#comma\" }, { \"include\": \"#semicolon\" }]\n        }\n      },\n      \"name\": \"meta.enum.definition.cpp\"\n    },\n    \"evaluation_context\": {\n      \"patterns\": [\n        { \"include\": \"#ever_present_context\" },\n        { \"include\": \"#string_context\" },\n        { \"include\": \"#number_literal\" },\n        { \"include\": \"#method_access\" },\n        { \"include\": \"#member_access\" },\n        { \"include\": \"#predefined_macros\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#memory_operators\" },\n        { \"include\": \"#wordlike_operators\" },\n        { \"include\": \"#type_casting_operators\" },\n        { \"include\": \"#control_flow_keywords\" },\n        { \"include\": \"#exception_keywords\" },\n        { \"include\": \"#the_this_keyword\" },\n        { \"include\": \"#language_constants\" },\n        { \"include\": \"#builtin_storage_type_initilizer\" },\n        { \"include\": \"#qualifiers_and_specifiers_post_parameters\" },\n        { \"include\": \"#functional_specifiers_pre_parameters\" },\n        { \"include\": \"#storage_types\" },\n        { \"include\": \"#lambdas\" },\n        { \"include\": \"#attributes_context\" },\n        { \"include\": \"#parentheses\" },\n        { \"include\": \"#function_call\" },\n        { \"include\": \"#scope_resolution_inner_generated\" },\n        { \"include\": \"#square_brackets\" },\n        { \"include\": \"#semicolon\" },\n        { \"include\": \"#comma\" }\n      ]\n    },\n    \"ever_present_context\": {\n      \"patterns\": [\n        { \"include\": \"#pragma_mark\" },\n        { \"include\": \"#pragma\" },\n        { \"include\": \"#include\" },\n        { \"include\": \"#line\" },\n        { \"include\": \"#diagnostic\" },\n        { \"include\": \"#undef\" },\n        { \"include\": \"#preprocessor_conditional_range\" },\n        { \"include\": \"#single_line_macro\" },\n        { \"include\": \"#macro\" },\n        { \"include\": \"#preprocessor_conditional_standalone\" },\n        { \"include\": \"#macro_argument\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#line_continuation_character\" }\n      ]\n    },\n    \"exception_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:throw)|(?:catch)|(?:try))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"keyword.control.exception.$3.cpp\" }\n      }\n    },\n    \"extern_block\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(extern)(?=\\\\s*\\\\\\\")\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.head.extern.cpp\" },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"storage.type.extern.cpp\" }\n      },\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.terminator.statement.cpp\" },\n        \"2\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n      },\n      \"name\": \"meta.block.extern.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.head.extern.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.body.extern.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.extern.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        },\n        { \"include\": \"$self\" }\n      ]\n    },\n    \"function_body_context\": {\n      \"patterns\": [\n        { \"include\": \"#ever_present_context\" },\n        { \"include\": \"#using_namespace\" },\n        { \"include\": \"#type_alias\" },\n        { \"include\": \"#using_name\" },\n        { \"include\": \"#namespace_alias\" },\n        { \"include\": \"#typedef_class\" },\n        { \"include\": \"#typedef_struct\" },\n        { \"include\": \"#typedef_union\" },\n        { \"include\": \"#misc_keywords\" },\n        { \"include\": \"#standard_declares\" },\n        { \"include\": \"#class_block\" },\n        { \"include\": \"#struct_block\" },\n        { \"include\": \"#union_block\" },\n        { \"include\": \"#enum_block\" },\n        { \"include\": \"#access_control_keywords\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#static_assert\" },\n        { \"include\": \"#assembly\" },\n        { \"include\": \"#function_pointer\" },\n        { \"include\": \"#switch_statement\" },\n        { \"include\": \"#goto_statement\" },\n        { \"include\": \"#evaluation_context\" },\n        { \"include\": \"#label\" }\n      ]\n    },\n    \"function_call\": {\n      \"begin\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wint_least16_t|^int_least16_t|\\\\Watomic_commit|^atomic_commit|\\\\Watomic_cancel|^atomic_cancel|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wthread_local|^thread_local|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wsynchronized|^synchronized|\\\\Wint_least8_t|^int_least8_t|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wstatic_cast|^static_cast|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wnamespace|^namespace|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wco_return|^co_return|\\\\Wco_await|^co_await|\\\\Wnoexcept|^noexcept|\\\\Wrestrict|^restrict|\\\\Wnoexcept|^noexcept|\\\\Wdecltype|^decltype|\\\\Wintmax_t|^intmax_t|\\\\Wuint64_t|^uint64_t|\\\\Wintmax_t|^intmax_t|\\\\Wcontinue|^continue|\\\\Wreflexpr|^reflexpr|\\\\Wintptr_t|^intptr_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint16_t|^uint16_t|\\\\Wexplicit|^explicit|\\\\Wtypename|^typename|\\\\Wu_quad_t|^u_quad_t|\\\\Wvolatile|^volatile|\\\\Wtemplate|^template|\\\\Wnoexcept|^noexcept|\\\\Wco_yield|^co_yield|\\\\Wco_await|^co_await|\\\\Wvolatile|^volatile|\\\\Woperator|^operator|\\\\Wunsigned|^unsigned|\\\\Wregister|^register|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wrequires|^requires|\\\\Wco_yield|^co_yield|\\\\Wnullptr|^nullptr|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wconcept|^concept|\\\\Wnlink_t|^nlink_t|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\W__asm__|^__asm__|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wu_short|^u_short|\\\\Walignas|^alignas|\\\\Walignof|^alignof|\\\\Wtypedef|^typedef|\\\\Wprivate|^private|\\\\Wu_char|^u_char|\\\\Wmode_t|^mode_t|\\\\Wstatic|^static|\\\\Wdouble|^double|\\\\Wnot_eq|^not_eq|\\\\Wtypeid|^typeid|\\\\Wmodule|^module|\\\\Wstruct|^struct|\\\\Wexport|^export|\\\\Wxor_eq|^xor_eq|\\\\Wand_eq|^and_eq|\\\\Wu_long|^u_long|\\\\Wquad_t|^quad_t|\\\\Wsigned|^signed|\\\\Wushort|^ushort|\\\\Wimport|^import|\\\\Wbitand|^bitand|\\\\Wfriend|^friend|\\\\Wtime_t|^time_t|\\\\Wdelete|^delete|\\\\Wsize_t|^size_t|\\\\Wint8_t|^int8_t|\\\\Winline|^inline|\\\\Wextern|^extern|\\\\Wpublic|^public|\\\\Wsizeof|^sizeof|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wconst|^const|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wwhile|^while|\\\\Wor_eq|^or_eq|\\\\Wthrow|^throw|\\\\Wbitor|^bitor|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wcompl|^compl|\\\\Wusing|^using|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wtrue|^true|\\\\Wid_t|^id_t|\\\\Wchar|^char|\\\\Wid_t|^id_t|\\\\Wauto|^auto|\\\\Wcase|^case|\\\\Wuint|^uint|\\\\Wbool|^bool|\\\\Wlong|^long|\\\\Wvoid|^void|\\\\Wenum|^enum|\\\\WNULL|^NULL|\\\\Wthis|^this|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wnew|^new|\\\\Wtry|^try|\\\\Wxor|^xor|\\\\Wnot|^not|\\\\Wint|^int|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wasm|^asm|\\\\Wdo|^do|\\\\Wor|^or|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_function_call_inner_generated\" }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.function.call.cpp\" },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": { \"name\": \"comment.block.cpp\" },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"10\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"11\": {},\n        \"12\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.cpp\"\n        }\n      },\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"function_definition\": {\n      \"begin\": \"(?:(?:^|\\\\G|(?<=;|\\\\}))|(?<=>))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)template(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?<!\\\\w)(?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wint_least16_t|^int_least16_t|\\\\Watomic_commit|^atomic_commit|\\\\Watomic_cancel|^atomic_cancel|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wthread_local|^thread_local|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wsynchronized|^synchronized|\\\\Wint_least8_t|^int_least8_t|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wstatic_cast|^static_cast|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wnamespace|^namespace|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wco_return|^co_return|\\\\Wco_await|^co_await|\\\\Wnoexcept|^noexcept|\\\\Wrestrict|^restrict|\\\\Wnoexcept|^noexcept|\\\\Wdecltype|^decltype|\\\\Wintmax_t|^intmax_t|\\\\Wuint64_t|^uint64_t|\\\\Wintmax_t|^intmax_t|\\\\Wcontinue|^continue|\\\\Wreflexpr|^reflexpr|\\\\Wintptr_t|^intptr_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint16_t|^uint16_t|\\\\Wexplicit|^explicit|\\\\Wtypename|^typename|\\\\Wu_quad_t|^u_quad_t|\\\\Wvolatile|^volatile|\\\\Wtemplate|^template|\\\\Wnoexcept|^noexcept|\\\\Wco_yield|^co_yield|\\\\Wco_await|^co_await|\\\\Wvolatile|^volatile|\\\\Woperator|^operator|\\\\Wunsigned|^unsigned|\\\\Wregister|^register|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wrequires|^requires|\\\\Wco_yield|^co_yield|\\\\Wnullptr|^nullptr|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wconcept|^concept|\\\\Wnlink_t|^nlink_t|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\W__asm__|^__asm__|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wu_short|^u_short|\\\\Walignas|^alignas|\\\\Walignof|^alignof|\\\\Wtypedef|^typedef|\\\\Wprivate|^private|\\\\Wu_char|^u_char|\\\\Wmode_t|^mode_t|\\\\Wstatic|^static|\\\\Wdouble|^double|\\\\Wnot_eq|^not_eq|\\\\Wtypeid|^typeid|\\\\Wmodule|^module|\\\\Wstruct|^struct|\\\\Wexport|^export|\\\\Wxor_eq|^xor_eq|\\\\Wand_eq|^and_eq|\\\\Wu_long|^u_long|\\\\Wquad_t|^quad_t|\\\\Wsigned|^signed|\\\\Wushort|^ushort|\\\\Wimport|^import|\\\\Wbitand|^bitand|\\\\Wfriend|^friend|\\\\Wtime_t|^time_t|\\\\Wdelete|^delete|\\\\Wsize_t|^size_t|\\\\Wint8_t|^int8_t|\\\\Winline|^inline|\\\\Wextern|^extern|\\\\Wpublic|^public|\\\\Wsizeof|^sizeof|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wconst|^const|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wwhile|^while|\\\\Wor_eq|^or_eq|\\\\Wthrow|^throw|\\\\Wbitor|^bitor|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wcompl|^compl|\\\\Wusing|^using|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wtrue|^true|\\\\Wid_t|^id_t|\\\\Wchar|^char|\\\\Wid_t|^id_t|\\\\Wauto|^auto|\\\\Wcase|^case|\\\\Wuint|^uint|\\\\Wbool|^bool|\\\\Wlong|^long|\\\\Wvoid|^void|\\\\Wenum|^enum|\\\\WNULL|^NULL|\\\\Wthis|^this|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wnew|^new|\\\\Wtry|^try|\\\\Wxor|^xor|\\\\Wnot|^not|\\\\Wint|^int|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wasm|^asm|\\\\Wdo|^do|\\\\Wor|^or|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.head.function.definition.cpp\" },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"storage.type.template.cpp\" },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": { \"name\": \"comment.block.cpp\" },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)(?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.modifier.$1.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": { \"name\": \"storage.modifier.$12.cpp\" },\n        \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"14\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"15\": { \"name\": \"comment.block.cpp\" },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"17\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": { \"name\": \"comment.block.cpp\" },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"23\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": { \"name\": \"comment.block.cpp\" },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"28\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"29\": {},\n        \"30\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"31\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"32\": { \"name\": \"comment.block.cpp\" },\n        \"33\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"34\": {},\n        \"35\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"36\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"37\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"38\": { \"name\": \"comment.block.cpp\" },\n        \"39\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"40\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"41\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"42\": { \"name\": \"comment.block.cpp\" },\n        \"43\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"44\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"45\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"46\": { \"name\": \"comment.block.cpp\" },\n        \"47\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"48\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"49\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"50\": { \"name\": \"comment.block.cpp\" },\n        \"51\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"52\": { \"name\": \"storage.type.modifier.calling-convention.cpp\" },\n        \"53\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"54\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"55\": { \"name\": \"comment.block.cpp\" },\n        \"56\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"57\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"58\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"59\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"60\": {},\n        \"61\": { \"name\": \"entity.name.function.definition.cpp\" },\n        \"62\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"63\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"64\": { \"name\": \"comment.block.cpp\" },\n        \"65\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters\",\n              \"patterns\": [\n                { \"include\": \"#ever_present_context\" },\n                { \"include\": \"#parameter_or_maybe_value\" },\n                { \"include\": \"#comma\" },\n                { \"include\": \"#evaluation_context\" }\n              ]\n            },\n            {\n              \"match\": \"(?<=^|\\\\))(?:(?:\\\\s)+)?(->)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)?(?![\\\\w<:.]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.function.return-type.cpp\"\n                },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"meta.qualified_type.cpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                      \"name\": \"storage.type.$0.cpp\"\n                    },\n                    { \"include\": \"#attributes_context\" },\n                    { \"include\": \"#storage_types\" },\n                    { \"include\": \"#number_literal\" },\n                    { \"include\": \"#string_context\" },\n                    { \"include\": \"#comma\" },\n                    { \"include\": \"#scope_resolution_inner_generated\" },\n                    {\n                      \"begin\": \"<\",\n                      \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                        }\n                      },\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                        }\n                      },\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [{ \"include\": \"#template_call_context\" }]\n                    },\n                    {\n                      \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                      \"name\": \"entity.name.type.cpp\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"patterns\": [\n                    { \"include\": \"#attributes_context\" },\n                    { \"include\": \"#number_literal\" }\n                  ]\n                },\n                \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"9\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"10\": { \"name\": \"comment.block.cpp\" },\n                \"11\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"13\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"14\": { \"name\": \"comment.block.cpp\" },\n                \"15\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"16\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                      \"name\": \"entity.name.scope-resolution.type.cpp\"\n                    },\n                    { \"include\": \"#template_call_range\" }\n                  ]\n                },\n                \"17\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n                \"18\": {},\n                \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"20\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"21\": { \"name\": \"comment.block.cpp\" },\n                \"22\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"23\": {}\n              }\n            },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.cpp\",\n          \"patterns\": [{ \"include\": \"#function_body_context\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"function_parameter_context\": {\n      \"patterns\": [\n        { \"include\": \"#ever_present_context\" },\n        { \"include\": \"#string_context\" },\n        { \"include\": \"#parameter\" },\n        { \"include\": \"#comma\" }\n      ]\n    },\n    \"function_pointer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": { \"name\": \"comment.block.cpp\" },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": { \"name\": \"comment.block.cpp\" },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"13\": {},\n        \"14\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": { \"name\": \"comment.block.cpp\" },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"20\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": { \"name\": \"comment.block.cpp\" },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"24\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": { \"name\": \"comment.block.cpp\" },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"28\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": { \"name\": \"comment.block.cpp\" },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": { \"name\": \"variable.other.definition.pointer.function.cpp\" },\n        \"35\": { \"name\": \"punctuation.definition.begin.bracket.square.cpp\" },\n        \"36\": { \"patterns\": [{ \"include\": \"#evaluation_context\" }] },\n        \"37\": { \"name\": \"punctuation.definition.end.bracket.square.cpp\" },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      },\n      \"patterns\": [{ \"include\": \"#function_parameter_context\" }]\n    },\n    \"function_pointer_parameter\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": { \"name\": \"comment.block.cpp\" },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": { \"name\": \"comment.block.cpp\" },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"13\": {},\n        \"14\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": { \"name\": \"comment.block.cpp\" },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"20\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": { \"name\": \"comment.block.cpp\" },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"24\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": { \"name\": \"comment.block.cpp\" },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"28\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": { \"name\": \"comment.block.cpp\" },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": { \"name\": \"variable.parameter.pointer.function.cpp\" },\n        \"35\": { \"name\": \"punctuation.definition.begin.bracket.square.cpp\" },\n        \"36\": { \"patterns\": [{ \"include\": \"#evaluation_context\" }] },\n        \"37\": { \"name\": \"punctuation.definition.end.bracket.square.cpp\" },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      },\n      \"patterns\": [{ \"include\": \"#function_parameter_context\" }]\n    },\n    \"functional_specifiers_pre_parameters\": {\n      \"match\": \"(?<!\\\\w)(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))(?!\\\\w)\",\n      \"name\": \"storage.modifier.specifier.functional.pre-parameters.$0.cpp\"\n    },\n    \"gcc_attributes\": {\n      \"begin\": \"__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(\",\n      \"end\": \"\\\\)\\\\s*\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.attribute.begin.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.attribute.end.cpp\" }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        { \"include\": \"#attributes_context\" },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#string_context\" }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.other.using.directive.cpp\" },\n            \"2\": { \"name\": \"entity.name.namespace.cpp\" }\n          }\n        },\n        { \"match\": \",\", \"name\": \"punctuation.separator.attribute.cpp\" },\n        { \"match\": \":\", \"name\": \"punctuation.accessor.attribute.cpp\" },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        { \"include\": \"#number_literal\" }\n      ]\n    },\n    \"goto_statement\": {\n      \"match\": \"((?<!\\\\w)goto(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.goto.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.label.call.cpp\" }\n      }\n    },\n    \"identifier\": {\n      \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\"\n    },\n    \"include\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((#)(?:(?:\\\\s)+)?((?:include|include_next))\\\\b)(?:(?:\\\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/)))|((\\\\\\\")[^\\\\\\\"]*((?:\\\\\\\")?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/))))|(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\.(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;)))))|((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;))))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"keyword.control.directive.$5.cpp\" },\n        \"4\": { \"name\": \"punctuation.definition.directive.cpp\" },\n        \"6\": { \"name\": \"string.quoted.other.lt-gt.include.cpp\" },\n        \"7\": { \"name\": \"punctuation.definition.string.begin.cpp\" },\n        \"8\": { \"name\": \"punctuation.definition.string.end.cpp\" },\n        \"9\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"11\": { \"name\": \"string.quoted.double.include.cpp\" },\n        \"12\": { \"name\": \"punctuation.definition.string.begin.cpp\" },\n        \"13\": { \"name\": \"punctuation.definition.string.end.cpp\" },\n        \"14\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"16\": { \"name\": \"entity.name.other.preprocessor.macro.include.cpp\" },\n        \"17\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"21\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.preprocessor.include.cpp\"\n    },\n    \"inheritance_context\": {\n      \"patterns\": [\n        { \"include\": \"#ever_present_context\" },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.comma.inheritance.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:protected)|(?:private)|(?:public))(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.access.$0.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)virtual(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.virtual.cpp\"\n        },\n        {\n          \"match\": \"(?<=protected|virtual|private|public|,|:)(?:(?:\\\\s)+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)?(?![\\\\w<:.]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                { \"include\": \"#attributes_context\" },\n                { \"include\": \"#storage_types\" },\n                { \"include\": \"#number_literal\" },\n                { \"include\": \"#string_context\" },\n                { \"include\": \"#comma\" },\n                { \"include\": \"#scope_resolution_inner_generated\" },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [{ \"include\": \"#template_call_context\" }]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                { \"include\": \"#attributes_context\" },\n                { \"include\": \"#number_literal\" }\n              ]\n            },\n            \"3\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                { \"include\": \"#template_call_range\" }\n              ]\n            },\n            \"8\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n            \"9\": {},\n            \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {}\n          }\n        }\n      ]\n    },\n    \"inline_builtin_storage_type\": {\n      \"match\": \"(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:double)|(?:signed)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:long)|(?:char)|(?:bool)|(?:int)))|((?:(?:uint_least32_t)|(?:uint_least64_t)|(?:uint_least16_t)|(?:uint_fast64_t)|(?:uint_least8_t)|(?:int_least64_t)|(?:int_least32_t)|(?:int_least16_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:int_fast8_t)|(?:suseconds_t)|(?:useconds_t)|(?:uintmax_t)|(?:uintmax_t)|(?:in_port_t)|(?:uintmax_t)|(?:in_addr_t)|(?:blksize_t)|(?:uintptr_t)|(?:intmax_t)|(?:intptr_t)|(?:blkcnt_t)|(?:intmax_t)|(?:u_quad_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:ssize_t)|(?:fixpt_t)|(?:qaddr_t)|(?:u_short)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:daddr_t)|(?:caddr_t)|(?:swblk_t)|(?:clock_t)|(?:segsz_t)|(?:nlink_t)|(?:time_t)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:u_char)|(?:int8_t)|(?:u_int)|(?:uid_t)|(?:off_t)|(?:pid_t)|(?:gid_t)|(?:dev_t)|(?:div_t)|(?:key_t)|(?:ino_t)|(?:id_t)|(?:id_t)|(?:uint))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_cond_t)|(?:pthread_attr_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n        },\n        \"2\": { \"name\": \"storage.type.cpp storage.type.built-in.cpp\" },\n        \"3\": {\n          \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n        },\n        \"4\": {\n          \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n        }\n      }\n    },\n    \"inline_comment\": {\n      \"match\": \"(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"2\": { \"name\": \"comment.block.cpp\" },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      }\n    },\n    \"invalid_comment_end\": {\n      \"match\": \"\\\\*\\\\/\",\n      \"name\": \"invalid.illegal.unexpected.punctuation.definition.comment.end.cpp\"\n    },\n    \"label\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\b(?<!case|default)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:)\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"entity.name.label.cpp\" },\n        \"4\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": { \"name\": \"punctuation.separator.label.cpp\" }\n      }\n    },\n    \"lambdas\": {\n      \"begin\": \"(?:(?<=[^\\\\s]|^)(?<![\\\\w\\\\]\\\\)\\\\[\\\\*&\\\">])|(?<=\\\\Wreturn|^return))(?:(?:\\\\s)+)?(\\\\[(?!\\\\[| *+\\\"| *+\\\\d))((?:[^\\\\[\\\\]]|((?<!\\\\[)\\\\[(?!\\\\[)(?:[^\\\\[\\\\]]*+\\\\g<3>?)++\\\\]))*+)(\\\\](?!((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))[\\\\[\\\\];]))\",\n      \"end\": \"(?<=[;}])|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.capture.begin.lambda.cpp\" },\n        \"2\": {\n          \"name\": \"meta.lambda.capture.cpp\",\n          \"patterns\": [\n            { \"include\": \"#the_this_keyword\" },\n            {\n              \"match\": \"((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?=\\\\]|\\\\z|$)|(,))|(\\\\=))\",\n              \"captures\": {\n                \"1\": { \"name\": \"variable.parameter.capture.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"6\": { \"name\": \"punctuation.separator.delimiter.comma.cpp\" },\n                \"7\": { \"name\": \"keyword.operator.assignment.cpp\" }\n              }\n            },\n            { \"include\": \"#evaluation_context\" }\n          ]\n        },\n        \"3\": {},\n        \"4\": { \"name\": \"punctuation.definition.capture.end.lambda.cpp\" },\n        \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": { \"name\": \"comment.block.cpp\" },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.parameters.end.lambda.cpp\" }\n          },\n          \"name\": \"meta.function.definition.parameters.lambda.cpp\",\n          \"patterns\": [{ \"include\": \"#function_parameter_context\" }]\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:constexpr)|(?:consteval)|(?:mutable))(?!\\\\w)\",\n          \"name\": \"storage.modifier.lambda.$0.cpp\"\n        },\n        {\n          \"match\": \"(->)((?:.+?(?=\\\\{|$))?)\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.lambda.return-type.cpp\" },\n            \"2\": { \"name\": \"storage.type.return-type.lambda.cpp\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.body.lambda.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"language_constants\": {\n      \"match\": \"(?<!\\\\w)(?:(?:nullptr)|(?:false)|(?:NULL)|(?:true))(?!\\\\w)\",\n      \"name\": \"constant.language.$0.cpp\"\n    },\n    \"line\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?line\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?=\\\\n)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.control.directive.line.cpp\" },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"punctuation.definition.directive.cpp\" }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.line.cpp\",\n      \"patterns\": [\n        { \"include\": \"#string_context\" },\n        { \"include\": \"#preprocessor_number_literal\" },\n        { \"include\": \"#line_continuation_character\" }\n      ]\n    },\n    \"line_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\/)\",\n      \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.cpp\" }\n      },\n      \"endCaptures\": {},\n      \"name\": \"comment.line.double-slash.cpp\",\n      \"patterns\": [{ \"include\": \"#line_continuation_character\" }]\n    },\n    \"line_continuation_character\": {\n      \"match\": \"\\\\\\\\\\\\n\",\n      \"name\": \"constant.character.escape.line-continuation.cpp\"\n    },\n    \"macro\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?define\\\\b)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n      \"end\": \"(?<!\\\\\\\\)(?=\\\\n)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.directive.define.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": { \"name\": \"punctuation.definition.directive.cpp\" },\n        \"7\": { \"name\": \"entity.name.function.preprocessor.cpp\" }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.macro.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G(?:(?:\\\\s)+)?(\\\\()([^\\\\(]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.preprocessor.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[(,])(?:(?:\\\\s)+)?((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"variable.parameter.preprocessor.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.cpp\"\n                },\n                {\n                  \"match\": \"\\\\.\\\\.\\\\.\",\n                  \"name\": \"punctuation.vararg-ellipses.variable.parameter.preprocessor.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.end.preprocessor.cpp\"\n            }\n          }\n        },\n        { \"include\": \"#macro_context\" },\n        { \"include\": \"#macro_argument\" }\n      ]\n    },\n    \"macro_argument\": {\n      \"match\": \"##?(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n      \"name\": \"variable.other.macro.argument.cpp\"\n    },\n    \"macro_context\": {\n      \"patterns\": [{ \"include\": \"source.cpp.embedded.macro\" }]\n    },\n    \"macro_name\": {\n      \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n      \"name\": \"entity.name.function.preprocessor.cpp\"\n    },\n    \"member_access\": {\n      \"match\": \"(?:((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:(?:\\\\s)+)?(?:(?:\\\\.\\\\*|\\\\.)|(?:->\\\\*|->))(?:(?:\\\\s)+)?)*)(?:(?:\\\\s)+)?(\\\\b(?!uint_least32_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint_least16_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint_least64_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int_least32_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int_least64_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint_fast32_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint_fast64_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint_least8_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint_fast16_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int_least16_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int_fast16_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int_least8_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint_fast8_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int_fast64_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int_fast32_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int_fast8_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|suseconds_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|useconds_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|in_addr_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uintmax_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uintmax_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uintmax_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|in_port_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uintptr_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|blksize_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint32_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint64_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|u_quad_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|intmax_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|intmax_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|unsigned[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|blkcnt_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint16_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|intptr_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|swblk_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|wchar_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|u_short[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|qaddr_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|caddr_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|daddr_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|fixpt_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|nlink_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|segsz_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|clock_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|ssize_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int16_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int32_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int64_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint8_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int8_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|mode_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|quad_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|ushort[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|u_long[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|u_char[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|double[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|signed[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|time_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|size_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|key_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|div_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|ino_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uid_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|gid_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|off_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|pid_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|float[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|dev_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|u_int[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|short[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|bool[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|id_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|uint[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|long[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|char[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|void[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|auto[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|id_t[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)]|int[^Pattern.new(\\n  match: \\\\/\\\\w\\\\/,\\n)])(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?!\\\\())\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"variable.language.this.cpp\" },\n        \"4\": { \"name\": \"variable.other.object.access.cpp\" },\n        \"5\": { \"name\": \"punctuation.separator.dot-access.cpp\" },\n        \"6\": { \"name\": \"punctuation.separator.pointer-access.cpp\" },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=(?:\\\\.\\\\*|\\\\.|->|->\\\\*))(?:(?:\\\\s)+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"5\": { \"name\": \"variable.language.this.cpp\" },\n                \"6\": { \"name\": \"variable.other.object.property.cpp\" },\n                \"7\": { \"name\": \"punctuation.separator.dot-access.cpp\" },\n                \"8\": { \"name\": \"punctuation.separator.pointer-access.cpp\" }\n              }\n            },\n            {\n              \"match\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"5\": { \"name\": \"variable.language.this.cpp\" },\n                \"6\": { \"name\": \"variable.other.object.access.cpp\" },\n                \"7\": { \"name\": \"punctuation.separator.dot-access.cpp\" },\n                \"8\": { \"name\": \"punctuation.separator.pointer-access.cpp\" }\n              }\n            },\n            { \"include\": \"#member_access\" },\n            { \"include\": \"#method_access\" }\n          ]\n        },\n        \"8\": { \"name\": \"variable.other.property.cpp\" }\n      }\n    },\n    \"memory_operators\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(delete)(?:(?:\\\\s)+)?(\\\\[\\\\])|(delete))|(new))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"keyword.operator.wordlike.cpp\" },\n        \"4\": { \"name\": \"keyword.operator.delete.array.cpp\" },\n        \"5\": { \"name\": \"keyword.operator.delete.array.bracket.cpp\" },\n        \"6\": { \"name\": \"keyword.operator.delete.cpp\" },\n        \"7\": { \"name\": \"keyword.operator.new.cpp\" }\n      }\n    },\n    \"method_access\": {\n      \"begin\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:(?:\\\\s)+)?(?:(?:\\\\.\\\\*|\\\\.)|(?:->\\\\*|->))(?:(?:\\\\s)+)?)*)(?:(?:\\\\s)+)?(~?(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"variable.language.this.cpp\" },\n        \"6\": { \"name\": \"variable.other.object.access.cpp\" },\n        \"7\": { \"name\": \"punctuation.separator.dot-access.cpp\" },\n        \"8\": { \"name\": \"punctuation.separator.pointer-access.cpp\" },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=(?:\\\\.\\\\*|\\\\.|->|->\\\\*))(?:(?:\\\\s)+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"5\": { \"name\": \"variable.language.this.cpp\" },\n                \"6\": { \"name\": \"variable.other.object.property.cpp\" },\n                \"7\": { \"name\": \"punctuation.separator.dot-access.cpp\" },\n                \"8\": { \"name\": \"punctuation.separator.pointer-access.cpp\" }\n              }\n            },\n            {\n              \"match\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"5\": { \"name\": \"variable.language.this.cpp\" },\n                \"6\": { \"name\": \"variable.other.object.access.cpp\" },\n                \"7\": { \"name\": \"punctuation.separator.dot-access.cpp\" },\n                \"8\": { \"name\": \"punctuation.separator.pointer-access.cpp\" }\n              }\n            },\n            { \"include\": \"#member_access\" },\n            { \"include\": \"#method_access\" }\n          ]\n        },\n        \"10\": { \"name\": \"entity.name.function.member.cpp\" },\n        \"11\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.cpp\"\n        }\n      },\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"misc_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:requires)|(?:typedef)|(?:concept)|(?:export)|(?:module))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"keyword.other.$3.cpp\" }\n      }\n    },\n    \"ms_attributes\": {\n      \"begin\": \"__declspec\\\\(\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.attribute.begin.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.attribute.end.cpp\" }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        { \"include\": \"#attributes_context\" },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#string_context\" }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.other.using.directive.cpp\" },\n            \"2\": { \"name\": \"entity.name.namespace.cpp\" }\n          }\n        },\n        { \"match\": \",\", \"name\": \"punctuation.separator.attribute.cpp\" },\n        { \"match\": \":\", \"name\": \"punctuation.accessor.attribute.cpp\" },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        { \"include\": \"#number_literal\" }\n      ]\n    },\n    \"namespace_alias\": {\n      \"match\": \"(?<!\\\\w)(namespace)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(\\\\=)(?:(?:\\\\s)+)?(((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<8>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(?:(;)|\\\\n))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.namespace.alias.cpp storage.type.namespace.alias.cpp\"\n        },\n        \"2\": { \"name\": \"entity.name.namespace.alias.cpp\" },\n        \"3\": { \"name\": \"keyword.operator.assignment.cpp\" },\n        \"4\": { \"name\": \"meta.declaration.namespace.alias.value.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_namespace_alias_inner_generated\" }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        },\n        \"7\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"9\": { \"name\": \"entity.name.namespace.cpp\" },\n        \"10\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n      },\n      \"name\": \"meta.declaration.namespace.alias.cpp\"\n    },\n    \"namespace_block\": {\n      \"begin\": \"((?<!\\\\w)namespace(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.head.namespace.cpp\" },\n        \"1\": {\n          \"name\": \"keyword.other.namespace.definition.cpp storage.type.namespace.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.namespace.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.head.namespace.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            { \"include\": \"#attributes_context\" },\n            {\n              \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<4>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(?:(::)(?:(?:\\\\s)+)?(inline))?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#scope_resolution_namespace_block_inner_generated\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n                \"4\": {},\n                \"5\": { \"name\": \"entity.name.namespace.cpp\" },\n                \"6\": {\n                  \"name\": \"punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"7\": { \"name\": \"storage.modifier.inline.cpp\" }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.body.namespace.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.namespace.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"noexcept_operator\": {\n      \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.noexcept\",\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"number_literal\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?((?:\\\\w(?<![0-9a-fA-FpP])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"keyword.other.unit.hexadecimal.cpp\" },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": { \"name\": \"constant.numeric.hexadecimal.cpp\" },\n                    \"5\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"10\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    },\n                    \"12\": { \"name\": \"keyword.other.unit.user-defined.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?((?:\\\\w(?<![0-9eE])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": { \"name\": \"constant.numeric.decimal.point.cpp\" },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"6\": { \"name\": \"keyword.other.unit.exponent.decimal.cpp\" },\n                    \"7\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    },\n                    \"11\": { \"name\": \"keyword.other.unit.user-defined.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"keyword.other.unit.binary.cpp\" },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": { \"name\": \"keyword.other.unit.suffix.integer.cpp\" },\n                    \"5\": { \"name\": \"keyword.other.unit.user-defined.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"keyword.other.unit.octal.cpp\" },\n                    \"2\": {\n                      \"name\": \"constant.numeric.octal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": { \"name\": \"keyword.other.unit.suffix.integer.cpp\" },\n                    \"5\": { \"name\": \"keyword.other.unit.user-defined.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9a-fA-FpP])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"keyword.other.unit.hexadecimal.cpp\" },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"8\": { \"name\": \"keyword.other.unit.suffix.integer.cpp\" },\n                    \"9\": { \"name\": \"keyword.other.unit.user-defined.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9eE])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": { \"name\": \"keyword.other.unit.exponent.decimal.cpp\" },\n                    \"4\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"7\": { \"name\": \"keyword.other.unit.suffix.integer.cpp\" },\n                    \"8\": { \"name\": \"keyword.other.unit.user-defined.cpp\" }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.cpp\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"operator_overload\": {\n      \"begin\": \"(?:(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(operator)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(?:(?:((?:(?:delete\\\\[\\\\])|(?:delete)|(?:new\\\\[\\\\])|(?:<=>)|(?:<<=)|(?:new)|(?:>>=)|(?:\\\\->\\\\*)|(?:\\\\/=)|(?:%=)|(?:&=)|(?:>=)|(?:\\\\|=)|(?:\\\\+\\\\+)|(?:\\\\-\\\\-)|(?:\\\\(\\\\))|(?:\\\\[\\\\])|(?:\\\\->)|(?:\\\\+\\\\+)|(?:<<)|(?:>>)|(?:\\\\-\\\\-)|(?:<=)|(?:\\\\^=)|(?:==)|(?:!=)|(?:&&)|(?:\\\\|\\\\|)|(?:\\\\+=)|(?:\\\\-=)|(?:\\\\*=)|,|(?:\\\\+)|(?:\\\\-)|!|~|(?:\\\\*)|&|(?:\\\\*)|(?:\\\\/)|%|(?:\\\\+)|(?:\\\\-)|<|>|&|(?:\\\\^)|(?:\\\\|)|=))|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:\\\\[\\\\])?)))|(\\\"\\\")((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\<|\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\"\n        },\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": { \"name\": \"comment.block.cpp\" },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": { \"name\": \"comment.block.cpp\" },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"13\": {},\n        \"14\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": { \"name\": \"comment.block.cpp\" },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"20\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": { \"name\": \"comment.block.cpp\" },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"24\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": { \"name\": \"comment.block.cpp\" },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"28\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": { \"name\": \"comment.block.cpp\" },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"32\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"33\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"34\": { \"name\": \"comment.block.cpp\" },\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"36\": { \"name\": \"storage.type.modifier.calling-convention.cpp\" },\n        \"37\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"38\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"39\": { \"name\": \"comment.block.cpp\" },\n        \"40\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"41\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"42\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"43\": { \"name\": \"comment.block.cpp\" },\n        \"44\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"45\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"46\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"47\": {},\n        \"48\": { \"name\": \"keyword.other.operator.overload.cpp\" },\n        \"49\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"50\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"51\": { \"name\": \"comment.block.cpp\" },\n        \"52\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"53\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator-overload.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator-overload.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"54\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"55\": {},\n        \"56\": { \"name\": \"entity.name.operator.cpp\" },\n        \"57\": { \"name\": \"entity.name.operator.type.cpp\" },\n        \"58\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"entity.name.operator.type.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"entity.name.operator.type.reference.cpp\"\n            }\n          ]\n        },\n        \"59\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"60\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"61\": { \"name\": \"comment.block.cpp\" },\n        \"62\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"63\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"64\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"65\": { \"name\": \"comment.block.cpp\" },\n        \"66\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"67\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"68\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"69\": { \"name\": \"comment.block.cpp\" },\n        \"70\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"71\": { \"name\": \"entity.name.operator.type.array.cpp\" },\n        \"72\": { \"name\": \"entity.name.operator.custom-literal.cpp\" },\n        \"73\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"74\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"75\": { \"name\": \"comment.block.cpp\" },\n        \"76\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"77\": { \"name\": \"entity.name.operator.custom-literal.cpp\" },\n        \"78\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"79\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"80\": { \"name\": \"comment.block.cpp\" },\n        \"81\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.operator-overload.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            { \"include\": \"#template_call_range\" },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.operator-overload\",\n              \"patterns\": [\n                { \"include\": \"#function_parameter_context\" },\n                { \"include\": \"#evaluation_context\" }\n              ]\n            },\n            { \"include\": \"#qualifiers_and_specifiers_post_parameters\" },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [{ \"include\": \"#function_body_context\" }]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n            },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof\",\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n            },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignof\",\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n            },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignas\",\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n            },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.typeid\",\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n            },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.noexcept\",\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        {\n          \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n            },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        { \"match\": \"--\", \"name\": \"keyword.operator.decrement.cpp\" },\n        { \"match\": \"\\\\+\\\\+\", \"name\": \"keyword.operator.increment.cpp\" },\n        {\n          \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()\\\\/=\",\n          \"name\": \"keyword.operator.assignment.compound.cpp\"\n        },\n        {\n          \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n          \"name\": \"keyword.operator.assignment.compound.bitwise.cpp\"\n        },\n        { \"match\": \"<<|>>\", \"name\": \"keyword.operator.bitwise.shift.cpp\" },\n        {\n          \"match\": \"!=|<=|>=|==|<|>\",\n          \"name\": \"keyword.operator.comparison.cpp\"\n        },\n        { \"match\": \"&&|!|\\\\|\\\\|\", \"name\": \"keyword.operator.logical.cpp\" },\n        { \"match\": \"&|\\\\||\\\\^|~\", \"name\": \"keyword.operator.cpp\" },\n        { \"include\": \"#assignment_operator\" },\n        { \"match\": \"%|\\\\*|\\\\/|-|\\\\+\", \"name\": \"keyword.operator.cpp\" },\n        { \"include\": \"#ternary_operator\" }\n      ]\n    },\n    \"over_qualified_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"(struct)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.struct.parameter.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": { \"name\": \"entity.name.type.struct.parameter.cpp\" },\n            \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": { \"name\": \"variable.other.object.declare.cpp\" },\n            \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(enum)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.enum.parameter.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": { \"name\": \"entity.name.type.enum.parameter.cpp\" },\n            \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": { \"name\": \"variable.other.object.declare.cpp\" },\n            \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(union)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.union.parameter.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": { \"name\": \"entity.name.type.union.parameter.cpp\" },\n            \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": { \"name\": \"variable.other.object.declare.cpp\" },\n            \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(class)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.class.parameter.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": { \"name\": \"entity.name.type.class.parameter.cpp\" },\n            \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": { \"name\": \"variable.other.object.declare.cpp\" },\n            \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"parameter\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.separator.delimiter.comma.cpp\" }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        { \"include\": \"#ever_present_context\" },\n        { \"include\": \"#function_pointer_parameter\" },\n        { \"include\": \"#decltype\" },\n        { \"include\": \"#vararg_ellipses\" },\n        {\n          \"match\": \"((?:((?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:double)|(?:signed)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:long)|(?:char)|(?:bool)|(?:int)))|((?:(?:uint_least32_t)|(?:uint_least64_t)|(?:uint_least16_t)|(?:uint_fast64_t)|(?:uint_least8_t)|(?:int_least64_t)|(?:int_least32_t)|(?:int_least16_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:int_fast8_t)|(?:suseconds_t)|(?:useconds_t)|(?:uintmax_t)|(?:uintmax_t)|(?:in_port_t)|(?:uintmax_t)|(?:in_addr_t)|(?:blksize_t)|(?:uintptr_t)|(?:intmax_t)|(?:intptr_t)|(?:blkcnt_t)|(?:intmax_t)|(?:u_quad_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:ssize_t)|(?:fixpt_t)|(?:qaddr_t)|(?:u_short)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:daddr_t)|(?:caddr_t)|(?:swblk_t)|(?:clock_t)|(?:segsz_t)|(?:nlink_t)|(?:time_t)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:u_char)|(?:int8_t)|(?:u_int)|(?:uid_t)|(?:off_t)|(?:pid_t)|(?:gid_t)|(?:dev_t)|(?:div_t)|(?:key_t)|(?:ino_t)|(?:id_t)|(?:id_t)|(?:uint))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_cond_t)|(?:pthread_attr_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": { \"patterns\": [{ \"include\": \"#storage_types\" }] },\n            \"2\": { \"name\": \"storage.modifier.specifier.parameter.cpp\" },\n            \"3\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": { \"name\": \"comment.block.cpp\" },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": { \"name\": \"comment.block.cpp\" },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": { \"name\": \"storage.type.cpp storage.type.built-in.cpp\" },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": { \"name\": \"entity.name.type.parameter.cpp\" },\n            \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": { \"name\": \"comment.block.cpp\" },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            }\n          }\n        },\n        { \"include\": \"#storage_types\" },\n        { \"include\": \"#scope_resolution_parameter_inner_generated\" },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.separator.delimiter.comma.cpp\" }\n          },\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        { \"match\": \"\\\\=\", \"name\": \"keyword.operator.assignment.cpp\" },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\)|,|\\\\[|=|\\\\n)\",\n          \"captures\": {\n            \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": { \"name\": \"comment.block.cpp\" },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"5\": { \"name\": \"variable.parameter.cpp\" },\n            \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": { \"name\": \"comment.block.cpp\" },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            }\n          }\n        },\n        { \"include\": \"#attributes_context\" },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        { \"include\": \"#template_call_range\" },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": { \"name\": \"comment.block.cpp\" },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": { \"name\": \"comment.block.cpp\" },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"parameter_class\": {\n      \"match\": \"(class)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.class.parameter.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.type.class.parameter.cpp\" },\n        \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": { \"name\": \"variable.other.object.declare.cpp\" },\n        \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parameter_enum\": {\n      \"match\": \"(enum)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.enum.parameter.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.type.enum.parameter.cpp\" },\n        \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": { \"name\": \"variable.other.object.declare.cpp\" },\n        \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parameter_or_maybe_value\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.separator.delimiter.comma.cpp\" }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        { \"include\": \"#ever_present_context\" },\n        { \"include\": \"#function_pointer_parameter\" },\n        { \"include\": \"#memory_operators\" },\n        { \"include\": \"#builtin_storage_type_initilizer\" },\n        { \"include\": \"#curly_initializer\" },\n        { \"include\": \"#decltype\" },\n        { \"include\": \"#vararg_ellipses\" },\n        {\n          \"match\": \"((?:((?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:double)|(?:signed)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:long)|(?:char)|(?:bool)|(?:int)))|((?:(?:uint_least32_t)|(?:uint_least64_t)|(?:uint_least16_t)|(?:uint_fast64_t)|(?:uint_least8_t)|(?:int_least64_t)|(?:int_least32_t)|(?:int_least16_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:int_fast8_t)|(?:suseconds_t)|(?:useconds_t)|(?:uintmax_t)|(?:uintmax_t)|(?:in_port_t)|(?:uintmax_t)|(?:in_addr_t)|(?:blksize_t)|(?:uintptr_t)|(?:intmax_t)|(?:intptr_t)|(?:blkcnt_t)|(?:intmax_t)|(?:u_quad_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:ssize_t)|(?:fixpt_t)|(?:qaddr_t)|(?:u_short)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:daddr_t)|(?:caddr_t)|(?:swblk_t)|(?:clock_t)|(?:segsz_t)|(?:nlink_t)|(?:time_t)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:u_char)|(?:int8_t)|(?:u_int)|(?:uid_t)|(?:off_t)|(?:pid_t)|(?:gid_t)|(?:dev_t)|(?:div_t)|(?:key_t)|(?:ino_t)|(?:id_t)|(?:id_t)|(?:uint))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_cond_t)|(?:pthread_attr_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": { \"patterns\": [{ \"include\": \"#storage_types\" }] },\n            \"2\": { \"name\": \"storage.modifier.specifier.parameter.cpp\" },\n            \"3\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": { \"name\": \"comment.block.cpp\" },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": { \"name\": \"comment.block.cpp\" },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": { \"name\": \"storage.type.cpp storage.type.built-in.cpp\" },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": { \"name\": \"entity.name.type.parameter.cpp\" },\n            \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": { \"name\": \"comment.block.cpp\" },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            }\n          }\n        },\n        { \"include\": \"#storage_types\" },\n        { \"include\": \"#function_call\" },\n        { \"include\": \"#scope_resolution_parameter_inner_generated\" },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.separator.delimiter.comma.cpp\" }\n          },\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=(?:\\\\)|,|\\\\[|=|\\\\/\\\\/|(?:(?:\\\\n)|$)))\",\n          \"captures\": {\n            \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": { \"name\": \"comment.block.cpp\" },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"5\": { \"name\": \"variable.parameter.cpp\" },\n            \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": { \"name\": \"comment.block.cpp\" },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            }\n          }\n        },\n        { \"include\": \"#attributes_context\" },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        { \"include\": \"#template_call_range\" },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": { \"name\": \"comment.block.cpp\" },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": { \"name\": \"comment.block.cpp\" },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            }\n          }\n        },\n        { \"include\": \"#evaluation_context\" }\n      ]\n    },\n    \"parameter_struct\": {\n      \"match\": \"(struct)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.struct.parameter.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.type.struct.parameter.cpp\" },\n        \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": { \"name\": \"variable.other.object.declare.cpp\" },\n        \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parameter_union\": {\n      \"match\": \"(union)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.union.parameter.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.type.union.parameter.cpp\" },\n        \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": { \"name\": \"variable.other.object.declare.cpp\" },\n        \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.parens.end.bracket.round.cpp\" }\n      },\n      \"name\": \"meta.parens.cpp\",\n      \"patterns\": [\n        { \"include\": \"#over_qualified_types\" },\n        {\n          \"match\": \"(?<!:):(?!:)\",\n          \"name\": \"punctuation.separator.colon.range-based.cpp\"\n        },\n        { \"include\": \"#evaluation_context\" }\n      ]\n    },\n    \"pragma\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?pragma\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?=\\\\n)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.control.directive.pragma.cpp\" },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"punctuation.definition.directive.cpp\" }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.pragma.cpp\",\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#string_context\" },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n          \"name\": \"entity.other.attribute-name.pragma.preprocessor.cpp\"\n        },\n        { \"include\": \"#preprocessor_number_literal\" },\n        { \"include\": \"#line_continuation_character\" }\n      ]\n    },\n    \"pragma_mark\": {\n      \"match\": \"(^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?pragma(?:\\\\s)+mark)(?:\\\\s)+(.*)\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.directive.pragma.pragma-mark.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"punctuation.definition.directive.cpp\" },\n        \"5\": { \"name\": \"entity.name.tag.pragma-mark.cpp\" }\n      },\n      \"name\": \"meta.preprocessor.pragma.cpp\"\n    },\n    \"predefined_macros\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(__cplusplus|__DATE__|__FILE__|__LINE__|__STDC__|__STDC_HOSTED__|__STDC_NO_COMPLEX__|__STDC_VERSION__|__STDCPP_THREADS__|__TIME__|NDEBUG|__OBJC__|__ASSEMBLER__|__ATOM__|__AVX__|__AVX2__|_CHAR_UNSIGNED|__CLR_VER|_CONTROL_FLOW_GUARD|__COUNTER__|__cplusplus_cli|__cplusplus_winrt|_CPPRTTI|_CPPUNWIND|_DEBUG|_DLL|__FUNCDNAME__|__FUNCSIG__|__FUNCTION__|_INTEGRAL_MAX_BITS|__INTELLISENSE__|_ISO_VOLATILE|_KERNEL_MODE|_M_AMD64|_M_ARM|_M_ARM_ARMV7VE|_M_ARM_FP|_M_ARM64|_M_CEE|_M_CEE_PURE|_M_CEE_SAFE|_M_FP_EXCEPT|_M_FP_FAST|_M_FP_PRECISE|_M_FP_STRICT|_M_IX86|_M_IX86_FP|_M_X64|_MANAGED|_MSC_BUILD|_MSC_EXTENSIONS|_MSC_FULL_VER|_MSC_VER|_MSVC_LANG|__MSVC_RUNTIME_CHECKS|_MT|_NATIVE_WCHAR_T_DEFINED|_OPENMP|_PREFAST|__TIMESTAMP__|_VC_NO_DEFAULTLIB|_WCHAR_T_DEFINED|_WIN32|_WIN64|_WINRT_DLL|_ATL_VER|_MFC_VER|__GFORTRAN__|__GNUC__|__GNUC_MINOR__|__GNUC_PATCHLEVEL__|__GNUG__|__STRICT_ANSI__|__BASE_FILE__|__INCLUDE_LEVEL__|__ELF__|__VERSION__|__OPTIMIZE__|__OPTIMIZE_SIZE__|__NO_INLINE__|__GNUC_STDC_INLINE__|__CHAR_UNSIGNED__|__WCHAR_UNSIGNED__|__REGISTER_PREFIX__|__REGISTER_PREFIX__|__SIZE_TYPE__|__PTRDIFF_TYPE__|__WCHAR_TYPE__|__WINT_TYPE__|__INTMAX_TYPE__|__UINTMAX_TYPE__|__SIG_ATOMIC_TYPE__|__INT8_TYPE__|__INT16_TYPE__|__INT32_TYPE__|__INT64_TYPE__|__UINT8_TYPE__|__UINT16_TYPE__|__UINT32_TYPE__|__UINT64_TYPE__|__INT_LEAST8_TYPE__|__INT_LEAST16_TYPE__|__INT_LEAST32_TYPE__|__INT_LEAST64_TYPE__|__UINT_LEAST8_TYPE__|__UINT_LEAST16_TYPE__|__UINT_LEAST32_TYPE__|__UINT_LEAST64_TYPE__|__INT_FAST8_TYPE__|__INT_FAST16_TYPE__|__INT_FAST32_TYPE__|__INT_FAST64_TYPE__|__UINT_FAST8_TYPE__|__UINT_FAST16_TYPE__|__UINT_FAST32_TYPE__|__UINT_FAST64_TYPE__|__INTPTR_TYPE__|__UINTPTR_TYPE__|__CHAR_BIT__|__SCHAR_MAX__|__WCHAR_MAX__|__SHRT_MAX__|__INT_MAX__|__LONG_MAX__|__LONG_LONG_MAX__|__WINT_MAX__|__SIZE_MAX__|__PTRDIFF_MAX__|__INTMAX_MAX__|__UINTMAX_MAX__|__SIG_ATOMIC_MAX__|__INT8_MAX__|__INT16_MAX__|__INT32_MAX__|__INT64_MAX__|__UINT8_MAX__|__UINT16_MAX__|__UINT32_MAX__|__UINT64_MAX__|__INT_LEAST8_MAX__|__INT_LEAST16_MAX__|__INT_LEAST32_MAX__|__INT_LEAST64_MAX__|__UINT_LEAST8_MAX__|__UINT_LEAST16_MAX__|__UINT_LEAST32_MAX__|__UINT_LEAST64_MAX__|__INT_FAST8_MAX__|__INT_FAST16_MAX__|__INT_FAST32_MAX__|__INT_FAST64_MAX__|__UINT_FAST8_MAX__|__UINT_FAST16_MAX__|__UINT_FAST32_MAX__|__UINT_FAST64_MAX__|__INTPTR_MAX__|__UINTPTR_MAX__|__WCHAR_MIN__|__WINT_MIN__|__SIG_ATOMIC_MIN__|__SCHAR_WIDTH__|__SHRT_WIDTH__|__INT_WIDTH__|__LONG_WIDTH__|__LONG_LONG_WIDTH__|__PTRDIFF_WIDTH__|__SIG_ATOMIC_WIDTH__|__SIZE_WIDTH__|__WCHAR_WIDTH__|__WINT_WIDTH__|__INT_LEAST8_WIDTH__|__INT_LEAST16_WIDTH__|__INT_LEAST32_WIDTH__|__INT_LEAST64_WIDTH__|__INT_FAST8_WIDTH__|__INT_FAST16_WIDTH__|__INT_FAST32_WIDTH__|__INT_FAST64_WIDTH__|__INTPTR_WIDTH__|__INTMAX_WIDTH__|__SIZEOF_INT__|__SIZEOF_LONG__|__SIZEOF_LONG_LONG__|__SIZEOF_SHORT__|__SIZEOF_POINTER__|__SIZEOF_FLOAT__|__SIZEOF_DOUBLE__|__SIZEOF_LONG_DOUBLE__|__SIZEOF_SIZE_T__|__SIZEOF_WCHAR_T__|__SIZEOF_WINT_T__|__SIZEOF_PTRDIFF_T__|__BYTE_ORDER__|__ORDER_LITTLE_ENDIAN__|__ORDER_BIG_ENDIAN__|__ORDER_PDP_ENDIAN__|__FLOAT_WORD_ORDER__|__DEPRECATED|__EXCEPTIONS|__GXX_RTTI|__USING_SJLJ_EXCEPTIONS__|__GXX_EXPERIMENTAL_CXX0X__|__GXX_WEAK__|__NEXT_RUNTIME__|__LP64__|_LP64|__SSP__|__SSP_ALL__|__SSP_STRONG__|__SSP_EXPLICIT__|__SANITIZE_ADDRESS__|__SANITIZE_THREAD__|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16|__HAVE_SPECULATION_SAFE_VALUE|__GCC_HAVE_DWARF2_CFI_ASM|__FP_FAST_FMA|__FP_FAST_FMAF|__FP_FAST_FMAL|__FP_FAST_FMAF16|__FP_FAST_FMAF32|__FP_FAST_FMAF64|__FP_FAST_FMAF128|__FP_FAST_FMAF32X|__FP_FAST_FMAF64X|__FP_FAST_FMAF128X|__GCC_IEC_559|__GCC_IEC_559_COMPLEX|__NO_MATH_ERRNO__|__has_builtin|__has_feature|__has_extension|__has_cpp_attribute|__has_c_attribute|__has_attribute|__has_declspec_attribute|__is_identifier|__has_include|__has_include_next|__has_warning|__BASE_FILE__|__FILE_NAME__|__clang__|__clang_major__|__clang_minor__|__clang_patchlevel__|__clang_version__|__fp16|_Float16)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.$1.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b__([A-Z_]+)__\\\\b\",\n          \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$1.cpp\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_context\": {\n      \"patterns\": [\n        { \"include\": \"#preprocessor_conditional_defined\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#language_constants\" },\n        { \"include\": \"#string_context\" },\n        { \"include\": \"#d9bc4796b0b_preprocessor_number_literal\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#predefined_macros\" },\n        { \"include\": \"#macro_name\" },\n        { \"include\": \"#line_continuation_character\" }\n      ]\n    },\n    \"preprocessor_conditional_defined\": {\n      \"begin\": \"((?<!\\\\w)defined(?!\\\\w))(\\\\()\",\n      \"end\": \"(?:\\\\)|(?<!\\\\\\\\)(?=\\\\n))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.directive.conditional.defined.cpp\" },\n        \"2\": { \"name\": \"punctuation.section.parens.control.defined.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.parens.control.defined.cpp\" }\n      },\n      \"patterns\": [{ \"include\": \"#macro_name\" }]\n    },\n    \"preprocessor_conditional_parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.parens.end.bracket.round.cpp\" }\n      },\n      \"name\": \"meta.parens.preprocessor.conditional.cpp\"\n    },\n    \"preprocessor_conditional_range\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:(?:ifndef|ifdef)|if))\",\n      \"end\": \"^(?!\\\\s*+#\\\\s*(?:else|endif))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.control.directive.conditional.$6.cpp\" },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"punctuation.definition.directive.cpp\" },\n        \"6\": {}\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?<=ifndef|ifdef|if)\",\n          \"end\": \"(?<!\\\\\\\\)(?=\\\\n)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.preprocessor.conditional.cpp\",\n          \"patterns\": [{ \"include\": \"#preprocessor_conditional_context\" }]\n        },\n        { \"include\": \"$self\" }\n      ]\n    },\n    \"preprocessor_conditional_standalone\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?<!\\\\w)(?:endif|else|elif)(?!\\\\w))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"punctuation.definition.directive.cpp\" }\n      },\n      \"name\": \"keyword.control.directive.$4.cpp\"\n    },\n    \"preprocessor_context\": {\n      \"patterns\": [\n        { \"include\": \"#pragma_mark\" },\n        { \"include\": \"#pragma\" },\n        { \"include\": \"#include\" },\n        { \"include\": \"#line\" },\n        { \"include\": \"#diagnostic\" },\n        { \"include\": \"#undef\" },\n        { \"include\": \"#preprocessor_conditional_range\" },\n        { \"include\": \"#single_line_macro\" },\n        { \"include\": \"#macro\" },\n        { \"include\": \"#preprocessor_conditional_standalone\" },\n        { \"include\": \"#macro_argument\" }\n      ]\n    },\n    \"qualified_type\": {\n      \"match\": \"\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)?(?![\\\\w<:.])\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"1\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"7\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"9\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.qualified_type.cpp\"\n    },\n    \"qualifiers_and_specifiers_post_parameters\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?<!\\\\w)(?:(?:override)|(?:volatile)|(?:noexcept)|(?:final)|(?:const))(?!\\\\w))+(?=\\\\s*(?:(?:\\\\{|;)|[\\\\n\\\\r])))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.specifier.functional.post-parameters.$3.cpp\"\n        },\n        \"4\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [{ \"include\": \"#scope_resolution_inner_generated\" }]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_function_call\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_function_call_inner_generated\" }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_function_call_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_function_call_inner_generated\" }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.scope-resolution.function.call.cpp\" },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_function_definition\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_function_definition_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.scope-resolution.function.definition.cpp\" },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_function_definition_operator_overload\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_operator_overload_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_function_definition_operator_overload_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_operator_overload_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.function.definition.operator-overload.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [{ \"include\": \"#scope_resolution_inner_generated\" }]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.scope-resolution.cpp\" },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_namespace_alias\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_namespace_alias_inner_generated\" }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_namespace_alias_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_namespace_alias_inner_generated\" }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.scope-resolution.namespace.alias.cpp\" },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_namespace_block\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_namespace_block_inner_generated\" }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_namespace_block_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_namespace_block_inner_generated\" }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.scope-resolution.namespace.block.cpp\" },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_namespace_using\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_namespace_using_inner_generated\" }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_namespace_using_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_namespace_using_inner_generated\" }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.scope-resolution.namespace.using.cpp\" },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_parameter\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_parameter_inner_generated\" }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_parameter_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_parameter_inner_generated\" }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.scope-resolution.parameter.cpp\" },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_template_call\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_template_call_inner_generated\" }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_template_call_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_template_call_inner_generated\" }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.scope-resolution.template.call.cpp\" },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_template_definition\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_definition_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      }\n    },\n    \"scope_resolution_template_definition_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_definition_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp\"\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"4\": {},\n        \"5\": { \"name\": \"entity.name.scope-resolution.template.definition.cpp\" },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [{ \"include\": \"#template_call_range\" }]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp\"\n        }\n      }\n    },\n    \"semicolon\": {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.statement.cpp\"\n    },\n    \"simple_type\": {\n      \"match\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)?(?![\\\\w<:.]))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"3\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"9\": {},\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"14\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"single_line_macro\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))#define.*(?<![\\\\\\\\])(?:(?:\\\\n)|$)\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [{ \"include\": \"#macro\" }, { \"include\": \"#comments\" }]\n        },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"sizeof_operator\": {\n      \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof\",\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"sizeof_variadic_operator\": {\n      \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"square_brackets\": {\n      \"name\": \"meta.bracket.square.access\",\n      \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"variable.other.object\" },\n        \"2\": { \"name\": \"punctuation.definition.begin.bracket.square\" }\n      },\n      \"end\": \"\\\\]|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.end.bracket.square\" }\n      },\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"standard_declares\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?<!\\\\w)struct(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.struct.declare.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": { \"name\": \"entity.name.type.struct.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": { \"name\": \"variable.other.object.declare.cpp\" },\n            \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"((?<!\\\\w)union(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.union.declare.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": { \"name\": \"entity.name.type.union.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": { \"name\": \"variable.other.object.declare.cpp\" },\n            \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"((?<!\\\\w)enum(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.enum.declare.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": { \"name\": \"entity.name.type.enum.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": { \"name\": \"variable.other.object.declare.cpp\" },\n            \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"((?<!\\\\w)class(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.class.declare.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": { \"name\": \"entity.name.type.class.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": { \"name\": \"variable.other.object.declare.cpp\" },\n            \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": { \"name\": \"comment.block.cpp\" },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"static_assert\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)static_assert|_Static_assert(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"keyword.other.static_assert.cpp\" },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": { \"name\": \"comment.block.cpp\" },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(,)(?:(?:\\\\s)+)?(?=(?:L|u8|u|U(?:(?:\\\\s)+)?\\\\\\\")?)\",\n          \"end\": \"(?=\\\\))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.separator.delimiter.comma.cpp\" }\n          },\n          \"endCaptures\": {},\n          \"name\": \"meta.static_assert.message.cpp\",\n          \"patterns\": [{ \"include\": \"#string_context\" }]\n        },\n        { \"include\": \"#evaluation_context\" }\n      ]\n    },\n    \"std_space\": {\n      \"match\": \"(?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))\",\n      \"captures\": {\n        \"0\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"storage_specifiers\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"storage.modifier.specifier.$3.cpp\" }\n      }\n    },\n    \"storage_types\": {\n      \"patterns\": [\n        { \"include\": \"#storage_specifiers\" },\n        { \"include\": \"#inline_builtin_storage_type\" },\n        { \"include\": \"#decltype\" },\n        { \"include\": \"#typename\" }\n      ]\n    },\n    \"string_context\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?:u|u8|U|L)?)\\\"\",\n          \"end\": \"\\\"|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cpp\" },\n            \"1\": { \"name\": \"meta.encoding.cpp\" }\n          },\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cpp\" }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8})\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\['\\\"?\\\\\\\\abfnrtv]\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\[0-7]{1,3}\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": { \"name\": \"constant.character.escape.cpp\" },\n                \"2\": { \"name\": \"invalid.illegal.unknown-escape.cpp\" }\n              }\n            },\n            { \"include\": \"#string_escapes_context_c\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<![0-9A-Fa-f])((?:u|u8|U|L)?)'\",\n          \"end\": \"'|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cpp\" },\n            \"1\": { \"name\": \"meta.encoding.cpp\" }\n          },\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cpp\" }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": { \"name\": \"constant.character.escape.cpp\" },\n                \"2\": { \"name\": \"invalid.illegal.unknown-escape.cpp\" }\n              }\n            },\n            { \"include\": \"#string_escapes_context_c\" },\n            { \"include\": \"#line_continuation_character\" }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:(?:_r|re)|regex)\\\\(\",\n          \"end\": \"\\\\)(?:(?:_r|re)|regex)\\\\\\\"|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cpp\" },\n            \"1\": { \"name\": \"meta.encoding.cpp\" }\n          },\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cpp\" }\n          },\n          \"name\": \"string.quoted.double.raw.regex.cpp\",\n          \"patterns\": [{ \"include\": \"source.regexp.python\" }]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:glsl|GLSL)\\\\(\",\n          \"end\": \"\\\\)(?:glsl|GLSL)\\\\\\\"|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cpp\" },\n            \"1\": { \"name\": \"meta.encoding.cpp\" }\n          },\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cpp\" }\n          },\n          \"name\": \"meta.string.quoted.double.raw.glsl.cpp\",\n          \"patterns\": [{ \"include\": \"source.glsl\" }]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\(\",\n          \"end\": \"\\\\)(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\\\\"|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.cpp\" },\n            \"1\": { \"name\": \"meta.encoding.cpp\" }\n          },\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.cpp\" }\n          },\n          \"name\": \"meta.string.quoted.double.raw.sql.cpp\",\n          \"patterns\": [{ \"include\": \"source.sql\" }]\n        },\n        {\n          \"begin\": \"((?:u|u8|U|L)?R)\\\"(?:([^ ()\\\\\\\\\\\\t]{0,16})|([^ ()\\\\\\\\\\\\t]*))\\\\(\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin\" },\n            \"1\": { \"name\": \"meta.encoding\" },\n            \"3\": { \"name\": \"invalid.illegal.delimiter-too-long\" }\n          },\n          \"end\": \"\\\\)\\\\2(\\\\3)\\\"|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end\" },\n            \"1\": { \"name\": \"invalid.illegal.delimiter-too-long\" }\n          },\n          \"name\": \"string.quoted.double.raw\"\n        }\n      ]\n    },\n    \"string_escapes_context_c\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3][0-7]{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n          \"name\": \"constant.character.escape\"\n        },\n        { \"match\": \"\\\\\\\\.\", \"name\": \"invalid.illegal.unknown-escape\" },\n        {\n          \"match\": \"(?x) (?!%')(?!%\\\")%\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n          \"name\": \"constant.other.placeholder\"\n        }\n      ]\n    },\n    \"struct_block\": {\n      \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.head.struct.cpp\" },\n        \"1\": { \"name\": \"storage.type.$1.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": { \"name\": \"comment.block.cpp\" },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": { \"name\": \"entity.name.type.struct.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"6\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": { \"name\": \"comment.block.cpp\" },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": { \"name\": \"comment.block.cpp\" },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": { \"name\": \"comment.block.cpp\" },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"20\": { \"name\": \"punctuation.separator.colon.inheritance.cpp\" }\n      },\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.terminator.statement.cpp\" },\n        \"2\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n      },\n      \"name\": \"meta.block.struct.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.head.struct.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            { \"include\": \"#inheritance_context\" },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.body.struct.cpp\",\n          \"patterns\": [\n            { \"include\": \"#function_pointer\" },\n            { \"include\": \"#static_assert\" },\n            { \"include\": \"#constructor_inline\" },\n            { \"include\": \"#destructor_inline\" },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.struct.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"struct_declare\": {\n      \"match\": \"((?<!\\\\w)struct(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.struct.declare.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.type.struct.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": { \"name\": \"variable.other.object.declare.cpp\" },\n        \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"switch_conditional_parentheses\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.switch.cpp\",\n      \"patterns\": [\n        { \"include\": \"#evaluation_context\" },\n        { \"include\": \"#c_conditional_context\" }\n      ]\n    },\n    \"switch_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)switch(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.head.switch.cpp\" },\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": { \"name\": \"comment.block.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"5\": { \"name\": \"keyword.control.switch.cpp\" }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.switch.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.head.switch.cpp\",\n          \"patterns\": [\n            { \"include\": \"#switch_conditional_parentheses\" },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.body.switch.cpp\",\n          \"patterns\": [\n            { \"include\": \"#default_statement\" },\n            { \"include\": \"#case_statement\" },\n            { \"include\": \"$self\" },\n            { \"include\": \"#block_innards\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.switch.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"template_argument_defaulted\": {\n      \"match\": \"(?<=<|,)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\s)+)*)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?([=])\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.template.cpp\" },\n        \"2\": { \"name\": \"entity.name.type.template.cpp\" },\n        \"3\": { \"name\": \"keyword.operator.assignment.cpp\" }\n      }\n    },\n    \"template_call_context\": {\n      \"patterns\": [\n        { \"include\": \"#ever_present_context\" },\n        { \"include\": \"#template_call_range\" },\n        { \"include\": \"#storage_types\" },\n        { \"include\": \"#language_constants\" },\n        { \"include\": \"#scope_resolution_template_call_inner_generated\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#number_literal\" },\n        { \"include\": \"#string_context\" },\n        { \"include\": \"#comma_in_template_argument\" },\n        { \"include\": \"#qualified_type\" }\n      ]\n    },\n    \"template_call_innards\": {\n      \"match\": \"((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<1>?)+>)(?:\\\\s)*+\",\n      \"captures\": {\n        \"0\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] }\n      },\n      \"name\": \"meta.template.call.cpp\"\n    },\n    \"template_call_range\": {\n      \"begin\": \"<\",\n      \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n        }\n      },\n      \"name\": \"meta.template.call.cpp\",\n      \"patterns\": [{ \"include\": \"#template_call_context\" }]\n    },\n    \"template_definition\": {\n      \"begin\": \"(?<!\\\\w)(template)(?:(?:\\\\s)+)?(<)\",\n      \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.type.template.cpp\" },\n        \"2\": {\n          \"name\": \"punctuation.section.angle-brackets.start.template.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.definition.cpp\"\n        }\n      },\n      \"name\": \"meta.template.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\w)(?:(?:\\\\s)+)?<\",\n          \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"patterns\": [{ \"include\": \"#template_call_context\" }]\n        },\n        { \"include\": \"#template_definition_context\" }\n      ]\n    },\n    \"template_definition_argument\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\s)+)+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*))|((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?(\\\\.\\\\.\\\\.)(?:(?:\\\\s)+)?((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*))(?:(?:\\\\s)+)?(?:(,)|(?=>|$))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"storage.type.template.argument.$3.cpp\" },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"storage.type.template.argument.$0.cpp\"\n            }\n          ]\n        },\n        \"5\": { \"name\": \"entity.name.type.template.cpp\" },\n        \"6\": { \"name\": \"storage.type.template.cpp\" },\n        \"7\": { \"name\": \"punctuation.vararg-ellipses.template.definition.cpp\" },\n        \"8\": { \"name\": \"entity.name.type.template.cpp\" },\n        \"9\": {\n          \"name\": \"punctuation.separator.delimiter.comma.template.argument.cpp\"\n        }\n      }\n    },\n    \"template_definition_context\": {\n      \"patterns\": [\n        { \"include\": \"#scope_resolution_template_definition_inner_generated\" },\n        { \"include\": \"#template_definition_argument\" },\n        { \"include\": \"#template_argument_defaulted\" },\n        { \"include\": \"#template_call_innards\" },\n        { \"include\": \"#evaluation_context\" }\n      ]\n    },\n    \"template_isolated_definition\": {\n      \"match\": \"(?<!\\\\w)(template)(?:(?:\\\\s)+)?(<)(.*)(>(?:(?:\\\\s)+)?$)\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.template.cpp\" },\n        \"2\": {\n          \"name\": \"punctuation.section.angle-brackets.start.template.definition.cpp\"\n        },\n        \"3\": {\n          \"name\": \"meta.template.definition.cpp\",\n          \"patterns\": [{ \"include\": \"#template_definition_context\" }]\n        },\n        \"4\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.definition.cpp\"\n        }\n      }\n    },\n    \"ternary_operator\": {\n      \"begin\": \"\\\\?\",\n      \"end\": \":|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.operator.ternary.cpp\" } },\n      \"endCaptures\": { \"0\": { \"name\": \"keyword.operator.ternary.cpp\" } },\n      \"patterns\": [\n        { \"include\": \"#ever_present_context\" },\n        { \"include\": \"#string_context\" },\n        { \"include\": \"#number_literal\" },\n        { \"include\": \"#method_access\" },\n        { \"include\": \"#member_access\" },\n        { \"include\": \"#predefined_macros\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#memory_operators\" },\n        { \"include\": \"#wordlike_operators\" },\n        { \"include\": \"#type_casting_operators\" },\n        { \"include\": \"#control_flow_keywords\" },\n        { \"include\": \"#exception_keywords\" },\n        { \"include\": \"#the_this_keyword\" },\n        { \"include\": \"#language_constants\" },\n        { \"include\": \"#builtin_storage_type_initilizer\" },\n        { \"include\": \"#qualifiers_and_specifiers_post_parameters\" },\n        { \"include\": \"#functional_specifiers_pre_parameters\" },\n        { \"include\": \"#storage_types\" },\n        { \"include\": \"#lambdas\" },\n        { \"include\": \"#attributes_context\" },\n        { \"include\": \"#parentheses\" },\n        { \"include\": \"#function_call\" },\n        { \"include\": \"#scope_resolution_inner_generated\" },\n        { \"include\": \"#square_brackets\" },\n        { \"include\": \"#semicolon\" },\n        { \"include\": \"#comma\" }\n      ],\n      \"applyEndPatternLast\": 1\n    },\n    \"the_this_keyword\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": { \"name\": \"variable.language.this.cpp\" }\n      }\n    },\n    \"type_alias\": {\n      \"match\": \"(using)(?:(?:\\\\s)+)?(?!namespace)(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)?(?![\\\\w<:.]))(?:(?:\\\\s)+)?(\\\\=)(?:(?:\\\\s)+)?((?:typename)?)(?:(?:\\\\s)+)?((?:(?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))(?<!\\\\w)(?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\\\w)(?:\\\\s)+)+)?(?:(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)?(?![\\\\w<:.]))|(.*(?<!;)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)?(?:(?:\\\\s)+)?(?:(;)|\\\\n)\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.using.directive.cpp\" },\n        \"2\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"4\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"9\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"11\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": { \"name\": \"keyword.operator.assignment.cpp\" },\n        \"15\": { \"name\": \"keyword.other.typename.cpp\" },\n        \"16\": { \"patterns\": [{ \"include\": \"#storage_specifiers\" }] },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"18\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"20\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"21\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"22\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"25\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"27\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"30\": {\n          \"name\": \"meta.declaration.type.alias.value.unknown.cpp\",\n          \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n        },\n        \"31\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"32\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"33\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"34\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"36\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"37\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"38\": { \"name\": \"punctuation.definition.begin.bracket.square.cpp\" },\n        \"39\": { \"patterns\": [{ \"include\": \"#evaluation_context\" }] },\n        \"40\": { \"name\": \"punctuation.definition.end.bracket.square.cpp\" },\n        \"41\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n      },\n      \"name\": \"meta.declaration.type.alias.cpp\"\n    },\n    \"type_casting_operators\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:reinterpret_cast)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.wordlike.cpp keyword.operator.cast.$3.cpp\"\n        }\n      }\n    },\n    \"typedef_class\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)class(?!\\\\w))\",\n      \"end\": \"(?<=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.other.typedef.cpp\" } },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"meta.head.class.cpp\" },\n            \"1\": { \"name\": \"storage.type.$1.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                { \"include\": \"#attributes_context\" },\n                { \"include\": \"#number_literal\" }\n              ]\n            },\n            \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": { \"name\": \"comment.block.cpp\" },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                    \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": { \"name\": \"comment.block.cpp\" },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"entity.name.type.class.cpp\" },\n                    \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": { \"name\": \"comment.block.cpp\" },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"6\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                    \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": { \"name\": \"comment.block.cpp\" },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": { \"name\": \"comment.block.cpp\" },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": { \"name\": \"comment.block.cpp\" },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"20\": { \"name\": \"punctuation.separator.colon.inheritance.cpp\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.terminator.statement.cpp\" },\n            \"2\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n          },\n          \"name\": \"meta.block.class.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.head.class.cpp\",\n              \"patterns\": [\n                { \"include\": \"#ever_present_context\" },\n                { \"include\": \"#inheritance_context\" },\n                { \"include\": \"#template_call_range\" }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.body.class.cpp\",\n              \"patterns\": [\n                { \"include\": \"#function_pointer\" },\n                { \"include\": \"#static_assert\" },\n                { \"include\": \"#constructor_inline\" },\n                { \"include\": \"#destructor_inline\" },\n                { \"include\": \"$self\" }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.class.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [{ \"include\": \"#inline_comment\" }]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": { \"name\": \"comment.block.cpp\" },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": { \"name\": \"comment.block.cpp\" },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": { \"name\": \"comment.block.cpp\" },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": { \"name\": \"comment.block.cpp\" },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"14\": { \"name\": \"entity.name.type.alias.cpp\" }\n                  }\n                },\n                { \"match\": \",\" }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_function_pointer\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=.*\\\\(\\\\*\\\\s*(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\s*\\\\))\",\n      \"end\": \"(?<=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.other.typedef.cpp\" } },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n          \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                { \"include\": \"#attributes_context\" },\n                { \"include\": \"#storage_types\" },\n                { \"include\": \"#number_literal\" },\n                { \"include\": \"#string_context\" },\n                { \"include\": \"#comma\" },\n                { \"include\": \"#scope_resolution_inner_generated\" },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [{ \"include\": \"#template_call_context\" }]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                { \"include\": \"#attributes_context\" },\n                { \"include\": \"#number_literal\" }\n              ]\n            },\n            \"3\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": { \"name\": \"comment.block.cpp\" },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": { \"name\": \"comment.block.cpp\" },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                { \"include\": \"#template_call_range\" }\n              ]\n            },\n            \"12\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n            \"13\": {},\n            \"14\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"15\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"16\": { \"name\": \"comment.block.cpp\" },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"18\": {},\n            \"19\": {\n              \"patterns\": [\n                { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": { \"name\": \"comment.block.cpp\" },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n              ]\n            },\n            \"20\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"21\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"22\": { \"name\": \"comment.block.cpp\" },\n            \"23\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"24\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"25\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"26\": { \"name\": \"comment.block.cpp\" },\n            \"27\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"28\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"29\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"30\": { \"name\": \"comment.block.cpp\" },\n            \"31\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"32\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n            },\n            \"33\": {\n              \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n            },\n            \"34\": {\n              \"name\": \"entity.name.type.alias.cpp entity.name.type.pointer.function.cpp\"\n            },\n            \"35\": { \"name\": \"punctuation.definition.begin.bracket.square.cpp\" },\n            \"36\": { \"patterns\": [{ \"include\": \"#evaluation_context\" }] },\n            \"37\": { \"name\": \"punctuation.definition.end.bracket.square.cpp\" },\n            \"38\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n            },\n            \"39\": {\n              \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n            },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            }\n          },\n          \"patterns\": [{ \"include\": \"#function_parameter_context\" }]\n        }\n      ]\n    },\n    \"typedef_struct\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)struct(?!\\\\w))\",\n      \"end\": \"(?<=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.other.typedef.cpp\" } },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"meta.head.struct.cpp\" },\n            \"1\": { \"name\": \"storage.type.$1.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                { \"include\": \"#attributes_context\" },\n                { \"include\": \"#number_literal\" }\n              ]\n            },\n            \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": { \"name\": \"comment.block.cpp\" },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                    \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": { \"name\": \"comment.block.cpp\" },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"entity.name.type.struct.cpp\" },\n                    \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": { \"name\": \"comment.block.cpp\" },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"6\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                    \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": { \"name\": \"comment.block.cpp\" },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": { \"name\": \"comment.block.cpp\" },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": { \"name\": \"comment.block.cpp\" },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"20\": { \"name\": \"punctuation.separator.colon.inheritance.cpp\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.terminator.statement.cpp\" },\n            \"2\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n          },\n          \"name\": \"meta.block.struct.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.head.struct.cpp\",\n              \"patterns\": [\n                { \"include\": \"#ever_present_context\" },\n                { \"include\": \"#inheritance_context\" },\n                { \"include\": \"#template_call_range\" }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.body.struct.cpp\",\n              \"patterns\": [\n                { \"include\": \"#function_pointer\" },\n                { \"include\": \"#static_assert\" },\n                { \"include\": \"#constructor_inline\" },\n                { \"include\": \"#destructor_inline\" },\n                { \"include\": \"$self\" }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [{ \"include\": \"#inline_comment\" }]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": { \"name\": \"comment.block.cpp\" },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": { \"name\": \"comment.block.cpp\" },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": { \"name\": \"comment.block.cpp\" },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": { \"name\": \"comment.block.cpp\" },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"14\": { \"name\": \"entity.name.type.alias.cpp\" }\n                  }\n                },\n                { \"match\": \",\" }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_union\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)union(?!\\\\w))\",\n      \"end\": \"(?<=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.other.typedef.cpp\" } },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"meta.head.union.cpp\" },\n            \"1\": { \"name\": \"storage.type.$1.cpp\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": { \"name\": \"comment.block.cpp\" },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                { \"include\": \"#attributes_context\" },\n                { \"include\": \"#number_literal\" }\n              ]\n            },\n            \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": { \"name\": \"comment.block.cpp\" },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                    \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": { \"name\": \"comment.block.cpp\" },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"entity.name.type.union.cpp\" },\n                    \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": { \"name\": \"comment.block.cpp\" },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"6\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                    \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": { \"name\": \"comment.block.cpp\" },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": { \"name\": \"comment.block.cpp\" },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": { \"name\": \"comment.block.cpp\" },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n              ]\n            },\n            \"20\": { \"name\": \"punctuation.separator.colon.inheritance.cpp\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.terminator.statement.cpp\" },\n            \"2\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n          },\n          \"name\": \"meta.block.union.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.head.union.cpp\",\n              \"patterns\": [\n                { \"include\": \"#ever_present_context\" },\n                { \"include\": \"#inheritance_context\" },\n                { \"include\": \"#template_call_range\" }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.body.union.cpp\",\n              \"patterns\": [\n                { \"include\": \"#function_pointer\" },\n                { \"include\": \"#static_assert\" },\n                { \"include\": \"#constructor_inline\" },\n                { \"include\": \"#destructor_inline\" },\n                { \"include\": \"$self\" }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.union.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [{ \"include\": \"#inline_comment\" }]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": { \"name\": \"comment.block.cpp\" },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": { \"name\": \"comment.block.cpp\" },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": { \"name\": \"comment.block.cpp\" },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": { \"name\": \"comment.block.cpp\" },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                      ]\n                    },\n                    \"14\": { \"name\": \"entity.name.type.alias.cpp\" }\n                  }\n                },\n                { \"match\": \",\" }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typeid_operator\": {\n      \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n        },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.typeid\",\n      \"patterns\": [{ \"include\": \"#evaluation_context\" }]\n    },\n    \"typename\": {\n      \"match\": \"(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?<!\\\\w)typename(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<17>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<17>?)+>)?(?![\\\\w<:.]))\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.modifier.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#storage_types\" },\n            { \"include\": \"#number_literal\" },\n            { \"include\": \"#string_context\" },\n            { \"include\": \"#comma\" },\n            { \"include\": \"#scope_resolution_inner_generated\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [{ \"include\": \"#template_call_context\" }]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        \"13\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"14\": {},\n        \"15\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {}\n      }\n    },\n    \"undef\": {\n      \"match\": \"(^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?undef\\\\b)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.directive.undef.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"punctuation.definition.directive.cpp\" },\n        \"5\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": { \"name\": \"entity.name.function.preprocessor.cpp\" }\n      },\n      \"name\": \"meta.preprocessor.undef.cpp\"\n    },\n    \"union_block\": {\n      \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.head.union.cpp\" },\n        \"1\": { \"name\": \"storage.type.$1.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": { \"name\": \"comment.block.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            { \"include\": \"#attributes_context\" },\n            { \"include\": \"#number_literal\" }\n          ]\n        },\n        \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": { \"name\": \"comment.block.cpp\" },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": { \"name\": \"entity.name.type.union.cpp\" },\n                \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": { \"name\": \"comment.block.cpp\" },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                },\n                \"6\": { \"name\": \"storage.type.modifier.final.cpp\" },\n                \"7\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": { \"name\": \"comment.block.cpp\" },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": { \"name\": \"comment.block.cpp\" },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"16\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": { \"name\": \"comment.block.cpp\" },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n          ]\n        },\n        \"20\": { \"name\": \"punctuation.separator.colon.inheritance.cpp\" }\n      },\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.terminator.statement.cpp\" },\n        \"2\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n      },\n      \"name\": \"meta.block.union.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.head.union.cpp\",\n          \"patterns\": [\n            { \"include\": \"#ever_present_context\" },\n            { \"include\": \"#inheritance_context\" },\n            { \"include\": \"#template_call_range\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.body.union.cpp\",\n          \"patterns\": [\n            { \"include\": \"#function_pointer\" },\n            { \"include\": \"#static_assert\" },\n            { \"include\": \"#constructor_inline\" },\n            { \"include\": \"#destructor_inline\" },\n            { \"include\": \"$self\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.union.cpp\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"union_declare\": {\n      \"match\": \"((?<!\\\\w)union(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.union.declare.cpp\" },\n        \"2\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": { \"name\": \"entity.name.type.union.cpp\" },\n        \"5\": {\n          \"patterns\": [\n            { \"match\": \"\\\\*\", \"name\": \"storage.modifier.pointer.cpp\" },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": { \"name\": \"comment.block.cpp\" },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            { \"match\": \"\\\\&\", \"name\": \"storage.modifier.reference.cpp\" }\n          ]\n        },\n        \"6\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": { \"name\": \"variable.other.object.declare.cpp\" },\n        \"13\": { \"patterns\": [{ \"include\": \"#inline_comment\" }] },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": { \"name\": \"comment.block.cpp\" },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    { \"match\": \"\\\\*\", \"name\": \"comment.block.cpp\" }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"using_name\": {\n      \"match\": \"(using)(?:\\\\s)+(?!namespace\\\\b)\",\n      \"captures\": { \"1\": { \"name\": \"keyword.other.using.directive.cpp\" } }\n    },\n    \"using_namespace\": {\n      \"begin\": \"(?<!\\\\w)(using)(?:\\\\s)+(namespace)(?:\\\\s)+((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<6>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?=;|\\\\n)\",\n      \"end\": \";|(?=\\\\\\\\end\\\\{(?:minted|cppcode)\\\\})\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.other.using.directive.cpp\" },\n        \"2\": {\n          \"name\": \"keyword.other.namespace.directive.cpp storage.type.namespace.directive.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            { \"include\": \"#scope_resolution_namespace_using_inner_generated\" }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"5\": { \"patterns\": [{ \"include\": \"#template_call_range\" }] },\n        \"6\": {},\n        \"7\": { \"name\": \"entity.name.namespace.cpp\" }\n      },\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.terminator.statement.cpp\" }\n      },\n      \"name\": \"meta.using-namespace.cpp\"\n    },\n    \"vararg_ellipses\": {\n      \"match\": \"(?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.)\",\n      \"name\": \"punctuation.vararg-ellipses.cpp\"\n    },\n    \"wordlike_operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:noexcept)|(?:xor_eq)|(?:and_eq)|(?:delete)|(?:not_eq)|(?:bitand)|(?:bitor)|(?:compl)|(?:or_eq)|(?:not)|(?:xor)|(?:new)|(?:and)|(?:or))(?!\\\\w)\",\n          \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$0.cpp\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/cpp.embedded.macro.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-cpp-syntax/blob/master/autogenerated/cpp.embedded.macro.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-cpp-syntax/commit/924295fc44bde1a00fab60da3a2caca4509adb25\",\n  \"name\": \"C++\",\n  \"scopeName\": \"source.cpp.embedded.macro\",\n  \"patterns\": [\n    {\n      \"include\": \"#ever_present_context\"\n    },\n    {\n      \"include\": \"#constructor_root\"\n    },\n    {\n      \"include\": \"#destructor_root\"\n    },\n    {\n      \"include\": \"#function_definition\"\n    },\n    {\n      \"include\": \"#operator_overload\"\n    },\n    {\n      \"include\": \"#using_namespace\"\n    },\n    {\n      \"include\": \"source.cpp#type_alias\"\n    },\n    {\n      \"include\": \"source.cpp#using_name\"\n    },\n    {\n      \"include\": \"source.cpp#namespace_alias\"\n    },\n    {\n      \"include\": \"#namespace_block\"\n    },\n    {\n      \"include\": \"#extern_block\"\n    },\n    {\n      \"include\": \"#typedef_class\"\n    },\n    {\n      \"include\": \"#typedef_struct\"\n    },\n    {\n      \"include\": \"#typedef_union\"\n    },\n    {\n      \"include\": \"source.cpp#misc_keywords\"\n    },\n    {\n      \"include\": \"source.cpp#standard_declares\"\n    },\n    {\n      \"include\": \"#class_block\"\n    },\n    {\n      \"include\": \"#struct_block\"\n    },\n    {\n      \"include\": \"#union_block\"\n    },\n    {\n      \"include\": \"#enum_block\"\n    },\n    {\n      \"include\": \"source.cpp#template_isolated_definition\"\n    },\n    {\n      \"include\": \"#template_definition\"\n    },\n    {\n      \"include\": \"source.cpp#access_control_keywords\"\n    },\n    {\n      \"include\": \"#block\"\n    },\n    {\n      \"include\": \"#static_assert\"\n    },\n    {\n      \"include\": \"#assembly\"\n    },\n    {\n      \"include\": \"#function_pointer\"\n    },\n    {\n      \"include\": \"#evaluation_context\"\n    }\n  ],\n  \"repository\": {\n    \"alignas_attribute\": {\n      \"begin\": \"alignas\\\\(\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        }\n      ]\n    },\n    \"alignas_operator\": {\n      \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignas\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"alignof_operator\": {\n      \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignof\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"assembly\": {\n      \"begin\": \"(\\\\b(?:__asm__|asm)\\\\b)(?:(?:\\\\s)+)?((?:volatile)?)\",\n      \"end\": \"(?!\\\\G)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.asm.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.asm.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\n)|$)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.cpp\"\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.assembly.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(R?)(\\\")\",\n              \"end\": \"\\\"|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.encoding.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.string.begin.assembly.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.assembly.cpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.cpp\",\n              \"contentName\": \"meta.embedded.assembly\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.asm\"\n                },\n                {\n                  \"include\": \"source.x86\"\n                },\n                {\n                  \"include\": \"source.x86_64\"\n                },\n                {\n                  \"include\": \"source.arm\"\n                },\n                {\n                  \"include\": \"source.cpp#backslash_escapes\"\n                },\n                {\n                  \"include\": \"#string_escaped_char\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\[((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.other.asm.label.cpp\"\n                },\n                \"6\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"9\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.delimiter.colon.assembly.cpp\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attributes_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#cpp_attributes\"\n        },\n        {\n          \"include\": \"#gcc_attributes\"\n        },\n        {\n          \"include\": \"#ms_attributes\"\n        },\n        {\n          \"include\": \"#alignas_attribute\"\n        }\n      ]\n    },\n    \"block\": {\n      \"begin\": \"{\",\n      \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.begin.bracket.curly.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.end.bracket.curly.cpp\"\n        }\n      },\n      \"name\": \"meta.block.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_body_context\"\n        }\n      ]\n    },\n    \"block_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\*)\",\n      \"end\": \"\\\\*\\\\/|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.cpp\"\n        }\n      },\n      \"name\": \"comment.block.cpp\"\n    },\n    \"builtin_storage_type_initilizer\": {\n      \"begin\": \"(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)(?:\\\\s)*+(?<!\\\\w)(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n        },\n        \"3\": {\n          \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n        },\n        \"4\": {\n          \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.initializer.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"case_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)case(?!\\\\w))\",\n      \"end\": \":|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.case.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.case.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"class_block\": {\n      \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.class.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.class.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.head.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.body.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(?:(?:\\\\s)+)?+(\\\\/\\\\/[!\\\\/]+)\",\n          \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.documentation.cpp\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"comment.line.double-slash.documentation.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.italic.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.bold.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inline.raw.string.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\/\\\\*[!*]+(?=\\\\s))(.+)([!*]*\\\\*\\\\/)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.italic.doxygen.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.bold.doxygen.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.inline.raw.string.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"in|out\",\n                          \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"variable.parameter.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                  \"name\": \"storage.type.class.gtkdoc.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\"\n        },\n        {\n          \"begin\": \"(?:(?:\\\\s)+)?+\\\\/\\\\*[!*]+(?:(?:(?:\\\\n)|$)|(?=\\\\s))\",\n          \"end\": \"[!*]*\\\\*\\\\/|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.italic.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.bold.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inline.raw.string.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.cpp#emacs_file_banner\"\n        },\n        {\n          \"include\": \"#block_comment\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"source.cpp#invalid_comment_end\"\n        }\n      ]\n    },\n    \"constructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.constructor.cpp entity.name.function.definition.special.constructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n            },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.initializers.cpp\"\n                }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_range\"\n                        }\n                      ]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constructor_root\": {\n      \"begin\": \"\\\\s*+((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.constructor.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.constructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n            },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.initializers.cpp\"\n                }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_range\"\n                        }\n                      ]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"cpp_attributes\": {\n      \"begin\": \"\\\\[\\\\[\",\n      \"end\": \"\\\\]\\\\]|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        }\n      ]\n    },\n    \"curly_initializer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\{)\",\n      \"end\": \"\\\\}|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"name\": \"meta.initialization.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"source.cpp#comma\"\n        }\n      ]\n    },\n    \"decltype\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"decltype_specifier\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"default_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)default(?!\\\\w))\",\n      \"end\": \":|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.default.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.case.default.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"destructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(~(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n            }\n          ]\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.destructor.cpp entity.name.function.definition.special.member.destructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"destructor_root\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))~\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.destructor.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)~(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.member.destructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"diagnostic\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:error|warning)))\\\\b(?:(?:\\\\s)+)?\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.diagnostic.$7.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"7\": {}\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.diagnostic.$reference(directive).cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"(?:(\\\")|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"(?:(')|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[^'\\\"]\",\n          \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"string.unquoted.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"enum_block\": {\n      \"begin\": \"((?<!\\\\w)enum(?!\\\\w))(?:(?:\\\\s)+(class|struct))?(?:(?:(?:\\\\s)+|((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\))))|(?={))(?:(?:\\\\s)+)?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)(?:(?:(?:\\\\s)+)?(:)(?:(?:\\\\s)+)?(?:((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?(::))?(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))?\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.enum.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.enum.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.enum.enum-key.$2.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.colon.type-specifier.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {},\n        \"10\": {\n          \"name\": \"entity.name.scope-resolution.cpp\"\n        },\n        \"11\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"14\": {\n          \"name\": \"storage.type.integral.$14.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.enum.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.head.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.body.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"source.cpp#enumerator_list\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#semicolon\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"evaluation_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"source.cpp#member_access\"\n        },\n        {\n          \"include\": \"source.cpp#predefined_macros\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"source.cpp#memory_operators\"\n        },\n        {\n          \"include\": \"source.cpp#wordlike_operators\"\n        },\n        {\n          \"include\": \"source.cpp#type_casting_operators\"\n        },\n        {\n          \"include\": \"source.cpp#control_flow_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#exception_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#the_this_keyword\"\n        },\n        {\n          \"include\": \"source.cpp#language_constants\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"source.cpp#qualifiers_and_specifiers_post_parameters\"\n        },\n        {\n          \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#lambdas\"\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"include\": \"#parentheses\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_inner_generated\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"source.cpp#semicolon\"\n        },\n        {\n          \"include\": \"source.cpp#comma\"\n        }\n      ]\n    },\n    \"ever_present_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#pragma_mark\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"source.cpp#include\"\n        },\n        {\n          \"include\": \"#line\"\n        },\n        {\n          \"include\": \"#diagnostic\"\n        },\n        {\n          \"include\": \"source.cpp#undef\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_range\"\n        },\n        {\n          \"include\": \"source.cpp#single_line_macro\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"source.cpp#preprocessor_conditional_standalone\"\n        },\n        {\n          \"include\": \"source.cpp#macro_argument\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"extern_block\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(extern)(?=\\\\s*\\\\\\\")\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.extern.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.extern.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.extern.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.head.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.body.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"function_body_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#using_namespace\"\n        },\n        {\n          \"include\": \"source.cpp#type_alias\"\n        },\n        {\n          \"include\": \"source.cpp#using_name\"\n        },\n        {\n          \"include\": \"source.cpp#namespace_alias\"\n        },\n        {\n          \"include\": \"#typedef_class\"\n        },\n        {\n          \"include\": \"#typedef_struct\"\n        },\n        {\n          \"include\": \"#typedef_union\"\n        },\n        {\n          \"include\": \"source.cpp#misc_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#standard_declares\"\n        },\n        {\n          \"include\": \"#class_block\"\n        },\n        {\n          \"include\": \"#struct_block\"\n        },\n        {\n          \"include\": \"#union_block\"\n        },\n        {\n          \"include\": \"#enum_block\"\n        },\n        {\n          \"include\": \"source.cpp#access_control_keywords\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#static_assert\"\n        },\n        {\n          \"include\": \"#assembly\"\n        },\n        {\n          \"include\": \"#function_pointer\"\n        },\n        {\n          \"include\": \"#switch_statement\"\n        },\n        {\n          \"include\": \"source.cpp#goto_statement\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"source.cpp#label\"\n        }\n      ]\n    },\n    \"function_call\": {\n      \"begin\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wint_least16_t|^int_least16_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Watomic_cancel|^atomic_cancel|\\\\Watomic_commit|^atomic_commit|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wint_least8_t|^int_least8_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wthread_local|^thread_local|\\\\Wsynchronized|^synchronized|\\\\Wstatic_cast|^static_cast|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wnamespace|^namespace|\\\\Wconstinit|^constinit|\\\\Wco_return|^co_return|\\\\Wnoexcept|^noexcept|\\\\Wnoexcept|^noexcept|\\\\Wcontinue|^continue|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wunsigned|^unsigned|\\\\Wu_quad_t|^u_quad_t|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wuint16_t|^uint16_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint64_t|^uint64_t|\\\\Wintptr_t|^intptr_t|\\\\Wintmax_t|^intmax_t|\\\\Wintmax_t|^intmax_t|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wexplicit|^explicit|\\\\Wvolatile|^volatile|\\\\Wnoexcept|^noexcept|\\\\Wtemplate|^template|\\\\Woperator|^operator|\\\\Wdecltype|^decltype|\\\\Wtypename|^typename|\\\\Wrequires|^requires|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wreflexpr|^reflexpr|\\\\Walignof|^alignof|\\\\Walignas|^alignas|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wu_short|^u_short|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wnlink_t|^nlink_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wnullptr|^nullptr|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wprivate|^private|\\\\Wtypedef|^typedef|\\\\W__asm__|^__asm__|\\\\Wconcept|^concept|\\\\Wsizeof|^sizeof|\\\\Wdelete|^delete|\\\\Wnot_eq|^not_eq|\\\\Wbitand|^bitand|\\\\Wand_eq|^and_eq|\\\\Wxor_eq|^xor_eq|\\\\Wtypeid|^typeid|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wsigned|^signed|\\\\Wdouble|^double|\\\\Wu_char|^u_char|\\\\Wu_long|^u_long|\\\\Wushort|^ushort|\\\\Wquad_t|^quad_t|\\\\Wmode_t|^mode_t|\\\\Wsize_t|^size_t|\\\\Wtime_t|^time_t|\\\\Wint8_t|^int8_t|\\\\Wstruct|^struct|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Winline|^inline|\\\\Wfriend|^friend|\\\\Wpublic|^public|\\\\Wexport|^export|\\\\Wimport|^import|\\\\Wmodule|^module|\\\\Wcompl|^compl|\\\\Wbitor|^bitor|\\\\Wthrow|^throw|\\\\Wor_eq|^or_eq|\\\\Wwhile|^while|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wconst|^const|\\\\Wusing|^using|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wcase|^case|\\\\Wauto|^auto|\\\\Wvoid|^void|\\\\Wchar|^char|\\\\Wlong|^long|\\\\Wbool|^bool|\\\\Wuint|^uint|\\\\Wid_t|^id_t|\\\\Wid_t|^id_t|\\\\WNULL|^NULL|\\\\Wtrue|^true|\\\\Wenum|^enum|\\\\Wthis|^this|\\\\Wnot|^not|\\\\Wnew|^new|\\\\Wxor|^xor|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wtry|^try|\\\\Wint|^int|\\\\Wasm|^asm|\\\\Wor|^or|\\\\Wdo|^do|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#scope_resolution_function_call_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.function.call.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {},\n        \"12\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"function_definition\": {\n      \"begin\": \"(?:(?:^|\\\\G|(?<=;|\\\\}))|(?<=>))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)template(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?<!\\\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wint_least16_t|^int_least16_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Watomic_cancel|^atomic_cancel|\\\\Watomic_commit|^atomic_commit|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wint_least8_t|^int_least8_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wthread_local|^thread_local|\\\\Wsynchronized|^synchronized|\\\\Wstatic_cast|^static_cast|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wnamespace|^namespace|\\\\Wconstinit|^constinit|\\\\Wco_return|^co_return|\\\\Wnoexcept|^noexcept|\\\\Wnoexcept|^noexcept|\\\\Wcontinue|^continue|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wunsigned|^unsigned|\\\\Wu_quad_t|^u_quad_t|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wuint16_t|^uint16_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint64_t|^uint64_t|\\\\Wintptr_t|^intptr_t|\\\\Wintmax_t|^intmax_t|\\\\Wintmax_t|^intmax_t|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wexplicit|^explicit|\\\\Wvolatile|^volatile|\\\\Wnoexcept|^noexcept|\\\\Wtemplate|^template|\\\\Woperator|^operator|\\\\Wdecltype|^decltype|\\\\Wtypename|^typename|\\\\Wrequires|^requires|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wreflexpr|^reflexpr|\\\\Walignof|^alignof|\\\\Walignas|^alignas|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wu_short|^u_short|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wnlink_t|^nlink_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wnullptr|^nullptr|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wprivate|^private|\\\\Wtypedef|^typedef|\\\\W__asm__|^__asm__|\\\\Wconcept|^concept|\\\\Wsizeof|^sizeof|\\\\Wdelete|^delete|\\\\Wnot_eq|^not_eq|\\\\Wbitand|^bitand|\\\\Wand_eq|^and_eq|\\\\Wxor_eq|^xor_eq|\\\\Wtypeid|^typeid|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wsigned|^signed|\\\\Wdouble|^double|\\\\Wu_char|^u_char|\\\\Wu_long|^u_long|\\\\Wushort|^ushort|\\\\Wquad_t|^quad_t|\\\\Wmode_t|^mode_t|\\\\Wsize_t|^size_t|\\\\Wtime_t|^time_t|\\\\Wint8_t|^int8_t|\\\\Wstruct|^struct|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Winline|^inline|\\\\Wfriend|^friend|\\\\Wpublic|^public|\\\\Wexport|^export|\\\\Wimport|^import|\\\\Wmodule|^module|\\\\Wcompl|^compl|\\\\Wbitor|^bitor|\\\\Wthrow|^throw|\\\\Wor_eq|^or_eq|\\\\Wwhile|^while|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wconst|^const|\\\\Wusing|^using|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wcase|^case|\\\\Wauto|^auto|\\\\Wvoid|^void|\\\\Wchar|^char|\\\\Wlong|^long|\\\\Wbool|^bool|\\\\Wuint|^uint|\\\\Wid_t|^id_t|\\\\Wid_t|^id_t|\\\\WNULL|^NULL|\\\\Wtrue|^true|\\\\Wenum|^enum|\\\\Wthis|^this|\\\\Wnot|^not|\\\\Wnew|^new|\\\\Wxor|^xor|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wtry|^try|\\\\Wint|^int|\\\\Wasm|^asm|\\\\Wor|^or|\\\\Wdo|^do|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.$1.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"storage.modifier.$12.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"29\": {},\n        \"30\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"31\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"32\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"33\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"34\": {},\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"38\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"39\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"40\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"41\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"42\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"43\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"44\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"45\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"46\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"47\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"48\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"49\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"50\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"51\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"52\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"53\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"54\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"55\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"56\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"57\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"58\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"59\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"60\": {},\n        \"61\": {\n          \"name\": \"entity.name.function.definition.cpp\"\n        },\n        \"62\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"63\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"64\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"65\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#parameter_or_maybe_value\"\n                },\n                {\n                  \"include\": \"source.cpp#comma\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<=^|\\\\))(?:(?:\\\\s)+)?(->)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)?(?![\\\\w<:.]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.function.return-type.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"meta.qualified_type.cpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                      \"name\": \"storage.type.$0.cpp\"\n                    },\n                    {\n                      \"include\": \"#attributes_context\"\n                    },\n                    {\n                      \"include\": \"#storage_types\"\n                    },\n                    {\n                      \"include\": \"source.cpp#number_literal\"\n                    },\n                    {\n                      \"include\": \"#string_context\"\n                    },\n                    {\n                      \"include\": \"source.cpp#comma\"\n                    },\n                    {\n                      \"include\": \"source.cpp#scope_resolution_inner_generated\"\n                    },\n                    {\n                      \"begin\": \"<\",\n                      \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                        }\n                      },\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                        }\n                      },\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_context\"\n                        }\n                      ]\n                    },\n                    {\n                      \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                      \"name\": \"entity.name.type.cpp\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attributes_context\"\n                    },\n                    {\n                      \"include\": \"source.cpp#number_literal\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"10\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"11\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"13\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"14\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"15\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"16\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                      \"name\": \"entity.name.scope-resolution.type.cpp\"\n                    },\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"17\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"18\": {},\n                \"19\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"20\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"21\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"22\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"23\": {}\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_parameter_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#parameter\"\n        },\n        {\n          \"include\": \"source.cpp#comma\"\n        }\n      ]\n    },\n    \"function_pointer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": {\n          \"name\": \"variable.other.definition.pointer.function.cpp\"\n        },\n        \"35\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function_parameter_context\"\n        }\n      ]\n    },\n    \"function_pointer_parameter\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": {\n          \"name\": \"variable.parameter.pointer.function.cpp\"\n        },\n        \"35\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function_parameter_context\"\n        }\n      ]\n    },\n    \"gcc_attributes\": {\n      \"begin\": \"__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(\",\n      \"end\": \"\\\\)\\\\s*\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        }\n      ]\n    },\n    \"inheritance_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.comma.inheritance.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:protected)|(?:private)|(?:public))(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.access.$0.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)virtual(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.virtual.cpp\"\n        },\n        {\n          \"match\": \"(?<=protected|virtual|private|public|,|:)(?:(?:\\\\s)+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)?(?![\\\\w<:.]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#storage_types\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                },\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"source.cpp#comma\"\n                },\n                {\n                  \"include\": \"source.cpp#scope_resolution_inner_generated\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"9\": {},\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {}\n          }\n        }\n      ]\n    },\n    \"lambdas\": {\n      \"begin\": \"(?:(?<=[^\\\\s]|^)(?<![\\\\w\\\\]\\\\)\\\\[\\\\*&\\\">])|(?<=\\\\Wreturn|^return))(?:(?:\\\\s)+)?(\\\\[(?!\\\\[| *+\\\"| *+\\\\d))((?:[^\\\\[\\\\]]|((?<!\\\\[)\\\\[(?!\\\\[)(?:[^\\\\[\\\\]]*+\\\\g<3>?)++\\\\]))*+)(\\\\](?!((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))[\\\\[\\\\];]))\",\n      \"end\": \"(?<=[;}])|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.capture.begin.lambda.cpp\"\n        },\n        \"2\": {\n          \"name\": \"meta.lambda.capture.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#the_this_keyword\"\n            },\n            {\n              \"match\": \"((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?=\\\\]|\\\\z|$)|(,))|(\\\\=))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.capture.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"3\": {},\n        \"4\": {\n          \"name\": \"punctuation.definition.capture.end.lambda.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.lambda.cpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.parameters.lambda.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_parameter_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:constexpr)|(?:consteval)|(?:mutable))(?!\\\\w)\",\n          \"name\": \"storage.modifier.lambda.$0.cpp\"\n        },\n        {\n          \"match\": \"(->)((?:.+?(?=\\\\{|$))?)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.lambda.return-type.cpp\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.return-type.lambda.cpp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.body.lambda.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"line\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?line\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.line.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.line.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"line_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\/)\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"comment.line.double-slash.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"macro\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?define\\\\b)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.define.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.preprocessor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.macro.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G(?:(?:\\\\s)+)?(\\\\()([^\\\\(]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.preprocessor.cpp\"\n            },\n            \"2\": {\n              \"name\": \"meta.function.preprocessor.parameters.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[(,])(?:(?:\\\\s)+)?((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable.parameter.preprocessor.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.cpp\"\n                },\n                {\n                  \"match\": \"\\\\.\\\\.\\\\.\",\n                  \"name\": \"punctuation.vararg-ellipses.variable.parameter.preprocessor.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.end.preprocessor.cpp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#macro_context\"\n        },\n        {\n          \"include\": \"source.cpp#macro_argument\"\n        }\n      ]\n    },\n    \"macro_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp.embedded.macro\"\n        }\n      ]\n    },\n    \"method_access\": {\n      \"begin\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:(?:\\\\s)+)?(?:(?:\\\\.\\\\*|\\\\.)|(?:->\\\\*|->))(?:(?:\\\\s)+)?)*)(?:(?:\\\\s)+)?(~?(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"variable.language.this.cpp\"\n        },\n        \"6\": {\n          \"name\": \"variable.other.object.access.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.dot-access.cpp\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.pointer-access.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=(?:\\\\.\\\\*|\\\\.|->|->\\\\*))(?:(?:\\\\s)+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.property.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.access.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"entity.name.function.member.cpp\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"ms_attributes\": {\n      \"begin\": \"__declspec\\\\(\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        }\n      ]\n    },\n    \"namespace_block\": {\n      \"begin\": \"((?<!\\\\w)namespace(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.namespace.cpp\"\n        },\n        \"1\": {\n          \"name\": \"keyword.other.namespace.definition.cpp storage.type.namespace.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.namespace.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.head.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<4>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(?:(::)(?:(?:\\\\s)+)?(inline))?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#scope_resolution_namespace_block_inner_generated\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"4\": {},\n                \"5\": {\n                  \"name\": \"entity.name.namespace.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"storage.modifier.inline.cpp\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.body.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"noexcept_operator\": {\n      \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.noexcept\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"operator_overload\": {\n      \"begin\": \"(?:(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(operator)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(?:(?:((?:(?:delete\\\\[\\\\])|(?:delete)|(?:new\\\\[\\\\])|(?:new)|(?:\\\\->\\\\*)|(?:<<=)|(?:>>=)|(?:<=>)|(?:\\\\+\\\\+)|(?:\\\\-\\\\-)|(?:\\\\(\\\\))|(?:\\\\[\\\\])|(?:\\\\->)|(?:\\\\+\\\\+)|(?:\\\\-\\\\-)|(?:<<)|(?:>>)|(?:<=)|(?:>=)|(?:==)|(?:!=)|(?:&&)|(?:\\\\|\\\\|)|(?:\\\\+=)|(?:\\\\-=)|(?:\\\\*=)|(?:\\\\/=)|(?:%=)|(?:&=)|(?:\\\\^=)|(?:\\\\|=)|(?:\\\\+)|(?:\\\\-)|!|~|(?:\\\\*)|&|(?:\\\\*)|(?:\\\\/)|%|(?:\\\\+)|(?:\\\\-)|<|>|&|(?:\\\\^)|(?:\\\\|)|=|,))|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:\\\\[\\\\])?)))|(\\\"\\\")((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\<|\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\"\n        },\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"33\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"34\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"36\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"37\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"38\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"39\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"40\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"41\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"42\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"43\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"44\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"45\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"46\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"47\": {},\n        \"48\": {\n          \"name\": \"keyword.other.operator.overload.cpp\"\n        },\n        \"49\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"50\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"51\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"52\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"53\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator-overload.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator-overload.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"54\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"55\": {},\n        \"56\": {\n          \"name\": \"entity.name.operator.cpp\"\n        },\n        \"57\": {\n          \"name\": \"entity.name.operator.type.cpp\"\n        },\n        \"58\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"entity.name.operator.type.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"entity.name.operator.type.reference.cpp\"\n            }\n          ]\n        },\n        \"59\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"60\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"61\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"62\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"63\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"64\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"65\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"66\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"67\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"68\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"69\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"70\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"71\": {\n          \"name\": \"entity.name.operator.type.array.cpp\"\n        },\n        \"72\": {\n          \"name\": \"entity.name.operator.custom-literal.cpp\"\n        },\n        \"73\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"74\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"75\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"76\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"77\": {\n          \"name\": \"entity.name.operator.custom-literal.cpp\"\n        },\n        \"78\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"79\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"80\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"81\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.operator-overload.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.operator-overload\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"include\": \"source.cpp#qualifiers_and_specifiers_post_parameters\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignof\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignas\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.typeid\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.noexcept\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"--\",\n          \"name\": \"keyword.operator.decrement.cpp\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.cpp\"\n        },\n        {\n          \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()\\\\/=\",\n          \"name\": \"keyword.operator.assignment.compound.cpp\"\n        },\n        {\n          \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n          \"name\": \"keyword.operator.assignment.compound.bitwise.cpp\"\n        },\n        {\n          \"match\": \"<<|>>\",\n          \"name\": \"keyword.operator.bitwise.shift.cpp\"\n        },\n        {\n          \"match\": \"!=|<=|>=|==|<|>\",\n          \"name\": \"keyword.operator.comparison.cpp\"\n        },\n        {\n          \"match\": \"&&|!|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.cpp\"\n        },\n        {\n          \"match\": \"&|\\\\||\\\\^|~\",\n          \"name\": \"keyword.operator.bitwise.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#assignment_operator\"\n        },\n        {\n          \"match\": \"%|\\\\*|\\\\/|-|\\\\+\",\n          \"name\": \"keyword.operator.arithmetic.cpp\"\n        },\n        {\n          \"include\": \"#ternary_operator\"\n        }\n      ]\n    },\n    \"parameter\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n        }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#function_pointer_parameter\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"source.cpp#vararg_ellipses\"\n        },\n        {\n          \"match\": \"((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wthread_local|^thread_local|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#storage_types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.specifier.parameter.cpp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": {\n              \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n            },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": {\n              \"name\": \"entity.name.type.parameter.cpp\"\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_parameter_inner_generated\"\n        },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\=\",\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\)|,|\\\\[|=|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"parameter_or_maybe_value\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n        }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#function_pointer_parameter\"\n        },\n        {\n          \"include\": \"source.cpp#memory_operators\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"#curly_initializer\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"source.cpp#vararg_ellipses\"\n        },\n        {\n          \"match\": \"((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wthread_local|^thread_local|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#storage_types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.specifier.parameter.cpp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": {\n              \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n            },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": {\n              \"name\": \"entity.name.type.parameter.cpp\"\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_parameter_inner_generated\"\n        },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=(?:\\\\)|,|\\\\[|=|\\\\/\\\\/|(?:(?:\\\\n)|$)))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.cpp\"\n        }\n      },\n      \"name\": \"meta.parens.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#over_qualified_types\"\n        },\n        {\n          \"match\": \"(?<!:):(?!:)\",\n          \"name\": \"punctuation.separator.colon.range-based.cpp\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"pragma\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?pragma\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.pragma.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.pragma.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n          \"name\": \"entity.other.attribute-name.pragma.preprocessor.cpp\"\n        },\n        {\n          \"include\": \"#preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor_conditional_defined\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"source.cpp#language_constants\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"source.cpp#d9bc4796b0b_preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"source.cpp#predefined_macros\"\n        },\n        {\n          \"include\": \"source.cpp#macro_name\"\n        },\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_defined\": {\n      \"begin\": \"((?<!\\\\w)defined(?!\\\\w))(\\\\()\",\n      \"end\": \"(?:\\\\)|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.defined.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.parens.control.defined.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.control.defined.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#macro_name\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.cpp\"\n        }\n      },\n      \"name\": \"meta.parens.preprocessor.conditional.cpp\"\n    },\n    \"preprocessor_conditional_range\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:(?:ifndef|ifdef)|if))\",\n      \"end\": \"^(?!\\\\s*+#\\\\s*(?:else|endif))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.conditional.$6.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"6\": {}\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?<=ifndef|ifdef|if)\",\n          \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.preprocessor.conditional.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor_conditional_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"preprocessor_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#pragma_mark\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"source.cpp#include\"\n        },\n        {\n          \"include\": \"#line\"\n        },\n        {\n          \"include\": \"#diagnostic\"\n        },\n        {\n          \"include\": \"source.cpp#undef\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_range\"\n        },\n        {\n          \"include\": \"source.cpp#single_line_macro\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"source.cpp#preprocessor_conditional_standalone\"\n        },\n        {\n          \"include\": \"source.cpp#macro_argument\"\n        }\n      ]\n    },\n    \"sizeof_operator\": {\n      \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"sizeof_variadic_operator\": {\n      \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"square_brackets\": {\n      \"name\": \"meta.bracket.square.access\",\n      \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.object\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.begin.bracket.square\"\n        }\n      },\n      \"end\": \"\\\\]|(?=(?<!\\\\\\\\)\\n)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.square\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"static_assert\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)static_assert|_Static_assert(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.other.static_assert.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(,)(?:(?:\\\\s)+)?(?=(?:L|u8|u|U(?:(?:\\\\s)+)?\\\\\\\")?)\",\n          \"end\": \"(?=\\\\))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"meta.static_assert.message.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"storage_types\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#storage_specifiers\"\n        },\n        {\n          \"include\": \"source.cpp#inline_builtin_storage_type\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"source.cpp#typename\"\n        }\n      ]\n    },\n    \"string_context\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?:u|u8|U|L)?)\\\"\",\n          \"end\": \"\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8})\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\['\\\"?\\\\\\\\abfnrtv]\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\[0-7]{1,3}\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.unknown-escape.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#string_escapes_context_c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<![0-9A-Fa-f])((?:u|u8|U|L)?)'\",\n          \"end\": \"'|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.unknown-escape.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#string_escapes_context_c\"\n            },\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:(?:_r|re)|regex)\\\\(\",\n          \"end\": \"\\\\)(?:(?:_r|re)|regex)\\\\\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.regex.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:glsl|GLSL)\\\\(\",\n          \"end\": \"\\\\)(?:glsl|GLSL)\\\\\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"meta.string.quoted.double.raw.glsl.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.glsl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\(\",\n          \"end\": \"\\\\)(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"meta.string.quoted.double.raw.sql.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:u|u8|U|L)?R)\\\"(?:([^ ()\\\\\\\\\\\\t]{0,16})|([^ ()\\\\\\\\\\\\t]*))\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.delimiter-too-long\"\n            }\n          },\n          \"end\": \"\\\\)\\\\2(\\\\3)\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            },\n            \"1\": {\n              \"name\": \"invalid.illegal.delimiter-too-long\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw\"\n        }\n      ]\n    },\n    \"struct_block\": {\n      \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.struct.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.struct.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.struct.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.head.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.body.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"switch_conditional_parentheses\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.switch.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)switch(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.switch.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.switch.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.switch.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.head.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#switch_conditional_parentheses\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.body.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#default_statement\"\n            },\n            {\n              \"include\": \"#case_statement\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template_call_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"source.cpp#language_constants\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_template_call_inner_generated\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"source.cpp#comma_in_template_argument\"\n        },\n        {\n          \"include\": \"source.cpp#qualified_type\"\n        }\n      ]\n    },\n    \"template_call_range\": {\n      \"begin\": \"<\",\n      \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n        }\n      },\n      \"name\": \"meta.template.call.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#template_call_context\"\n        }\n      ]\n    },\n    \"template_definition\": {\n      \"begin\": \"(?<!\\\\w)(template)(?:(?:\\\\s)+)?(<)\",\n      \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.angle-brackets.start.template.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.definition.cpp\"\n        }\n      },\n      \"name\": \"meta.template.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\w)(?:(?:\\\\s)+)?<\",\n          \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#template_definition_context\"\n        }\n      ]\n    },\n    \"template_definition_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#scope_resolution_template_definition_inner_generated\"\n        },\n        {\n          \"include\": \"source.cpp#template_definition_argument\"\n        },\n        {\n          \"include\": \"source.cpp#template_argument_defaulted\"\n        },\n        {\n          \"include\": \"source.cpp#template_call_innards\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"ternary_operator\": {\n      \"begin\": \"\\\\?\",\n      \"end\": \":|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"source.cpp#member_access\"\n        },\n        {\n          \"include\": \"source.cpp#predefined_macros\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"source.cpp#memory_operators\"\n        },\n        {\n          \"include\": \"source.cpp#wordlike_operators\"\n        },\n        {\n          \"include\": \"source.cpp#type_casting_operators\"\n        },\n        {\n          \"include\": \"source.cpp#control_flow_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#exception_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#the_this_keyword\"\n        },\n        {\n          \"include\": \"source.cpp#language_constants\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"source.cpp#qualifiers_and_specifiers_post_parameters\"\n        },\n        {\n          \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#lambdas\"\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"include\": \"#parentheses\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_inner_generated\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"source.cpp#semicolon\"\n        },\n        {\n          \"include\": \"source.cpp#comma\"\n        }\n      ],\n      \"applyEndPatternLast\": 1\n    },\n    \"typedef_class\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)class(?!\\\\w))\",\n      \"end\": \"(?<=;)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.class.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.class.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.class.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.head.class.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.body.class.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.class.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"source.cpp#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_function_pointer\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=.*\\\\(\\\\*\\\\s*(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\s*\\\\))\",\n      \"end\": \"(?<=;)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n          \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#storage_types\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                },\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"source.cpp#comma\"\n                },\n                {\n                  \"include\": \"source.cpp#scope_resolution_inner_generated\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"13\": {},\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"15\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"16\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"18\": {},\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"21\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"22\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"23\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"24\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"25\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"26\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"27\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"28\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"29\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"30\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"31\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"32\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n            },\n            \"33\": {\n              \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n            },\n            \"34\": {\n              \"name\": \"entity.name.type.alias.cpp entity.name.type.pointer.function.cpp\"\n            },\n            \"35\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n            },\n            \"36\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            \"37\": {\n              \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n            },\n            \"38\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n            },\n            \"39\": {\n              \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_parameter_context\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_struct\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)struct(?!\\\\w))\",\n      \"end\": \"(?<=;)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.struct.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.struct.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.struct.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.head.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.body.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"source.cpp#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_union\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)union(?!\\\\w))\",\n      \"end\": \"(?<=;)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.union.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.union.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.union.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.head.union.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.body.union.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.union.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"source.cpp#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typeid_operator\": {\n      \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.typeid\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"union_block\": {\n      \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.union.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.union.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.union.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.head.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.body.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"using_namespace\": {\n      \"begin\": \"(?<!\\\\w)(using)(?:\\\\s)+(namespace)(?:\\\\s)+((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<6>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?=;|\\\\n)\",\n      \"end\": \";|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.directive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.namespace.directive.cpp storage.type.namespace.directive.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#scope_resolution_namespace_using_inner_generated\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"6\": {},\n        \"7\": {\n          \"name\": \"entity.name.namespace.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.using-namespace.cpp\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/cpp.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-cpp-syntax/blob/master/autogenerated/cpp.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-cpp-syntax/commit/924295fc44bde1a00fab60da3a2caca4509adb25\",\n  \"name\": \"C++\",\n  \"scopeName\": \"source.cpp\",\n  \"patterns\": [\n    {\n      \"include\": \"#ever_present_context\"\n    },\n    {\n      \"include\": \"#constructor_root\"\n    },\n    {\n      \"include\": \"#destructor_root\"\n    },\n    {\n      \"include\": \"#function_definition\"\n    },\n    {\n      \"include\": \"#operator_overload\"\n    },\n    {\n      \"include\": \"#using_namespace\"\n    },\n    {\n      \"include\": \"#type_alias\"\n    },\n    {\n      \"include\": \"#using_name\"\n    },\n    {\n      \"include\": \"#namespace_alias\"\n    },\n    {\n      \"include\": \"#namespace_block\"\n    },\n    {\n      \"include\": \"#extern_block\"\n    },\n    {\n      \"include\": \"#typedef_class\"\n    },\n    {\n      \"include\": \"#typedef_struct\"\n    },\n    {\n      \"include\": \"#typedef_union\"\n    },\n    {\n      \"include\": \"#misc_keywords\"\n    },\n    {\n      \"include\": \"#standard_declares\"\n    },\n    {\n      \"include\": \"#class_block\"\n    },\n    {\n      \"include\": \"#struct_block\"\n    },\n    {\n      \"include\": \"#union_block\"\n    },\n    {\n      \"include\": \"#enum_block\"\n    },\n    {\n      \"include\": \"#template_isolated_definition\"\n    },\n    {\n      \"include\": \"#template_definition\"\n    },\n    {\n      \"include\": \"#access_control_keywords\"\n    },\n    {\n      \"include\": \"#block\"\n    },\n    {\n      \"include\": \"#static_assert\"\n    },\n    {\n      \"include\": \"#assembly\"\n    },\n    {\n      \"include\": \"#function_pointer\"\n    },\n    {\n      \"include\": \"#evaluation_context\"\n    }\n  ],\n  \"repository\": {\n    \"access_control_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(((?:(?:protected)|(?:private)|(?:public)))(?:(?:\\\\s)+)?(:))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"storage.type.modifier.access.control.$4.cpp\"\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"punctuation.separator.colon.access.control.cpp\"\n        }\n      }\n    },\n    \"alignas_attribute\": {\n      \"begin\": \"alignas\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        }\n      ]\n    },\n    \"alignas_operator\": {\n      \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignas\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"alignof_operator\": {\n      \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignof\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"assembly\": {\n      \"begin\": \"(\\\\b(?:__asm__|asm)\\\\b)(?:(?:\\\\s)+)?((?:volatile)?)\",\n      \"end\": \"(?!\\\\G)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.asm.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.asm.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\n)|$)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.cpp\"\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.assembly.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(R?)(\\\")\",\n              \"end\": \"\\\"\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.encoding.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.string.begin.assembly.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.assembly.cpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.cpp\",\n              \"contentName\": \"meta.embedded.assembly\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.asm\"\n                },\n                {\n                  \"include\": \"source.x86\"\n                },\n                {\n                  \"include\": \"source.x86_64\"\n                },\n                {\n                  \"include\": \"source.arm\"\n                },\n                {\n                  \"include\": \"#backslash_escapes\"\n                },\n                {\n                  \"include\": \"#string_escaped_char\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\[((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.other.asm.label.cpp\"\n                },\n                \"6\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"9\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.delimiter.colon.assembly.cpp\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"assignment_operator\": {\n      \"match\": \"\\\\=\",\n      \"name\": \"keyword.operator.assignment.cpp\"\n    },\n    \"attributes_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#cpp_attributes\"\n        },\n        {\n          \"include\": \"#gcc_attributes\"\n        },\n        {\n          \"include\": \"#ms_attributes\"\n        },\n        {\n          \"include\": \"#alignas_attribute\"\n        }\n      ]\n    },\n    \"backslash_escapes\": {\n      \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3][0-7]{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n      \"name\": \"constant.character.escape\"\n    },\n    \"block\": {\n      \"begin\": \"{\",\n      \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.begin.bracket.curly.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.end.bracket.curly.cpp\"\n        }\n      },\n      \"name\": \"meta.block.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_body_context\"\n        }\n      ]\n    },\n    \"block_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\*)\",\n      \"end\": \"\\\\*\\\\/\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.cpp\"\n        }\n      },\n      \"name\": \"comment.block.cpp\"\n    },\n    \"builtin_storage_type_initilizer\": {\n      \"begin\": \"(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)(?:\\\\s)*+(?<!\\\\w)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n        },\n        \"3\": {\n          \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n        },\n        \"4\": {\n          \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.initializer.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"case_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)case(?!\\\\w))\",\n      \"end\": \":\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.case.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.case.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"class_block\": {\n      \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.class.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.class.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.head.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.body.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class_declare\": {\n      \"match\": \"((?<!\\\\w)class(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.declare.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"comma\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n    },\n    \"comma_in_template_argument\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.comma.template.argument.cpp\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(?:(?:\\\\s)+)?+(\\\\/\\\\/[!\\\\/]+)\",\n          \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.documentation.cpp\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"comment.line.double-slash.documentation.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.italic.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.bold.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inline.raw.string.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\/\\\\*[!*]+(?=\\\\s))(.+)([!*]*\\\\*\\\\/)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.italic.doxygen.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.bold.doxygen.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.inline.raw.string.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"in|out\",\n                          \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"variable.parameter.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                  \"name\": \"storage.type.class.gtkdoc.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\"\n        },\n        {\n          \"begin\": \"(?:(?:\\\\s)+)?+\\\\/\\\\*[!*]+(?:(?:(?:\\\\n)|$)|(?=\\\\s))\",\n          \"end\": \"[!*]*\\\\*\\\\/\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.italic.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.bold.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inline.raw.string.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#emacs_file_banner\"\n        },\n        {\n          \"include\": \"#block_comment\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#invalid_comment_end\"\n        }\n      ]\n    },\n    \"constructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#functional_specifiers_pre_parameters\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.constructor.cpp entity.name.function.definition.special.constructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#functional_specifiers_pre_parameters\"\n            },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.initializers.cpp\"\n                }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_range\"\n                        }\n                      ]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constructor_root\": {\n      \"begin\": \"\\\\s*+((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.constructor.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.constructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#functional_specifiers_pre_parameters\"\n            },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.initializers.cpp\"\n                }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_range\"\n                        }\n                      ]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"control_flow_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:co_return)|(?:continue)|(?:co_await)|(?:co_yield)|(?:default)|(?:switch)|(?:return)|(?:throw)|(?:while)|(?:catch)|(?:break)|(?:else)|(?:goto)|(?:case)|(?:for)|(?:try)|(?:do)|(?:if))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.$3.cpp\"\n        }\n      }\n    },\n    \"cpp_attributes\": {\n      \"begin\": \"\\\\[\\\\[\",\n      \"end\": \"\\\\]\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        }\n      ]\n    },\n    \"curly_initializer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\{)\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"name\": \"meta.initialization.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ]\n    },\n    \"d9bc4796b0b_module_import\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((import))(?:(?:\\\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/)))|((\\\\\\\")[^\\\\\\\"]*((?:\\\\\\\")?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/))))|(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\.(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;)))))|((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;))))(?:(?:\\\\s)+)?(;?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.directive.import.cpp\"\n        },\n        \"5\": {\n          \"name\": \"string.quoted.other.lt-gt.include.cpp\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.string.end.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"string.quoted.double.include.cpp\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.string.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"punctuation.definition.string.end.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"entity.name.other.preprocessor.macro.include.cpp\"\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"22\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.preprocessor.import.cpp\"\n    },\n    \"d9bc4796b0b_preprocessor_number_literal\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"10\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.decimal.point.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.binary.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.octal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.octal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.cpp\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"decltype\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"decltype_specifier\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"default_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)default(?!\\\\w))\",\n      \"end\": \":\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.default.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.case.default.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"destructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(~(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#functional_specifiers_pre_parameters\"\n            }\n          ]\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.destructor.cpp entity.name.function.definition.special.member.destructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"destructor_root\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))~\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.destructor.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)~(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.member.destructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"diagnostic\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:error|warning)))\\\\b(?:(?:\\\\s)+)?\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.diagnostic.$7.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"7\": {}\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.diagnostic.$reference(directive).cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"(?:(\\\")|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"(?:(')|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[^'\\\"]\",\n          \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"string.unquoted.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"emacs_file_banner\": {\n      \"match\": \"(?:(^(?:(?:\\\\s)+)?((\\\\/\\\\/)(?:(?:\\\\s)+)?((?:[#;\\\\/=*C~]+)++(?![#;\\\\/=*C~]))(?:(?:\\\\s)+)?.+(?:(?:\\\\s)+)?\\\\4(?:(?:\\\\s)+)?(?:\\\\n|$)))|(^(?:(?:\\\\s)+)?((\\\\/\\\\*)(?:(?:\\\\s)+)?((?:[#;\\\\/=*C~]+)++(?![#;\\\\/=*C~]))(?:(?:\\\\s)+)?.+(?:(?:\\\\s)+)?\\\\8(?:(?:\\\\s)+)?\\\\*\\\\/)))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.toc-list.banner.double-slash.cpp\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.double-slash.cpp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.cpp\"\n        },\n        \"4\": {\n          \"name\": \"meta.banner.character.cpp\"\n        },\n        \"5\": {\n          \"name\": \"meta.toc-list.banner.block.cpp\"\n        },\n        \"6\": {\n          \"name\": \"comment.line.banner.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.comment.cpp\"\n        },\n        \"8\": {\n          \"name\": \"meta.banner.character.cpp\"\n        }\n      }\n    },\n    \"empty_square_brackets\": {\n      \"name\": \"storage.modifier.array.bracket.square\",\n      \"match\": \"(?<!delete)\\\\[(?:(?:\\\\s)+)?\\\\]\"\n    },\n    \"enum_block\": {\n      \"begin\": \"((?<!\\\\w)enum(?!\\\\w))(?:(?:\\\\s)+(class|struct))?(?:(?:(?:\\\\s)+|((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\))))|(?={))(?:(?:\\\\s)+)?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)(?:(?:(?:\\\\s)+)?(:)(?:(?:\\\\s)+)?(?:((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?(::))?(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))?\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.enum.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.enum.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.enum.enum-key.$2.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.colon.type-specifier.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {},\n        \"10\": {\n          \"name\": \"entity.name.scope-resolution.cpp\"\n        },\n        \"11\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"14\": {\n          \"name\": \"storage.type.integral.$14.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.enum.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.head.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.body.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#enumerator_list\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#semicolon\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"enum_declare\": {\n      \"match\": \"((?<!\\\\w)enum(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.enum.declare.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"enumerator_list\": {\n      \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?(?:(?:\\\\s)+)?(?:(\\\\=)(?:(?:\\\\s)+)?(.+?)(?:(?:\\\\s)+)?)?(?:(?:((?:[,;](?!')|\\\\n))|(?=\\\\}[^']))|(?=(?:\\\\/\\\\/|\\\\/\\\\*)))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.enummember.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#semicolon\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.enum.definition.cpp\"\n    },\n    \"evaluation_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#predefined_macros\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#memory_operators\"\n        },\n        {\n          \"include\": \"#wordlike_operators\"\n        },\n        {\n          \"include\": \"#type_casting_operators\"\n        },\n        {\n          \"include\": \"#control_flow_keywords\"\n        },\n        {\n          \"include\": \"#exception_keywords\"\n        },\n        {\n          \"include\": \"#the_this_keyword\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"#qualifiers_and_specifiers_post_parameters\"\n        },\n        {\n          \"include\": \"#functional_specifiers_pre_parameters\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#lambdas\"\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"include\": \"#parentheses\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"#scope_resolution_inner_generated\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"#semicolon\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ]\n    },\n    \"ever_present_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pragma_mark\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#include\"\n        },\n        {\n          \"include\": \"#line\"\n        },\n        {\n          \"include\": \"#diagnostic\"\n        },\n        {\n          \"include\": \"#undef\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_range\"\n        },\n        {\n          \"include\": \"#single_line_macro\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_standalone\"\n        },\n        {\n          \"include\": \"#macro_argument\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"exception_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:throw)|(?:catch)|(?:try))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.exception.$3.cpp\"\n        }\n      }\n    },\n    \"extern_block\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(extern)(?=\\\\s*\\\\\\\")\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.extern.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.extern.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.extern.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.head.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.body.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"function_body_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#using_namespace\"\n        },\n        {\n          \"include\": \"#type_alias\"\n        },\n        {\n          \"include\": \"#using_name\"\n        },\n        {\n          \"include\": \"#namespace_alias\"\n        },\n        {\n          \"include\": \"#typedef_class\"\n        },\n        {\n          \"include\": \"#typedef_struct\"\n        },\n        {\n          \"include\": \"#typedef_union\"\n        },\n        {\n          \"include\": \"#misc_keywords\"\n        },\n        {\n          \"include\": \"#standard_declares\"\n        },\n        {\n          \"include\": \"#class_block\"\n        },\n        {\n          \"include\": \"#struct_block\"\n        },\n        {\n          \"include\": \"#union_block\"\n        },\n        {\n          \"include\": \"#enum_block\"\n        },\n        {\n          \"include\": \"#access_control_keywords\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#static_assert\"\n        },\n        {\n          \"include\": \"#assembly\"\n        },\n        {\n          \"include\": \"#function_pointer\"\n        },\n        {\n          \"include\": \"#switch_statement\"\n        },\n        {\n          \"include\": \"#goto_statement\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#label\"\n        }\n      ]\n    },\n    \"function_call\": {\n      \"begin\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wint_least16_t|^int_least16_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Watomic_cancel|^atomic_cancel|\\\\Watomic_commit|^atomic_commit|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wint_least8_t|^int_least8_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wthread_local|^thread_local|\\\\Wsynchronized|^synchronized|\\\\Wstatic_cast|^static_cast|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wnamespace|^namespace|\\\\Wconstinit|^constinit|\\\\Wco_return|^co_return|\\\\Wnoexcept|^noexcept|\\\\Wnoexcept|^noexcept|\\\\Wcontinue|^continue|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wunsigned|^unsigned|\\\\Wu_quad_t|^u_quad_t|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wuint16_t|^uint16_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint64_t|^uint64_t|\\\\Wintptr_t|^intptr_t|\\\\Wintmax_t|^intmax_t|\\\\Wintmax_t|^intmax_t|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wexplicit|^explicit|\\\\Wvolatile|^volatile|\\\\Wnoexcept|^noexcept|\\\\Wtemplate|^template|\\\\Woperator|^operator|\\\\Wdecltype|^decltype|\\\\Wtypename|^typename|\\\\Wrequires|^requires|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wreflexpr|^reflexpr|\\\\Walignof|^alignof|\\\\Walignas|^alignas|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wu_short|^u_short|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wnlink_t|^nlink_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wnullptr|^nullptr|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wprivate|^private|\\\\Wtypedef|^typedef|\\\\W__asm__|^__asm__|\\\\Wconcept|^concept|\\\\Wsizeof|^sizeof|\\\\Wdelete|^delete|\\\\Wnot_eq|^not_eq|\\\\Wbitand|^bitand|\\\\Wand_eq|^and_eq|\\\\Wxor_eq|^xor_eq|\\\\Wtypeid|^typeid|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wsigned|^signed|\\\\Wdouble|^double|\\\\Wu_char|^u_char|\\\\Wu_long|^u_long|\\\\Wushort|^ushort|\\\\Wquad_t|^quad_t|\\\\Wmode_t|^mode_t|\\\\Wsize_t|^size_t|\\\\Wtime_t|^time_t|\\\\Wint8_t|^int8_t|\\\\Wstruct|^struct|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Winline|^inline|\\\\Wfriend|^friend|\\\\Wpublic|^public|\\\\Wexport|^export|\\\\Wimport|^import|\\\\Wmodule|^module|\\\\Wcompl|^compl|\\\\Wbitor|^bitor|\\\\Wthrow|^throw|\\\\Wor_eq|^or_eq|\\\\Wwhile|^while|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wconst|^const|\\\\Wusing|^using|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wcase|^case|\\\\Wauto|^auto|\\\\Wvoid|^void|\\\\Wchar|^char|\\\\Wlong|^long|\\\\Wbool|^bool|\\\\Wuint|^uint|\\\\Wid_t|^id_t|\\\\Wid_t|^id_t|\\\\WNULL|^NULL|\\\\Wtrue|^true|\\\\Wenum|^enum|\\\\Wthis|^this|\\\\Wnot|^not|\\\\Wnew|^new|\\\\Wxor|^xor|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wtry|^try|\\\\Wint|^int|\\\\Wasm|^asm|\\\\Wor|^or|\\\\Wdo|^do|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_call_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.function.call.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {},\n        \"12\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"function_definition\": {\n      \"begin\": \"(?:(?:^|\\\\G|(?<=;|\\\\}))|(?<=>))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)template(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?<!\\\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wint_least16_t|^int_least16_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Watomic_cancel|^atomic_cancel|\\\\Watomic_commit|^atomic_commit|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wint_least8_t|^int_least8_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wthread_local|^thread_local|\\\\Wsynchronized|^synchronized|\\\\Wstatic_cast|^static_cast|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wnamespace|^namespace|\\\\Wconstinit|^constinit|\\\\Wco_return|^co_return|\\\\Wnoexcept|^noexcept|\\\\Wnoexcept|^noexcept|\\\\Wcontinue|^continue|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wunsigned|^unsigned|\\\\Wu_quad_t|^u_quad_t|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wuint16_t|^uint16_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint64_t|^uint64_t|\\\\Wintptr_t|^intptr_t|\\\\Wintmax_t|^intmax_t|\\\\Wintmax_t|^intmax_t|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wexplicit|^explicit|\\\\Wvolatile|^volatile|\\\\Wnoexcept|^noexcept|\\\\Wtemplate|^template|\\\\Woperator|^operator|\\\\Wdecltype|^decltype|\\\\Wtypename|^typename|\\\\Wrequires|^requires|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wreflexpr|^reflexpr|\\\\Walignof|^alignof|\\\\Walignas|^alignas|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wu_short|^u_short|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wnlink_t|^nlink_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wnullptr|^nullptr|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wprivate|^private|\\\\Wtypedef|^typedef|\\\\W__asm__|^__asm__|\\\\Wconcept|^concept|\\\\Wsizeof|^sizeof|\\\\Wdelete|^delete|\\\\Wnot_eq|^not_eq|\\\\Wbitand|^bitand|\\\\Wand_eq|^and_eq|\\\\Wxor_eq|^xor_eq|\\\\Wtypeid|^typeid|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wsigned|^signed|\\\\Wdouble|^double|\\\\Wu_char|^u_char|\\\\Wu_long|^u_long|\\\\Wushort|^ushort|\\\\Wquad_t|^quad_t|\\\\Wmode_t|^mode_t|\\\\Wsize_t|^size_t|\\\\Wtime_t|^time_t|\\\\Wint8_t|^int8_t|\\\\Wstruct|^struct|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Winline|^inline|\\\\Wfriend|^friend|\\\\Wpublic|^public|\\\\Wexport|^export|\\\\Wimport|^import|\\\\Wmodule|^module|\\\\Wcompl|^compl|\\\\Wbitor|^bitor|\\\\Wthrow|^throw|\\\\Wor_eq|^or_eq|\\\\Wwhile|^while|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wconst|^const|\\\\Wusing|^using|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wcase|^case|\\\\Wauto|^auto|\\\\Wvoid|^void|\\\\Wchar|^char|\\\\Wlong|^long|\\\\Wbool|^bool|\\\\Wuint|^uint|\\\\Wid_t|^id_t|\\\\Wid_t|^id_t|\\\\WNULL|^NULL|\\\\Wtrue|^true|\\\\Wenum|^enum|\\\\Wthis|^this|\\\\Wnot|^not|\\\\Wnew|^new|\\\\Wxor|^xor|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wtry|^try|\\\\Wint|^int|\\\\Wasm|^asm|\\\\Wor|^or|\\\\Wdo|^do|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.$1.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"storage.modifier.$12.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"29\": {},\n        \"30\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"31\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"32\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"33\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"34\": {},\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"38\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"39\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"40\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"41\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"42\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"43\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"44\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"45\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"46\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"47\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"48\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"49\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"50\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"51\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"52\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"53\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"54\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"55\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"56\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"57\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"58\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"59\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"60\": {},\n        \"61\": {\n          \"name\": \"entity.name.function.definition.cpp\"\n        },\n        \"62\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"63\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"64\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"65\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#parameter_or_maybe_value\"\n                },\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<=^|\\\\))(?:(?:\\\\s)+)?(->)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)?(?![\\\\w<:.]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.function.return-type.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"meta.qualified_type.cpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                      \"name\": \"storage.type.$0.cpp\"\n                    },\n                    {\n                      \"include\": \"#attributes_context\"\n                    },\n                    {\n                      \"include\": \"#storage_types\"\n                    },\n                    {\n                      \"include\": \"#number_literal\"\n                    },\n                    {\n                      \"include\": \"#string_context\"\n                    },\n                    {\n                      \"include\": \"#comma\"\n                    },\n                    {\n                      \"include\": \"#scope_resolution_inner_generated\"\n                    },\n                    {\n                      \"begin\": \"<\",\n                      \"end\": \">\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                        }\n                      },\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                        }\n                      },\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_context\"\n                        }\n                      ]\n                    },\n                    {\n                      \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                      \"name\": \"entity.name.type.cpp\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attributes_context\"\n                    },\n                    {\n                      \"include\": \"#number_literal\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"10\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"11\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"13\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"14\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"15\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"16\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                      \"name\": \"entity.name.scope-resolution.type.cpp\"\n                    },\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"17\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"18\": {},\n                \"19\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"20\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"21\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"22\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"23\": {}\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_parameter_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#parameter\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ]\n    },\n    \"function_pointer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": {\n          \"name\": \"variable.other.definition.pointer.function.cpp\"\n        },\n        \"35\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function_parameter_context\"\n        }\n      ]\n    },\n    \"function_pointer_parameter\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": {\n          \"name\": \"variable.parameter.pointer.function.cpp\"\n        },\n        \"35\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function_parameter_context\"\n        }\n      ]\n    },\n    \"functional_specifiers_pre_parameters\": {\n      \"match\": \"(?<!\\\\w)(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))(?!\\\\w)\",\n      \"name\": \"storage.modifier.specifier.functional.pre-parameters.$0.cpp\"\n    },\n    \"gcc_attributes\": {\n      \"begin\": \"__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(\",\n      \"end\": \"\\\\)\\\\s*\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        }\n      ]\n    },\n    \"goto_statement\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)goto(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.goto.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.label.call.cpp\"\n        }\n      }\n    },\n    \"identifier\": {\n      \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\"\n    },\n    \"include\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((#)(?:(?:\\\\s)+)?((?:include|include_next))\\\\b)(?:(?:\\\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/)))|((\\\\\\\")[^\\\\\\\"]*((?:\\\\\\\")?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/))))|(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\.(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;)))))|((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;))))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.directive.$5.cpp\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"6\": {\n          \"name\": \"string.quoted.other.lt-gt.include.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.string.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.end.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"string.quoted.double.include.cpp\"\n        },\n        \"12\": {\n          \"name\": \"punctuation.definition.string.begin.cpp\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.end.cpp\"\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"entity.name.other.preprocessor.macro.include.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"21\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.preprocessor.include.cpp\"\n    },\n    \"inheritance_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.comma.inheritance.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:protected)|(?:private)|(?:public))(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.access.$0.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)virtual(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.virtual.cpp\"\n        },\n        {\n          \"match\": \"(?<=protected|virtual|private|public|,|:)(?:(?:\\\\s)+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)?(?![\\\\w<:.]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#storage_types\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                },\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#scope_resolution_inner_generated\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"9\": {},\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {}\n          }\n        }\n      ]\n    },\n    \"inline_builtin_storage_type\": {\n      \"match\": \"(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n        },\n        \"3\": {\n          \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n        },\n        \"4\": {\n          \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n        }\n      }\n    },\n    \"inline_comment\": {\n      \"match\": \"(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      }\n    },\n    \"invalid_comment_end\": {\n      \"match\": \"\\\\*\\\\/\",\n      \"name\": \"invalid.illegal.unexpected.punctuation.definition.comment.end.cpp\"\n    },\n    \"label\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\b(?<!case|default)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"entity.name.label.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.label.cpp\"\n        }\n      }\n    },\n    \"lambdas\": {\n      \"begin\": \"(?:(?<=[^\\\\s]|^)(?<![\\\\w\\\\]\\\\)\\\\[\\\\*&\\\">])|(?<=\\\\Wreturn|^return))(?:(?:\\\\s)+)?(\\\\[(?!\\\\[| *+\\\"| *+\\\\d))((?:[^\\\\[\\\\]]|((?<!\\\\[)\\\\[(?!\\\\[)(?:[^\\\\[\\\\]]*+\\\\g<3>?)++\\\\]))*+)(\\\\](?!((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))[\\\\[\\\\];]))\",\n      \"end\": \"(?<=[;}])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.capture.begin.lambda.cpp\"\n        },\n        \"2\": {\n          \"name\": \"meta.lambda.capture.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#the_this_keyword\"\n            },\n            {\n              \"match\": \"((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?=\\\\]|\\\\z|$)|(,))|(\\\\=))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.capture.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"3\": {},\n        \"4\": {\n          \"name\": \"punctuation.definition.capture.end.lambda.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.lambda.cpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.parameters.lambda.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_parameter_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:constexpr)|(?:consteval)|(?:mutable))(?!\\\\w)\",\n          \"name\": \"storage.modifier.lambda.$0.cpp\"\n        },\n        {\n          \"match\": \"(->)((?:.+?(?=\\\\{|$))?)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.lambda.return-type.cpp\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.return-type.lambda.cpp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.body.lambda.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"language_constants\": {\n      \"match\": \"(?<!\\\\w)(?:(?:nullptr)|(?:false)|(?:NULL)|(?:true))(?!\\\\w)\",\n      \"name\": \"constant.language.$0.cpp\"\n    },\n    \"line\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?line\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.line.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.line.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"line_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\/)\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"comment.line.double-slash.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"line_continuation_character\": {\n      \"match\": \"\\\\\\\\\\\\n\",\n      \"name\": \"constant.character.escape.line-continuation.cpp\"\n    },\n    \"macro\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?define\\\\b)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.define.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.preprocessor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.macro.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G(?:(?:\\\\s)+)?(\\\\()([^\\\\(]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.preprocessor.cpp\"\n            },\n            \"2\": {\n              \"name\": \"meta.function.preprocessor.parameters.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[(,])(?:(?:\\\\s)+)?((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable.parameter.preprocessor.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.cpp\"\n                },\n                {\n                  \"match\": \"\\\\.\\\\.\\\\.\",\n                  \"name\": \"punctuation.vararg-ellipses.variable.parameter.preprocessor.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.end.preprocessor.cpp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#macro_context\"\n        },\n        {\n          \"include\": \"#macro_argument\"\n        }\n      ]\n    },\n    \"macro_argument\": {\n      \"match\": \"##?(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n      \"name\": \"variable.other.macro.argument.cpp\"\n    },\n    \"macro_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp.embedded.macro\"\n        }\n      ]\n    },\n    \"macro_name\": {\n      \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n      \"name\": \"entity.name.function.preprocessor.cpp\"\n    },\n    \"member_access\": {\n      \"match\": \"(?:((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:(?:\\\\s)+)?(?:(?:\\\\.\\\\*|\\\\.)|(?:->\\\\*|->))(?:(?:\\\\s)+)?)*)(?:(?:\\\\s)+)?(\\\\b(?!uint_least16_t[^\\\\w]|uint_least32_t[^\\\\w]|uint_least64_t[^\\\\w]|int_least16_t[^\\\\w]|int_least32_t[^\\\\w]|int_least64_t[^\\\\w]|uint_least8_t[^\\\\w]|uint_fast16_t[^\\\\w]|uint_fast32_t[^\\\\w]|uint_fast64_t[^\\\\w]|int_least8_t[^\\\\w]|int_fast16_t[^\\\\w]|int_fast32_t[^\\\\w]|int_fast64_t[^\\\\w]|uint_fast8_t[^\\\\w]|suseconds_t[^\\\\w]|int_fast8_t[^\\\\w]|useconds_t[^\\\\w]|blksize_t[^\\\\w]|in_addr_t[^\\\\w]|in_port_t[^\\\\w]|uintptr_t[^\\\\w]|uintmax_t[^\\\\w]|uintmax_t[^\\\\w]|uintmax_t[^\\\\w]|unsigned[^\\\\w]|u_quad_t[^\\\\w]|blkcnt_t[^\\\\w]|uint16_t[^\\\\w]|uint32_t[^\\\\w]|uint64_t[^\\\\w]|intptr_t[^\\\\w]|intmax_t[^\\\\w]|intmax_t[^\\\\w]|wchar_t[^\\\\w]|u_short[^\\\\w]|qaddr_t[^\\\\w]|caddr_t[^\\\\w]|daddr_t[^\\\\w]|fixpt_t[^\\\\w]|nlink_t[^\\\\w]|segsz_t[^\\\\w]|swblk_t[^\\\\w]|clock_t[^\\\\w]|ssize_t[^\\\\w]|int16_t[^\\\\w]|int32_t[^\\\\w]|int64_t[^\\\\w]|uint8_t[^\\\\w]|signed[^\\\\w]|double[^\\\\w]|u_char[^\\\\w]|u_long[^\\\\w]|ushort[^\\\\w]|quad_t[^\\\\w]|mode_t[^\\\\w]|size_t[^\\\\w]|time_t[^\\\\w]|int8_t[^\\\\w]|short[^\\\\w]|float[^\\\\w]|u_int[^\\\\w]|div_t[^\\\\w]|dev_t[^\\\\w]|gid_t[^\\\\w]|ino_t[^\\\\w]|key_t[^\\\\w]|pid_t[^\\\\w]|off_t[^\\\\w]|uid_t[^\\\\w]|auto[^\\\\w]|void[^\\\\w]|char[^\\\\w]|long[^\\\\w]|bool[^\\\\w]|uint[^\\\\w]|id_t[^\\\\w]|id_t[^\\\\w]|int[^\\\\w])(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?!\\\\())\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"variable.language.this.cpp\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.object.access.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.dot-access.cpp\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.pointer-access.cpp\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=(?:\\\\.\\\\*|\\\\.|->|->\\\\*))(?:(?:\\\\s)+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.property.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.access.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"variable.other.property.cpp\"\n        }\n      }\n    },\n    \"memory_operators\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(delete)(?:(?:\\\\s)+)?(\\\\[\\\\])|(delete))|(new))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.wordlike.cpp\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.delete.array.cpp\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.delete.array.bracket.cpp\"\n        },\n        \"6\": {\n          \"name\": \"keyword.operator.delete.cpp\"\n        },\n        \"7\": {\n          \"name\": \"keyword.operator.new.cpp\"\n        }\n      }\n    },\n    \"method_access\": {\n      \"begin\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:(?:\\\\s)+)?(?:(?:\\\\.\\\\*|\\\\.)|(?:->\\\\*|->))(?:(?:\\\\s)+)?)*)(?:(?:\\\\s)+)?(~?(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"variable.language.this.cpp\"\n        },\n        \"6\": {\n          \"name\": \"variable.other.object.access.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.dot-access.cpp\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.pointer-access.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=(?:\\\\.\\\\*|\\\\.|->|->\\\\*))(?:(?:\\\\s)+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.property.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.access.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"entity.name.function.member.cpp\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"misc_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:constinit)|(?:requires)|(?:typedef)|(?:concept)|(?:export)|(?:module))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.other.$3.cpp\"\n        }\n      }\n    },\n    \"ms_attributes\": {\n      \"begin\": \"__declspec\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        }\n      ]\n    },\n    \"namespace_alias\": {\n      \"match\": \"(?<!\\\\w)(namespace)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(\\\\=)(?:(?:\\\\s)+)?(((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<8>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(?:(;)|\\\\n))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.namespace.alias.cpp storage.type.namespace.alias.cpp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.namespace.alias.cpp\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        \"4\": {\n          \"name\": \"meta.declaration.namespace.alias.value.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_alias_inner_generated\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.declaration.namespace.alias.cpp\"\n    },\n    \"namespace_block\": {\n      \"begin\": \"((?<!\\\\w)namespace(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.namespace.cpp\"\n        },\n        \"1\": {\n          \"name\": \"keyword.other.namespace.definition.cpp storage.type.namespace.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.namespace.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.head.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<4>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(?:(::)(?:(?:\\\\s)+)?(inline))?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#scope_resolution_namespace_block_inner_generated\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"4\": {},\n                \"5\": {\n                  \"name\": \"entity.name.namespace.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"storage.modifier.inline.cpp\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.body.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"noexcept_operator\": {\n      \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.noexcept\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"number_literal\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?((?:\\\\w(?<![0-9a-fA-FpP])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"10\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?((?:\\\\w(?<![0-9eE])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.decimal.point.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.binary.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.octal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.octal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9a-fA-FpP])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9eE])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.cpp\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"operator_overload\": {\n      \"begin\": \"(?:(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(operator)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(?:(?:((?:(?:delete\\\\[\\\\])|(?:delete)|(?:new\\\\[\\\\])|(?:new)|(?:\\\\->\\\\*)|(?:<<=)|(?:>>=)|(?:<=>)|(?:\\\\+\\\\+)|(?:\\\\-\\\\-)|(?:\\\\(\\\\))|(?:\\\\[\\\\])|(?:\\\\->)|(?:\\\\+\\\\+)|(?:\\\\-\\\\-)|(?:<<)|(?:>>)|(?:<=)|(?:>=)|(?:==)|(?:!=)|(?:&&)|(?:\\\\|\\\\|)|(?:\\\\+=)|(?:\\\\-=)|(?:\\\\*=)|(?:\\\\/=)|(?:%=)|(?:&=)|(?:\\\\^=)|(?:\\\\|=)|(?:\\\\+)|(?:\\\\-)|!|~|(?:\\\\*)|&|(?:\\\\*)|(?:\\\\/)|%|(?:\\\\+)|(?:\\\\-)|<|>|&|(?:\\\\^)|(?:\\\\|)|=|,))|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:\\\\[\\\\])?)))|(\\\"\\\")((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\<|\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\"\n        },\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"33\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"34\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"36\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"37\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"38\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"39\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"40\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"41\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"42\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"43\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"44\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"45\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"46\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"47\": {},\n        \"48\": {\n          \"name\": \"keyword.other.operator.overload.cpp\"\n        },\n        \"49\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"50\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"51\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"52\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"53\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator-overload.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator-overload.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"54\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"55\": {},\n        \"56\": {\n          \"name\": \"entity.name.operator.cpp\"\n        },\n        \"57\": {\n          \"name\": \"entity.name.operator.type.cpp\"\n        },\n        \"58\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"entity.name.operator.type.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"entity.name.operator.type.reference.cpp\"\n            }\n          ]\n        },\n        \"59\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"60\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"61\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"62\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"63\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"64\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"65\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"66\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"67\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"68\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"69\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"70\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"71\": {\n          \"name\": \"entity.name.operator.type.array.cpp\"\n        },\n        \"72\": {\n          \"name\": \"entity.name.operator.custom-literal.cpp\"\n        },\n        \"73\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"74\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"75\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"76\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"77\": {\n          \"name\": \"entity.name.operator.custom-literal.cpp\"\n        },\n        \"78\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"79\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"80\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"81\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.operator-overload.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.operator-overload\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#qualifiers_and_specifiers_post_parameters\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignof\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignas\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.typeid\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.noexcept\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"--\",\n          \"name\": \"keyword.operator.decrement.cpp\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.cpp\"\n        },\n        {\n          \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()\\\\/=\",\n          \"name\": \"keyword.operator.assignment.compound.cpp\"\n        },\n        {\n          \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n          \"name\": \"keyword.operator.assignment.compound.bitwise.cpp\"\n        },\n        {\n          \"match\": \"<<|>>\",\n          \"name\": \"keyword.operator.bitwise.shift.cpp\"\n        },\n        {\n          \"match\": \"!=|<=|>=|==|<|>\",\n          \"name\": \"keyword.operator.comparison.cpp\"\n        },\n        {\n          \"match\": \"&&|!|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.cpp\"\n        },\n        {\n          \"match\": \"&|\\\\||\\\\^|~\",\n          \"name\": \"keyword.operator.bitwise.cpp\"\n        },\n        {\n          \"include\": \"#assignment_operator\"\n        },\n        {\n          \"match\": \"%|\\\\*|\\\\/|-|\\\\+\",\n          \"name\": \"keyword.operator.arithmetic.cpp\"\n        },\n        {\n          \"include\": \"#ternary_operator\"\n        }\n      ]\n    },\n    \"over_qualified_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\bstruct)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct.parameter.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.struct.parameter.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\benum)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum.parameter.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.enum.parameter.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\bunion)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.union.parameter.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.union.parameter.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\bclass)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.parameter.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.parameter.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"parameter\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n        }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#function_pointer_parameter\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"match\": \"((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wthread_local|^thread_local|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#storage_types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.specifier.parameter.cpp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": {\n              \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n            },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": {\n              \"name\": \"entity.name.type.parameter.cpp\"\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#scope_resolution_parameter_inner_generated\"\n        },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\=\",\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\)|,|\\\\[|=|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"parameter_class\": {\n      \"match\": \"(\\\\bclass)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.parameter.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parameter_enum\": {\n      \"match\": \"(\\\\benum)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.enum.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.parameter.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parameter_or_maybe_value\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n        }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#function_pointer_parameter\"\n        },\n        {\n          \"include\": \"#memory_operators\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"#curly_initializer\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"match\": \"((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wthread_local|^thread_local|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#storage_types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.specifier.parameter.cpp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": {\n              \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n            },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": {\n              \"name\": \"entity.name.type.parameter.cpp\"\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"#scope_resolution_parameter_inner_generated\"\n        },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=(?:\\\\)|,|\\\\[|=|\\\\/\\\\/|(?:(?:\\\\n)|$)))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"parameter_struct\": {\n      \"match\": \"(\\\\bstruct)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.struct.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.struct.parameter.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parameter_union\": {\n      \"match\": \"(\\\\bunion)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.union.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.union.parameter.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.cpp\"\n        }\n      },\n      \"name\": \"meta.parens.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#over_qualified_types\"\n        },\n        {\n          \"match\": \"(?<!:):(?!:)\",\n          \"name\": \"punctuation.separator.colon.range-based.cpp\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"pragma\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?pragma\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.pragma.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.pragma.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n          \"name\": \"entity.other.attribute-name.pragma.preprocessor.cpp\"\n        },\n        {\n          \"include\": \"#preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"pragma_mark\": {\n      \"match\": \"(^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?pragma(?:\\\\s)+mark)(?:\\\\s)+(.*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.pragma.pragma-mark.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.pragma-mark.cpp\"\n        }\n      },\n      \"name\": \"meta.preprocessor.pragma.cpp\"\n    },\n    \"predefined_macros\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(__cplusplus|__DATE__|__FILE__|__LINE__|__STDC__|__STDC_HOSTED__|__STDC_NO_COMPLEX__|__STDC_VERSION__|__STDCPP_THREADS__|__TIME__|NDEBUG|__OBJC__|__ASSEMBLER__|__ATOM__|__AVX__|__AVX2__|_CHAR_UNSIGNED|__CLR_VER|_CONTROL_FLOW_GUARD|__COUNTER__|__cplusplus_cli|__cplusplus_winrt|_CPPRTTI|_CPPUNWIND|_DEBUG|_DLL|__FUNCDNAME__|__FUNCSIG__|__FUNCTION__|_INTEGRAL_MAX_BITS|__INTELLISENSE__|_ISO_VOLATILE|_KERNEL_MODE|_M_AMD64|_M_ARM|_M_ARM_ARMV7VE|_M_ARM_FP|_M_ARM64|_M_CEE|_M_CEE_PURE|_M_CEE_SAFE|_M_FP_EXCEPT|_M_FP_FAST|_M_FP_PRECISE|_M_FP_STRICT|_M_IX86|_M_IX86_FP|_M_X64|_MANAGED|_MSC_BUILD|_MSC_EXTENSIONS|_MSC_FULL_VER|_MSC_VER|_MSVC_LANG|__MSVC_RUNTIME_CHECKS|_MT|_NATIVE_WCHAR_T_DEFINED|_OPENMP|_PREFAST|__TIMESTAMP__|_VC_NO_DEFAULTLIB|_WCHAR_T_DEFINED|_WIN32|_WIN64|_WINRT_DLL|_ATL_VER|_MFC_VER|__GFORTRAN__|__GNUC__|__GNUC_MINOR__|__GNUC_PATCHLEVEL__|__GNUG__|__STRICT_ANSI__|__BASE_FILE__|__INCLUDE_LEVEL__|__ELF__|__VERSION__|__OPTIMIZE__|__OPTIMIZE_SIZE__|__NO_INLINE__|__GNUC_STDC_INLINE__|__CHAR_UNSIGNED__|__WCHAR_UNSIGNED__|__REGISTER_PREFIX__|__REGISTER_PREFIX__|__SIZE_TYPE__|__PTRDIFF_TYPE__|__WCHAR_TYPE__|__WINT_TYPE__|__INTMAX_TYPE__|__UINTMAX_TYPE__|__SIG_ATOMIC_TYPE__|__INT8_TYPE__|__INT16_TYPE__|__INT32_TYPE__|__INT64_TYPE__|__UINT8_TYPE__|__UINT16_TYPE__|__UINT32_TYPE__|__UINT64_TYPE__|__INT_LEAST8_TYPE__|__INT_LEAST16_TYPE__|__INT_LEAST32_TYPE__|__INT_LEAST64_TYPE__|__UINT_LEAST8_TYPE__|__UINT_LEAST16_TYPE__|__UINT_LEAST32_TYPE__|__UINT_LEAST64_TYPE__|__INT_FAST8_TYPE__|__INT_FAST16_TYPE__|__INT_FAST32_TYPE__|__INT_FAST64_TYPE__|__UINT_FAST8_TYPE__|__UINT_FAST16_TYPE__|__UINT_FAST32_TYPE__|__UINT_FAST64_TYPE__|__INTPTR_TYPE__|__UINTPTR_TYPE__|__CHAR_BIT__|__SCHAR_MAX__|__WCHAR_MAX__|__SHRT_MAX__|__INT_MAX__|__LONG_MAX__|__LONG_LONG_MAX__|__WINT_MAX__|__SIZE_MAX__|__PTRDIFF_MAX__|__INTMAX_MAX__|__UINTMAX_MAX__|__SIG_ATOMIC_MAX__|__INT8_MAX__|__INT16_MAX__|__INT32_MAX__|__INT64_MAX__|__UINT8_MAX__|__UINT16_MAX__|__UINT32_MAX__|__UINT64_MAX__|__INT_LEAST8_MAX__|__INT_LEAST16_MAX__|__INT_LEAST32_MAX__|__INT_LEAST64_MAX__|__UINT_LEAST8_MAX__|__UINT_LEAST16_MAX__|__UINT_LEAST32_MAX__|__UINT_LEAST64_MAX__|__INT_FAST8_MAX__|__INT_FAST16_MAX__|__INT_FAST32_MAX__|__INT_FAST64_MAX__|__UINT_FAST8_MAX__|__UINT_FAST16_MAX__|__UINT_FAST32_MAX__|__UINT_FAST64_MAX__|__INTPTR_MAX__|__UINTPTR_MAX__|__WCHAR_MIN__|__WINT_MIN__|__SIG_ATOMIC_MIN__|__SCHAR_WIDTH__|__SHRT_WIDTH__|__INT_WIDTH__|__LONG_WIDTH__|__LONG_LONG_WIDTH__|__PTRDIFF_WIDTH__|__SIG_ATOMIC_WIDTH__|__SIZE_WIDTH__|__WCHAR_WIDTH__|__WINT_WIDTH__|__INT_LEAST8_WIDTH__|__INT_LEAST16_WIDTH__|__INT_LEAST32_WIDTH__|__INT_LEAST64_WIDTH__|__INT_FAST8_WIDTH__|__INT_FAST16_WIDTH__|__INT_FAST32_WIDTH__|__INT_FAST64_WIDTH__|__INTPTR_WIDTH__|__INTMAX_WIDTH__|__SIZEOF_INT__|__SIZEOF_LONG__|__SIZEOF_LONG_LONG__|__SIZEOF_SHORT__|__SIZEOF_POINTER__|__SIZEOF_FLOAT__|__SIZEOF_DOUBLE__|__SIZEOF_LONG_DOUBLE__|__SIZEOF_SIZE_T__|__SIZEOF_WCHAR_T__|__SIZEOF_WINT_T__|__SIZEOF_PTRDIFF_T__|__BYTE_ORDER__|__ORDER_LITTLE_ENDIAN__|__ORDER_BIG_ENDIAN__|__ORDER_PDP_ENDIAN__|__FLOAT_WORD_ORDER__|__DEPRECATED|__EXCEPTIONS|__GXX_RTTI|__USING_SJLJ_EXCEPTIONS__|__GXX_EXPERIMENTAL_CXX0X__|__GXX_WEAK__|__NEXT_RUNTIME__|__LP64__|_LP64|__SSP__|__SSP_ALL__|__SSP_STRONG__|__SSP_EXPLICIT__|__SANITIZE_ADDRESS__|__SANITIZE_THREAD__|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16|__HAVE_SPECULATION_SAFE_VALUE|__GCC_HAVE_DWARF2_CFI_ASM|__FP_FAST_FMA|__FP_FAST_FMAF|__FP_FAST_FMAL|__FP_FAST_FMAF16|__FP_FAST_FMAF32|__FP_FAST_FMAF64|__FP_FAST_FMAF128|__FP_FAST_FMAF32X|__FP_FAST_FMAF64X|__FP_FAST_FMAF128X|__GCC_IEC_559|__GCC_IEC_559_COMPLEX|__NO_MATH_ERRNO__|__has_builtin|__has_feature|__has_extension|__has_cpp_attribute|__has_c_attribute|__has_attribute|__has_declspec_attribute|__is_identifier|__has_include|__has_include_next|__has_warning|__BASE_FILE__|__FILE_NAME__|__clang__|__clang_major__|__clang_minor__|__clang_patchlevel__|__clang_version__|__fp16|_Float16)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.$1.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b__([A-Z_]+)__\\\\b\",\n          \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$1.cpp\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor_conditional_defined\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#d9bc4796b0b_preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#predefined_macros\"\n        },\n        {\n          \"include\": \"#macro_name\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_defined\": {\n      \"begin\": \"((?<!\\\\w)defined(?!\\\\w))(\\\\()\",\n      \"end\": \"(?:\\\\)|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.defined.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.parens.control.defined.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.control.defined.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#macro_name\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.cpp\"\n        }\n      },\n      \"name\": \"meta.parens.preprocessor.conditional.cpp\"\n    },\n    \"preprocessor_conditional_range\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:(?:ifndef|ifdef)|if))\",\n      \"end\": \"^(?!\\\\s*+#\\\\s*(?:else|endif))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.conditional.$6.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"6\": {}\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?<=ifndef|ifdef|if)\",\n          \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.preprocessor.conditional.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor_conditional_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_standalone\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?<!\\\\w)(?:endif|else|elif)(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"name\": \"keyword.control.directive.$4.cpp\"\n    },\n    \"preprocessor_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pragma_mark\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#include\"\n        },\n        {\n          \"include\": \"#line\"\n        },\n        {\n          \"include\": \"#diagnostic\"\n        },\n        {\n          \"include\": \"#undef\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_range\"\n        },\n        {\n          \"include\": \"#single_line_macro\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_standalone\"\n        },\n        {\n          \"include\": \"#macro_argument\"\n        }\n      ]\n    },\n    \"qualified_type\": {\n      \"match\": \"\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)?(?![\\\\w<:.])\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.qualified_type.cpp\"\n    },\n    \"qualifiers_and_specifiers_post_parameters\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?<!\\\\w)(?:(?:override)|(?:volatile)|(?:noexcept)|(?:final)|(?:const))(?!\\\\w))+(?=\\\\s*(?:(?:\\\\{|;)|[\\\\n\\\\r])))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.specifier.functional.post-parameters.$3.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_function_call\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_call_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_function_call_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_call_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.function.call.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_function_definition\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_function_definition_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.function.definition.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_function_definition_operator_overload\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_operator_overload_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_function_definition_operator_overload_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_operator_overload_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.function.definition.operator-overload.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_namespace_alias\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_alias_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_namespace_alias_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_alias_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.namespace.alias.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_namespace_block\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_block_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_namespace_block_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_block_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.namespace.block.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_namespace_using\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_using_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_namespace_using_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_using_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.namespace.using.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_parameter\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_parameter_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_parameter_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_parameter_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.parameter.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_template_call\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_call_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_template_call_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_call_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.template.call.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_template_definition\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_definition_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_template_definition_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_definition_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.template.definition.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp\"\n        }\n      }\n    },\n    \"semicolon\": {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.statement.cpp\"\n    },\n    \"simple_type\": {\n      \"match\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)?(?![\\\\w<:.]))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {},\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"single_line_macro\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))#define.*(?<![\\\\\\\\])(?:(?:\\\\n)|$)\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#macro\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"sizeof_operator\": {\n      \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"sizeof_variadic_operator\": {\n      \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"square_brackets\": {\n      \"name\": \"meta.bracket.square.access\",\n      \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.object\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.begin.bracket.square\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.square\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"standard_declares\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?<!\\\\w)struct(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct.declare.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.struct.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"((?<!\\\\w)union(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.union.declare.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.union.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"((?<!\\\\w)enum(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum.declare.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.enum.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"((?<!\\\\w)class(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.declare.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"static_assert\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)static_assert|_Static_assert(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.other.static_assert.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(,)(?:(?:\\\\s)+)?(?=(?:L|u8|u|U(?:(?:\\\\s)+)?\\\\\\\")?)\",\n          \"end\": \"(?=\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"meta.static_assert.message.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"std_space\": {\n      \"match\": \"(?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"storage_specifiers\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.specifier.$3.cpp\"\n        }\n      }\n    },\n    \"storage_types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#storage_specifiers\"\n        },\n        {\n          \"include\": \"#inline_builtin_storage_type\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"#typename\"\n        }\n      ]\n    },\n    \"string_context\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?:u|u8|U|L)?)\\\"\",\n          \"end\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8})\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\['\\\"?\\\\\\\\abfnrtv]\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\[0-7]{1,3}\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.unknown-escape.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#string_escapes_context_c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<![0-9A-Fa-f])((?:u|u8|U|L)?)'\",\n          \"end\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.unknown-escape.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#string_escapes_context_c\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:(?:_r|re)|regex)\\\\(\",\n          \"end\": \"\\\\)(?:(?:_r|re)|regex)\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.regex.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:glsl|GLSL)\\\\(\",\n          \"end\": \"\\\\)(?:glsl|GLSL)\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"meta.string.quoted.double.raw.glsl.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.glsl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\(\",\n          \"end\": \"\\\\)(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"meta.string.quoted.double.raw.sql.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:u|u8|U|L)?R)\\\"(?:([^ ()\\\\\\\\\\\\t]{0,16})|([^ ()\\\\\\\\\\\\t]*))\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.delimiter-too-long\"\n            }\n          },\n          \"end\": \"\\\\)\\\\2(\\\\3)\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            },\n            \"1\": {\n              \"name\": \"invalid.illegal.delimiter-too-long\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw\"\n        }\n      ]\n    },\n    \"string_escapes_context_c\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3][0-7]{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n          \"name\": \"constant.character.escape\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unknown-escape\"\n        },\n        {\n          \"match\": \"(?x) (?!%')(?!%\\\")%\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n          \"name\": \"constant.other.placeholder\"\n        }\n      ]\n    },\n    \"struct_block\": {\n      \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.struct.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.struct.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.struct.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.head.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.body.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"struct_declare\": {\n      \"match\": \"((?<!\\\\w)struct(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.struct.declare.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.struct.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"switch_conditional_parentheses\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.switch.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)switch(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.switch.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.switch.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.switch.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.head.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#switch_conditional_parentheses\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.body.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#default_statement\"\n            },\n            {\n              \"include\": \"#case_statement\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template_argument_defaulted\": {\n      \"match\": \"(?<=<|,)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\s)+)*)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?([=])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.template.cpp\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.cpp\"\n        }\n      }\n    },\n    \"template_call_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#scope_resolution_template_call_inner_generated\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#comma_in_template_argument\"\n        },\n        {\n          \"include\": \"#qualified_type\"\n        }\n      ]\n    },\n    \"template_call_innards\": {\n      \"match\": \"((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<1>?)+>)(?:\\\\s)*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.template.call.cpp\"\n    },\n    \"template_call_range\": {\n      \"begin\": \"<\",\n      \"end\": \">\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n        }\n      },\n      \"name\": \"meta.template.call.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#template_call_context\"\n        }\n      ]\n    },\n    \"template_definition\": {\n      \"begin\": \"(?<!\\\\w)(template)(?:(?:\\\\s)+)?(<)\",\n      \"end\": \">\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.angle-brackets.start.template.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.definition.cpp\"\n        }\n      },\n      \"name\": \"meta.template.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\w)(?:(?:\\\\s)+)?<\",\n          \"end\": \">\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#template_definition_context\"\n        }\n      ]\n    },\n    \"template_definition_argument\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\s)+)+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*))|((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?(\\\\.\\\\.\\\\.)(?:(?:\\\\s)+)?((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*))(?:(?:\\\\s)+)?(?:(,)|(?=>|$))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"storage.type.template.argument.$3.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"storage.type.template.argument.$0.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"entity.name.type.template.cpp\"\n        },\n        \"6\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.vararg-ellipses.template.definition.cpp\"\n        },\n        \"8\": {\n          \"name\": \"entity.name.type.template.cpp\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.separator.delimiter.comma.template.argument.cpp\"\n        }\n      }\n    },\n    \"template_definition_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#scope_resolution_template_definition_inner_generated\"\n        },\n        {\n          \"include\": \"#template_definition_argument\"\n        },\n        {\n          \"include\": \"#template_argument_defaulted\"\n        },\n        {\n          \"include\": \"#template_call_innards\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"template_isolated_definition\": {\n      \"match\": \"(?<!\\\\w)(template)(?:(?:\\\\s)+)?(<)(.*)(>(?:(?:\\\\s)+)?$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.angle-brackets.start.template.definition.cpp\"\n        },\n        \"3\": {\n          \"name\": \"meta.template.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_definition_context\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.definition.cpp\"\n        }\n      }\n    },\n    \"ternary_operator\": {\n      \"begin\": \"\\\\?\",\n      \"end\": \":\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#predefined_macros\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#memory_operators\"\n        },\n        {\n          \"include\": \"#wordlike_operators\"\n        },\n        {\n          \"include\": \"#type_casting_operators\"\n        },\n        {\n          \"include\": \"#control_flow_keywords\"\n        },\n        {\n          \"include\": \"#exception_keywords\"\n        },\n        {\n          \"include\": \"#the_this_keyword\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"#qualifiers_and_specifiers_post_parameters\"\n        },\n        {\n          \"include\": \"#functional_specifiers_pre_parameters\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#lambdas\"\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"include\": \"#parentheses\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"#scope_resolution_inner_generated\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"#semicolon\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ],\n      \"applyEndPatternLast\": 1\n    },\n    \"the_this_keyword\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"variable.language.this.cpp\"\n        }\n      }\n    },\n    \"type_alias\": {\n      \"match\": \"(using)(?:(?:\\\\s)+)?(?!namespace)(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)?(?![\\\\w<:.]))(?:(?:\\\\s)+)?(\\\\=)(?:(?:\\\\s)+)?((?:typename)?)(?:(?:\\\\s)+)?((?:(?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))(?<!\\\\w)(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\\\w)(?:\\\\s)+)+)?(?:(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)?(?![\\\\w<:.]))|(.*(?<!;)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)?(?:(?:\\\\s)+)?(?:(;)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.directive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        \"15\": {\n          \"name\": \"keyword.other.typename.cpp\"\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#storage_specifiers\"\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"18\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"25\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"30\": {\n          \"name\": \"meta.declaration.type.alias.value.unknown.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"33\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"34\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"37\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"38\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"39\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"40\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"41\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.declaration.type.alias.cpp\"\n    },\n    \"type_casting_operators\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:reinterpret_cast)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.wordlike.cpp keyword.operator.cast.$3.cpp\"\n        }\n      }\n    },\n    \"typedef_class\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)class(?!\\\\w))\",\n      \"end\": \"(?<=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.class.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.class.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.class.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.head.class.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.body.class.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.class.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_function_pointer\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=.*\\\\(\\\\*\\\\s*(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\s*\\\\))\",\n      \"end\": \"(?<=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n          \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#storage_types\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                },\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#scope_resolution_inner_generated\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"13\": {},\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"15\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"16\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"18\": {},\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"21\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"22\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"23\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"24\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"25\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"26\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"27\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"28\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"29\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"30\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"31\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"32\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n            },\n            \"33\": {\n              \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n            },\n            \"34\": {\n              \"name\": \"entity.name.type.alias.cpp entity.name.type.pointer.function.cpp\"\n            },\n            \"35\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n            },\n            \"36\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            \"37\": {\n              \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n            },\n            \"38\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n            },\n            \"39\": {\n              \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_parameter_context\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_struct\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)struct(?!\\\\w))\",\n      \"end\": \"(?<=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.struct.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.struct.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.struct.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.head.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.body.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_union\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)union(?!\\\\w))\",\n      \"end\": \"(?<=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.union.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.union.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.union.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.head.union.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.body.union.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.union.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typeid_operator\": {\n      \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.typeid\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"typename\": {\n      \"match\": \"(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?<!\\\\w)typename(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<17>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<17>?)+>)?(?![\\\\w<:.]))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {}\n      }\n    },\n    \"undef\": {\n      \"match\": \"(^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?undef\\\\b)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.undef.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.preprocessor.cpp\"\n        }\n      },\n      \"name\": \"meta.preprocessor.undef.cpp\"\n    },\n    \"union_block\": {\n      \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.union.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.union.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.union.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.head.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.body.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"union_declare\": {\n      \"match\": \"((?<!\\\\w)union(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.union.declare.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.union.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"using_name\": {\n      \"match\": \"(using)(?:\\\\s)+(?!namespace\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.directive.cpp\"\n        }\n      }\n    },\n    \"using_namespace\": {\n      \"begin\": \"(?<!\\\\w)(using)(?:\\\\s)+(namespace)(?:\\\\s)+((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<6>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?=;|\\\\n)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.directive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.namespace.directive.cpp storage.type.namespace.directive.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_using_inner_generated\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"6\": {},\n        \"7\": {\n          \"name\": \"entity.name.namespace.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.using-namespace.cpp\"\n    },\n    \"vararg_ellipses\": {\n      \"match\": \"(?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.)\",\n      \"name\": \"punctuation.vararg-ellipses.cpp\"\n    },\n    \"wordlike_operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:noexcept)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:compl)|(?:bitor)|(?:or_eq)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:or))(?!\\\\w)\",\n          \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$0.cpp\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/crystal.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"(?x)^\\n\\t    (\\\\s*+\\n\\t        (module|class|def(?!.*\\\\bend\\\\s*$)\\n\\t        |unless|if\\n\\t        |case\\n\\t        |begin\\n\\t        |for|while|until\\n\\t        |(  \\\"(\\\\\\\\.|[^\\\"])*+\\\"          # eat a double quoted string\\n\\t         | '(\\\\\\\\.|[^'])*+'        # eat a single quoted string\\n\\t         |   [^#\\\"']                # eat all but comments and strings\\n\\t         )*\\n\\t         (                        \\\\s   (do|begin|case)\\n\\t         | (?<!\\\\$)[-+=&|*/~%^<>~] \\\\s*+ (if|unless)\\n\\t         )\\n\\t        )\\\\b\\n\\t        (?! [^;]*+ ; .*? \\\\bend\\\\b )\\n\\t    |(  \\\"(\\\\\\\\.|[^\\\"])*+\\\"              # eat a double quoted string\\n\\t     | '(\\\\\\\\.|[^'])*+'            # eat a single quoted string\\n\\t     |   [^#\\\"']                    # eat all but comments and strings\\n\\t     )*\\n\\t     ( \\\\{ (?!  [^}]*+ \\\\} )\\n\\t     | \\\\[ (?! [^\\\\]]*+ \\\\] )\\n\\t     )\\n\\t    ).*$\\n\\t|   [#] .*? \\\\(fold\\\\) \\\\s*+ $         # Sune’s special marker\\n\\t\",\n  \"firstLineMatch\": \"^#!/.*\\\\bcrystal\",\n  \"foldingStopMarker\": \"(?x)\\n\\t\\t(   (^|;) \\\\s*+ end   \\\\s*+ ([#].*)? $\\n\\t\\t|   (^|;) \\\\s*+ end \\\\. .* $\\n\\t\\t|   ^     \\\\s*+ [}\\\\]] ,? \\\\s*+ ([#].*)? $\\n\\t\\t|   [#] .*? \\\\(end\\\\) \\\\s*+ $    # Sune’s special marker\\n\\t\\t|   ^=end\\n\\t\\t)\",\n  \"keyEquivalent\": \"^~C\",\n  \"fileTypes\": [\"cr\"],\n  \"repository\": {\n    \"nest_ltgt_r\": {\n      \"begin\": \"\\\\<\",\n      \"end\": \"\\\\>\",\n      \"patterns\": [{ \"include\": \"#regex_sub\" }, { \"include\": \"#nest_ltgt_r\" }],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"nest_curly_and_self\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"patterns\": [{ \"include\": \"#nest_curly_and_self\" }],\n          \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n        },\n        { \"include\": \"$self\" }\n      ]\n    },\n    \"nest_ltgt_i\": {\n      \"begin\": \"\\\\<\",\n      \"end\": \"\\\\>\",\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_ltgt_i\" }\n      ],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"nest_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [{ \"include\": \"#nest_brackets\" }],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"nest_brackets_r\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        { \"include\": \"#regex_sub\" },\n        { \"include\": \"#nest_brackets_r\" }\n      ],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"heredoc\": {\n      \"begin\": \"^<<-?\\\\w+\",\n      \"end\": \"$\",\n      \"patterns\": [{ \"include\": \"$self\" }]\n    },\n    \"interpolated_crystal\": {\n      \"patterns\": [\n        {\n          \"end\": \"(\\\\})\",\n          \"begin\": \"#\\\\{\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.embedded.begin.crystal\" }\n          },\n          \"contentName\": \"source.crystal\",\n          \"patterns\": [\n            { \"include\": \"#nest_curly_and_self\" },\n            { \"include\": \"$self\" }\n          ],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.embedded.end.crystal\" },\n            \"1\": { \"name\": \"source.crystal\" }\n          },\n          \"name\": \"meta.embedded.line.crystal\"\n        },\n        {\n          \"match\": \"(#@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.instance.crystal\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.variable.crystal\" }\n          }\n        },\n        {\n          \"match\": \"(#@@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.class.crystal\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.variable.crystal\" }\n          }\n        },\n        {\n          \"match\": \"(#\\\\$)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.global.crystal\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.variable.crystal\" }\n          }\n        }\n      ]\n    },\n    \"escaped_char\": {\n      \"match\": \"\\\\\\\\(?:[0-7]{1,3}|x[\\\\da-fA-F]{1,2}|.)\",\n      \"name\": \"constant.character.escape.crystal\"\n    },\n    \"nest_curly\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [{ \"include\": \"#nest_curly\" }],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"nest_ltgt\": {\n      \"begin\": \"\\\\<\",\n      \"end\": \"\\\\>\",\n      \"patterns\": [{ \"include\": \"#nest_ltgt\" }],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"nest_brackets_i\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_brackets_i\" }\n      ],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"nest_parens_r\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        { \"include\": \"#regex_sub\" },\n        { \"include\": \"#nest_parens_r\" }\n      ],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"nest_curly_i\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_curly_i\" }\n      ],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"nest_parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#nest_parens\" }],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"nest_parens_i\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_parens_i\" }\n      ],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    },\n    \"regex_sub\": {\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        {\n          \"match\": \"(\\\\{)\\\\d+(,\\\\d+)?(\\\\})\",\n          \"name\": \"string.regexp.arbitrary-repitition.crystal\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repitition.crystal\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repitition.crystal\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [{ \"include\": \"#escaped_char\" }],\n          \"name\": \"string.regexp.character-class.crystal\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.definition.character-class.crystal\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"#regex_sub\" }],\n          \"name\": \"string.regexp.group.crystal\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.definition.group.crystal\" }\n          }\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(#)\\\\s[[a-zA-Z0-9,. \\\\t?!-][^\\\\x{00}-\\\\x{7F}]]*$\",\n          \"comment\": \"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.\",\n          \"name\": \"comment.line.number-sign.crystal\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.crystal\" }\n          }\n        }\n      ]\n    },\n    \"nest_curly_r\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [{ \"include\": \"#regex_sub\" }, { \"include\": \"#nest_curly_r\" }],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.crystal\" } }\n    }\n  },\n  \"uuid\": \"A2124E02-D424-4897-86BA-79DD7C3B6133\",\n  \"patterns\": [\n    {\n      \"match\": \"^\\\\s*((?:private|abstract|private\\\\s+abstract)\\\\s+)?((?:class|struct))\\\\s+(([.a-zA-Z0-9_:]+(\\\\s*(<)\\\\s*[.a-zA-Z0-9_:]+)?)|((<<)\\\\s*[.a-zA-Z0-9_:]+))\",\n      \"name\": \"meta.class.crystal\",\n      \"captures\": {\n        \"7\": { \"name\": \"variable.other.object.crystal\" },\n        \"3\": { \"name\": \"entity.name.type.class.crystal\" },\n        \"8\": { \"name\": \"punctuation.definition.variable.crystal\" },\n        \"5\": { \"name\": \"entity.other.inherited-class.crystal\" },\n        \"1\": { \"name\": \"keyword.control.class.crystal\" },\n        \"6\": { \"name\": \"punctuation.separator.inheritance.crystal\" },\n        \"2\": { \"name\": \"keyword.control.class.crystal\" }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(private\\\\s+)?(module)\\\\s+(([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))*[A-Z]\\\\w*)\",\n      \"name\": \"meta.module.crystal\",\n      \"captures\": {\n        \"7\": { \"name\": \"punctuation.separator.inheritance.crystal\" },\n        \"3\": { \"name\": \"entity.name.type.module.crystal\" },\n        \"8\": { \"name\": \"entity.other.inherited-class.module.third.crystal\" },\n        \"4\": { \"name\": \"entity.other.inherited-class.module.first.crystal\" },\n        \"9\": { \"name\": \"punctuation.separator.inheritance.crystal\" },\n        \"5\": { \"name\": \"punctuation.separator.inheritance.crystal\" },\n        \"1\": { \"name\": \"keyword.control.module.crystal\" },\n        \"6\": { \"name\": \"entity.other.inherited-class.module.second.crystal\" },\n        \"2\": { \"name\": \"keyword.control.module.crystal\" }\n      }\n    },\n    {\n      \"comment\": \"else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.\",\n      \"match\": \"(?<!\\\\.)\\\\belse(\\\\s)+if\\\\b\",\n      \"name\": \"invalid.deprecated.crystal\"\n    },\n    {\n      \"comment\": \"everything being a reserved word, not a value and needing a 'end' is a..\",\n      \"match\": \"(?<!\\\\.)\\\\b(BEGIN|alias|as|begin|case|select|abstract|class|else|elsif|END|end|ensure|for|fun|if|ifdef|in|lib|module|of|out|rescue|struct|union|enum|macro|then|type|unless|until|when|while)\\\\b(?![?!])\",\n      \"name\": \"keyword.control.crystal\"\n    },\n    {\n      \"comment\": \"contextual smart pair support for block parameters\",\n      \"match\": \"(?<!\\\\.)\\\\bdo\\\\b\\\\s*\",\n      \"name\": \"keyword.control.start-block.crystal\"\n    },\n    {\n      \"comment\": \"contextual smart pair support\",\n      \"match\": \"(?<=\\\\{)(\\\\s+)\",\n      \"name\": \"meta.syntax.crystal.start-block\"\n    },\n    {\n      \"comment\": \" as above, just doesn't need a 'end' and does a logic operation\",\n      \"match\": \"(?<!\\\\.)\\\\b(and|not|or)\\\\b\",\n      \"name\": \"keyword.operator.logical.crystal\"\n    },\n    {\n      \"comment\": \" just as above but being not a logical operation\",\n      \"match\": \"(?<!\\\\.)\\\\b(alias|alias_method|break|next|pointerof|typeof|sizeof|instance_sizeof|zredo|retry|return|super|undef|yield|uninitialized|forall)\\\\b(?![?!])|\\\\bdefined\\\\?|\\\\bblock_given\\\\?\",\n      \"name\": \"keyword.control.pseudo-method.crystal\"\n    },\n    {\n      \"match\": \"\\\\b(nil|true|false)\\\\b(?![?!])\",\n      \"name\": \"constant.language.crystal\"\n    },\n    {\n      \"match\": \"\\\\b(__(DIR|FILE|LINE)__|self)\\\\b(?![?!])\",\n      \"name\": \"variable.language.crystal\"\n    },\n    {\n      \"comment\": \" everything being a method but having a special function is a..\",\n      \"match\": \"\\\\b(initialize|new|loop|include|extend|raise|class_getter|class_setter|class_property|getter|setter|property|catch|throw|private|module_function|public|protected|describe|it|with|delegate|def_hash|def_equals|def_equals_and_hash|forward_missing_to|record|assert_responds_to|spawn)\\\\b[!?]?\",\n      \"name\": \"keyword.other.special-method.crystal\"\n    },\n    {\n      \"begin\": \"\\\\b(require|gem)\\\\b\",\n      \"end\": \"$|(?=#)\",\n      \"patterns\": [{ \"include\": \"$self\" }],\n      \"name\": \"meta.require.crystal\",\n      \"captures\": { \"1\": { \"name\": \"keyword.other.special-method.crystal\" } }\n    },\n    {\n      \"match\": \"(@)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.instance.crystal\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.crystal\" } }\n    },\n    {\n      \"match\": \"(@@)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.class.crystal\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.crystal\" } }\n    },\n    {\n      \"match\": \"(\\\\$)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.global.crystal\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.crystal\" } }\n    },\n    {\n      \"match\": \"(\\\\$)(!|@|&|`|'|\\\\+|\\\\d+|~|=|/|\\\\\\\\|,|;|\\\\.|<|>|_|\\\\*|\\\\$|\\\\?|:|\\\"|-[0adFiIlpv])\",\n      \"name\": \"variable.other.readwrite.global.pre-defined.crystal\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.crystal\" } }\n    },\n    {\n      \"begin\": \"\\\\b(ENV)\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [{ \"include\": \"$self\" }],\n      \"name\": \"meta.environment-variable.crystal\",\n      \"beginCaptures\": { \"1\": { \"name\": \"variable.other.constant.crystal\" } }\n    },\n    { \"match\": \"\\\\b[A-Z]\\\\w*\", \"name\": \"support.class.crystal\" },\n    { \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\", \"name\": \"variable.other.constant.crystal\" },\n    {\n      \"end\": \"\\\\)\",\n      \"begin\": \"(?x)\\n\\t\\t\\t         (?=def\\\\b)                                                      # an optimization to help Oniguruma fail fast\\n\\t\\t\\t         (?<=^|\\\\s)(def)\\\\s+                                              # the def keyword\\n\\t\\t\\t         ( (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?                                   # a method name prefix\\n\\t\\t\\t           (?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?                              # the method name\\n\\t\\t\\t           |===?|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?) )  # …or an operator method\\n\\t\\t\\t         \\\\s*(\\\\()                                                        # the openning parenthesis for arguments\\n\\t\\t\\t        \",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.def.crystal\" },\n        \"2\": { \"name\": \"entity.name.function.crystal\" },\n        \"3\": { \"name\": \"punctuation.definition.parameters.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"$self\" },\n        {\n          \"match\": \"\\\\b[a-z\\\\_]\\\\w*\\\\b\",\n          \"name\": \"variable.parameter.function.crystal\"\n        }\n      ],\n      \"comment\": \"the method pattern comes from the symbol pattern, see there for a explanation\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.parameters.crystal\" }\n      },\n      \"name\": \"meta.function.method.with-arguments.crystal\"\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t         (?=def\\\\b)                                                      # an optimization to help Oniguruma fail fast\\n\\t\\t\\t         (?<=^|\\\\s)(def)\\\\s+                                              # the def keyword\\n\\t\\t\\t         ( (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?                                   # a method name prefix\\n\\t\\t\\t           (?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?                              # the method name\\n\\t\\t\\t           |===?|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?) )  # …or an operator method\\n\\t\\t\\t         [ \\\\t]                                                          # the space separating the arguments\\n\\t\\t\\t         (?=[ \\\\t]*[^\\\\s#;])                                              # make sure arguments and not a comment follow\\n\\t\\t\\t        \",\n      \"end\": \"$\",\n      \"comment\": \"same as the previous rule, but without parentheses around the arguments\",\n      \"name\": \"meta.function.method.with-arguments.crystal\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.def.crystal\" },\n        \"2\": { \"name\": \"entity.name.function.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"$self\" },\n        {\n          \"match\": \"\\\\b[a-z\\\\_]\\\\w*\\\\b\",\n          \"name\": \"variable.parameter.function.crystal\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t         (?=def\\\\b)                                                           # an optimization to help Oniguruma fail fast\\n\\t\\t\\t         (?<=^|\\\\s)(def)\\\\b                                                    # the def keyword\\n\\t\\t\\t         ( \\\\s+                                                               # an optional group of whitespace followed by…\\n\\t\\t\\t           ( (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?                                      # a method name prefix\\n\\t\\t\\t             (?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?                                 # the method name\\n\\t\\t\\t             |===?|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?) ) )?  # …or an operator method\\n\\t\\t\\t        \",\n      \"comment\": \" the optional name is just to catch the def also without a method-name\",\n      \"name\": \"meta.function.method.without-arguments.crystal\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.def.crystal\" },\n        \"3\": { \"name\": \"entity.name.function.crystal\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(0[xXoObB]\\\\h(?>_?\\\\h)*|\\\\d(?>_?\\\\d)*(\\\\.(?![^[:space:][:digit:]])(?>_?\\\\d)*)?([eE][-+]?\\\\d(?>_?\\\\d)*)?|0[bB][01]+)(_?(u8|u16|u32|u64|u128|i8|i16|i32|i64|i128|f32|f64))?\\\\b\",\n      \"name\": \"constant.numeric.crystal\"\n    },\n    {\n      \"begin\": \":'\",\n      \"end\": \"'\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\['\\\\\\\\]\", \"name\": \"constant.character.escape.crystal\" }\n      ],\n      \"name\": \"constant.other.symbol.single-quoted.crystal\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.constant.crystal\" } }\n    },\n    {\n      \"begin\": \":\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"name\": \"constant.other.symbol.double-quoted.crystal\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.constant.crystal\" } }\n    },\n    {\n      \"comment\": \"Needs higher precidence than regular expressions.\",\n      \"match\": \"(?<!\\\\()/=\",\n      \"name\": \"keyword.operator.assignment.augmented.crystal\"\n    },\n    {\n      \"end\": \"'\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\'|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        }\n      ],\n      \"comment\": \"single quoted string (does not allow interpolation)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.single.crystal\"\n    },\n    {\n      \"end\": \"\\\"\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"double quoted string (allows for interpolation)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.double.crystal\"\n    },\n    {\n      \"end\": \"`\",\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"execute string (allows for interpolation)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.interpolated.crystal\"\n    },\n    {\n      \"end\": \"\\\\}\",\n      \"begin\": \"%x\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_curly_i\" }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.interpolated.crystal\"\n    },\n    {\n      \"end\": \"\\\\]\",\n      \"begin\": \"%x\\\\[\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_brackets_i\" }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.interpolated.crystal\"\n    },\n    {\n      \"end\": \"\\\\>\",\n      \"begin\": \"%x\\\\<\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_ltgt_i\" }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.interpolated.crystal\"\n    },\n    {\n      \"end\": \"\\\\)\",\n      \"begin\": \"%x\\\\(\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_parens_i\" }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.interpolated.crystal\"\n    },\n    {\n      \"end\": \"\\\\1\",\n      \"begin\": \"%x([^\\\\w])\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.interpolated.crystal\"\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t   (?:\\n\\t\\t\\t     ^                      # beginning of line\\n\\t\\t\\t   | (?<=                   # or look-behind on:\\n\\t\\t\\t       [=>~(?:\\\\[,|&;]\\n\\t\\t\\t     | [\\\\s;]if\\\\s\\t\\t\\t# keywords\\n\\t\\t\\t     | [\\\\s;]elsif\\\\s\\n\\t\\t\\t     | [\\\\s;]while\\\\s\\n\\t\\t\\t     | [\\\\s;]unless\\\\s\\n\\t\\t\\t     | [\\\\s;]when\\\\s\\n\\t\\t\\t     | [\\\\s;]assert_match\\\\s\\n\\t\\t\\t     | [\\\\s;]or\\\\s\\t\\t\\t# boolean opperators\\n\\t\\t\\t     | [\\\\s;]and\\\\s\\n\\t\\t\\t     | [\\\\s;]not\\\\s\\n\\t\\t\\t     | [\\\\s.]index\\\\s\\t\\t\\t# methods\\n\\t\\t\\t     | [\\\\s.]scan\\\\s\\n\\t\\t\\t     | [\\\\s.]sub\\\\s\\n\\t\\t\\t     | [\\\\s.]sub!\\\\s\\n\\t\\t\\t     | [\\\\s.]gsub\\\\s\\n\\t\\t\\t     | [\\\\s.]gsub!\\\\s\\n\\t\\t\\t     | [\\\\s.]match\\\\s\\n\\t\\t\\t     )\\n\\t\\t\\t   | (?<=                  # or a look-behind with line anchor:\\n\\t\\t\\t        ^when\\\\s            # duplication necessary due to limits of regex\\n\\t\\t\\t      | ^if\\\\s\\n\\t\\t\\t      | ^elsif\\\\s\\n\\t\\t\\t      | ^while\\\\s\\n\\t\\t\\t      | ^unless\\\\s\\n\\t\\t\\t      )\\n\\t\\t\\t   )\\n\\t\\t\\t   \\\\s*((/))(?![*+{}?])\\n\\t\\t\\t\",\n      \"end\": \"((/[eimnosux]*))\",\n      \"comment\": \"regular expressions (normal)\\n\\t\\t\\twe only start a regexp if the character before it (excluding whitespace)\\n\\t\\t\\tis what we think is before a regexp\\n\\t\\t\\t\",\n      \"contentName\": \"string.regexp.classic.crystal\",\n      \"captures\": {\n        \"1\": { \"name\": \"string.regexp.classic.crystal\" },\n        \"2\": { \"name\": \"punctuation.definition.string.crystal\" }\n      },\n      \"patterns\": [{ \"include\": \"#regex_sub\" }]\n    },\n    {\n      \"end\": \"\\\\}[eimnosux]*\",\n      \"begin\": \"%r\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [{ \"include\": \"#regex_sub\" }, { \"include\": \"#nest_curly_r\" }],\n      \"comment\": \"regular expressions (literal)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.regexp.mod-r.crystal\"\n    },\n    {\n      \"end\": \"\\\\][eimnosux]*\",\n      \"begin\": \"%r\\\\[\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#regex_sub\" },\n        { \"include\": \"#nest_brackets_r\" }\n      ],\n      \"comment\": \"regular expressions (literal)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.regexp.mod-r.crystal\"\n    },\n    {\n      \"end\": \"\\\\)[eimnosux]*\",\n      \"begin\": \"%r\\\\(\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#regex_sub\" },\n        { \"include\": \"#nest_parens_r\" }\n      ],\n      \"comment\": \"regular expressions (literal)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.regexp.mod-r.crystal\"\n    },\n    {\n      \"end\": \"\\\\>[eimnosux]*\",\n      \"begin\": \"%r\\\\<\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [{ \"include\": \"#regex_sub\" }, { \"include\": \"#nest_ltgt_r\" }],\n      \"comment\": \"regular expressions (literal)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.regexp.mod-r.crystal\"\n    },\n    {\n      \"end\": \"\\\\1[eimnosux]*\",\n      \"begin\": \"%r([^\\\\w])\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [{ \"include\": \"#regex_sub\" }],\n      \"comment\": \"regular expressions (literal)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.regexp.mod-r.crystal\"\n    },\n    {\n      \"end\": \"\\\\)\",\n      \"begin\": \"%[QWSR]?\\\\(\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_parens_i\" }\n      ],\n      \"comment\": \"literal capable of interpolation ()\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.other.literal.upper.crystal\"\n    },\n    {\n      \"end\": \"\\\\]\",\n      \"begin\": \"%[QWSR]?\\\\[\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_brackets_i\" }\n      ],\n      \"comment\": \"literal capable of interpolation []\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.other.literal.upper.crystal\"\n    },\n    {\n      \"end\": \"\\\\>\",\n      \"begin\": \"%[QWSR]?\\\\<\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_ltgt_i\" }\n      ],\n      \"comment\": \"literal capable of interpolation <>\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.other.literal.upper.crystal\"\n    },\n    {\n      \"end\": \"\\\\}\",\n      \"begin\": \"%[QWSR]?\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" },\n        { \"include\": \"#nest_curly_i\" }\n      ],\n      \"comment\": \"literal capable of interpolation -- {}\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.double.crystal.mod\"\n    },\n    {\n      \"end\": \"\\\\1\",\n      \"begin\": \"%[QWSR]([^\\\\w])\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"literal capable of interpolation -- wildcard\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.other.literal.upper.crystal\"\n    },\n    {\n      \"end\": \"\\\\)\",\n      \"begin\": \"%[qws]\\\\(\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        },\n        { \"include\": \"#nest_parens\" }\n      ],\n      \"comment\": \"literal incapable of interpolation -- ()\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.other.literal.lower.crystal\"\n    },\n    {\n      \"end\": \"\\\\>\",\n      \"begin\": \"%[qws]\\\\<\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\>|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        },\n        { \"include\": \"#nest_ltgt\" }\n      ],\n      \"comment\": \"literal incapable of interpolation -- <>\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.other.literal.lower.crystal\"\n    },\n    {\n      \"end\": \"\\\\]\",\n      \"begin\": \"%[qws]\\\\[\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        },\n        { \"include\": \"#nest_brackets\" }\n      ],\n      \"comment\": \"literal incapable of interpolation -- []\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.other.literal.lower.crystal\"\n    },\n    {\n      \"end\": \"\\\\}\",\n      \"begin\": \"%[qws]\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        },\n        { \"include\": \"#nest_curly\" }\n      ],\n      \"comment\": \"literal incapable of interpolation -- {}\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.other.literal.lower.crystal\"\n    },\n    {\n      \"end\": \"\\\\1\",\n      \"begin\": \"%[qws]([^\\\\w])\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"Cant be named because its not necessarily an escape.\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ],\n      \"comment\": \"literal incapable of interpolation -- wildcard\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.quoted.other.literal.lower.crystal\"\n    },\n    {\n      \"match\": \"(?<!:)(:)(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?|@@?[a-zA-Z_]\\\\w*)\",\n      \"comment\": \"symbols\",\n      \"name\": \"constant.other.symbol.crystal\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.constant.crystal\" } }\n    },\n    {\n      \"match\": \"(?>[a-zA-Z_]\\\\w*(?>[?!])?)(:)(?!:)\",\n      \"comment\": \"symbols\",\n      \"name\": \"constant.other.symbol.crystal.19syntax\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.constant.crystal\" } }\n    },\n    {\n      \"begin\": \"#\",\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(BUG|DEPRECATED|FIXME|NOTE|OPTIMIZE|TODO)\\\\b\",\n          \"name\": \"storage.type.class.todo.crystal\"\n        }\n      ],\n      \"name\": \"comment.line.number-sign.crystal\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.crystal\" } }\n    },\n    {\n      \"comment\": \"\\n\\t\\t\\tmatches questionmark-letters.\\n\\n\\t\\t\\texamples (1st alternation = hex):\\n\\t\\t\\t?\\\\x1     ?\\\\x61\\n\\n\\t\\t\\texamples (2nd alternation = octal):\\n\\t\\t\\t?\\\\0      ?\\\\07     ?\\\\017\\n\\n\\t\\t\\texamples (3rd alternation = escaped):\\n\\t\\t\\t?\\\\n      ?\\\\b\\n\\n\\t\\t\\texamples (4th alternation = meta-ctrl):\\n\\t\\t\\t?\\\\C-a    ?\\\\M-a    ?\\\\C-\\\\M-\\\\C-\\\\M-a\\n\\n\\t\\t\\texamples (4th alternation = normal):\\n\\t\\t\\t?a       ?A       ?0\\n\\t\\t\\t?*       ?\\\"       ?(\\n\\t\\t\\t?.       ?#\\n\\n\\n\\t\\t\\tthe negative lookbehind prevents against matching\\n\\t\\t\\tp(42.tainted?)\\n\\t\\t\\t\",\n      \"match\": \"(?<!\\\\w)\\\\?(\\\\\\\\(x\\\\h{1,2}(?!\\\\h)\\\\b|0[0-7]{0,2}(?![0-7])\\\\b|[^x0MC])|(\\\\\\\\[MC]-)+\\\\w|[^\\\\s\\\\\\\\])\",\n      \"name\": \"constant.numeric.crystal\"\n    },\n    {\n      \"begin\": \"^__END__\\\\n\",\n      \"end\": \"(?=not)impossible\",\n      \"comment\": \"__END__ marker\",\n      \"contentName\": \"text.plain\",\n      \"captures\": { \"0\": { \"name\": \"string.unquoted.program-block.crystal\" } },\n      \"patterns\": [\n        {\n          \"begin\": \"(?=<?xml|<(?i:html\\\\b)|!DOCTYPE (?i:html\\\\b))\",\n          \"end\": \"(?=not)impossible\",\n          \"patterns\": [{ \"include\": \"text.html.basic\" }],\n          \"name\": \"text.html.embedded.crystal\"\n        }\n      ]\n    },\n    {\n      \"end\": \"\\\\s*\\\\2$\",\n      \"begin\": \"(?><<-(\\\"?)((?:[_\\\\w]+_|)HTML)\\\\b\\\\1)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"contentName\": \"text.html.embedded.crystal\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"text.html.basic\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with embedded HTML and indented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.embedded.html.crystal\"\n    },\n    {\n      \"end\": \"\\\\s*\\\\2$\",\n      \"begin\": \"(?><<-(\\\"?)((?:[_\\\\w]+_|)SQL)\\\\b\\\\1)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"contentName\": \"text.sql.embedded.crystal\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"source.sql\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with embedded SQL and indented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.embedded.sql.crystal\"\n    },\n    {\n      \"end\": \"\\\\s*\\\\2$\",\n      \"begin\": \"(?><<-(\\\"?)((?:[_\\\\w]+_|)CSS)\\\\b\\\\1)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"contentName\": \"text.css.embedded.crystal\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"source.css\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with embedded css and intented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.embedded.css.crystal\"\n    },\n    {\n      \"end\": \"\\\\s*\\\\2$\",\n      \"begin\": \"(?><<-(\\\"?)((?:[_\\\\w]+_|)CPP)\\\\b\\\\1)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"contentName\": \"text.c++.embedded.crystal\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"source.c++\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with embedded c++ and intented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.embedded.cplusplus.crystal\"\n    },\n    {\n      \"end\": \"\\\\s*\\\\2$\",\n      \"begin\": \"(?><<-(\\\"?)((?:[_\\\\w]+_|)C)\\\\b\\\\1)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"contentName\": \"text.c.embedded.crystal\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"source.c\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with embedded c++ and intented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.embedded.c.crystal\"\n    },\n    {\n      \"end\": \"\\\\s*\\\\2$\",\n      \"begin\": \"(?><<-(\\\"?)((?:[_\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\b\\\\1)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"contentName\": \"text.js.embedded.crystal\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"source.js\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with embedded javascript and intented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.embedded.js.crystal\"\n    },\n    {\n      \"end\": \"\\\\s*\\\\2$\",\n      \"begin\": \"(?><<-(\\\"?)((?:[_\\\\w]+_|)JQUERY)\\\\b\\\\1)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"contentName\": \"text.js.jquery.embedded.crystal\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"source.js.jquery\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with embedded javascript and intented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.embedded.js.jquery.crystal\"\n    },\n    {\n      \"end\": \"\\\\s*\\\\2$\",\n      \"begin\": \"(?><<-(\\\"?)((?:[_\\\\w]+_|)(?:SH|SHELL))\\\\b\\\\1)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"contentName\": \"text.shell.embedded.crystal\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"source.shell\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with embedded shell and intented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.embedded.shell.crystal\"\n    },\n    {\n      \"end\": \"\\\\s*\\\\2$\",\n      \"begin\": \"(?><<-(\\\"?)((?:[_\\\\w]+_|)RUBY)\\\\b\\\\1)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"contentName\": \"text.crystal.embedded.crystal\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"source.crystal\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with embedded crystal and intented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.embedded.crystal.crystal\"\n    },\n    {\n      \"begin\": \"(?>\\\\=\\\\s*<<(\\\\w+))\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"end\": \"^\\\\1$\",\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"name\": \"string.unquoted.heredoc.crystal\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      }\n    },\n    {\n      \"end\": \"\\\\s*\\\\1$\",\n      \"begin\": \"(?><<-(\\\\w+))\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.crystal\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"#interpolated_crystal\" },\n        { \"include\": \"#escaped_char\" }\n      ],\n      \"comment\": \"heredoc with indented terminator\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.crystal\" }\n      },\n      \"name\": \"string.unquoted.heredoc.crystal\"\n    },\n    {\n      \"begin\": \"(?<=\\\\{|do|\\\\{\\\\s|do\\\\s)(\\\\|)\",\n      \"end\": \"(\\\\|)\",\n      \"patterns\": [\n        {\n          \"match\": \"[_a-zA-Z][_a-zA-Z0-9]*\",\n          \"name\": \"variable.other.block.crystal\"\n        },\n        { \"match\": \",\", \"name\": \"punctuation.separator.variable.crystal\" }\n      ],\n      \"captures\": { \"1\": { \"name\": \"punctuation.separator.variable.crystal\" } }\n    },\n    { \"match\": \"=>\", \"name\": \"punctuation.separator.key-value\" },\n    {\n      \"match\": \"<<=|%=|&=|\\\\*=|\\\\*\\\\*=|\\\\+=|\\\\-=|\\\\^=|\\\\|{1,2}=|<<\",\n      \"name\": \"keyword.operator.assignment.augmented.crystal\"\n    },\n    {\n      \"match\": \"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\\\t])\\\\?\",\n      \"name\": \"keyword.operator.comparison.crystal\"\n    },\n    {\n      \"match\": \"(?<=[ \\\\t])!+|\\\\bnot\\\\b|&&|\\\\band\\\\b|\\\\|\\\\||\\\\bor\\\\b|\\\\^\",\n      \"name\": \"keyword.operator.logical.crystal\"\n    },\n    {\n      \"match\": \"(\\\\{\\\\%|\\\\%\\\\}|\\\\{\\\\{|\\\\}\\\\})\",\n      \"name\": \"keyword.operator.macro.crystal\"\n    },\n    {\n      \"match\": \"(%|&|\\\\*\\\\*|\\\\*|\\\\+|\\\\-|/)\",\n      \"name\": \"keyword.operator.arithmetic.crystal\"\n    },\n    { \"match\": \"=\", \"name\": \"keyword.operator.assignment.crystal\" },\n    { \"match\": \"\\\\||~|>>\", \"name\": \"keyword.operator.other.crystal\" },\n    { \"match\": \":\", \"name\": \"punctuation.separator.other.crystal\" },\n    { \"match\": \"\\\\;\", \"name\": \"punctuation.separator.statement.crystal\" },\n    { \"match\": \",\", \"name\": \"punctuation.separator.object.crystal\" },\n    { \"match\": \"\\\\.|::\", \"name\": \"punctuation.separator.method.crystal\" },\n    { \"match\": \"\\\\{|\\\\}\", \"name\": \"punctuation.section.scope.crystal\" },\n    { \"match\": \"\\\\[|\\\\]\", \"name\": \"punctuation.section.array.crystal\" },\n    { \"match\": \"\\\\(|\\\\)\", \"name\": \"punctuation.section.function.crystal\" }\n  ],\n  \"comment\": \"\\n\\tTODO: unresolved issues\\n\\n\\ttext:\\n\\t\\\"p << end\\n\\tprint me!\\n\\tend\\\"\\n\\tsymptoms:\\n\\tnot recognized as a heredoc\\n\\tsolution:\\n\\tthere is no way to distinguish perfectly between the << operator and the start\\n\\tof a heredoc. Currently, we require assignment to recognize a heredoc. More\\n\\trefinement is possible.\\n\\t• Heredocs with indented terminators (<<-) are always distinguishable, however.\\n\\t• Nested heredocs are not really supportable at present\\n\\n\\ttext:\\n\\tprint <<-'THERE'\\n\\tThis is single quoted.\\n\\tThe above used #{Time.now}\\n\\tTHERE\\n\\tsymtoms:\\n\\tFrom Programming Ruby p306; should be a non-interpolated heredoc.\\n\\n\\ttext:\\n\\t\\\"a\\\\332a\\\"\\n\\tsymptoms:\\n\\t'\\\\332' is not recognized as slash3.. which should be octal 332.\\n\\tsolution:\\n\\tplain regexp.. should be easy.\\n\\n    text:\\n    val?(a):p(b)\\n    val?'a':'b'\\n    symptoms:\\n    ':p' is recognized as a symbol.. its 2 things ':' and 'p'.\\n    :'b' has same problem.\\n    solution:\\n    ternary operator rule, precedence stuff, symbol rule.\\n    but also consider 'a.b?(:c)' ??\\n\",\n  \"name\": \"Crystal\",\n  \"scopeName\": \"source.crystal\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/csharp.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/dotnet/csharp-tmLanguage/blob/master/grammars/csharp.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/dotnet/csharp-tmLanguage/commit/16612717ccd557383c0c821d7b6ae6662492ffde\",\n  \"name\": \"C#\",\n  \"scopeName\": \"source.cs\",\n  \"patterns\": [\n    {\n      \"include\": \"#preprocessor\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#declarations\"\n    },\n    {\n      \"include\": \"#script-top-level\"\n    }\n  ],\n  \"repository\": {\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"include\": \"#extern-alias-directive\"\n        },\n        {\n          \"include\": \"#using-directive\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#namespace-declaration\"\n        },\n        {\n          \"include\": \"#type-declarations\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"script-top-level\": {\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#statement\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"type-declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#storage-modifier\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#delegate-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#record-declaration\"\n        },\n        {\n          \"include\": \"#struct-declaration\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"class-or-struct-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#storage-modifier\"\n        },\n        {\n          \"include\": \"#type-declarations\"\n        },\n        {\n          \"include\": \"#property-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#event-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#constructor-declaration\"\n        },\n        {\n          \"include\": \"#destructor-declaration\"\n        },\n        {\n          \"include\": \"#operator-declaration\"\n        },\n        {\n          \"include\": \"#conversion-operator-declaration\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"interface-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-declaration\"\n        },\n        {\n          \"include\": \"#event-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#while-statement\"\n        },\n        {\n          \"include\": \"#do-statement\"\n        },\n        {\n          \"include\": \"#for-statement\"\n        },\n        {\n          \"include\": \"#foreach-statement\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"include\": \"#else-part\"\n        },\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#goto-statement\"\n        },\n        {\n          \"include\": \"#return-statement\"\n        },\n        {\n          \"include\": \"#break-or-continue-statement\"\n        },\n        {\n          \"include\": \"#throw-statement\"\n        },\n        {\n          \"include\": \"#yield-statement\"\n        },\n        {\n          \"include\": \"#await-statement\"\n        },\n        {\n          \"include\": \"#try-statement\"\n        },\n        {\n          \"include\": \"#checked-unchecked-statement\"\n        },\n        {\n          \"include\": \"#lock-statement\"\n        },\n        {\n          \"include\": \"#using-statement\"\n        },\n        {\n          \"include\": \"#labeled-statement\"\n        },\n        {\n          \"include\": \"#object-creation-expression\"\n        },\n        {\n          \"include\": \"#array-creation-expression\"\n        },\n        {\n          \"include\": \"#anonymous-object-creation-expression\"\n        },\n        {\n          \"include\": \"#local-declaration\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#checked-unchecked-expression\"\n        },\n        {\n          \"include\": \"#typeof-or-default-expression\"\n        },\n        {\n          \"include\": \"#nameof-expression\"\n        },\n        {\n          \"include\": \"#throw-expression\"\n        },\n        {\n          \"include\": \"#interpolated-string\"\n        },\n        {\n          \"include\": \"#verbatim-interpolated-string\"\n        },\n        {\n          \"include\": \"#this-or-base-expression\"\n        },\n        {\n          \"include\": \"#switch-expression\"\n        },\n        {\n          \"include\": \"#conditional-operator\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#await-expression\"\n        },\n        {\n          \"include\": \"#query-expression\"\n        },\n        {\n          \"include\": \"#as-expression\"\n        },\n        {\n          \"include\": \"#is-expression\"\n        },\n        {\n          \"include\": \"#anonymous-method-expression\"\n        },\n        {\n          \"include\": \"#object-creation-expression\"\n        },\n        {\n          \"include\": \"#array-creation-expression\"\n        },\n        {\n          \"include\": \"#anonymous-object-creation-expression\"\n        },\n        {\n          \"include\": \"#invocation-expression\"\n        },\n        {\n          \"include\": \"#member-access-expression\"\n        },\n        {\n          \"include\": \"#element-access-expression\"\n        },\n        {\n          \"include\": \"#cast-expression\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#tuple-deconstruction-assignment\"\n        },\n        {\n          \"include\": \"#initializer-expression\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"extern-alias-directive\": {\n      \"begin\": \"\\\\s*(extern)\\\\b\\\\s*(alias)\\\\b\\\\s*(@?[_[:alpha:]][_[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.extern.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.alias.cs\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.alias.cs\"\n        }\n      },\n      \"end\": \"(?=;)\"\n    },\n    \"using-directive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(using)\\\\b\\\\s+(static)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.cs\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.static.cs\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(using)\\\\s+(?=(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.alias.cs\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#operator-assignment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(using)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.cs\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"name\": \"entity.name.type.namespace.cs\",\n              \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n            },\n            {\n              \"include\": \"#operator-assignment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attribute-section\": {\n      \"begin\": \"(\\\\[)(assembly|module|field|event|method|param|property|return|type)?(\\\\:)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.attribute-specifier.cs\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"attribute\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-name\"\n        },\n        {\n          \"include\": \"#attribute-arguments\"\n        }\n      ]\n    },\n    \"attribute-arguments\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attribute-named-argument\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"attribute-named-argument\": {\n      \"begin\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(?==)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.property.cs\"\n        }\n      },\n      \"end\": \"(?=(,|\\\\)))\",\n      \"patterns\": [\n        {\n          \"include\": \"#operator-assignment\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"namespace-declaration\": {\n      \"begin\": \"\\\\b(namespace)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.namespace.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"entity.name.type.namespace.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#declarations\"\n            },\n            {\n              \"include\": \"#using-directive\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            }\n          ]\n        }\n      ]\n    },\n    \"storage-modifier\": {\n      \"name\": \"storage.modifier.cs\",\n      \"match\": \"(?<!\\\\.)\\\\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref)\\\\b\"\n    },\n    \"class-declaration\": {\n      \"begin\": \"(?=\\\\bclass\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\\\b(class)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.class.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#base-types\"\n            },\n            {\n              \"include\": \"#generic-constraints\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-or-struct-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"delegate-declaration\": {\n      \"begin\": \"(?x)\\n(?:\\\\b(delegate)\\\\b)\\\\s+\\n(?<type_name>\\n  (?:\\n    (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(<([^<>]+)>)?\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.delegate.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.type.delegate.cs\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-parameter-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#generic-constraints\"\n        }\n      ]\n    },\n    \"enum-declaration\": {\n      \"begin\": \"(?=\\\\benum\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=enum)\",\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"(enum)\\\\s+(@?[_[:alpha:]][_[:alnum:]]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.enum.cs\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.enum.cs\"\n                }\n              }\n            },\n            {\n              \"begin\": \":\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.colon.cs\"\n                }\n              },\n              \"end\": \"(?=\\\\{)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#attribute-section\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"begin\": \"@?[_[:alpha:]][_[:alnum:]]*\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.variable.enum-member.cs\"\n                }\n              },\n              \"end\": \"(?=(,|\\\\}))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"begin\": \"(?=\\\\binterface\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(interface)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.interface.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#base-types\"\n            },\n            {\n              \"include\": \"#generic-constraints\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interface-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"record-declaration\": {\n      \"begin\": \"(?=\\\\brecord\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(record)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.record.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.record.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#base-types\"\n            },\n            {\n              \"include\": \"#generic-constraints\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-or-struct-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"struct-declaration\": {\n      \"begin\": \"(?=\\\\bstruct\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(struct)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.struct.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.struct.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#base-types\"\n            },\n            {\n              \"include\": \"#generic-constraints\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-or-struct-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"type-parameter-list\": {\n      \"begin\": \"\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.cs\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(in|out)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.type-parameter.cs\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        }\n      ]\n    },\n    \"base-types\": {\n      \"begin\": \":\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      },\n      \"end\": \"(?=\\\\{|where)\",\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#preprocessor\"\n        }\n      ]\n    },\n    \"generic-constraints\": {\n      \"begin\": \"(where)\\\\s+(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.where.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.type-parameter.cs\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      },\n      \"end\": \"(?=\\\\{|where|;|=>)\",\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.class.cs\",\n          \"match\": \"\\\\bclass\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.struct.cs\",\n          \"match\": \"\\\\bstruct\\\\b\"\n        },\n        {\n          \"match\": \"(new)\\\\s*(\\\\()\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.new.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#generic-constraints\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"begin\": \"(?x)\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s* # first field name\\n(?!=>|==)(?=,|;|=|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.variable.field.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.field.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#class-or-struct-members\"\n        }\n      ]\n    },\n    \"property-declaration\": {\n      \"begin\": \"(?x)\\n\\n# The negative lookahead below ensures that we don't match nested types\\n# or other declarations as properties.\\n(?![[:word:][:space:]]*\\\\b(?:class|interface|struct|enum|event)\\\\b)\\n\\n(?<return_type>\\n  (?<type_name>\\n    (?:\\n      (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\\\s+\\n)\\n(?<interface_name>\\\\g<type_name>\\\\s*\\\\.\\\\s*)?\\n(?<property_name>\\\\g<identifier>)\\\\s*\\n(?=\\\\{|=>|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"entity.name.variable.property.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-accessors\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#class-or-struct-members\"\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"begin\": \"(?x)\\n(?<return_type>\\n  (?<type_name>\\n    (?:\\n      (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\\\s+\\n)\\n(?<interface_name>\\\\g<type_name>\\\\s*\\\\.\\\\s*)?\\n(?<indexer_name>this)\\\\s*\\n(?=\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"keyword.other.this.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#bracketed-parameter-list\"\n        },\n        {\n          \"include\": \"#property-accessors\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"event-declaration\": {\n      \"begin\": \"(?x)\\n\\\\b(event)\\\\b\\\\s*\\n(?<return_type>\\n  (?<type_name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\\\s+\\n)\\n(?<interface_name>\\\\g<type_name>\\\\s*\\\\.\\\\s*)?\\n(?<event_names>\\\\g<identifier>(?:\\\\s*,\\\\s*\\\\g<identifier>)*)\\\\s*\\n(?=\\\\{|;|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.event.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.variable.event.cs\",\n              \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#event-accessors\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"property-accessors\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier.cs\",\n          \"match\": \"\\\\b(private|protected|internal)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.get.cs\",\n          \"match\": \"\\\\b(get)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.set.cs\",\n          \"match\": \"\\\\b(set)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.init.cs\",\n          \"match\": \"\\\\b(init)\\\\b\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"event-accessors\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.add.cs\",\n          \"match\": \"\\\\b(add)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.remove.cs\",\n          \"match\": \"\\\\b(remove)\\\\b\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"begin\": \"(?x)\\n(?<return_type>\\n  (?<type_name>\\n    (?:\\n      (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\\\s+\\n)\\n(?<interface_name>\\\\g<type_name>\\\\s*\\\\.\\\\s*)?\\n(\\\\g<identifier>)\\\\s*\\n(<([^<>]+)>)?\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"entity.name.function.cs\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-parameter-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#generic-constraints\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"constructor-declaration\": {\n      \"begin\": \"(?=@?[_[:alpha:]][_[:alnum:]]*\\\\s*\\\\()\",\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.cs\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.colon.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{|=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#constructor-initializer\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"constructor-initializer\": {\n      \"begin\": \"\\\\b(?:(base)|(this))\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.base.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.this.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"destructor-declaration\": {\n      \"begin\": \"(~)(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.tilde.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"operator-declaration\": {\n      \"begin\": \"(?x)\\n(?<type_name>\\n  (?:\\n    (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?<operator_keyword>(?:\\\\b(?:operator)))\\\\s*\\n(?<operator>(?:\\\\+|-|\\\\*|/|%|&|\\\\||\\\\^|\\\\<\\\\<|\\\\>\\\\>|==|!=|\\\\>|\\\\<|\\\\>=|\\\\<=|!|~|\\\\+\\\\+|--|true|false))\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"keyword.other.operator-decl.cs\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"conversion-operator-declaration\": {\n      \"begin\": \"(?x)\\n(?<explicit_or_implicit_keyword>(?:\\\\b(?:explicit|implicit)))\\\\s*\\n(?<operator_keyword>(?:\\\\b(?:operator)))\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(explicit)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.explicit.cs\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\b(implicit)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.implicit.cs\"\n                }\n              }\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.operator-decl.cs\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"block\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"begin\": \"(?<!=|!)(=)(?!=|>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.assignment.cs\"\n        }\n      },\n      \"end\": \"(?=[,\\\\)\\\\];}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#ref-modifier\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"expression-body\": {\n      \"begin\": \"=>\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.arrow.cs\"\n        }\n      },\n      \"end\": \"(?=[,\\\\);}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#ref-modifier\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"goto-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(goto)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.goto.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(case)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.cs\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(default)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.cs\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.label.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"return-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(return)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.return.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#ref-modifier\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"break-or-continue-statement\": {\n      \"match\": \"(?<!\\\\.)\\\\b(?:(break)|(continue))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.break.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.continue.cs\"\n        }\n      }\n    },\n    \"throw-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(throw)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.throw.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"yield-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#yield-return-statement\"\n        },\n        {\n          \"include\": \"#yield-break-statement\"\n        }\n      ]\n    },\n    \"yield-return-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(yield)\\\\b\\\\s*\\\\b(return)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.yield.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.return.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"yield-break-statement\": {\n      \"match\": \"(?<!\\\\.)\\\\b(yield)\\\\b\\\\s*\\\\b(break)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.yield.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.break.cs\"\n        }\n      }\n    },\n    \"await-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(await)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.await.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(if)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.if.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"else-part\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(else)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.else.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(switch)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#switch-label\"\n            },\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        }\n      ]\n    },\n    \"switch-expression\": {\n      \"begin\": \"(?x) (?<!\\\\.)\\\\b(switch)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#literal\"\n            },\n            {\n              \"include\": \"#switch-var-pattern\"\n            },\n            {\n              \"include\": \"#switch-property-expression\"\n            },\n            {\n              \"include\": \"#member-access-expression\"\n            },\n            {\n              \"include\": \"#switch-pattern\"\n            },\n            {\n              \"include\": \"#expression-body\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"switch-pattern\": {\n      \"begin\": \"(?x) # e.g. int x OR var x\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.local.cs\"\n        }\n      },\n      \"end\": \"(?==>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#switch-when-clause\"\n        }\n      ]\n    },\n    \"switch-property-expression\": {\n      \"begin\": \"(?x) # e.g. int x OR var x\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\\\\s*\\n(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"switch-var-pattern\": {\n      \"begin\": \"(?x) # match foreach (var (x, y) in ...)\\n(?:\\\\b(var)\\\\b\\\\s*)\\n(?<tuple>\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tuple-declaration-deconstruction-element-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?==>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#switch-when-clause\"\n        }\n      ]\n    },\n    \"switch-when-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(when)\\\\b\\\\s*(\\\\()?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.when.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"(?==>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"switch-label\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!\\\\.)\\\\b(case)\\\\b\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.cs\"\n            }\n          },\n          \"end\": \":\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.colon.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(default)\\\\b\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.colon.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"do-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(do)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.do.cs\"\n        }\n      },\n      \"end\": \"(?=;|})\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"while-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(while)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.while.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"for-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(for)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.for.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#local-variable-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"foreach-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(foreach)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.foreach.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\n(?:\\n  (\\\\bvar\\\\b)|\\n  (?<type_name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s+\\n\\\\b(in)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.var.cs\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#type\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"name\": \"entity.name.variable.local.cs\"\n                },\n                \"8\": {\n                  \"name\": \"keyword.control.loop.in.cs\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?x) # match foreach (var (x, y) in ...)\\n(?:\\\\b(var)\\\\b\\\\s*)?\\n(?<tuple>\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s+\\n\\\\b(in)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.var.cs\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tuple-declaration-deconstruction-element-list\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.loop.in.cs\"\n                }\n              }\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"try-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#try-block\"\n        },\n        {\n          \"include\": \"#catch-clause\"\n        },\n        {\n          \"include\": \"#finally-clause\"\n        }\n      ]\n    },\n    \"try-block\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(try)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"finally-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(finally)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.finally.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"catch-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(catch)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.catch.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?:(\\\\g<identifier>)\\\\b)?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#type\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"entity.name.variable.local.cs\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#when-clause\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"when-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(when)\\\\b\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.when.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"checked-unchecked-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(?:(checked)|(unchecked))\\\\b\\\\s*(?!\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.checked.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.unchecked.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"lock-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(lock)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.lock.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"using-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(using)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.cs\"\n        }\n      },\n      \"end\": \"(?=\\\\;|})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#local-variable-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"labeled-statement\": {\n      \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(:)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.label.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      }\n    },\n    \"local-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#local-constant-declaration\"\n        },\n        {\n          \"include\": \"#local-variable-declaration\"\n        },\n        {\n          \"include\": \"#local-function-declaration\"\n        },\n        {\n          \"include\": \"#local-tuple-var-deconstruction\"\n        }\n      ]\n    },\n    \"local-variable-declaration\": {\n      \"begin\": \"(?x)\\n(?:\\n  (?:(\\\\busing)\\\\s+)?\\n  (?:(\\\\bref)\\\\s+(?:(\\\\breadonly)\\\\s+)?)?(\\\\bvar\\\\b)| # ref local\\n  (?<type_name>\\n    (?:\\n      (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref local\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(?!=>)\\n(?=,|;|=|\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.cs\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"entity.name.variable.local.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.local.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"local-constant-declaration\": {\n      \"begin\": \"(?x)\\n(?<const_keyword>\\\\b(?:const)\\\\b)\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(?=,|;|=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.local.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.local.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"local-function-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration\"\n        }\n      ]\n    },\n    \"local-tuple-var-deconstruction\": {\n      \"begin\": \"(?x) # e.g. var (x, y) = GetPoint();\\n(?:\\\\b(var)\\\\b\\\\s*)\\n(?<tuple>\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s*\\n(?=;|=|\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tuple-declaration-deconstruction-element-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"tuple-deconstruction-assignment\": {\n      \"match\": \"(?x)\\n(?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s*\\n(?!=>|==)(?==)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tuple-deconstruction-element-list\"\n            }\n          ]\n        }\n      }\n    },\n    \"tuple-declaration-deconstruction-element-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#tuple-declaration-deconstruction-element-list\"\n        },\n        {\n          \"include\": \"#declaration-expression-tuple\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"match\": \"(?x) # e.g. x\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\\n(?=[,)])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.variable.tuple-element.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"tuple-deconstruction-element-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#tuple-deconstruction-element-list\"\n        },\n        {\n          \"include\": \"#declaration-expression-tuple\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"match\": \"(?x) # e.g. x\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\\n(?=[,)])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-expression-local\": {\n      \"match\": \"(?x) # e.g. int x OR var x\\n(?:\\n  \\\\b(var)\\\\b|\\n  (?<type_name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\b\\\\s*\\n(?=[,)\\\\]])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.local.cs\"\n        }\n      }\n    },\n    \"declaration-expression-tuple\": {\n      \"match\": \"(?x) # e.g. int x OR var x\\n(?:\\n  \\\\b(var)\\\\b|\\n  (?<type_name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n                (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\b\\\\s*\\n(?=[,)])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.tuple-element.cs\"\n        }\n      }\n    },\n    \"checked-unchecked-expression\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(?:(checked)|(unchecked))\\\\b\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.checked.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.unchecked.cs\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"typeof-or-default-expression\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(?:(typeof)|(default))\\\\b\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typeof.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.default.cs\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"nameof-expression\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(nameof)\\\\b\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.nameof.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"throw-expression\": {\n      \"match\": \"(?<!\\\\.)\\\\b(throw)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.throw.cs\"\n        }\n      }\n    },\n    \"interpolated-string\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"begin\": \"\\\\$\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"verbatim-interpolated-string\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"begin\": \"(?:\\\\$@|@\\\\$)\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"\\\"(?=[^\\\"])\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#verbatim-string-character-escape\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"name\": \"meta.interpolation.cs\",\n      \"begin\": \"(?<=[^\\\\{]|^)((?:\\\\{\\\\{)*)(\\\\{)(?=[^\\\\{])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.quoted.double.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.interpolation.begin.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.interpolation.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#char-literal\"\n        },\n        {\n          \"include\": \"#string-literal\"\n        },\n        {\n          \"include\": \"#verbatim-string-literal\"\n        },\n        {\n          \"include\": \"#tuple-literal\"\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.cs\",\n          \"match\": \"(?<!\\\\.)\\\\btrue\\\\b\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.cs\",\n          \"match\": \"(?<!\\\\.)\\\\bfalse\\\\b\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.cs\",\n      \"match\": \"(?<!\\\\.)\\\\bnull\\\\b\"\n    },\n    \"numeric-literal\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|_)|(?<=[eE])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$\",\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?([fFdDmM](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"2\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.other.separator.decimals.cs\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"8\": {\n                      \"name\": \"constant.numeric.other.exponent.cs\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.arithmetic.cs\"\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.operator.arithmetic.cs\"\n                    },\n                    \"11\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"12\": {\n                      \"name\": \"constant.numeric.other.suffix.cs\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01_](?:[01_]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.other.preffix.binary.cs\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.other.suffix.cs\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.other.preffix.hex.cs\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hex.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.other.suffix.cs\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"2\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.other.exponent.cs\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.arithmetic.cs\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.arithmetic.cs\"\n                    },\n                    \"8\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.other.suffix.cs\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|_)|(?<=[eE])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.cs\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"char-literal\": {\n      \"name\": \"string.quoted.single.cs\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.char.begin.cs\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.char.end.cs\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#char-character-escape\"\n        }\n      ]\n    },\n    \"char-character-escape\": {\n      \"name\": \"constant.character.escape.cs\",\n      \"match\": \"\\\\\\\\(['\\\"\\\\\\\\0abfnrtv]|x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{4})\"\n    },\n    \"string-literal\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"begin\": \"(?<!@)\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.cs\",\n      \"match\": \"\\\\\\\\(['\\\"\\\\\\\\0abfnrtv]|x[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4})\"\n    },\n    \"verbatim-string-literal\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"begin\": \"@\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"\\\"(?=[^\\\"])\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#verbatim-string-character-escape\"\n        }\n      ]\n    },\n    \"verbatim-string-character-escape\": {\n      \"name\": \"constant.character.escape.cs\",\n      \"match\": \"\\\"\\\"\"\n    },\n    \"tuple-literal\": {\n      \"begin\": \"(\\\\()(?=.*[:,])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#tuple-literal-element\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"tuple-literal-element\": {\n      \"begin\": \"(?x)\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\n(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.tuple-element.cs\"\n        }\n      },\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      }\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.assignment.compound.cs\",\n          \"match\": \"\\\\*=|/=|%=|\\\\+=|-=|\\\\?\\\\?=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.cs\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.cs\",\n          \"match\": \"<<|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.cs\",\n          \"match\": \"==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.cs\",\n          \"match\": \"<=|>=|<|>\"\n        },\n        {\n          \"name\": \"keyword.operator.logical.cs\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.cs\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.cs\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.cs\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.cs\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.cs\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.null-coalescing.cs\",\n          \"match\": \"\\\\?\\\\?\"\n        }\n      ]\n    },\n    \"switch-literal\": {\n      \"name\": \"constant.language.null.cs\",\n      \"match\": \"(?<!\\\\.)\\\\bnull\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language.null.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        }\n      ]\n    },\n    \"conditional-operator\": {\n      \"begin\": \"\\\\?(?!\\\\s*[?.\\\\[]|\\\\s*$)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.question-mark.cs\"\n        }\n      },\n      \"end\": \":\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.colon.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"await-expression\": {\n      \"name\": \"keyword.other.await.cs\",\n      \"match\": \"(?!\\\\.)\\\\b(await)\\\\b\"\n    },\n    \"parenthesized-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"initializer-expression\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"name\": \"variable.other.readwrite.cs\",\n      \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n    },\n    \"cast-expression\": {\n      \"match\": \"(?x)\\n(\\\\()\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(\\\\))(?=\\\\s*-*!*@?[_[:alnum:]\\\\(])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      }\n    },\n    \"as-expression\": {\n      \"match\": \"(?x)\\n(?<!\\\\.)\\\\b(as)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.as.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"is-expression\": {\n      \"match\": \"(?x)\\n(?<!\\\\.)\\\\b(is)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.is.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"this-or-base-expression\": {\n      \"match\": \"\\\\b(?:(base)|(this))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.base.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.this.cs\"\n        }\n      }\n    },\n    \"invocation-expression\": {\n      \"begin\": \"(?x)\\n(?:(\\\\?)\\\\s*)?                                     # preceding null-conditional operator?\\n(?:(\\\\.)\\\\s*)?                                     # preceding dot?\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*                   # method name\\n(?<type_args>\\\\s*<([^<>]|\\\\g<type_args>)+>\\\\s*)?\\\\s* # type arguments\\n(?=\\\\()                                           # open paren of argument list\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.null-conditional.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.cs\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.cs\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"element-access-expression\": {\n      \"begin\": \"(?x)\\n(?:(\\\\?)\\\\s*)?                        # preceding null-conditional operator?\\n(?:(\\\\.)\\\\s*)?                        # preceding dot?\\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*)? # property name\\n(?:(\\\\?)\\\\s*)?                        # null-conditional operator?\\n(?=\\\\[)                              # open bracket of argument list\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.null-conditional.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.cs\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.object.property.cs\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.null-conditional.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\])(?!\\\\s*\\\\[)\",\n      \"patterns\": [\n        {\n          \"include\": \"#bracketed-argument-list\"\n        }\n      ]\n    },\n    \"member-access-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?:(\\\\?)\\\\s*)?                   # preceding null-conditional operator?\\n(\\\\.)\\\\s*                        # preceding dot\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s* # property name\\n(?![_[:alnum:]]|\\\\(|(\\\\?)?\\\\[|<)  # next character is not alpha-numeric, nor a (, [, or <. Also, test for ?[\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.null-conditional.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.cs\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.object.property.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\.)?\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\n(?<type_params>\\\\s*<([^<>]|\\\\g<type_params>)+>\\\\s*)\\n(?=\\n  (\\\\s*\\\\?)?\\n  \\\\s*\\\\.\\\\s*@?[_[:alpha:]][_[:alnum:]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.cs\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.cs\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type-arguments\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(@?[_[:alpha:]][_[:alnum:]]*)\\n(?=\\n  (\\\\s*\\\\?)?\\n  \\\\s*\\\\.\\\\s*@?[_[:alpha:]][_[:alnum:]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.object.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"object-creation-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-creation-expression-with-parameters\"\n        },\n        {\n          \"include\": \"#object-creation-expression-with-no-parameters\"\n        }\n      ]\n    },\n    \"object-creation-expression-with-parameters\": {\n      \"begin\": \"(?x)\\n(new)\\\\s+\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"object-creation-expression-with-no-parameters\": {\n      \"match\": \"(?x)\\n(new)\\\\s+\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?=\\\\{|$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"array-creation-expression\": {\n      \"begin\": \"(?x)\\n\\\\b(new|stackalloc)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\\\\s*\\n(?=\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\])\",\n      \"patterns\": [\n        {\n          \"include\": \"#bracketed-argument-list\"\n        }\n      ]\n    },\n    \"anonymous-object-creation-expression\": {\n      \"begin\": \"\\\\b(new)\\\\b\\\\s*(?=\\\\{|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#initializer-expression\"\n        }\n      ]\n    },\n    \"bracketed-parameter-list\": {\n      \"begin\": \"(?=(\\\\[))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        }\n      },\n      \"end\": \"(?=(\\\\]))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\[)\",\n          \"end\": \"(?=\\\\])\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#attribute-section\"\n            },\n            {\n              \"include\": \"#parameter\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parenthesized-parameter-list\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#parameter\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"parameter\": {\n      \"match\": \"(?x)\\n(?:(?:\\\\b(ref|params|out|in|this)\\\\b)\\\\s+)?\\n(?<type_name>\\n  (?:\\n    (?:ref\\\\s+)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.parameter.cs\"\n        }\n      }\n    },\n    \"argument-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#named-argument\"\n        },\n        {\n          \"include\": \"#argument\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"bracketed-argument-list\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#named-argument\"\n        },\n        {\n          \"include\": \"#argument\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"named-argument\": {\n      \"begin\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.parameter.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      },\n      \"end\": \"(?=(,|\\\\)|\\\\]))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument\"\n        }\n      ]\n    },\n    \"argument\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier.cs\",\n          \"match\": \"\\\\b(ref|out|in)\\\\b\"\n        },\n        {\n          \"include\": \"#declaration-expression-local\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"query-expression\": {\n      \"begin\": \"(?x)\\n\\\\b(from)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\\n\\\\s+(\\\\g<identifier>)\\\\b\\\\s*\\n\\\\b(in)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.from.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        },\n        \"8\": {\n          \"name\": \"keyword.query.in.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"query-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#let-clause\"\n        },\n        {\n          \"include\": \"#where-clause\"\n        },\n        {\n          \"include\": \"#join-clause\"\n        },\n        {\n          \"include\": \"#orderby-clause\"\n        },\n        {\n          \"include\": \"#select-clause\"\n        },\n        {\n          \"include\": \"#group-clause\"\n        }\n      ]\n    },\n    \"let-clause\": {\n      \"begin\": \"(?x)\\n\\\\b(let)\\\\b\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\\n(=)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.let.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"where-clause\": {\n      \"begin\": \"(?x)\\n\\\\b(where)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.where.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"join-clause\": {\n      \"begin\": \"(?x)\\n\\\\b(join)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\\n\\\\s+(\\\\g<identifier>)\\\\b\\\\s*\\n\\\\b(in)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.join.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        },\n        \"8\": {\n          \"name\": \"keyword.query.in.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#join-on\"\n        },\n        {\n          \"include\": \"#join-equals\"\n        },\n        {\n          \"include\": \"#join-into\"\n        },\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"join-on\": {\n      \"match\": \"\\\\b(on)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.on.cs\"\n        }\n      }\n    },\n    \"join-equals\": {\n      \"match\": \"\\\\b(equals)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.equals.cs\"\n        }\n      }\n    },\n    \"join-into\": {\n      \"match\": \"(?x)\\n\\\\b(into)\\\\b\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.into.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        }\n      }\n    },\n    \"orderby-clause\": {\n      \"begin\": \"\\\\b(orderby)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.orderby.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#ordering-direction\"\n        },\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"ordering-direction\": {\n      \"match\": \"\\\\b(?:(ascending)|(descending))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.ascending.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.query.descending.cs\"\n        }\n      }\n    },\n    \"select-clause\": {\n      \"begin\": \"\\\\b(select)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.select.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"group-clause\": {\n      \"begin\": \"\\\\b(group)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.group.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#group-by\"\n        },\n        {\n          \"include\": \"#group-into\"\n        },\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"group-by\": {\n      \"match\": \"\\\\b(by)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.by.cs\"\n        }\n      }\n    },\n    \"group-into\": {\n      \"match\": \"(?x)\\n\\\\b(into)\\\\b\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.into.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        }\n      }\n    },\n    \"anonymous-method-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(?:\\\\b(async)\\\\b\\\\s*)?\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\\n(=>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.variable.parameter.cs\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arrow.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\)|;|}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#ref-modifier\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(?:\\\\b(async)\\\\b\\\\s*)?\\n(\\\\(.*?\\\\))\\\\s*\\n(=>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.cs\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#lambda-parameter-list\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arrow.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\)|;|}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#ref-modifier\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(?:\\\\b(async)\\\\b\\\\s*)?\\n(?:\\\\b(delegate)\\\\b\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.cs\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.delegate.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\)|;|}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"#parenthesized-parameter-list\"\n            },\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"lambda-parameter-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#lambda-parameter\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"lambda-parameter\": {\n      \"match\": \"(?x)\\n(?:\\\\b(ref|out|in)\\\\b)?\\\\s*\\n(?:(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+)?\\n(\\\\g<identifier>)\\\\b\\\\s*\\n(?=[,)])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.parameter.cs\"\n        }\n      }\n    },\n    \"type\": {\n      \"name\": \"meta.type.cs\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#ref-modifier\"\n        },\n        {\n          \"include\": \"#readonly-modifier\"\n        },\n        {\n          \"include\": \"#tuple-type\"\n        },\n        {\n          \"include\": \"#type-builtin\"\n        },\n        {\n          \"include\": \"#type-name\"\n        },\n        {\n          \"include\": \"#type-arguments\"\n        },\n        {\n          \"include\": \"#type-array-suffix\"\n        },\n        {\n          \"include\": \"#type-nullable-suffix\"\n        }\n      ]\n    },\n    \"ref-modifier\": {\n      \"name\": \"storage.modifier.cs\",\n      \"match\": \"\\\\b(ref)\\\\b\"\n    },\n    \"readonly-modifier\": {\n      \"name\": \"storage.modifier.cs\",\n      \"match\": \"\\\\b(readonly)\\\\b\"\n    },\n    \"tuple-type\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tuple-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"tuple-element\": {\n      \"match\": \"(?x)\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\n(?:(?<tuple_name>\\\\g<identifier>)\\\\b)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.variable.tuple-element.cs\"\n        }\n      }\n    },\n    \"type-builtin\": {\n      \"match\": \"\\\\b(bool|byte|char|decimal|double|float|int|long|object|sbyte|short|string|uint|ulong|ushort|void|dynamic)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.type.cs\"\n        }\n      }\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(\\\\:\\\\:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.alias.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.coloncolon.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(\\\\.)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.cs\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"type-arguments\": {\n      \"begin\": \"<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.cs\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-array-suffix\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-nullable-suffix\": {\n      \"match\": \"\\\\?\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.question-mark.cs\"\n        }\n      }\n    },\n    \"operator-assignment\": {\n      \"name\": \"keyword.operator.assignment.cs\",\n      \"match\": \"(?<!=|!)(=)(?!=)\"\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.cs\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.cs\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"name\": \"punctuation.accessor.cs\",\n      \"match\": \"\\\\.\"\n    },\n    \"preprocessor\": {\n      \"name\": \"meta.preprocessor.cs\",\n      \"begin\": \"^\\\\s*(\\\\#)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.hash.cs\"\n        }\n      },\n      \"end\": \"(?<=$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessor-define-or-undef\"\n        },\n        {\n          \"include\": \"#preprocessor-if-or-elif\"\n        },\n        {\n          \"include\": \"#preprocessor-else-or-endif\"\n        },\n        {\n          \"include\": \"#preprocessor-warning-or-error\"\n        },\n        {\n          \"include\": \"#preprocessor-region\"\n        },\n        {\n          \"include\": \"#preprocessor-endregion\"\n        },\n        {\n          \"include\": \"#preprocessor-load\"\n        },\n        {\n          \"include\": \"#preprocessor-r\"\n        },\n        {\n          \"include\": \"#preprocessor-line\"\n        },\n        {\n          \"include\": \"#preprocessor-pragma-warning\"\n        },\n        {\n          \"include\": \"#preprocessor-pragma-checksum\"\n        }\n      ]\n    },\n    \"preprocessor-define-or-undef\": {\n      \"match\": \"\\\\b(?:(define)|(undef))\\\\b\\\\s*\\\\b([_[:alpha:]][_[:alnum:]]*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.define.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.undef.cs\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.variable.preprocessor.symbol.cs\"\n        }\n      }\n    },\n    \"preprocessor-if-or-elif\": {\n      \"begin\": \"\\\\b(?:(if)|(elif))\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.if.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.elif.cs\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessor-expression\"\n        }\n      ]\n    },\n    \"preprocessor-else-or-endif\": {\n      \"match\": \"\\\\b(?:(else)|(endif))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.else.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.endif.cs\"\n        }\n      }\n    },\n    \"preprocessor-warning-or-error\": {\n      \"match\": \"\\\\b(?:(warning)|(error))\\\\b\\\\s*(.*)(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.warning.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.error.cs\"\n        },\n        \"3\": {\n          \"name\": \"string.unquoted.preprocessor.message.cs\"\n        }\n      }\n    },\n    \"preprocessor-load\": {\n      \"begin\": \"\\\\b(load)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.load.cs\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\"[^\\\"]*\\\\\\\"\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-r\": {\n      \"begin\": \"\\\\b(r)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.r.cs\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\"[^\\\"]*\\\\\\\"\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-region\": {\n      \"match\": \"\\\\b(region)\\\\b\\\\s*(.*)(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.region.cs\"\n        },\n        \"2\": {\n          \"name\": \"string.unquoted.preprocessor.message.cs\"\n        }\n      }\n    },\n    \"preprocessor-endregion\": {\n      \"match\": \"\\\\b(endregion)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.endregion.cs\"\n        }\n      }\n    },\n    \"preprocessor-line\": {\n      \"begin\": \"\\\\b(line)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.line.cs\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?:(default|hidden))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.preprocessor.default.cs\"\n            },\n            \"2\": {\n              \"name\": \"keyword.preprocessor.hidden.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"[0-9]+\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\"[^\\\"]*\\\\\\\"\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-pragma-warning\": {\n      \"match\": \"\\\\b(pragma)\\\\b\\\\s*\\\\b(warning)\\\\b\\\\s*\\\\b(?:(disable)|(restore))\\\\b(\\\\s*[0-9]+(?:\\\\s*,\\\\s*[0-9]+)?)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.pragma.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.warning.cs\"\n        },\n        \"3\": {\n          \"name\": \"keyword.preprocessor.disable.cs\"\n        },\n        \"4\": {\n          \"name\": \"keyword.preprocessor.restore.cs\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"[0-9]+\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"constant.numeric.decimal.cs\"\n                }\n              }\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      }\n    },\n    \"preprocessor-pragma-checksum\": {\n      \"match\": \"\\\\b(pragma)\\\\b\\\\s*\\\\b(checksum)\\\\b\\\\s*(\\\\\\\"[^\\\"]*\\\\\\\")\\\\s*(\\\\\\\"[^\\\"]*\\\\\\\")\\\\s*(\\\\\\\"[^\\\"]*\\\\\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.pragma.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.checksum.cs\"\n        },\n        \"3\": {\n          \"name\": \"string.quoted.double.cs\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.double.cs\"\n        },\n        \"5\": {\n          \"name\": \"string.quoted.double.cs\"\n        }\n      }\n    },\n    \"preprocessor-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?:(true)|(false)|([_[:alpha:]][_[:alnum:]]*))\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.language.boolean.true.cs\"\n            },\n            \"2\": {\n              \"name\": \"constant.language.boolean.false.cs\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.variable.preprocessor.symbol.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(==|!=)|(\\\\!|&&|\\\\|\\\\|)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.comparison.cs\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.logical.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.cs\",\n          \"begin\": \"/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.cs\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.cs\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.cs\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"patterns\": [\n            {\n              \"name\": \"comment.block.documentation.cs\",\n              \"begin\": \"(?<!/)///(?!/)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.cs\"\n                }\n              },\n              \"end\": \"(?=$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#xml-doc-comment\"\n                }\n              ]\n            },\n            {\n              \"name\": \"comment.line.double-slash.cs\",\n              \"begin\": \"(?<!/)//(?:(?!/)|(?=//))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.cs\"\n                }\n              },\n              \"end\": \"(?=$)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xml-doc-comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#xml-comment\"\n        },\n        {\n          \"include\": \"#xml-character-entity\"\n        },\n        {\n          \"include\": \"#xml-cdata\"\n        },\n        {\n          \"include\": \"#xml-tag\"\n        }\n      ]\n    },\n    \"xml-tag\": {\n      \"name\": \"meta.tag.cs\",\n      \"begin\": \"(?x)\\n(</?)\\n(\\n  (?:\\n    ([-_[:alnum:]]+)\\n    (:)\\n  )?\\n  ([-_[:alnum:]]+)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.cs\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.namespace.cs\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.localname.cs\"\n        }\n      },\n      \"end\": \"(/?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xml-attribute\"\n        }\n      ]\n    },\n    \"xml-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?:^|\\\\s+)\\n(\\n  (?:\\n    ([-_[:alnum:]]+)\\n    (:)\\n  )?\\n  ([-_[:alnum:]]+)\\n)\\n(=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.namespace.cs\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.cs\"\n            },\n            \"4\": {\n              \"name\": \"entity.other.attribute-name.localname.cs\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.equals.cs\"\n            }\n          }\n        },\n        {\n          \"include\": \"#xml-string\"\n        }\n      ]\n    },\n    \"xml-cdata\": {\n      \"name\": \"string.unquoted.cdata.cs\",\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"\\\\]\\\\]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        }\n      }\n    },\n    \"xml-string\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.cs\",\n          \"begin\": \"\\\\'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cs\"\n            }\n          },\n          \"end\": \"\\\\'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-character-entity\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.cs\",\n          \"begin\": \"\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cs\"\n            }\n          },\n          \"end\": \"\\\\\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-character-entity\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xml-character-entity\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.cs\",\n          \"match\": \"(?x)\\n(&)\\n(\\n  (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\\n  (?:\\\\#[[:digit:]]+)|\\n  (?:\\\\#x[[:xdigit:]]+)\\n)\\n(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.cs\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.constant.cs\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.cs\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"xml-comment\": {\n      \"name\": \"comment.block.cs\",\n      \"begin\": \"<!--\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.cs\"\n        }\n      },\n      \"end\": \"-->\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.cs\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/csound-document.tmLanguage.json",
    "content": "{\n  \"name\": \"Csound Document\",\n  \"scopeName\": \"source.csound-document\",\n  \"fileTypes\": [\"csd\"],\n  \"firstLineMatch\": \"<CsoundSynthesi[sz]er>\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<)(CsoundSynthesi[sz]er)(>)\",\n      \"end\": \"(</)(CsoundSynthesi[sz]er)(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.csound-document\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.csound-document\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.csound-document\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.csound-document\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.csound-document\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.csound-document\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)(CsOptions)(>)\",\n          \"end\": \"(</)(CsOptions)(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.csound-document\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.csound-document\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.csound-document\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.csound-document\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.csound-document\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.csound-document\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.csound#comments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.orchestra.csound-document\",\n          \"begin\": \"(<)(CsInstruments)(>)\",\n          \"end\": \"(</)(CsInstruments)(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.csound-document\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.csound-document\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.csound-document\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.csound-document\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.csound-document\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.csound-document\"\n            }\n          },\n          \"contentName\": \"source.csound.embedded.csound-document\",\n          \"patterns\": [\n            {\n              \"include\": \"source.csound\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.score.csound-document\",\n          \"begin\": \"(<)(CsScore)(>)\",\n          \"end\": \"(</)(CsScore)(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.csound-document\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.csound-document\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.csound-document\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.csound-document\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.csound-document\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.csound-document\"\n            }\n          },\n          \"contentName\": \"source.csound-score.embedded.csound-document\",\n          \"patterns\": [\n            {\n              \"include\": \"source.csound-score\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.html.csound-document\",\n          \"begin\": \"(?i)(?=<html)\",\n          \"end\": \"(?i)(?<=</html>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#tags\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#tags\"\n    }\n  ],\n  \"repository\": {\n    \"tags\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(</?)([\\\\w:-]+)\",\n          \"end\": \">\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.csound-document\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.csound-document\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.csound-document\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"text.xml#tagStuff\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/csound-score.tmLanguage.json",
    "content": "{\n  \"name\": \"Csound Score\",\n  \"scopeName\": \"source.csound-score\",\n  \"fileTypes\": [\"sco\"],\n  \"patterns\": [\n    {\n      \"include\": \"source.csound#preprocessorDirectives\"\n    },\n    {\n      \"include\": \"source.csound#commentsAndMacroUses\"\n    },\n    {\n      \"name\": \"keyword.control.csound-score\",\n      \"match\": \"[aBbCdefiqstvxy]\"\n    },\n    {\n      \"name\": \"invalid.illegal.csound-score\",\n      \"match\": \"w\"\n    },\n    {\n      \"name\": \"constant.numeric.language.csound-score\",\n      \"match\": \"z\"\n    },\n    {\n      \"name\": \"meta.p-symbol.csound-score\",\n      \"match\": \"([nNpP][pP])(\\\\d+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.csound-score\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.integer.decimal.csound-score\"\n        }\n      }\n    },\n    {\n      \"begin\": \"(m)|(n)\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.mark.preprocessor.csound-score\"\n        },\n        \"2\": {\n          \"name\": \"keyword.repeat-mark.preprocessor.csound-score\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.csound#comments\"\n        },\n        {\n          \"name\": \"entity.name.label.csound-score\",\n          \"match\": \"[A-Z_a-z]\\\\w*\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"r\\\\b\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.repeat-section.preprocessor.csound-score\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.csound#comments\"\n        },\n        {\n          \"begin\": \"\\\\d+\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.integer.decimal.csound-score\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.csound#comments\"\n            },\n            {\n              \"include\": \"source.csound#macroNames\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"include\": \"source.csound#numbers\"\n    },\n    {\n      \"name\": \"keyword.operator.csound-score\",\n      \"match\": \"[!+\\\\-*/^%&|<>#~.]\"\n    },\n    {\n      \"name\": \"string.quoted.csound-score\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.csound-score\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.csound-score\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.csound#macroUses\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.braced-loop.csound-score\",\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.braced-loop.begin.csound-score\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.braced-loop.end.csound-score\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"meta.braced-loop-details.csound-score\",\n          \"begin\": \"\\\\G\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\d+\",\n              \"end\": \"$\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"constant.numeric.integer.decimal.csound-score\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"[A-Z_a-z]\\\\w*\\\\b\",\n                  \"end\": \"$\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"entity.name.function.preprocessor.csound-score\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#comments\"\n                    },\n                    {\n                      \"name\": \"invalid.illegal.csound-score\",\n                      \"match\": \"\\\\S+\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"name\": \"invalid.illegal.csound-score\",\n                  \"match\": \"\\\\S+\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"name\": \"invalid.illegal.csound-score\",\n              \"match\": \"\\\\S+\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\",\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/csound.tmLanguage.json",
    "content": "{\n  \"name\": \"Csound\",\n  \"scopeName\": \"source.csound\",\n  \"fileTypes\": [\"orc\", \"udo\"],\n  \"patterns\": [\n    {\n      \"include\": \"#commentsAndMacroUses\"\n    },\n    {\n      \"name\": \"meta.instrument-block.csound\",\n      \"begin\": \"\\\\b(?=instr\\\\b)\",\n      \"end\": \"\\\\bendin\\\\b\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.csound\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"meta.instrument-declaration.csound\",\n          \"begin\": \"instr\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.function.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.function.csound\",\n              \"match\": \"\\\\d+|[A-Z_a-z]\\\\w*\"\n            },\n            {\n              \"include\": \"#commentsAndMacroUses\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#commentsAndMacroUses\"\n        },\n        {\n          \"include\": \"#labels\"\n        },\n        {\n          \"include\": \"#partialExpressions\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.opcode-definition.csound\",\n      \"begin\": \"\\\\b(?=opcode\\\\b)\",\n      \"end\": \"\\\\bendop\\\\b\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.csound\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"meta.opcode-declaration.csound\",\n          \"begin\": \"opcode\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.function.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"meta.opcode-details.csound\",\n              \"begin\": \"[A-Z_a-z]\\\\w*\\\\b\",\n              \"end\": \"$\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.function.opcode.csound\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"name\": \"meta.opcode-type-signature.csound\",\n                  \"begin\": \"\\\\b(?:0|[aijkOPVKopS\\\\[\\\\]]+)\",\n                  \"end\": \",|$\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"storage.type.csound\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#commentsAndMacroUses\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#commentsAndMacroUses\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#commentsAndMacroUses\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#commentsAndMacroUses\"\n        },\n        {\n          \"include\": \"#labels\"\n        },\n        {\n          \"include\": \"#partialExpressions\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#labels\"\n    },\n    {\n      \"include\": \"#partialExpressions\"\n    }\n  ],\n  \"repository\": {\n    \"bracedStringContents\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escapeSequences\"\n        },\n        {\n          \"include\": \"#formatSpecifiers\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.csound\",\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.csound\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.csound\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.double-slash.csound\",\n          \"begin\": \"//\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.csound\"\n            }\n          }\n        },\n        {\n          \"include\": \"#semicolonComments\"\n        },\n        {\n          \"include\": \"#lineContinuations\"\n        }\n      ]\n    },\n    \"semicolonComments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.line.semicolon.csound\",\n          \"begin\": \";\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.csound\"\n            }\n          }\n        }\n      ]\n    },\n    \"commentsAndMacroUses\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#macroUses\"\n        }\n      ]\n    },\n    \"decimalNumbers\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.integer.decimal.csound\",\n          \"match\": \"\\\\d+\"\n        }\n      ]\n    },\n    \"escapeSequences\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.csound\",\n          \"match\": \"\\\\\\\\(?:[abfnrtv\\\"\\\\\\\\]|[0-7]{1,3})\"\n        }\n      ]\n    },\n    \"floatingPointNumbers\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.float.csound\",\n          \"match\": \"(?:\\\\d+[Ee][+-]?\\\\d+)|(?:\\\\d+\\\\.\\\\d*|\\\\d*\\\\.\\\\d+)(?:[Ee][+-]?\\\\d+)?\"\n        }\n      ]\n    },\n    \"formatSpecifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.placeholder.csound\",\n          \"match\": \"%[#0\\\\- +]*\\\\d*(?:\\\\.\\\\d+)?[diuoxXfFeEgGaAcs]\"\n        },\n        {\n          \"name\": \"constant.character.escape.csound\",\n          \"match\": \"%%\"\n        }\n      ]\n    },\n    \"labels\": {\n      \"patterns\": [\n        {\n          \"match\": \"^[ \\\\t]*(\\\\w+)(:)(?:[ \\\\t]+|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.csound\"\n            },\n            \"2\": {\n              \"name\": \"entity.punctuation.label.csound\"\n            }\n          }\n        }\n      ]\n    },\n    \"lineContinuations\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\)[ \\\\t]*((;).*)?$\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.character.escape.line-continuation.csound\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.semicolon.csound\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.csound\"\n            }\n          }\n        }\n      ]\n    },\n    \"macroNames\": {\n      \"patterns\": [\n        {\n          \"match\": \"([A-Z_a-z]\\\\w*)|(\\\\d+\\\\w*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.preprocessor.csound\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.csound\"\n            }\n          }\n        }\n      ]\n    },\n    \"macroParameterValueParenthetical\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.macro-parameter-value-parenthetical.csound\",\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#macroParameterValueParenthetical\"\n            },\n            {\n              \"name\": \"constant.character.escape.csound\",\n              \"match\": \"\\\\\\\\\\\\)\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"macroUses\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-like-macro-use.csound\",\n          \"begin\": \"(\\\\$[A-Z_a-z]\\\\w*\\\\.?)\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.preprocessor.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"string.quoted.csound\",\n              \"begin\": \"\\\"\",\n              \"end\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.csound\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.csound\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"([#'()])|(\\\\\\\\[#'()])\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"invalid.illegal.csound\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.character.escape.csound\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#quotedStringContents\"\n                }\n              ]\n            },\n            {\n              \"name\": \"string.braced.csound\",\n              \"begin\": \"\\\\{\\\\{\",\n              \"end\": \"\\\\}\\\\}\",\n              \"patterns\": [\n                {\n                  \"match\": \"([#'()])|(\\\\\\\\[#'()])\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"invalid.illegal.csound\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.character.escape.csound\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#bracedStringContents\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#macroParameterValueParenthetical\"\n            },\n            {\n              \"name\": \"punctuation.macro-parameter-separator.csound\",\n              \"match\": \"[#']\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"name\": \"entity.name.function.preprocessor.csound\",\n          \"match\": \"\\\\$[A-Z_a-z]\\\\w*(?:\\\\.|\\\\b)\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#floatingPointNumbers\"\n        },\n        {\n          \"match\": \"(0[Xx])([0-9A-Fa-f]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.number.csound\"\n            },\n            \"2\": {\n              \"name\": \"constant.numeric.integer.hexadecimal.csound\"\n            }\n          }\n        },\n        {\n          \"include\": \"#decimalNumbers\"\n        }\n      ]\n    },\n    \"partialExpressions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessorDirectives\"\n        },\n        {\n          \"name\": \"variable.language.csound\",\n          \"match\": \"\\\\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\\\\b\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"name\": \"keyword.operator.csound\",\n          \"match\": \"\\\\+=|-=|\\\\*=|/=|<<|>>|<=|>=|==|!=|&&|\\\\|\\\\||[~¬]|[=!+\\\\-*/^%&|<>#?:]\"\n        },\n        {\n          \"include\": \"#quotedStrings\"\n        },\n        {\n          \"name\": \"string.braced.csound\",\n          \"begin\": \"\\\\{\\\\{\",\n          \"end\": \"\\\\}\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#bracedStringContents\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.control.csound\",\n          \"match\": \"\\\\b(?:do|else(?:if)?|end(?:if|until)|fi|i(?:f|then)|kthen|od|r(?:ir)?eturn|then|until|while)\\\\b\"\n        },\n        {\n          \"begin\": \"\\\\b((?:c(?:g|in?|k|nk?)goto)|goto|igoto|kgoto|loop_[gl][et]|r(?:einit|igoto)|ti(?:goto|mout))\\\\b\",\n          \"end\": \"(\\\\w+)\\\\s*(?:((//).*)|((;).*))?$\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.csound\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.csound\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.double-slash.csound\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.csound\"\n            },\n            \"4\": {\n              \"name\": \"comment.line.semicolon.csound\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.comment.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#commentsAndMacroUses\"\n            },\n            {\n              \"include\": \"#partialExpressions\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(printk?s)[ \\\\t]*(?=\\\")\",\n          \"end\": \"(?<=\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"string.quoted.csound\",\n              \"begin\": \"\\\"\",\n              \"end\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.csound\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.csound\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#macroUses\"\n                },\n                {\n                  \"name\": \"constant.character.escape.csound\",\n                  \"match\": \"\\\\\\\\\\\\\\\\[aAbBnNrRtT]\"\n                },\n                {\n                  \"include\": \"#bracedStringContents\"\n                },\n                {\n                  \"include\": \"#lineContinuations\"\n                },\n                {\n                  \"name\": \"constant.character.escape.csound\",\n                  \"match\": \"%[!nNrRtT]|[~^]{1,2}\"\n                },\n                {\n                  \"name\": \"invalid.illegal.csound\",\n                  \"match\": \"[^\\\"\\\\\\\\]*[^\\\\n\\\"\\\\\\\\]$\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(readscore|scoreline(?:_i)?)[ \\\\t]*(\\\\{\\\\{)\",\n          \"end\": \"\\\\}\\\\}\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.csound\"\n            },\n            \"2\": {\n              \"name\": \"string.braced.csound\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.braced.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.csound-score\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(pyl?run[it]?)[ \\\\t]*(\\\\{\\\\{)\",\n          \"end\": \"\\\\}\\\\}\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.csound\"\n            },\n            \"2\": {\n              \"name\": \"string.braced.csound\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.braced.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(lua_exec)[ \\\\t]*(\\\\{\\\\{)\",\n          \"end\": \"\\\\}\\\\}\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.csound\"\n            },\n            \"2\": {\n              \"name\": \"string.braced.csound\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.braced.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.lua\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\blua_opdef\\\\b\",\n          \"end\": \"\\\\}\\\\}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.csound\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.braced.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#quotedStrings\"\n            },\n            {\n              \"begin\": \"\\\\{\\\\{\",\n              \"end\": \"(?=\\\\}\\\\})\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"string.braced.csound\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.lua\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"name\": \"support.variable.csound\",\n          \"match\": \"\\\\bp\\\\d+\\\\b\"\n        },\n        {\n          \"match\": \"(?:\\\\b(ATS(?:add(?:(?:nz)?)|bufread|cross|in(?:fo|terpread)|partialtap|read(?:(?:nz)?)|sinnoi)|FL(?:b(?:ox|ut(?:Bank|ton))|c(?:loseButton|o(?:lor(?:(?:2)?)|unt))|execButton|g(?:etsnap|roup(?:(?:(?:E|_e)nd)?))|h(?:ide|vsBox(?:(?:SetValue)?))|joy|k(?:eyIn|nob)|l(?:abel|oadsnap)|mouse|p(?:a(?:ck(?:(?:(?:E|_e)nd)?)|nel(?:(?:(?:E|_e)nd)?))|rintk(?:(?:2)?))|r(?:oller|un)|s(?:avesnap|croll(?:(?:(?:E|_e)nd)?)|et(?:Align|Box|Color(?:(?:2)?)|Font|Position|S(?:ize|napGroup)|Text(?:(?:Color|(?:Siz|Typ)e)?)|Val(?:(?:(?:(?:_)?)i)?)|snap)|how|lid(?:Bnk(?:(?:2(?:(?:Set(?:(?:k)?))?)|GetHandle|Set(?:(?:k)?))?)|er))|t(?:abs(?:(?:(?:E|_e)nd)?)|ext)|update|v(?:alue|keybd|slidBnk(?:(?:2)?))|xyin)|Jacko(?:Audio(?:In(?:(?:Connect)?)|Out(?:(?:Connect)?))|Freewheel|In(?:fo|it)|Midi(?:(?:InConnec|Ou(?:(?:tConnec)?))t)|NoteOut|On|Transport)|K35_(?:(?:[hl])pf)|Mixer(?:Clear|GetLevel|Receive|Se(?:nd|tLevel(?:(?:_i)?)))|OSC(?:bundle|count|init(?:(?:M)?)|listen|raw|send(?:(?:_lo)?))|STK(?:B(?:andedWG|eeThree|low(?:Botl|Hole)|owed|rass)|Clarinet|Drummer|F(?:MVoices|lute)|HevyMetl|M(?:andolin|o(?:dalBar|og))|P(?:ercFlut|lucked)|R(?:esonate|hodey)|S(?:axofony|hakers|i(?:mple|tar)|tifKarp)|TubeBell|VoicForm|W(?:histle|urley))|a(?:bs|ctive|ds(?:r|yn(?:(?:t(?:(?:2)?))?))|ftouch|l(?:lpole|pass|wayson)|mp(?:db(?:(?:fs)?)|midi(?:(?:curve|d)?))|poleparams|r(?:duino(?:Read(?:(?:F)?)|St(?:art|op))|eson(?:(?:k)?))|tone(?:(?:[kx])?)|utocorr)|b(?:a(?:bo|lance(?:(?:2)?)|mboo|rmodel)|bcut(?:[ms])|e(?:(?:tara|xpr)nd)|form(?:dec(?:[12])|enc1)|i(?:nit|quad(?:(?:a)?)|rnd)|ob|pf(?:(?:cos)?)|qrez|u(?:t(?:b(?:[pr])|hp|lp|t(?:er(?:b(?:[pr])|(?:[hl])p)|on))|zz))|c(?:2r|a(?:basa|uchy(?:(?:i)?))|brt|e(?:il|ll|nt(?:(?:roid)?)|ps(?:(?:inv)?))|h(?:an(?:ctrl|ged(?:(?:2)?)|[io])|e(?:byshevpoly|ckbox)|n(?:_(?:[Sak])|clear|export|get(?:(?:ks|[aiks])?)|mix|params|set(?:(?:ks|[aiks])?))|uap)|l(?:ear|filt|ip|ocko(?:ff|n))|mp(?:(?:lxprod)?)|nt(?:C(?:reate|ycles)|Delete(?:(?:_i)?)|Re(?:ad|set)|State)|o(?:m(?:b(?:(?:inv)?)|p(?:ile(?:csd|orc|str)|ress(?:(?:2)?)))|n(?:nect|trol|v(?:(?:l|olv)e))|py(?:a2ftab|f2array)|s(?:(?:h|inv|seg(?:(?:[br])?))?)|unt(?:(?:_i)?))|p(?:s(?:2pch|midi(?:(?:b|nn)?)|oct|pch|t(?:mid|un(?:(?:i)?))|xpch)|u(?:meter|prc))|r(?:oss(?:2|fm(?:(?:i|pm(?:(?:i)?))?)|pm(?:(?:i)?))|unch)|t(?:lchn|rl(?:14|21|7|init|pr(?:eset|int(?:(?:presets)?))|s(?:ave|elect)))|userrnd)|d(?:a(?:m|te(?:(?:s)?))|b(?:(?:(?:(?:fs)?)amp)?)|c(?:block(?:(?:2)?)|onv|t(?:(?:inv)?))|e(?:interleave|l(?:ay(?:(?:[1krw])?)|tap(?:(?:xw|[3inx])?))|norm)|i(?:ff|ode_ladder|rectory|s(?:k(?:grain|in(?:(?:2)?))|p(?:fft|lay)|tort(?:(?:1)?))|vz)|o(?:ppler|t|wnsamp)|ripwater|ssi(?:a(?:ctivate|udio)|ctls|(?:ini|lis)t)|u(?:mpk(?:(?:[234])?)|s(?:errnd|t(?:(?:2)?))))|e(?:nvlpx(?:(?:r)?)|phasor|qfil|v(?:alstr|ent(?:(?:_i)?))|x(?:citer|itnow|p(?:(?:curve|on|rand(?:(?:i)?)|seg(?:(?:ba|[abr])?))?)))|f(?:a(?:reylen(?:(?:i)?)|ust(?:audio|c(?:ompile|tl)|dsp|gen|play))|ft(?:(?:inv)?)|i(?:close|l(?:e(?:bit|len|nchnls|peak|s(?:cal|r)|valid)|larray|ter2)|n(?:(?:[ik])?)|open)|l(?:a(?:nger|shtxt)|oo(?:per(?:(?:2)?)|r)|uid(?:AllOut|C(?:C(?:[ik])|ontrol)|Engine|Info|Load|Note|Out|ProgramSelect|SetInterpMethod))|m(?:a(?:nal|x)|b(?:3|ell)|in|metal|od|percfl|(?:rhod|voic|wurli)e)|o(?:f(?:2|ilter)|l(?:d|low(?:(?:2)?))|scil(?:(?:i)?)|ut(?:(?:ir|[ik])?)|[fg])|print(?:(?:(?:k)?)s)|r(?:a(?:c(?:(?:talnoise)?)|mebuffer)|eeverb)|t(?:audio|c(?:hnls|onv|ps)|exists|free|gen(?:(?:once|tmp)?)|l(?:en|oad(?:(?:k)?)|ptim)|morf|om|print|resize(?:(?:i)?)|s(?:a(?:mplebank|ve(?:(?:k)?))|et|lice(?:(?:i)?)|r)))|g(?:a(?:in(?:(?:slider)?)|uss(?:(?:i|trig)?))|buzz|e(?:n(?:array(?:(?:_i)?)|dy(?:(?:[cx])?))|t(?:c(?:fg|ol)|ftargs|row|seed))|ogobel|ra(?:in(?:(?:[23])?)|nule)|t(?:adsr|f)|uiro)|h(?:armon(?:(?:[234])?)|df5(?:read|write)|ilbert(?:(?:2)?)|rtf(?:early|move(?:(?:2)?)|reverb|stat)|sboscil|vs(?:[123])|ypot)|i(?:hold|mage(?:create|free|getpixel|load|s(?:ave|etpixel|ize))|n(?:(?:32|ch|it(?:(?:c(?:14|21|7))?)|let(?:kid|[afkv])|rg|s(?:global|remot)|te(?:g|r(?:leave|p))|value|[hoqstxz])?))|j(?:acktransport|itter(?:(?:2)?)|oystick|spline)|l(?:a(?:_(?:i_(?:a(?:dd_(?:m(?:[cr])|v(?:[cr]))|ssign_(?:m(?:[cr])|t|v(?:[cr])))|conjugate_(?:m(?:[cr])|v(?:[cr]))|d(?:i(?:stance_v(?:[cr])|vide_(?:m(?:[cr])|v(?:[cr])))|ot_(?:m(?:c_vc|r_vr|[cr])|v(?:[cr])))|get_(?:m(?:[cr])|v(?:[cr]))|invert_m(?:[cr])|l(?:ower_solve_m(?:[cr])|u_(?:det_m(?:[cr])|factor_m(?:[cr])|solve_m(?:[cr])))|m(?:c_(?:create|set)|r_(?:create|set)|ultiply_(?:m(?:[cr])|v(?:[cr])))|norm(?:1_(?:m(?:[cr])|v(?:[cr]))|_(?:euclid_(?:m(?:[cr])|v(?:[cr]))|inf_(?:m(?:[cr])|v(?:[cr]))|max_m(?:[cr])))|print_(?:m(?:[cr])|v(?:[cr]))|qr_(?:eigen_m(?:[cr])|factor_m(?:[cr])|sym_eigen_m(?:[cr]))|random_(?:m(?:[cr])|v(?:[cr]))|s(?:ize_(?:m(?:[cr])|v(?:[cr]))|ubtract_(?:m(?:[cr])|v(?:[cr])))|t(?:_assign|ra(?:ce_m(?:[cr])|nspose_m(?:[cr])))|upper_solve_m(?:[cr])|v(?:c_(?:create|set)|r_(?:create|set)))|k_(?:a(?:_assign|dd_(?:m(?:[cr])|v(?:[cr]))|ssign_(?:m(?:[cr])|v(?:[cr])|[aft]))|c(?:onjugate_(?:m(?:[cr])|v(?:[cr]))|urrent_(?:f|vr))|d(?:i(?:stance_v(?:[cr])|vide_(?:m(?:[cr])|v(?:[cr])))|ot_(?:m(?:c_vc|r_vr|[cr])|v(?:[cr])))|f_assign|get_(?:m(?:[cr])|v(?:[cr]))|invert_m(?:[cr])|l(?:ower_solve_m(?:[cr])|u_(?:det_m(?:[cr])|factor_m(?:[cr])|solve_m(?:[cr])))|m(?:c_set|r_set|ultiply_(?:m(?:[cr])|v(?:[cr])))|norm(?:1_(?:m(?:[cr])|v(?:[cr]))|_(?:euclid_(?:m(?:[cr])|v(?:[cr]))|inf_(?:m(?:[cr])|v(?:[cr]))|max_m(?:[cr])))|qr_(?:eigen_m(?:[cr])|factor_m(?:[cr])|sym_eigen_m(?:[cr]))|random_(?:m(?:[cr])|v(?:[cr]))|subtract_(?:m(?:[cr])|v(?:[cr]))|t(?:_assign|race_m(?:[cr]))|upper_solve_m(?:[cr])|v(?:(?:[cr])_set)))|g(?:(?:ud)?)|stcycle)|enarray|f(?:o|sr)|i(?:mit(?:(?:1)?)|n(?:cos|e(?:(?:n(?:(?:r)?)|to)?)|k_(?:beat_(?:force|(?:ge|reques)t)|create|enable|is_enabled|metro|peers|tempo_(?:(?:[gs])et))|lin|rand|seg(?:(?:[br])?))|veconv)|o(?:cs(?:end|ig)|g(?:(?:10|2|btwo|curve)?)|op(?:seg(?:(?:p)?)|(?:[tx])seg)|renz|scil(?:(?:(?:(?:3)?)phs|[3x])?)|w(?:pass2|res(?:(?:x)?)))|p(?:c(?:anal|filter)|f(?:18|orm|reson)|hasor|interp|oscil(?:(?:sa(?:(?:2)?)|[3a])?)|re(?:ad|son)|s(?:hold(?:(?:p)?)|lot))|ufs)|m(?:a(?:ca|dsr|gs|nd(?:(?:[eo])l)|parray(?:(?:_i)?)|rimba|ssign|x(?:_k|a(?:bs(?:(?:accum)?)|ccum|lloc|rray))|[cx])|clock|delay|e(?:dian(?:(?:k)?)|tro(?:(?:2|bpm)?))|fb|i(?:d(?:global|i(?:arp|c(?:14|21|7|h(?:annelaftertouch|n)|ontrolchange|trl)|default|filestatus|in|noteo(?:ff|n(?:cps|key|oct|pch))|o(?:n(?:(?:2)?)|ut(?:(?:_i)?))|p(?:gm|itchbend|olyaftertouch|rogramchange)|tempo)|remot)|n(?:(?:a(?:bs(?:(?:accum)?)|ccum|rray)|cer)?)|rror)|o(?:d(?:e|matrix)|nitor|og(?:(?:ladder(?:(?:2)?)|vcf(?:(?:2)?))?)|scil)|p(?:3(?:bitrate|in|len|nchnls|out|s(?:cal|r))|ulse)|rtmsg|s2st|to(?:[fn])|u(?:ltitap|te)|v(?:c(?:hpf|lpf(?:[1234]))|mfilter)|xadsr)|n(?:chnls_hw|estedap|l(?:alp|filt(?:(?:2)?))|o(?:ise|t(?:eo(?:ff|n(?:(?:dur(?:(?:2)?))?))|num))|r(?:everb|pn)|s(?:amp|t(?:ance|r(?:num|str)))|t(?:o(?:[fm])|rpol)|xtpow2)|o(?:ct(?:ave|cps|midi(?:(?:b|nn)?)|pch)|labuffer|sc(?:bnk|il(?:(?:1i|ikt(?:(?:[ps])?)|[13insx])?))|ut(?:(?:32|all|ch|i(?:at|c(?:(?:14)?)|p(?:at|[bc]))|k(?:at|c(?:(?:14)?)|p(?:at|[bc]))|let(?:kid|[afkv])|q(?:[1234])|rg|s(?:[12])|value|[choqsxz])?))|p(?:5g(?:connect|data)|a(?:n(?:(?:2)?)|r(?:eq|t(?:2txt|i(?:als|kkel(?:(?:get|s(?:et|ync))?))))|ssign|ulstretch)|c(?:auchy|h(?:bend|midi(?:(?:b|nn)?)|oct|tom)|o(?:nvolve|unt))|d(?:clip|half(?:(?:y)?))|eak|gm(?:(?:assig|ch)n)|h(?:as(?:er(?:[12])|or(?:(?:bnk)?))|s)|i(?:n(?:dex|k(?:er|ish))|tch(?:(?:a(?:c|mdf))?))|l(?:a(?:net|terev)|(?:ltra|u)ck)|o(?:isson|l(?:2rect|y(?:aft|nomial))|rt(?:(?:k)?)|scil(?:(?:3)?)|w(?:(?:ershape|oftwo|s)?))|r(?:e(?:alloc|piano)|int(?:(?:_type|array|f_i|k(?:s2|[2s])|ln|sk|[fks])?)|oduct)|set|t(?:ablew|rack)|uts|v(?:add|bufread|cross|interp|oc|read|s(?:2(?:array|tab)|a(?:dsyn|nal|rp)|b(?:and(?:width|[pr])|in|lur|uf(?:fer|read(?:(?:2)?)))|c(?:ale|e(?:nt|ps)|(?:f|ros)s)|d(?:emix|is(?:kin|p))|envftw|f(?:ilter|r(?:e(?:ad|eze)|omarray)|t(?:[rw])|write)|g(?:ain|endy)|hift|i(?:fd|n(?:(?:fo|it)?))|l(?:ock|pc)|m(?:aska|ix|o(?:(?:ot|rp)h))|o(?:sc|ut)|pitch|t(?:anal|encil|race)|voc|warp|ynth))|wd|y(?:assign(?:(?:[it])?)|call(?:(?:1(?:[it])|2(?:[it])|3(?:[it])|4(?:[it])|5(?:[it])|6(?:[it])|7(?:[it])|8(?:[it])|ni|[12345678int])?)|e(?:val(?:(?:[it])?)|xec(?:(?:[it])?))|init|l(?:assign(?:(?:[it])?)|call(?:(?:1(?:[it])|2(?:[it])|3(?:[it])|4(?:[it])|5(?:[it])|6(?:[it])|7(?:[it])|8(?:[it])|ni|[12345678int])?)|e(?:val(?:(?:[it])?)|xec(?:(?:[it])?))|run(?:(?:[it])?))|run(?:(?:[it])?)))|q(?:inf|nan)|r(?:2c|and(?:(?:om(?:(?:[hi])?)|[chi])?)|bjeq|e(?:ad(?:clock|fi|k(?:[234s])|sc(?:ore|ratch)|[fk])|ct2pol|lease|mo(?:teport|ve)|pluck|s(?:hapearray|on(?:(?:bnk|xk|[krxyz])?)|yn)|verb(?:(?:2|sc)?)|windscore|zzy)|fft|ifft|ms|nd(?:(?:31|seed)?)|ound|spline|tclock)|s(?:16b14|32b14|a(?:mphold|ndpaper)|c(?:_(?:lag(?:(?:ud)?)|phasor|trig)|a(?:le(?:(?:2|array)?)|n(?:hammer|map|smap|table|u2|[su]))|hed(?:kwhen(?:(?:named)?)|ule(?:(?:k)?)|when)|oreline(?:(?:_i)?))|e(?:ed|kere|lect|mitone|nse(?:(?:key)?)|q(?:time(?:(?:2)?)|u)|rial(?:Begin|End|Flush|Print|Read|Write(?:(?:_i)?))|t(?:c(?:(?:o|tr)l)|ksmps|row|scorepos))|f(?:i(?:list|nstr(?:(?:3m|[3m])?))|lo(?:ad|oper)|p(?:assign|l(?:ay(?:(?:3m|[3m])?)|ist)|reset))|h(?:aker|ift(?:in|out))|i(?:gnum|n(?:(?:h|inv|syn)?))|kf|l(?:eighbells|i(?:cearray(?:(?:_i)?)|der(?:16(?:(?:f|table(?:(?:f)?))?)|32(?:(?:f|table(?:(?:f)?))?)|64(?:(?:f|table(?:(?:f)?))?)|8(?:(?:f|table(?:(?:f)?))?)|Kawai)))|nd(?:loop|warp(?:(?:st)?))|o(?:ck(?:recv(?:(?:s)?)|send(?:(?:s)?))|rt(?:[ad])|undin)|p(?:a(?:ce|t3d(?:(?:[it])?))|dist|f|litrig|rintf(?:(?:k)?)|send)|q(?:rt|uinewave)|t(?:2ms|atevar|errain|ix|r(?:c(?:at(?:(?:k)?)|har(?:(?:k)?)|mp(?:(?:k)?)|py(?:(?:k)?))|e(?:cv|son)|fromurl|get|in(?:dex(?:(?:k)?)|g2array)|l(?:en(?:(?:k)?)|ower(?:(?:k)?))|rindex(?:(?:k)?)|s(?:et|trip|ub(?:(?:k)?))|to(?:(?:[dl])k|[dl])|upper(?:(?:k)?))|send)|u(?:binstr(?:(?:init)?)|m(?:(?:array)?))|v(?:filter|n)|y(?:nc(?:grain|loop|phasor)|stem(?:(?:_i)?)))|t(?:a(?:b(?:2(?:array|pvs)|_i|ifd|le(?:(?:3kt|copy|filter(?:(?:i)?)|gpw|i(?:copy|gpw|kt|mix)|kt|mix|ng|ra|s(?:eg|huffle(?:(?:i)?))|w(?:a|kt)|x(?:kt|seg)|[3iw])?)|morph(?:(?:ak|[ai])?)|play|rec|sum|w(?:(?:_i)?))|mbourine|n(?:h|inv(?:(?:2)?))|[bn])|bvcf|emp(?:est|o(?:(?:(?:sc|v)al)?))|i(?:me(?:dseq|inst(?:[ks])|[ks])|val)|lineto|one(?:(?:[kx])?)|r(?:a(?:dsyn|n(?:dom|seg(?:(?:[br])?)))|cross|filter|highest|i(?:g(?:Expseg|Linseg|expseg|ger|hold|linseg|phasor|seq)|m(?:(?:_i)?)|rand)|lowest|mix|s(?:cale|(?:hif|pli)t))|urno(?:ff(?:(?:2_i|[23])?)|n)|vconv)|u(?:n(?:irand|wrap)|psamp|r(?:andom|d))|v(?:a(?:ctrol|dd(?:(?:_i|v(?:(?:_i)?))?)|get|lpass|set)|bap(?:(?:gmove|lsinit|(?:(?:z)?)move|[gz])?)|c(?:ella|lpf|o(?:(?:2(?:(?:(?:f|i(?:f|ni))t)?)|mb|py(?:(?:_i)?))?))|d(?:el(?:_k|ay(?:(?:x(?:w(?:[qs])|[qsw])|[3kx])?))|ivv(?:(?:_i)?))|e(?:cdelay|loc|xp(?:(?:_i|seg|v(?:(?:_i)?))?))|i(?:b(?:es|r(?:(?:ato)?))|ncr)|l(?:i(?:mit|nseg)|owres)|m(?:ap|irror|ult(?:(?:_i|v(?:(?:_i)?))?))|o(?:ice|sim)|p(?:haseseg|o(?:rt|w(?:(?:_i|v(?:(?:_i)?))?))|s|voc)|rand(?:[hi])|subv(?:(?:_i)?)|tab(?:le(?:1k|w(?:[aik])|[aik])|w(?:[aik])|[aik])|wrap)|w(?:aveset|e(?:bsocket|ibull)|g(?:b(?:ow(?:(?:edbar)?)|rass)|clar|flute|pluck(?:(?:2)?)|uide(?:[12]))|i(?:i(?:connect|data|range|send)|ndow)|r(?:ap|itescratch)|terrain(?:(?:2)?))|x(?:adsr|in|out|tratim|yscale)|z(?:a(?:cl|kinit|mod|rg|wm|[rw])|df_(?:1pole(?:(?:_mode)?)|2pole(?:(?:_mode)?)|ladder)|filter2|i(?:wm|[rw])|k(?:cl|mod|wm|[rw]))|[Saikp])\\\\b|\\\\b(OSCsendA|array|b(?:e(?:adsynt|osc)|form(?:(?:de|en)c)|uchla)|copy2(?:(?:[ft])tab)|getrowlin|hrtfer|ktableseg|l(?:entab|ua_(?:exec|i(?:aopcall(?:(?:_off)?)|kopcall(?:(?:_off)?)|opcall(?:(?:_off)?))|opdef))|m(?:axtab|intab|p3scal_(?:check|load(?:(?:2)?)|play(?:(?:2)?)))|p(?:op(?:(?:_f)?)|table(?:(?:iw|[3i])?)|ush(?:(?:_f)?)|vsgendy)|s(?:calet|ignalflowgraph|ndload|o(?:cksend_k|undout(?:(?:s)?))|pec(?:addm|di(?:ff|sp)|filt|hist|ptrk|s(?:cal|um)|trum)|tack|um(?:TableFilter|tab)|ystime)|t(?:ab(?:gen|leiw|map(?:(?:_i)?)|rowlin|slice)|b(?:0_init|1(?:(?:(?:[012345])?)_init|[012345])|(?:[23456789])_init|[0123456789]))|vbap(?:1(?:6|move)|(?:[48])move|[48])|x(?:scan(?:map|smap|[su])|yin))\\\\b)(?:(\\\\:)([A-Za-z]))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.csound\"\n            },\n            \"2\": {\n              \"name\": \"invalid.deprecated.csound\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.type-annotation.csound\"\n            },\n            \"4\": {\n              \"name\": \"type-annotation.storage.type.csound\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.other.csound\",\n          \"match\": \"\\\\b[A-Z_a-z]\\\\w*\\\\b\"\n        }\n      ]\n    },\n    \"preprocessorDirectives\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.preprocessor.csound\",\n          \"match\": \"\\\\#(?:e(?:lse|nd(?:if)?)\\\\b|\\\\#\\\\#)|@+[ \\\\t]*\\\\d*\"\n        },\n        {\n          \"begin\": \"\\\\#includestr\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.includestr.preprocessor.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#commentsAndMacroUses\"\n            },\n            {\n              \"name\": \"string.includestr.csound\",\n              \"begin\": \"\\\"\",\n              \"end\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.csound\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.csound\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#macroUses\"\n                },\n                {\n                  \"include\": \"#lineContinuations\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\#include\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.include.preprocessor.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#commentsAndMacroUses\"\n            },\n            {\n              \"name\": \"string.include.csound\",\n              \"begin\": \"([^ \\\\t])\",\n              \"end\": \"\\\\1\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.csound\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.csound\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\#[ \\\\t]*define\",\n          \"end\": \"(?<=^\\\\#)|(?<=[^\\\\\\\\]\\\\#)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.define.preprocessor.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#commentsAndMacroUses\"\n            },\n            {\n              \"include\": \"#macroNames\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"name\": \"variable.parameter.preprocessor.csound\",\n                  \"match\": \"[A-Z_a-z]\\\\w*\\\\b\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\#\",\n              \"end\": \"(?<!\\\\\\\\)\\\\#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.macro.begin.csound\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.macro.end.csound\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"name\": \"constant.character.escape.csound\",\n                  \"match\": \"\\\\\\\\\\\\#\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\#(?:i(?:fn?def)|undef)\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.preprocessor.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#commentsAndMacroUses\"\n            },\n            {\n              \"include\": \"#macroNames\"\n            }\n          ]\n        }\n      ]\n    },\n    \"quotedStringContents\": {\n      \"patterns\": [\n        {\n          \"include\": \"#macroUses\"\n        },\n        {\n          \"include\": \"#bracedStringContents\"\n        },\n        {\n          \"include\": \"#lineContinuations\"\n        },\n        {\n          \"name\": \"invalid.illegal.csound\",\n          \"match\": \"[^\\\"\\\\\\\\]*[^\\\\n\\\"\\\\\\\\]$\"\n        }\n      ]\n    },\n    \"quotedStrings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.csound\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.csound\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.csound\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#quotedStringContents\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/css.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-css/blob/master/grammars/css.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-css/commit/2bc1e294e2440ad91197263cd9f95dc4b00bab2f\",\n  \"name\": \"CSS\",\n  \"scopeName\": \"source.css\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment-block\"\n    },\n    {\n      \"include\": \"#escapes\"\n    },\n    {\n      \"include\": \"#combinators\"\n    },\n    {\n      \"include\": \"#selector\"\n    },\n    {\n      \"include\": \"#at-rules\"\n    },\n    {\n      \"include\": \"#rule-list\"\n    }\n  ],\n  \"repository\": {\n    \"at-rules\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\A(?:\\\\xEF\\\\xBB\\\\xBF)?(?i:(?=\\\\s*@charset\\\\b))\",\n          \"end\": \";|(?=$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.charset.css\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"invalid.illegal.not-lowercase.charset.css\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.leading-whitespace.charset.css\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.no-whitespace.charset.css\"\n                },\n                \"4\": {\n                  \"name\": \"invalid.illegal.whitespace.charset.css\"\n                },\n                \"5\": {\n                  \"name\": \"invalid.illegal.not-double-quoted.charset.css\"\n                },\n                \"6\": {\n                  \"name\": \"invalid.illegal.unclosed-string.charset.css\"\n                },\n                \"7\": {\n                  \"name\": \"invalid.illegal.unexpected-characters.charset.css\"\n                }\n              },\n              \"match\": \"(?x)        # Possible errors:\\n\\\\G\\n((?!@charset)@\\\\w+)   # Not lowercase (@charset is case-sensitive)\\n|\\n\\\\G(\\\\s+)             # Preceding whitespace\\n|\\n(@charset\\\\S[^;]*)    # No whitespace after @charset\\n|\\n(?<=@charset)         # Before quoted charset name\\n(\\\\x20{2,}|\\\\t+)      # More than one space used, or a tab\\n|\\n(?<=@charset\\\\x20)    # Beginning of charset name\\n([^\\\";]+)              # Not double-quoted\\n|\\n(\\\"[^\\\"]+$)             # Unclosed quote\\n|\\n(?<=\\\")                # After charset name\\n([^;]+)               # Unexpected junk instead of semicolon\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.at-rule.charset.css\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"match\": \"((@)charset)(?=\\\\s)\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.css\"\n                }\n              },\n              \"end\": \"\\\"|$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.css\"\n                }\n              },\n              \"name\": \"string.quoted.double.css\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?:\\\\G|^)(?=(?:[^\\\"])+$)\",\n                  \"end\": \"$\",\n                  \"name\": \"invalid.illegal.unclosed.string.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((@)import)(?:\\\\s+|$|(?=['\\\"]|/\\\\*))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.import.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.import.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\s*(?=/\\\\*)\",\n              \"end\": \"(?<=\\\\*/)\\\\s*\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#url\"\n            },\n            {\n              \"include\": \"#media-query-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((@)font-face)(?=\\\\s*|{|/\\\\*|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.font-face.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"meta.at-rule.font-face.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"include\": \"#rule-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(@)page(?=[\\\\s:{]|/\\\\*|$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.control.at-rule.page.css\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \"(?=\\\\s*($|[:{;]))\",\n          \"name\": \"meta.at-rule.page.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#rule-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@media(\\\\s|\\\\(|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)media\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.media.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*[{;])\",\n              \"name\": \"meta.at-rule.media.header.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#media-query-list\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.media.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.media.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.media.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@counter-style([\\\\s'\\\"{;]|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)counter-style\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.counter-style.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*{)\",\n              \"name\": \"meta.at-rule.counter-style.header.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#escapes\"\n                        }\n                      ]\n                    }\n                  },\n                  \"match\": \"(?x)\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n                  \"name\": \"variable.parameter.style-name.css\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.property-list.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.property-list.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.counter-style.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"include\": \"#rule-list-innards\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@document([\\\\s'\\\"{;]|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)document\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.document.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*[{;])\",\n              \"name\": \"meta.at-rule.document.header.css\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?i)(?<![\\\\w-])(url-prefix|domain|regexp)(\\\\()\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"support.function.document-rule.css\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.end.bracket.round.css\"\n                    }\n                  },\n                  \"name\": \"meta.function.document-rule.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#string\"\n                    },\n                    {\n                      \"include\": \"#comment-block\"\n                    },\n                    {\n                      \"include\": \"#escapes\"\n                    },\n                    {\n                      \"match\": \"[^'\\\")\\\\s]+\",\n                      \"name\": \"variable.parameter.document-rule.css\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#url\"\n                },\n                {\n                  \"include\": \"#commas\"\n                },\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.document.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.document.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.document.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\\\s'\\\"{;]|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.keyframes.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*{)\",\n              \"name\": \"meta.at-rule.keyframes.header.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#escapes\"\n                        }\n                      ]\n                    }\n                  },\n                  \"match\": \"(?x)\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n                  \"name\": \"variable.parameter.keyframe-list.css\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.keyframes.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.keyframes.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.keyframes.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.other.keyframe-offset.css\"\n                    },\n                    \"2\": {\n                      \"name\": \"entity.other.keyframe-offset.percentage.css\"\n                    }\n                  },\n                  \"match\": \"(?xi)\\n(?<![\\\\w-]) (from|to) (?![\\\\w-])         # Keywords for 0% | 100%\\n|\\n([-+]?(?:\\\\d+(?:\\\\.\\\\d+)?|\\\\.\\\\d+)%)     # Percentile value\"\n                },\n                {\n                  \"include\": \"#rule-list\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@supports(\\\\s|\\\\(|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)|(?=;)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)supports\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.supports.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*[{;])\",\n              \"name\": \"meta.at-rule.supports.header.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#feature-query-operators\"\n                },\n                {\n                  \"include\": \"#feature-query\"\n                },\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.supports.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.supports.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.supports.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((@)viewport)(?=[\\\\s'\\\"{;]|/\\\\*|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.viewport.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \"(?=\\\\s*[@{;])\",\n          \"name\": \"meta.at-rule.viewport.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((@)font-feature-values)(?=[\\\\s'\\\"{;]|/\\\\*|$)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.font-feature-values.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"contentName\": \"variable.parameter.font-name.css\",\n          \"end\": \"(?=\\\\s*[@{;])\",\n          \"name\": \"meta.at-rule.font-features.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#font-features\"\n        },\n        {\n          \"begin\": \"(?i)((@)namespace)(?=[\\\\s'\\\";]|/\\\\*|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.namespace.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \";|(?=[@{])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.namespace.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#url\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#comment-block\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.namespace-prefix.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?xi)\\n(?:\\\\G|^|(?<=\\\\s))\\n(?=\\n  (?<=\\\\s|^)                             # Starts with whitespace\\n  (?:[-a-zA-Z_]|[^\\\\x00-\\\\x7F])          # Then a valid identifier character\\n  |\\n  \\\\s*                                   # Possible adjoining whitespace\\n  /\\\\*(?:[^*]|\\\\*[^/])*\\\\*/              # Injected comment\\n)\\n(.*?)                                    # Grouped to embed #comment-block\\n(\\n  (?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n  (?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n    |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n  )*\\n)\"\n            },\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"color-keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?<![\\\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\\\w-])\",\n          \"name\": \"support.constant.color.w3c-standard-color-name.css\"\n        },\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\\n(?![\\\\w-])\",\n          \"name\": \"support.constant.color.w3c-extended-color-name.css\"\n        },\n        {\n          \"match\": \"(?i)(?<![\\\\w-])currentColor(?![\\\\w-])\",\n          \"name\": \"support.constant.color.current.css\"\n        },\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\\n(?![\\\\w-])\",\n          \"name\": \"invalid.deprecated.color.system.css\"\n        }\n      ]\n    },\n    \"combinators\": {\n      \"patterns\": [\n        {\n          \"match\": \"/deep/|>>>\",\n          \"name\": \"invalid.deprecated.combinator.css\"\n        },\n        {\n          \"match\": \">>|>|\\\\+|~\",\n          \"name\": \"keyword.operator.combinator.css\"\n        }\n      ]\n    },\n    \"commas\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.list.comma.css\"\n    },\n    \"comment-block\": {\n      \"begin\": \"/\\\\*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.begin.css\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.css\"\n        }\n      },\n      \"name\": \"comment.block.css\"\n    },\n    \"escapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[0-9a-fA-F]{1,6}\",\n          \"name\": \"constant.character.escape.codepoint.css\"\n        },\n        {\n          \"begin\": \"\\\\\\\\$\\\\s*\",\n          \"end\": \"^(?<!\\\\G)\",\n          \"name\": \"constant.character.escape.newline.css\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.css\"\n        }\n      ]\n    },\n    \"feature-query\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.condition.begin.bracket.round.css\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.condition.end.bracket.round.css\"\n        }\n      },\n      \"name\": \"meta.feature-query.css\",\n      \"patterns\": [\n        {\n          \"include\": \"#feature-query-operators\"\n        },\n        {\n          \"include\": \"#feature-query\"\n        }\n      ]\n    },\n    \"feature-query-operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?<=[\\\\s()]|^|\\\\*/)(and|not|or)(?=[\\\\s()]|/\\\\*|$)\",\n          \"name\": \"keyword.operator.logical.feature.$1.css\"\n        },\n        {\n          \"include\": \"#rule-list-innards\"\n        }\n      ]\n    },\n    \"font-features\": {\n      \"begin\": \"(?xi)\\n((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))\\n(?=[\\\\s@'\\\"{;]|/\\\\*|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.${3:/downcase}.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.css\"\n        }\n      },\n      \"end\": \"(?<=})\",\n      \"name\": \"meta.at-rule.${3:/downcase}.css\",\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.property-list.begin.bracket.curly.css\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.property-list.end.bracket.curly.css\"\n            }\n          },\n          \"name\": \"meta.property-list.font-feature.css\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?x)\\n(?: [-a-zA-Z_]    | [^\\\\x00-\\\\x7F] )   # First letter\\n(?: [-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]     # Remainder of identifier\\n  | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n              \"name\": \"variable.font-feature.css\"\n            },\n            {\n              \"include\": \"#rule-list-innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(calc)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.calc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.calc.css\",\n          \"patterns\": [\n            {\n              \"match\": \"[*/]|(?<=\\\\s|^)[-+](?=\\\\s|$)\",\n              \"name\": \"keyword.operator.arithmetic.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(rgba?|hsla?)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.color.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi) (?<![\\\\w-])\\n(\\n  (?:-webkit-|-moz-|-o-)?    # Accept prefixed/historical variants\\n  (?:repeating-)?            # \\\"Repeating\\\"-type gradient\\n  (?:linear|radial|conic)    # Shape\\n  -gradient\\n)\\n(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.gradient.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.gradient.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)(?<![\\\\w-])(from|to|at)(?![\\\\w-])\",\n              \"name\": \"keyword.operator.gradient.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(-webkit-gradient)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"invalid.deprecated.gradient.function.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.gradient.invalid.deprecated.gradient.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)(?<![\\\\w-])(from|to|color-stop)(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"invalid.deprecated.function.css\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.function.end.bracket.round.css\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#property-values\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi) (?<![\\\\w-])\\n(annotation|attr|blur|brightness|character-variant|contrast|counters?\\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\\n|image-set|invert|local|minmax|opacity|ornaments|repeat|saturate|sepia\\n|styleset|stylistic|swash|symbols)\\n(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.misc.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)(?<=[,\\\\s\\\"]|\\\\*/|^)\\\\d+x(?=[\\\\s,\\\"')]|/\\\\*|$)\",\n              \"name\": \"constant.numeric.other.density.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            },\n            {\n              \"match\": \"[^'\\\"),\\\\s]+\",\n              \"name\": \"variable.parameter.misc.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(circle|ellipse|inset|polygon|rect)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.shape.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.shape.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)(?<=\\\\s|^|\\\\*/)(at|round)(?=\\\\s|/\\\\*|$)\",\n              \"name\": \"keyword.operator.shape.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(cubic-bezier|steps)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.timing-function.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.timing-function.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)(?<![\\\\w-])(start|end)(?=\\\\s*\\\\)|$)\",\n              \"name\": \"support.constant.step-direction.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi) (?<![\\\\w-])\\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\\n| matrix(?:3D)?\\n| skew[XY]?\\n| perspective\\n)\\n(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.transform.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#url\"\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(var)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.variable.css\",\n          \"patterns\": [\n            {\n              \"name\": \"variable.argument.css\",\n              \"match\": \"(?x)\\n--\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        }\n      ]\n    },\n    \"functional-pseudo-classes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)((:)dir)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"match\": \"(?i)(?<![\\\\w-])(ltr|rtl)(?![\\\\w-])\",\n              \"name\": \"support.constant.text-direction.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((:)lang)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?<=[(,\\\\s])[a-zA-Z]+(-[a-zA-Z0-9]*|\\\\\\\\(?:[0-9a-fA-F]{1,6}|.))*(?=[),\\\\s])\",\n              \"name\": \"support.constant.language-range.css\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.css\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.css\"\n                }\n              },\n              \"name\": \"string.quoted.double.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"match\": \"(?<=[\\\"\\\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=[\\\"\\\\s])\",\n                  \"name\": \"support.constant.language-range.css\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.css\"\n                }\n              },\n              \"end\": \"'\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.css\"\n                }\n              },\n              \"name\": \"string.quoted.single.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"match\": \"(?<=['\\\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=['\\\\s])\",\n                  \"name\": \"support.constant.language-range.css\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#commas\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((:)(?:not|has|matches))(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#selector-innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((:)nth-(?:last-)?(?:child|of-type))(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?i)[+-]?(\\\\d+n?|n)(\\\\s*[+-]\\\\s*\\\\d+)?\",\n              \"name\": \"constant.numeric.css\"\n            },\n            {\n              \"match\": \"(?i)even|odd\",\n              \"name\": \"support.constant.parity.css\"\n            }\n          ]\n        }\n      ]\n    },\n    \"media-features\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.property-name.media.css\"\n        },\n        \"2\": {\n          \"name\": \"invalid.deprecated.media.css\"\n        },\n        \"3\": {\n          \"name\": \"support.type.vendored.property-name.media.css\"\n        }\n      },\n      \"match\": \"(?xi)\\n(?<=^|\\\\s|\\\\(|\\\\*/)           # Preceded by whitespace, bracket or comment\\n(?:\\n  # Standardised features\\n  (\\n    (?:min-|max-)?            # Range features\\n    (?: height\\n      | width\\n      | aspect-ratio\\n      | color\\n      | color-index\\n      | monochrome\\n      | resolution\\n    )\\n    | grid                    # Discrete features\\n    | scan\\n    | orientation\\n    | display-mode\\n  )\\n  |\\n  # Deprecated features\\n  (\\n    (?:min-|max-)?            # Deprecated in Media Queries 4\\n    device-\\n    (?: height\\n      | width\\n      | aspect-ratio\\n    )\\n  )\\n  |\\n  # Vendor extensions\\n  (\\n    (?:\\n      # Spec-compliant syntax\\n      [-_]\\n      (?: webkit              # Webkit/Blink\\n        | apple|khtml         # Webkit aliases\\n        | epub                # ePub3\\n        | moz                 # Gecko\\n        | ms                  # Microsoft\\n        | o                   # Presto (pre-Opera 15)\\n        | xv|ah|rim|atsc|     # Less common vendors\\n          hp|tc|wap|ro\\n      )\\n      |\\n      # Non-standard prefixes\\n      (?: mso                 # Microsoft Office\\n        | prince              # YesLogic\\n      )\\n    )\\n    -\\n    [\\\\w-]+                   # Feature name\\n    (?=                       # Terminates correctly\\n      \\\\s*                    # Possible whitespace\\n      (?:                     # Possible injected comment\\n        /\\\\*\\n        (?:[^*]|\\\\*[^/])*\\n        \\\\*/\\n      )?\\n      \\\\s*\\n      [:)]                    # Ends with a colon or closed bracket\\n    )\\n  )\\n)\\n(?=\\\\s|$|[><:=]|\\\\)|/\\\\*)     # Terminates cleanly\"\n    },\n    \"media-feature-keywords\": {\n      \"match\": \"(?xi)\\n(?<=^|\\\\s|:|\\\\*/)\\n(?: portrait                  # Orientation\\n  | landscape\\n  | progressive               # Scan types\\n  | interlace\\n  | fullscreen                # Display modes\\n  | standalone\\n  | minimal-ui\\n  | browser\\n)\\n(?=\\\\s|\\\\)|$)\",\n      \"name\": \"support.constant.property-value.css\"\n    },\n    \"media-query\": {\n      \"begin\": \"\\\\G\",\n      \"end\": \"(?=\\\\s*[{;])\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#media-types\"\n        },\n        {\n          \"match\": \"(?i)(?<=\\\\s|^|,|\\\\*/)(only|not)(?=\\\\s|{|/\\\\*|$)\",\n          \"name\": \"keyword.operator.logical.$1.media.css\"\n        },\n        {\n          \"match\": \"(?i)(?<=\\\\s|^|\\\\*/|\\\\))and(?=\\\\s|/\\\\*|$)\",\n          \"name\": \"keyword.operator.logical.and.media.css\"\n        },\n        {\n          \"match\": \",(?:(?:\\\\s*,)+|(?=\\\\s*[;){]))\",\n          \"name\": \"invalid.illegal.comma.css\"\n        },\n        {\n          \"include\": \"#commas\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#media-features\"\n            },\n            {\n              \"include\": \"#media-feature-keywords\"\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.key-value.css\"\n            },\n            {\n              \"match\": \">=|<=|=|<|>\",\n              \"name\": \"keyword.operator.comparison.css\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.numeric.css\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.arithmetic.css\"\n                },\n                \"3\": {\n                  \"name\": \"constant.numeric.css\"\n                }\n              },\n              \"match\": \"(\\\\d+)\\\\s*(/)\\\\s*(\\\\d+)\",\n              \"name\": \"meta.ratio.css\"\n            },\n            {\n              \"include\": \"#numeric-values\"\n            },\n            {\n              \"include\": \"#comment-block\"\n            }\n          ]\n        }\n      ]\n    },\n    \"media-query-list\": {\n      \"begin\": \"(?=\\\\s*[^{;])\",\n      \"end\": \"(?=\\\\s*[{;])\",\n      \"patterns\": [\n        {\n          \"include\": \"#media-query\"\n        }\n      ]\n    },\n    \"media-types\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.constant.media.css\"\n        },\n        \"2\": {\n          \"name\": \"invalid.deprecated.constant.media.css\"\n        }\n      },\n      \"match\": \"(?xi)\\n(?<=^|\\\\s|,|\\\\*/)\\n(?:\\n  # Valid media types\\n  (all|print|screen|speech)\\n  |\\n  # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types\\n  (aural|braille|embossed|handheld|projection|tty|tv)\\n)\\n(?=$|[{,\\\\s;]|/\\\\*)\"\n    },\n    \"numeric-values\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.css\"\n            }\n          },\n          \"match\": \"(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\\\b\",\n          \"name\": \"constant.other.color.rgb-value.hex.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.unit.percentage.css\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.unit.${2:/downcase}.css\"\n            }\n          },\n          \"match\": \"(?xi) (?<![\\\\w-])\\n[-+]?                               # Sign indicator\\n\\n(?:                                 # Numerals\\n    [0-9]+ (?:\\\\.[0-9]+)?           # Integer/float with leading digits\\n  | \\\\.[0-9]+                       # Float without leading digits\\n)\\n\\n(?:                                 # Scientific notation\\n  (?<=[0-9])                        # Exponent must follow a digit\\n  E                                 # Exponent indicator\\n  [-+]?                             # Possible sign indicator\\n  [0-9]+                            # Exponent value\\n)?\\n\\n(?:                                 # Possible unit for data-type:\\n  (%)                               # - Percentage\\n  | ( deg|grad|rad|turn             # - Angle\\n    | Hz|kHz                        # - Frequency\\n    | ch|cm|em|ex|fr|in|mm|mozmm|   # - Length\\n      pc|pt|px|q|rem|vh|vmax|vmin|\\n      vw\\n    | dpi|dpcm|dppx                 # - Resolution\\n    | s|ms                          # - Time\\n    )\\n  \\\\b                               # Boundary checking intentionally lax to\\n)?                                  # facilitate embedding in CSS-like grammars\",\n          \"name\": \"constant.numeric.css\"\n        }\n      ]\n    },\n    \"property-keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\\n|always|antialiased|auto|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\\n|crisp-edges|crispEdges|crosshair|cyclic|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|forwards|freeze\\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|lighten|lighter|line|line-edge|line-through|linear|linearRGB\\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate\\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\\n|weight|whitespace|wider|words|wrap|wrap-reverse|x-large|x-small|xx-large|xx-small|zero|zoom-in|zoom-out)\\n(?![\\\\w-])\",\n          \"name\": \"support.constant.property-value.css\"\n        },\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\\n|upper-latin|upper-roman|urdu)\\n(?![\\\\w-])\",\n          \"name\": \"support.constant.property-value.list-style-type.css\"\n        },\n        {\n          \"match\": \"(?<![\\\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+\",\n          \"name\": \"support.constant.vendored.property-value.css\"\n        },\n        {\n          \"match\": \"(?<![\\\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace)(?![\\\\w-])\",\n          \"name\": \"support.constant.font-name.css\"\n        }\n      ]\n    },\n    \"property-names\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(?:\\n    # Standard CSS\\n    additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction\\n  | animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state\\n  | animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode\\n  | background-clip|background-color|background-image|background-origin|background-position|background-position-[xy]\\n  | background-repeat|background-size|block-size|border|border-block-end|border-block-end-color|border-block-end-style\\n  | border-block-end-width|border-block-start|border-block-start-color|border-block-start-style\\n  | border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius\\n  | border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset\\n  | border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end\\n  | border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start\\n  | border-inline-start-color|border-inline-start-style|border-inline-start-width|border-left|border-left-color\\n  | border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style\\n  | border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius\\n  | border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-decoration-break\\n  | box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|clip-path|color\\n  | column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width\\n  | column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display\\n  | empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float\\n  | font|font-display|font-family|font-feature-settings|font-kerning|font-language-override|font-size|font-size-adjust\\n  | font-stretch|font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps\\n  | font-variant-east-asian|font-variant-ligatures|font-variant-numeric|font-variant-position|font-weight\\n  | grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap\\n  | grid-column-start|grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas\\n  | grid-template-columns|grid-template-rows|height|hyphens|image-orientation|image-rendering|image-resolution\\n  | ime-mode|inline-size|isolation|justify-content|left|letter-spacing|line-break|line-height|list-style\\n  | list-style-image|list-style-position|list-style-type|margin|margin-block-end|margin-block-start|margin-bottom\\n  | margin-inline-end|margin-inline-start|margin-left|margin-right|margin-top|mask|mask-clip|mask-composite\\n  | mask-image|mask-mode|mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height\\n  | max-inline-size|max-width|max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode\\n  | negative|object-fit|object-position|offset-block-end|offset-block-start|offset-inline-end|offset-inline-start\\n  | opacity|order|orientation|orphans|outline|outline-color|outline-offset|outline-style|outline-width|overflow\\n  | overflow-wrap|overflow-[xy]|pad|padding|padding-block-end|padding-block-start|padding-bottom|padding-inline-end\\n  | padding-inline-start|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside\\n  | perspective|perspective-origin|pointer-events|position|prefix|quotes|range|resize|right|ruby-align|ruby-merge\\n  | ruby-position|scroll-behavior|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-type|shape-image-threshold\\n  | shape-margin|shape-outside|speak-as|src|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last\\n  | text-combine-upright|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-emphasis\\n  | text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-orientation|text-overflow\\n  | text-rendering|text-shadow|text-transform|text-underline-position|top|touch-action|transform|transform-box\\n  | transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property\\n  | transition-timing-function|unicode-bidi|unicode-range|user-zoom|vertical-align|visibility|white-space|widows\\n  | width|will-change|word-break|word-spacing|word-wrap|writing-mode|z-index|zoom\\n\\n  # SVG attributes\\n  | alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile\\n  | color-rendering|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity\\n  | glyph-orientation-horizontal|glyph-orientation-vertical|kerning|lighting-color|marker-end|marker-mid\\n  | marker-start|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap\\n  | stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|x|y\\n\\n  # Not listed on MDN; presumably deprecated\\n  | adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break\\n  | balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length\\n  | bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction\\n  | box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column\\n  | column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break\\n  | delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust\\n  | drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position\\n  | flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before\\n  | hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust\\n  | initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count\\n  | justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift\\n  | line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed\\n  | marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group\\n  | orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range\\n  | play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim\\n  | radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness\\n  | right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color\\n  | rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral\\n  | speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch\\n  | string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height\\n  | text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style\\n  | top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range\\n  | voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap\\n)\\n(?![\\\\w-])\",\n          \"name\": \"support.type.property-name.css\"\n        },\n        {\n          \"match\": \"(?<![\\\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+\",\n          \"name\": \"support.type.vendored.property-name.css\"\n        }\n      ]\n    },\n    \"property-values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#commas\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#property-keywords\"\n        },\n        {\n          \"include\": \"#unicode-range\"\n        },\n        {\n          \"include\": \"#numeric-values\"\n        },\n        {\n          \"include\": \"#color-keywords\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"!\\\\s*important(?![\\\\w-])\",\n          \"name\": \"keyword.other.important.css\"\n        }\n      ]\n    },\n    \"pseudo-classes\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.colon.css\"\n        }\n      },\n      \"match\": \"(?xi)\\n(:)(:*)\\n(?: active|any-link|checked|default|disabled|empty|enabled|first\\n  | (?:first|last|only)-(?:child|of-type)|focus|focus-within|fullscreen|host|hover\\n  | in-range|indeterminate|invalid|left|link|optional|out-of-range\\n  | read-only|read-write|required|right|root|scope|target|unresolved\\n  | valid|visited\\n)(?![\\\\w-]|\\\\s*[;}])\",\n      \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n    },\n    \"pseudo-elements\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        }\n      },\n      \"match\": \"(?xi)\\n(?:\\n  (::?)                       # Elements using both : and :: notation\\n  (?: after\\n    | before\\n    | first-letter\\n    | first-line\\n    | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\\n            |ms|o|rim|ro|tc|wap|webkit|xv)\\n        | (?:mso|prince))\\n      -[a-z-]+\\n  )\\n  |\\n  (::)                        # Double-colon only\\n  (?: backdrop\\n    | content\\n    | grammar-error\\n    | marker\\n    | placeholder\\n    | selection\\n    | shadow\\n    | spelling-error\\n  )\\n)\\n(?![\\\\w-]|\\\\s*[;}])\",\n      \"name\": \"entity.other.attribute-name.pseudo-element.css\"\n    },\n    \"rule-list\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.begin.bracket.curly.css\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.end.bracket.curly.css\"\n        }\n      },\n      \"name\": \"meta.property-list.css\",\n      \"patterns\": [\n        {\n          \"include\": \"#rule-list-innards\"\n        }\n      ]\n    },\n    \"rule-list-innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#font-features\"\n        },\n        {\n          \"match\": \"(?x) (?<![\\\\w-])\\n--\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n          \"name\": \"variable.css\"\n        },\n        {\n          \"begin\": \"(?<![-a-zA-Z])(?=[-a-zA-Z])\",\n          \"end\": \"$|(?![-a-zA-Z])\",\n          \"name\": \"meta.property-name.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#property-names\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.css\"\n            }\n          },\n          \"end\": \"\\\\s*(;)|\\\\s*(?=}|\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"contentName\": \"meta.property-value.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      ]\n    },\n    \"selector\": {\n      \"begin\": \"(?x)\\n(?=\\n  (?:\\\\|)?                    # Possible anonymous namespace prefix\\n  (?:\\n    [-\\\\[:.*\\\\#a-zA-Z_]       # Valid selector character\\n    |\\n    [^\\\\x00-\\\\x7F]            # Which can include non-ASCII symbols\\n    |\\n    \\\\\\\\                      # Or an escape sequence\\n    (?:[0-9a-fA-F]{1,6}|.)\\n  )\\n)\",\n      \"end\": \"(?=\\\\s*[/@{)])\",\n      \"name\": \"meta.selector.css\",\n      \"patterns\": [\n        {\n          \"include\": \"#selector-innards\"\n        }\n      ]\n    },\n    \"selector-innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#commas\"\n        },\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#combinators\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.namespace-prefix.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.css\"\n            }\n          },\n          \"match\": \"(?x)\\n(?:^|(?<=[\\\\s,(};]))         # Follows whitespace, comma, semicolon, or bracket\\n(?!\\n  [-\\\\w*]+\\n  \\\\|\\n  (?!\\n      [-\\\\[:.*\\\\#a-zA-Z_]    # Make sure there's a selector to match\\n    | [^\\\\x00-\\\\x7F]\\n  )\\n)\\n(\\n  (?: [-a-zA-Z_]    | [^\\\\x00-\\\\x7F] )   # First letter\\n  (?: [-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]     # Remainder of identifier\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n  )*\\n  |\\n  \\\\*     # Universal namespace\\n)?\\n(\\\\|)     # Namespace separator\"\n        },\n        {\n          \"include\": \"#tag-names\"\n        },\n        {\n          \"match\": \"\\\\*\",\n          \"name\": \"entity.name.tag.wildcard.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(?x) (?<![@\\\\w-])\\n([.\\\\#])\\n# Invalid identifier\\n(\\n  (?:\\n    # Starts with ASCII digits, with possible hyphen preceding it\\n    -?[0-9]\\n    |\\n    # Consists of a hyphen only\\n    -                                      # Terminated by either:\\n    (?= $                                  # - End-of-line\\n      | [\\\\s,.\\\\#)\\\\[:{>+~|]               # - Followed by another selector\\n      | /\\\\*                               # - Followed by a block comment\\n    )\\n    |\\n    # Name contains unescaped ASCII symbol\\n    (?:                                    # Check for acceptable preceding characters\\n        [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]       # - Valid selector character\\n      | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)         # - Escape sequence\\n    )*\\n    (?:                                    # Invalid punctuation\\n      [!\\\"'%&(*;<?@^`|\\\\]}]                 # - NOTE: We exempt `)` from the list of checked\\n      |                                    #   symbols to avoid matching `:not(.invalid)`\\n      / (?!\\\\*)                            # - Avoid invalidating the start of a comment\\n    )+\\n  )\\n  # Mark remainder of selector invalid\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]         # - Otherwise valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)           # - Escape sequence\\n  )*\\n)\",\n          \"name\": \"invalid.illegal.bad-identifier.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(?x)\\n(\\\\.)                                  # Valid class-name\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n  )+\\n)                                      # Followed by either:\\n(?= $                                  # - End of the line\\n  | [\\\\s,.\\\\#)\\\\[:{>+~|]               # - Another selector\\n  | /\\\\*                               # - A block comment\\n)\",\n          \"name\": \"entity.other.attribute-name.class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(?x)\\n(\\\\#)\\n(\\n  -?\\n  (?![0-9])\\n  (?:[-a-zA-Z0-9_]|[^\\\\x00-\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}|.))+\\n)\\n(?=$|[\\\\s,.\\\\#)\\\\[:{>+~|]|/\\\\*)\",\n          \"name\": \"entity.other.attribute-name.id.css\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.entity.begin.bracket.square.css\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.entity.end.bracket.square.css\"\n            }\n          },\n          \"name\": \"meta.attribute-selector.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.ignore-case.css\"\n                }\n              },\n              \"match\": \"(?<=[\\\"'\\\\s]|^|\\\\*/)\\\\s*([iI])\\\\s*(?=[\\\\s\\\\]]|/\\\\*|$)\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"string.unquoted.attribute-value.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?x)(?<==)\\\\s*((?!/\\\\*)(?:[^\\\\\\\\\\\"'\\\\s\\\\]]|\\\\\\\\.)+)\"\n            },\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"match\": \"[~|^$*]?=\",\n              \"name\": \"keyword.operator.pattern.css\"\n            },\n            {\n              \"match\": \"\\\\|\",\n              \"name\": \"punctuation.separator.css\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.other.namespace-prefix.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?x)\\n# Qualified namespace prefix\\n( -?(?!\\\\d)(?:[\\\\w-]|[^\\\\x00-\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}|.))+\\n| \\\\*\\n)\\n# Lookahead to ensure there's a valid identifier ahead\\n(?=\\n  \\\\| (?!\\\\s|=|$|\\\\])\\n  (?: -?(?!\\\\d)\\n   |   [\\\\\\\\\\\\w-]\\n   |   [^\\\\x00-\\\\x7F]\\n   )\\n)\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.other.attribute-name.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?x)\\n(-?(?!\\\\d)(?>[\\\\w-]|[^\\\\x00-\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}|.))+)\\n\\\\s*\\n(?=[~|^\\\\]$*=]|/\\\\*)\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#pseudo-classes\"\n        },\n        {\n          \"include\": \"#pseudo-elements\"\n        },\n        {\n          \"include\": \"#functional-pseudo-classes\"\n        },\n        {\n          \"match\": \"(?x) (?<![@\\\\w-])\\n(?=            # Custom element names must:\\n  [a-z]        # - start with a lowercase ASCII letter,\\n  \\\\w* -       # - contain at least one dash\\n)\\n(?:\\n  (?![A-Z])    # No uppercase ASCII letters are allowed\\n  [\\\\w-]       # Allow any other word character or dash\\n)+\\n(?![(\\\\w-])\",\n          \"name\": \"entity.name.tag.custom.css\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"\\\"|(?<!\\\\\\\\)(?=$|\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.double.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?:\\\\G|^)(?=(?:[^\\\\\\\\\\\"]|\\\\\\\\.)+$)\",\n              \"end\": \"$\",\n              \"name\": \"invalid.illegal.unclosed.string.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"'|(?<!\\\\\\\\)(?=$|\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.single.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?:\\\\G|^)(?=(?:[^\\\\\\\\']|\\\\\\\\.)+$)\",\n              \"end\": \"$\",\n              \"name\": \"invalid.illegal.unclosed.string.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag-names\": {\n      \"match\": \"(?xi) (?<![\\\\w:-])\\n(?:\\n    # HTML\\n    a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound\\n  | big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command\\n  | content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset\\n  | figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i\\n  | iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark\\n  | marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript\\n  | object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rt|rtc\\n  | ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong\\n  | style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr\\n  | track|tt|u|ul|var|video|wbr|xmp\\n\\n  # SVG\\n  | altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform\\n  | circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix\\n  | feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap\\n  | feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur\\n  | feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting\\n  | feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name\\n  | font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern\\n  | line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata\\n  | missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor\\n  | stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern\\n\\n  # MathML\\n  | annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced\\n  | mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot\\n  | mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup\\n  | msup|mtable|mtd|mtext|mtr|munder|munderover|semantics\\n)\\n(?=[+~>\\\\s,.\\\\#|){:\\\\[]|/\\\\*|$)\",\n      \"name\": \"entity.name.tag.css\"\n    },\n    \"unicode-range\": {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.other.unicode-range.css\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.dash.unicode-range.css\"\n        }\n      },\n      \"match\": \"(?<![\\\\w-])[Uu]\\\\+[0-9A-Fa-f?]{1,6}(?:(-)[0-9A-Fa-f]{1,6})?(?![\\\\w-])\"\n    },\n    \"url\": {\n      \"begin\": \"(?i)(?<![\\\\w@-])(url)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.url.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.function.end.bracket.round.css\"\n        }\n      },\n      \"name\": \"meta.function.url.css\",\n      \"patterns\": [\n        {\n          \"match\": \"[^'\\\")\\\\s]+\",\n          \"name\": \"variable.parameter.url.css\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#escapes\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/curly.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.html.curly\",\n  \"fileTypes\": [\"curly\"],\n  \"patterns\": [\n    {\n      \"begin\": \"(?<!\\\\{)\\\\{\\\\{!\",\n      \"end\": \"\\\\}\\\\}\",\n      \"name\": \"comment.block.curly\"\n    },\n    {\n      \"begin\": \"(?<!\\\\{)(\\\\{\\\\{)(/)\",\n      \"endCaptures\": { \"1\": { \"name\": \"keyword.control.end.curly\" } },\n      \"end\": \"(\\\\}\\\\})\",\n      \"patterns\": [{ \"include\": \"#terminateTag\" }],\n      \"name\": \"meta.function.terminate.curly\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.begin.curly\" },\n        \"2\": { \"name\": \"keyword.operator.terminate.curly\" }\n      }\n    },\n    {\n      \"begin\": \"(?<!\\\\{)(\\\\{\\\\{)(#)\",\n      \"endCaptures\": { \"1\": { \"name\": \"keyword.control.end.curly\" } },\n      \"end\": \"(\\\\}\\\\})\",\n      \"patterns\": [{ \"include\": \"#tag\" }],\n      \"name\": \"meta.function.if.curly\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.begin.curly\" },\n        \"2\": { \"name\": \"keyword.operator.if.curly\" }\n      }\n    },\n    {\n      \"begin\": \"(?<!\\\\{)(\\\\{\\\\{)(\\\\^)\",\n      \"endCaptures\": { \"1\": { \"name\": \"keyword.control.end.curly\" } },\n      \"end\": \"(\\\\}\\\\})\",\n      \"patterns\": [{ \"include\": \"#tag\" }],\n      \"name\": \"meta.function.unless.curly\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.begin.curly\" },\n        \"2\": { \"name\": \"keyword.operator.unless.curly\" }\n      }\n    },\n    {\n      \"begin\": \"(?<!\\\\{)(\\\\{\\\\{)(\\\\*)\",\n      \"endCaptures\": { \"1\": { \"name\": \"keyword.control.end.curly\" } },\n      \"end\": \"(\\\\}\\\\})\",\n      \"patterns\": [{ \"include\": \"#tag\" }],\n      \"name\": \"meta.function.collection.curly\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.begin.curly\" },\n        \"2\": { \"name\": \"keyword.operator.collection.curly\" }\n      }\n    },\n    {\n      \"begin\": \"(?<!\\\\{)(\\\\{\\\\{)(@)\",\n      \"endCaptures\": { \"1\": { \"name\": \"keyword.control.end.curly\" } },\n      \"end\": \"(\\\\}\\\\})\",\n      \"patterns\": [{ \"include\": \"#tag\" }],\n      \"name\": \"meta.function.context.curly\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.begin.curly\" },\n        \"2\": { \"name\": \"keyword.operator.context.curly\" }\n      }\n    },\n    {\n      \"begin\": \"(?<!\\\\{)\\\\{\\\\{(?!\\\\{)\",\n      \"endCaptures\": { \"0\": { \"name\": \"keyword.control.end.curly\" } },\n      \"end\": \"\\\\}\\\\}\",\n      \"patterns\": [{ \"include\": \"#tag\" }],\n      \"name\": \"meta.function.basic.curly\",\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.control.begin.curly\" } }\n    },\n    { \"include\": \"text.html.basic\" }\n  ],\n  \"repository\": {\n    \"tag\": {\n      \"patterns\": [\n        { \"include\": \"#terminateTag\" },\n        { \"match\": \"\\\\.\", \"name\": \"keyword.operator.argument-seperator.curly\" },\n        { \"match\": \"=\", \"name\": \"keyword.operator.assignment.curly\" },\n        { \"match\": \"\\\"[^\\\"]*\\\"\", \"name\": \"string.quoted.double.curly\" },\n        { \"match\": \"'[^']*'\", \"name\": \"string.quoted.single.curly\" }\n      ]\n    },\n    \"terminateTag\": {\n      \"patterns\": [\n        {\n          \"match\": \"([a-z_][a-zA-Z_0-9]*[?!]?)\",\n          \"name\": \"variable.other.curly\"\n        }\n      ]\n    }\n  },\n  \"name\": \"Curly Template\",\n  \"uuid\": \"c86979be-c965-4918-ba0e-0eac4a04db49\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/d.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"d\", \"di\", \"dpp\"],\n  \"name\": \"d\",\n  \"scopeName\": \"source.d\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#type\"\n    },\n    {\n      \"include\": \"#statement\"\n    },\n    {\n      \"include\": \"#expression\"\n    }\n  ],\n  \"repository\": {\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#typeof\"\n        },\n        {\n          \"include\": \"#base-type\"\n        },\n        {\n          \"include\": \"#type-ctor\"\n        },\n        {\n          \"begin\": \"!\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"base-type\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(auto|bool|byte|ubyte|short|ushort|int|uint|long|ulong|char|wchar|dchar|float|double|real|ifloat|idouble|ireal|cfloat|cdouble|creal|void)\\\\b\",\n          \"name\": \"storage.type.basic-type.d\"\n        },\n        {\n          \"match\": \"\\\\b(string|wstring|dstring|size_t|ptrdiff_t)\\\\b(?!\\\\s*=)\",\n          \"name\": \"storage.type.basic-type.d\"\n        }\n      ]\n    },\n    \"extended-type\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((\\\\.\\\\s*)?[_\\\\w][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_\\\\w][_\\\\d\\\\w]*)*\\\\b\",\n          \"name\": \"entity.name.type.d\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.array.expression.begin.d\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.array.expression.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\.\\\\.|\\\\$\",\n              \"name\": \"keyword.operator.slice.d\"\n            },\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-ctor\": {\n      \"patterns\": [\n        {\n          \"match\": \"(const|immutable|inout|shared)\\\\b\",\n          \"name\": \"storage.type.modifier.d\"\n        }\n      ]\n    },\n    \"typeof\": {\n      \"begin\": \"typeof\\\\s*\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"keyword.token.typeof.d\",\n      \"patterns\": [\n        {\n          \"match\": \"return\",\n          \"name\": \"keyword.control.return.d\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#index-expression\"\n        },\n        {\n          \"include\": \"#expression-no-index\"\n        }\n      ]\n    },\n    \"expression-no-index\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function-literal\"\n        },\n        {\n          \"include\": \"#assert-expression\"\n        },\n        {\n          \"include\": \"#assign-expression\"\n        },\n        {\n          \"include\": \"#mixin-expression\"\n        },\n        {\n          \"include\": \"#import-expression\"\n        },\n        {\n          \"include\": \"#traits-expression\"\n        },\n        {\n          \"include\": \"#is-expression\"\n        },\n        {\n          \"include\": \"#typeid-expression\"\n        },\n        {\n          \"include\": \"#shift-expression\"\n        },\n        {\n          \"include\": \"#logical-expression\"\n        },\n        {\n          \"include\": \"#rel-expression\"\n        },\n        {\n          \"include\": \"#bitwise-expression\"\n        },\n        {\n          \"include\": \"#identity-expression\"\n        },\n        {\n          \"include\": \"#in-expression\"\n        },\n        {\n          \"include\": \"#conditional-expression\"\n        },\n        {\n          \"include\": \"#arithmetic-expression\"\n        },\n        {\n          \"include\": \"#new-expression\"\n        },\n        {\n          \"include\": \"#delete-expression\"\n        },\n        {\n          \"include\": \"#cast-expression\"\n        },\n        {\n          \"include\": \"#type-specialization\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#special-keyword\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#parentheses-expression\"\n        },\n        {\n          \"include\": \"#lexical\"\n        }\n      ]\n    },\n    \"assign-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \">>>=|\\\\^\\\\^=|>>=|<<=|~=|\\\\^=|\\\\|=|&=|%=|/=|\\\\*=|-=|\\\\+=|=(?!>)\",\n          \"name\": \"keyword.operator.assign.d\"\n        }\n      ]\n    },\n    \"conditional-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s(\\\\?|:)\\\\s\",\n          \"name\": \"keyword.operator.ternary.d\"\n        }\n      ]\n    },\n    \"logical-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\|\\\\||&&|==|!=|!\",\n          \"name\": \"keyword.operator.logical.d\"\n        }\n      ]\n    },\n    \"bitwise-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\||\\\\^|&\",\n          \"name\": \"keyword.operator.bitwise.d\"\n        }\n      ]\n    },\n    \"identity-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(is|!is)\\\\b\",\n          \"name\": \"keyword.operator.identity.d\"\n        }\n      ]\n    },\n    \"rel-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"!<>=|!<>|<>=|!>=|!<=|<=|>=|<>|!>|!<|<|>\",\n          \"name\": \"keyword.operator.rel.d\"\n        }\n      ]\n    },\n    \"in-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(in|!in)\\\\b\",\n          \"name\": \"keyword.operator.in.d\"\n        }\n      ]\n    },\n    \"shift-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"<<|>>|>>>\",\n          \"name\": \"keyword.operator.shift.d\"\n        },\n        {\n          \"include\": \"#add-expression\"\n        }\n      ]\n    },\n    \"arithmetic-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\^\\\\^|\\\\+\\\\+|--|(?<!/)\\\\+(?!/)|-|~|(?<!/)\\\\*(?!/)|(?<![+*/])/(?![+*/])|%\",\n          \"name\": \"keyword.operator.numeric.d\"\n        }\n      ]\n    },\n    \"new-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bnew\\\\s+\",\n          \"name\": \"keyword.other.new.d\"\n        }\n      ]\n    },\n    \"delete-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bdelete\\\\s+\",\n          \"name\": \"keyword.other.delete.d\"\n        }\n      ]\n    },\n    \"cast-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(cast)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.cast.d\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.cast.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.cast.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#extended-type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"index-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\.\\\\.|\\\\$\",\n              \"name\": \"keyword.operator.slice.d\"\n            },\n            {\n              \"include\": \"#expression-no-index\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-literal\": {\n      \"patterns\": [\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.lambda.d\"\n        },\n        {\n          \"match\": \"\\\\b(function|delegate)\\\\b\",\n          \"name\": \"keyword.other.function-literal.d\"\n        },\n        {\n          \"begin\": \"\\\\b([_\\\\w][_\\\\d\\\\w]*)\\\\s*(=>)\",\n          \"end\": \"(?=[\\\\);,\\\\]}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.d\"\n            },\n            \"2\": {\n              \"name\": \"meta.lexical.token.symbolic.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.d\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\)|\\\\()(\\\\s*)({)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"source.d\"\n            },\n            \"2\": {\n              \"name\": \"source.d\"\n            }\n          },\n          \"end\": \"}\",\n          \"patterns\": [\n            {\n              \"include\": \"source.d\"\n            }\n          ]\n        }\n      ]\n    },\n    \"assert-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bassert\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.assert.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.assert.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"mixin-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bmixin\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.mixin.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.mixin.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(import)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.import.d\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.import.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.import.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typeid-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\btypeid\\\\s*(?=\\\\()\",\n          \"name\": \"keyword.other.typeid.d\"\n        }\n      ]\n    },\n    \"type-specialization\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(struct|union|class|interface|enum|function|delegate|super|const|immutable|inout|shared|return|__parameters)\\\\b\",\n          \"name\": \"keyword.other.storage.type-specialization.d\"\n        }\n      ]\n    },\n    \"traits-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b__traits\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.traits.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.traits.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#traits-keyword\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#traits-argument\"\n            }\n          ]\n        }\n      ]\n    },\n    \"traits-keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"isAbstractClass|isArithmetic|isAssociativeArray|isFinalClass|isPOD|isNested|isFloating|isIntegral|isScalar|isStaticArray|isUnsigned|isVirtualFunction|isVirtualMethod|isAbstractFunction|isFinalFunction|isStaticFunction|isOverrideFunction|isRef|isOut|isLazy|hasMember|identifier|getAliasThis|getAttributes|getMember|getOverloads|getProtection|getVirtualFunctions|getVirtualMethods|getUnitTests|parent|classInstanceSize|getVirtualIndex|allMembers|derivedMembers|isSame|compiles\",\n          \"name\": \"support.constant.traits-keyword.d\"\n        }\n      ]\n    },\n    \"traits-arguments\": {\n      \"patterns\": [\n        {\n          \"include\": \"#traits-argument\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ]\n    },\n    \"traits-argument\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"special-keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(__FILE__|__FILE_FULL_PATH__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__)\\\\b\",\n          \"name\": \"constant.language.special-keyword.d\"\n        }\n      ]\n    },\n    \"statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#non-block-statement\"\n        },\n        {\n          \"include\": \"#semi-colon\"\n        }\n      ]\n    },\n    \"non-block-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#module-declaration\"\n        },\n        {\n          \"include\": \"#labeled-statement\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"include\": \"#while-statement\"\n        },\n        {\n          \"include\": \"#do-statement\"\n        },\n        {\n          \"include\": \"#for-statement\"\n        },\n        {\n          \"include\": \"#static-foreach\"\n        },\n        {\n          \"include\": \"#foreach-statement\"\n        },\n        {\n          \"include\": \"#foreach-reverse-statement\"\n        },\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#final-switch-statement\"\n        },\n        {\n          \"include\": \"#case-statement\"\n        },\n        {\n          \"include\": \"#default-statement\"\n        },\n        {\n          \"include\": \"#continue-statement\"\n        },\n        {\n          \"include\": \"#break-statement\"\n        },\n        {\n          \"include\": \"#return-statement\"\n        },\n        {\n          \"include\": \"#goto-statement\"\n        },\n        {\n          \"include\": \"#with-statement\"\n        },\n        {\n          \"include\": \"#synchronized-statement\"\n        },\n        {\n          \"include\": \"#try-statement\"\n        },\n        {\n          \"include\": \"#catches\"\n        },\n        {\n          \"include\": \"#scope-guard-statement\"\n        },\n        {\n          \"include\": \"#throw-statement\"\n        },\n        {\n          \"include\": \"#finally-statement\"\n        },\n        {\n          \"include\": \"#asm-statement\"\n        },\n        {\n          \"include\": \"#pragma-statement\"\n        },\n        {\n          \"include\": \"#mixin-statement\"\n        },\n        {\n          \"include\": \"#conditional-statement\"\n        },\n        {\n          \"include\": \"#static-assert\"\n        },\n        {\n          \"include\": \"#deprecated-statement\"\n        },\n        {\n          \"include\": \"#unit-test\"\n        },\n        {\n          \"include\": \"#declaration-statement\"\n        }\n      ]\n    },\n    \"labeled-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?!abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|in|inout|int|interface|invariant|ireal|is|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__|__gshared|__traits|__vector|__parameters)[a-zA-Z_][a-zA-Z_0-9]*\\\\s*:\",\n          \"name\": \"entity.name.d\"\n        }\n      ]\n    },\n    \"declaration-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration\"\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(if)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\belse\\\\b\\\\s*\",\n          \"name\": \"keyword.control.else.d\"\n        }\n      ]\n    },\n    \"while-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(while)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.while.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"do-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bdo\\\\b\",\n          \"name\": \"keyword.control.do.d\"\n        }\n      ]\n    },\n    \"for-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(for)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.for.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"foreach-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(foreach)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.foreach.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"foreach-reverse-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(foreach_reverse)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.foreach_reverse.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(switch)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"case-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(case)\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.range.d\"\n            }\n          },\n          \"end\": \":\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.case.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"default-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(default)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.default.d\"\n            },\n            \"2\": {\n              \"name\": \"meta.default.colon.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"final-switch-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(final\\\\s+switch)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.final.switch.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"continue-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bcontinue\\\\b\",\n          \"name\": \"keyword.control.continue.d\"\n        }\n      ]\n    },\n    \"break-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bbreak\\\\b\",\n          \"name\": \"keyword.control.break.d\"\n        }\n      ]\n    },\n    \"return-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\breturn\\\\b\",\n          \"name\": \"keyword.control.return.d\"\n        }\n      ]\n    },\n    \"goto-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bgoto\\\\s+default\\\\b\",\n          \"name\": \"keyword.control.goto.d\"\n        },\n        {\n          \"match\": \"\\\\bgoto\\\\s+case\\\\b\",\n          \"name\": \"keyword.control.goto.d\"\n        },\n        {\n          \"match\": \"\\\\bgoto\\\\b\",\n          \"name\": \"keyword.control.goto.d\"\n        }\n      ]\n    },\n    \"with-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(with)\\\\b\\\\s*(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.with.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"synchronized-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(synchronized)\\\\b\\\\s*(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.synchronized.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"try-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\btry\\\\b\",\n          \"name\": \"keyword.control.try.d\"\n        }\n      ]\n    },\n    \"catches\": {\n      \"patterns\": [\n        {\n          \"include\": \"#catch\"\n        }\n      ]\n    },\n    \"catch\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(catch)\\\\b\\\\s*(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.catch.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"finally-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bfinally\\\\b\",\n          \"name\": \"keyword.control.throw.d\"\n        }\n      ]\n    },\n    \"throw-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bthrow\\\\b\",\n          \"name\": \"keyword.control.throw.d\"\n        }\n      ]\n    },\n    \"scope-guard-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bscope\\\\s*\\\\((exit|success|failure)\\\\)\",\n          \"name\": \"keyword.control.scope.d\"\n        }\n      ]\n    },\n    \"asm-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(asm)\\\\b\\\\s*(?=\\\\{)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\{\",\n              \"end\": \"\\\\}\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.asm.begin.d\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.asm.end.d\"\n                }\n              },\n              \"contentName\": \"gfm.markup.raw.assembly.d\",\n              \"patterns\": [\n                {\n                  \"include\": \"#asm-instruction\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"pragma-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pragma\"\n        }\n      ]\n    },\n    \"mixin-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bmixin\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.mixin.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.mixin.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"is-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bis\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.token.is.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.token.is.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parentheses-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"deprecated-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bdeprecated\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.deprecated.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.deprecated.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\bdeprecated\\\\b\\\\s*(?!\\\\()\",\n          \"name\": \"keyword.other.deprecated.plain.d\"\n        }\n      ]\n    },\n    \"asm-instruction\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"\\\\b(align|even|naked|db|ds|di|dl|df|dd|de)\\\\b|:\",\n          \"name\": \"keyword.asm-instruction.d\"\n        },\n        {\n          \"match\": \"\\\\b__LOCAL_SIZE\\\\b\",\n          \"name\": \"constant.language.assembly.d\"\n        },\n        {\n          \"match\": \"\\\\b(offsetof|seg)\\\\b\",\n          \"name\": \"support.type.assembly.d\"\n        },\n        {\n          \"include\": \"#asm-type-prefix\"\n        },\n        {\n          \"include\": \"#asm-primary-expression\"\n        },\n        {\n          \"include\": \"#operands\"\n        },\n        {\n          \"include\": \"#register\"\n        },\n        {\n          \"include\": \"#register-64\"\n        },\n        {\n          \"include\": \"#float-literal\"\n        },\n        {\n          \"include\": \"#integer-literal\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"operands\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\?|:\",\n          \"name\": \"keyword.operator.ternary.assembly.d\"\n        },\n        {\n          \"match\": \"\\\\]|\\\\[\",\n          \"name\": \"keyword.operator.bracket.assembly.d\"\n        },\n        {\n          \"match\": \">>>|\\\\|\\\\||&&|==|!=|<=|>=|<<|>>|\\\\||\\\\^|&|<|>|\\\\+|-|\\\\*|/|%|~|!\",\n          \"name\": \"keyword.operator.assembly.d\"\n        }\n      ]\n    },\n    \"asm-type-prefix\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((near\\\\s+ptr)|(far\\\\s+ptr)|(byte\\\\s+ptr)|(short\\\\s+ptr)|(int\\\\s+ptr)|(word\\\\s+ptr)|(dword\\\\s+ptr)|(qword\\\\s+ptr)|(float\\\\s+ptr)|(double\\\\s+ptr)|(real\\\\s+ptr))\\\\b\",\n          \"name\": \"support.type.asm-type-prefix.d\"\n        }\n      ]\n    },\n    \"register\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(XMM0|XMM1|XMM2|XMM3|XMM4|XMM5|XMM6|XMM7|MM0|MM1|MM2|MM3|MM4|MM5|MM6|MM7|ST\\\\(0\\\\)|ST\\\\(1\\\\)|ST\\\\(2\\\\)|ST\\\\(3\\\\)|ST\\\\(4\\\\)|ST\\\\(5\\\\)|ST\\\\(6\\\\)|ST\\\\(7\\\\)|ST|TR1|TR2|TR3|TR4|TR5|TR6|TR7|DR0|DR1|DR2|DR3|DR4|DR5|DR6|DR7|CR0|CR2|CR3|CR4|EAX|EBX|ECX|EDX|EBP|ESP|EDI|ESI|AL|AH|AX|BL|BH|BX|CL|CH|CX|DL|DH|DX|BP|SP|DI|SI|ES|CS|SS|DS|GS|FS)\\\\b\",\n          \"name\": \"storage.type.assembly.register.d\"\n        }\n      ]\n    },\n    \"register-64\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(RAX|RBX|RCX|RDX|BPL|RBP|SPL|RSP|DIL|RDI|SIL|RSI|R8B|R8W|R8D|R8|R9B|R9W|R9D|R9|R10B|R10W|R10D|R10|R11B|R11W|R11D|R11|R12B|R12W|R12D|R12|R13B|R13W|R13D|R13|R14B|R14W|R14D|R14|R15B|R15W|R15D|R15|XMM8|XMM9|XMM10|XMM11|XMM12|XMM13|XMM14|XMM15|YMM0|YMM1|YMM2|YMM3|YMM4|YMM5|YMM6|YMM7|YMM8|YMM9|YMM10|YMM11|YMM12|YMM13|YMM14|YMM15)\\\\b\",\n          \"name\": \"storage.type.assembly.register-64.d\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#alias-declaration\"\n        },\n        {\n          \"include\": \"#aggregate-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#storage-class\"\n        },\n        {\n          \"include\": \"#void-initializer\"\n        },\n        {\n          \"include\": \"#mixin-declaration\"\n        }\n      ]\n    },\n    \"alias-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(alias)\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.alias.d\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.alias.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"match\": \"=(?![=>])\",\n              \"name\": \"keyword.operator.equal.alias.d\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"storage-class\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(deprecated|enum|static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\\\b\",\n          \"name\": \"storage.class.d\"\n        },\n        {\n          \"include\": \"#linkage-attribute\"\n        },\n        {\n          \"include\": \"#align-attribute\"\n        },\n        {\n          \"include\": \"#property\"\n        }\n      ]\n    },\n    \"void-initializer\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bvoid\\\\b\",\n          \"name\": \"support.type.void.d\"\n        }\n      ]\n    },\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function-attribute\"\n        },\n        {\n          \"include\": \"#function-prelude\"\n        }\n      ]\n    },\n    \"function-prelude\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?!typeof|typeid)((\\\\.\\\\s*)?[_\\\\w][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_\\\\w][_\\\\d\\\\w]*)*\\\\s*(?=\\\\()\",\n          \"name\": \"entity.name.function.d\"\n        }\n      ]\n    },\n    \"class-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#shared-static-constructor\"\n        },\n        {\n          \"include\": \"#shared-static-destructor\"\n        },\n        {\n          \"include\": \"#constructor\"\n        },\n        {\n          \"include\": \"#destructor\"\n        },\n        {\n          \"include\": \"#postblit\"\n        },\n        {\n          \"include\": \"#invariant\"\n        },\n        {\n          \"include\": \"#member-function-attribute\"\n        }\n      ]\n    },\n    \"function-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(nothrow|pure)\\\\b\",\n          \"name\": \"storage.type.modifier.function-attribute.d\"\n        },\n        {\n          \"include\": \"#property\"\n        }\n      ]\n    },\n    \"member-function-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(const|immutable|inout|shared)\\\\b\",\n          \"name\": \"storage.type.modifier.member-function-attribute\"\n        }\n      ]\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#in-statement\"\n        },\n        {\n          \"include\": \"#out-statement\"\n        },\n        {\n          \"include\": \"#body-statement\"\n        },\n        {\n          \"include\": \"#block-statement\"\n        }\n      ]\n    },\n    \"in-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bin\\\\b\",\n          \"name\": \"keyword.control.in.d\"\n        }\n      ]\n    },\n    \"out-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bout\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.out.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.out.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#identifier\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\bout\\\\b\",\n          \"name\": \"keyword.control.out.d\"\n        }\n      ]\n    },\n    \"body-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bbody\\\\b\",\n          \"name\": \"keyword.control.body.d\"\n        }\n      ]\n    },\n    \"constructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bthis\\\\b\",\n          \"name\": \"entity.name.function.constructor.d\"\n        }\n      ]\n    },\n    \"destructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b~this\\\\s*\\\\(\\\\s*\\\\)\",\n          \"name\": \"entity.name.class.destructor.d\"\n        }\n      ]\n    },\n    \"postblit\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bthis\\\\s*\\\\(\\\\s*this\\\\s*\\\\)\\\\s\",\n          \"name\": \"entity.name.class.postblit.d\"\n        }\n      ]\n    },\n    \"invariant\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\binvariant\\\\s*\\\\(\\\\s*\\\\)\",\n          \"name\": \"entity.name.class.invariant.d\"\n        }\n      ]\n    },\n    \"shared-static-constructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(shared\\\\s+)?static\\\\s+this\\\\s*\\\\(\\\\s*\\\\)\",\n          \"name\": \"entity.name.class.constructor.shared-static.d\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"shared-static-destructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(shared\\\\s+)?static\\\\s+~this\\\\s*\\\\(\\\\s*\\\\)\",\n          \"name\": \"entity.name.class.destructor.static.d\"\n        }\n      ]\n    },\n    \"aggregate-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#struct-declaration\"\n        },\n        {\n          \"include\": \"#union-declaration\"\n        },\n        {\n          \"include\": \"#mixin-template-declaration\"\n        },\n        {\n          \"include\": \"#template-declaration\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(class)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.class.d\"\n            }\n          }\n        },\n        {\n          \"include\": \"#protection-attribute\"\n        },\n        {\n          \"include\": \"#class-members\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(interface)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"struct-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(struct)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.struct.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"union-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(union)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.union.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.union.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"enum-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(enum)\\\\b\\\\s+(?=.*[=;])\",\n          \"end\": \"([A-Za-z_][\\\\w_\\\\d]*)\\\\s*(?=;|=|\\\\()(;)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum.d\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.enum.d\"\n            },\n            \"2\": {\n              \"name\": \"meta.enum.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#extended-type\"\n            },\n            {\n              \"match\": \"=(?![=>])\",\n              \"name\": \"keyword.operator.equal.alias.d\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(template)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.template.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.template.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"mixin-template-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(mixin\\\\s*template)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.mixintemplate.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.mixintemplate.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"attribute\": {\n      \"patterns\": [\n        {\n          \"include\": \"#linkage-attribute\"\n        },\n        {\n          \"include\": \"#align-attribute\"\n        },\n        {\n          \"include\": \"#deprecated-attribute\"\n        },\n        {\n          \"include\": \"#protection-attribute\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"match\": \"\\\\b(static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\\\b\",\n          \"name\": \"entity.other.attribute-name.d\"\n        },\n        {\n          \"include\": \"#property\"\n        }\n      ]\n    },\n    \"linkage-attribute\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bextern\\\\s*\\\\(\\\\s*C\\\\+\\\\+\\\\s*,\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.extern.cplusplus.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.extern.cplusplus.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#identifier\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\bextern\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.extern.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.extern.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#linkage-type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"linkage-type\": {\n      \"patterns\": [\n        {\n          \"match\": \"C|C\\\\+\\\\+|D|Windows|Pascal|System\",\n          \"name\": \"storage.modifier.linkage-type.d\"\n        }\n      ]\n    },\n    \"align-attribute\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\balign\\\\s*\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"storage.modifier.align-attribute.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#integer-literal\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\balign\\\\b\\\\s*(?!\\\\()\",\n          \"name\": \"storage.modifier.align-attribute.d\"\n        }\n      ]\n    },\n    \"protection-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(private|package|protected|public|export)\\\\b\",\n          \"name\": \"keyword.other.protections.d\"\n        }\n      ]\n    },\n    \"property\": {\n      \"patterns\": [\n        {\n          \"match\": \"@(property|safe|trusted|system|disable|nogc)\\\\b\",\n          \"name\": \"entity.name.tag.property.d\"\n        },\n        {\n          \"include\": \"#user-defined-attribute\"\n        }\n      ]\n    },\n    \"user-defined-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"@([_\\\\w][_\\\\d\\\\w]*)\\\\b\",\n          \"name\": \"entity.name.tag.user-defined-property.d\"\n        },\n        {\n          \"begin\": \"@([_\\\\w][_\\\\d\\\\w]*)?\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"entity.name.tag.user-defined-property.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"pragma\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bpragma\\\\s*\\\\(\\\\s*[_\\\\w][_\\\\d\\\\w]*\\\\s*\\\\)\",\n          \"name\": \"keyword.other.pragma.d\"\n        },\n        {\n          \"begin\": \"\\\\bpragma\\\\s*\\\\(\\\\s*[_\\\\w][_\\\\d\\\\w]*\\\\s*,\",\n          \"end\": \"\\\\)\",\n          \"name\": \"keyword.other.pragma.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^#!.+\",\n          \"name\": \"gfm.markup.header.preprocessor.script-tag.d\"\n        }\n      ]\n    },\n    \"conditional-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#condition\"\n        },\n        {\n          \"match\": \"\\\\belse\\\\b\",\n          \"name\": \"keyword.control.else.d\"\n        },\n        {\n          \"include\": \"#colon\"\n        },\n        {\n          \"include\": \"#decl-defs\"\n        }\n      ]\n    },\n    \"conditional-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#condition\"\n        },\n        {\n          \"include\": \"#no-scope-non-empty-statement\"\n        },\n        {\n          \"match\": \"\\\\belse\\\\b\",\n          \"name\": \"keyword.control.else.d\"\n        }\n      ]\n    },\n    \"condition\": {\n      \"patterns\": [\n        {\n          \"include\": \"#version-condition\"\n        },\n        {\n          \"include\": \"#debug-condition\"\n        },\n        {\n          \"include\": \"#static-if-condition\"\n        }\n      ]\n    },\n    \"version-condition\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bversion\\\\s*\\\\(\\\\s*unittest\\\\s*\\\\)\",\n          \"name\": \"keyword.other.version.unittest.d\"\n        },\n        {\n          \"match\": \"\\\\bversion\\\\s*\\\\(\\\\s*assert\\\\s*\\\\)\",\n          \"name\": \"keyword.other.version.assert.d\"\n        },\n        {\n          \"begin\": \"\\\\bversion\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.version.identifier.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.version.identifer.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#integer-literal\"\n            },\n            {\n              \"include\": \"#identifier\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#version-specification\"\n        }\n      ]\n    },\n    \"debug-condition\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bdebug\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.debug.identifier.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.debug.identifier.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#integer-literal\"\n            },\n            {\n              \"include\": \"#identifier\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\bdebug\\\\b\\\\s*(?!\\\\()\",\n          \"name\": \"keyword.other.debug.plain.d\"\n        }\n      ]\n    },\n    \"version-specification\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bversion\\\\b\\\\s*(?==)\",\n          \"name\": \"keyword.other.version-specification.d\"\n        }\n      ]\n    },\n    \"debug-specification\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bdebug\\\\b\\\\s*(?==)\",\n          \"name\": \"keyword.other.debug-specification.d\"\n        }\n      ]\n    },\n    \"static-if-condition\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bstatic\\\\s+if\\\\b\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.static-if.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.static-if.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"static-assert\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bstatic\\\\s+assert\\\\b\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.static-assert.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.static-assert.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"static-foreach\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(static\\\\s+foreach)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.static-foreach.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"module\": {\n      \"packages\": [\n        {\n          \"import\": \"#module-declaration\"\n        }\n      ]\n    },\n    \"module-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(module)\\\\s+\",\n          \"end\": \";\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.package.module.d\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.module.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#module-identifier\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(static\\\\s+)?(import)\\\\s+(?!\\\\()\",\n          \"end\": \";\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.package.import.d\"\n            },\n            \"2\": {\n              \"name\": \"keyword.package.import.d\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.import.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#import-identifier\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"mixin-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bmixin\\\\s*\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.mixin.begin.d\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.mixin.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comma\": {\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"keyword.operator.comma.d\"\n        }\n      ]\n    },\n    \"colon\": {\n      \"patterns\": [\n        {\n          \"match\": \":\",\n          \"name\": \"support.type.colon.d\"\n        }\n      ]\n    },\n    \"equal\": {\n      \"patterns\": [\n        {\n          \"match\": \"=(?![=>])\",\n          \"name\": \"keyword.operator.equal.d\"\n        }\n      ]\n    },\n    \"semi-colon\": {\n      \"patterns\": [\n        {\n          \"match\": \";\\\\s*$\",\n          \"name\": \"meta.statement.end.d\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"keyword.operator.semi-colon.d\"\n        }\n      ]\n    },\n    \"lexical\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string-literal\"\n        },\n        {\n          \"include\": \"#character-literal\"\n        },\n        {\n          \"include\": \"#float-literal\"\n        },\n        {\n          \"include\": \"#integer-literal\"\n        },\n        {\n          \"include\": \"#eof\"\n        },\n        {\n          \"include\": \"#special-tokens\"\n        },\n        {\n          \"include\": \"#special-token-sequence\"\n        },\n        {\n          \"include\": \"#keyword\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"integer-literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decimal-integer\"\n        },\n        {\n          \"include\": \"#binary-integer\"\n        },\n        {\n          \"include\": \"#hexadecimal-integer\"\n        }\n      ]\n    },\n    \"decimal-integer\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(0(?=[^\\\\dxXbB]))|([1-9][0-9_]*)(Lu|LU|uL|UL|L|u|U)?\\\\b\",\n          \"name\": \"constant.numeric.integer.decimal.d\"\n        }\n      ]\n    },\n    \"binary-integer\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(0b|0B)[0-1_]+(Lu|LU|uL|UL|L|u|U)?\\\\b\",\n          \"name\": \"constant.numeric.integer.binary.d\"\n        }\n      ]\n    },\n    \"hexadecimal-integer\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(0x|0X)([0-9a-fA-F][0-9a-fA-F_]*)(Lu|LU|uL|UL|L|u|U)?\\\\b\",\n          \"name\": \"constant.numeric.integer.hexadecimal.d\"\n        }\n      ]\n    },\n    \"float-literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decimal-float\"\n        },\n        {\n          \"include\": \"#hexadecimal-float\"\n        }\n      ]\n    },\n    \"decimal-float\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((\\\\.[0-9])|(0\\\\.)|(([1-9]|(0[1-9_]))[0-9_]*\\\\.))[0-9_]*((e-|E-|e\\\\+|E\\\\+|e|E)[0-9][0-9_]*)?[LfF]?i?\\\\b\",\n          \"name\": \"constant.numeric.float.decimal.d\"\n        }\n      ]\n    },\n    \"hexadecimal-float\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b0[xX][0-9a-fA-F_]*(\\\\.[0-9a-fA-F_]*)?(p-|P-|p\\\\+|P\\\\+|p|P)[0-9][0-9_]*[LfF]?i?\\\\b\",\n          \"name\": \"constant.numeric.float.hexadecimal.d\"\n        }\n      ]\n    },\n    \"string-literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#wysiwyg-string\"\n        },\n        {\n          \"include\": \"#alternate-wysiwyg-string\"\n        },\n        {\n          \"include\": \"#hex-string\"\n        },\n        {\n          \"include\": \"#arbitrary-delimited-string\"\n        },\n        {\n          \"include\": \"#delimited-string\"\n        },\n        {\n          \"include\": \"#double-quoted-string\"\n        },\n        {\n          \"include\": \"#token-string\"\n        }\n      ]\n    },\n    \"wysiwyg-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"r\\\\\\\"\",\n          \"end\": \"\\\\\\\"[cwd]?\",\n          \"name\": \"string.wysiwyg-string.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"alternate-wysiwyg-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"`\",\n          \"end\": \"`[cwd]?\",\n          \"name\": \"string.alternate-wysiwyg-string.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"double-quoted-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"[cwd]?\",\n          \"name\": \"string.double-quoted-string.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#double-quoted-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"hex-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"x\\\"\",\n          \"end\": \"\\\"[cwd]?\",\n          \"name\": \"string.hex-string.d\",\n          \"patterns\": [\n            {\n              \"match\": \"[a-fA-F0-9_s]+\",\n              \"name\": \"constant.character.hex-string.d\"\n            }\n          ]\n        }\n      ]\n    },\n    \"arbitrary-delimited-string\": {\n      \"begin\": \"q\\\"(\\\\w+)\",\n      \"end\": \"\\\\1\\\"\",\n      \"name\": \"string.delimited.d\",\n      \"patterns\": [\n        {\n          \"match\": \".\",\n          \"name\": \"string.delimited.d\"\n        }\n      ]\n    },\n    \"delimited-string\": {\n      \"begin\": \"q\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.delimited.d\",\n      \"patterns\": [\n        {\n          \"include\": \"#delimited-string-bracket\"\n        },\n        {\n          \"include\": \"#delimited-string-parens\"\n        },\n        {\n          \"include\": \"#delimited-string-angle-brackets\"\n        },\n        {\n          \"include\": \"#delimited-string-braces\"\n        }\n      ]\n    },\n    \"token-string\": {\n      \"begin\": \"q\\\\{\",\n      \"end\": \"\\\\}[cdw]?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.token.d\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.token.d\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#token-string-content\"\n        }\n      ]\n    },\n    \"delimited-string-bracket\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"name\": \"constant.characters.delimited.brackets.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"delimited-string-parens\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"constant.character.delimited.parens.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"delimited-string-angle-brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<\",\n          \"end\": \">\",\n          \"name\": \"constant.character.angle-brackets.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"delimited-string-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"name\": \"constant.character.delimited.braces.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"wysiwyg-characters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#character\"\n        },\n        {\n          \"include\": \"#end-of-line\"\n        }\n      ]\n    },\n    \"double-quoted-characters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#character\"\n        },\n        {\n          \"include\": \"#end-of-line\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        }\n      ]\n    },\n    \"escape-sequence\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\(?:quot|amp|lt|gt|OElig|oelig|Scaron|scaron|Yuml|circ|tilde|ensp|emsp|thinsp|zwnj|zwj|lrm|rlm|ndash|mdash|lsquo|rsquo|sbquo|ldquo|rdquo|bdquo|dagger|Dagger|permil|lsaquo|rsaquo|euro|nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|Aelig|Ccedil|egrave|eacute|ecirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|fnof|Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega|alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigmaf|sigma|tau|upsilon|phi|chi|psi|omega|thetasym|upsih|piv|bull|hellip|prime|Prime|oline|frasl|weierp|image|real|trade|alefsym|larr|uarr|rarr|darr|harr|crarr|lArr|uArr|rArr|dArr|hArr|forall|part|exist|empty|nabla|isin|notin|ni|prod|sum|minux|lowast|radic|prop|infin|ang|and|or|cap|cup|int|there4|sim|cong|asymp|ne|equiv|le|ge|sub|sup|nsub|sube|supe|oplus|otimes|perp|sdot|lceil|rceil|lfloor|rfloor|loz|spades|clubs|hearts|diams|lang|rang))\",\n          \"name\": \"constant.character.escape-sequence.entity.d\"\n        },\n        {\n          \"match\": \"(\\\\\\\\x[0-9a-fA-F_]{2}|\\\\\\\\u[0-9a-fA-F_]{4}|\\\\\\\\U[0-9a-fA-F_]{8}|\\\\\\\\[0-7]{1,3})\",\n          \"name\": \"constant.character.escape-sequence.number.d\"\n        },\n        {\n          \"match\": \"(\\\\\\\\t|\\\\\\\\'|\\\\\\\\\\\"|\\\\\\\\\\\\?|\\\\\\\\0|\\\\\\\\a|\\\\\\\\b|\\\\\\\\f|\\\\\\\\n|\\\\\\\\r|\\\\\\\\v|\\\\\\\\\\\\\\\\)\",\n          \"name\": \"constant.character.escape-sequence.d\"\n        }\n      ]\n    },\n    \"character-literal\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"name\": \"string.character-literal.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#character\"\n            },\n            {\n              \"include\": \"#escape-sequence\"\n            }\n          ]\n        }\n      ]\n    },\n    \"character\": {\n      \"patterns\": [\n        {\n          \"match\": \"[\\\\w\\\\s]+\",\n          \"name\": \"string.character.d\"\n        }\n      ]\n    },\n    \"end-of-line\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\n+\",\n          \"name\": \"string.character.end-of-line.d\"\n        }\n      ]\n    },\n    \"identifier-list\": {\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"keyword.other.comma.d\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((\\\\.\\\\s*)?[_\\\\w][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_\\\\w][_\\\\d\\\\w]*)*\\\\b\",\n          \"name\": \"variable.d\"\n        }\n      ]\n    },\n    \"module-identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"([_a-zA-Z][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_a-zA-Z][_\\\\d\\\\w]*)*\",\n          \"name\": \"variable.parameter.module.d\"\n        }\n      ]\n    },\n    \"import-identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"([_a-zA-Z][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_a-zA-Z][_\\\\d\\\\w]*)*\",\n          \"name\": \"variable.parameter.import.d\"\n        }\n      ]\n    },\n    \"eof\": {\n      \"patterns\": [\n        {\n          \"begin\": \"__EOF__\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.documentation.eof.start.d\"\n            }\n          },\n          \"end\": \"(?!__NEVER_MATCH__)__NEVER_MATCH__\",\n          \"name\": \"text.eof.d\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-comment\"\n        },\n        {\n          \"include\": \"#line-comment\"\n        },\n        {\n          \"include\": \"#nesting-block-comment\"\n        }\n      ]\n    },\n    \"block-comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/((?!\\\\*/)\\\\*)+\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.begin.d\"\n            }\n          },\n          \"end\": \"\\\\*+/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.end.d\"\n            }\n          },\n          \"name\": \"comment.block.content.d\"\n        }\n      ]\n    },\n    \"line-comment\": {\n      \"patterns\": [\n        {\n          \"match\": \"//+.*$\",\n          \"name\": \"comment.line.d\"\n        }\n      ]\n    },\n    \"nesting-block-comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/((?!\\\\+/)\\\\+)+\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.documentation.begin.d\"\n            }\n          },\n          \"end\": \"\\\\++/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.documentation.end.d\"\n            }\n          },\n          \"name\": \"comment.block.documentation.content.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#nesting-block-comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"token-string-content\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}\",\n          \"patterns\": [\n            {\n              \"include\": \"#token-string-content\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#tokens\"\n        }\n      ]\n    },\n    \"tokens\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-literal\"\n        },\n        {\n          \"include\": \"#character-literal\"\n        },\n        {\n          \"include\": \"#integer-literal\"\n        },\n        {\n          \"include\": \"#float-literal\"\n        },\n        {\n          \"include\": \"#keyword\"\n        },\n        {\n          \"match\": \"~=|~|>>>|>>=|>>|>=|>|=>|==|=|<>|<=|<<|<|%=|%|#|&=|&&|&|\\\\$|\\\\|=|\\\\|\\\\||\\\\||\\\\+=|\\\\+\\\\+|\\\\+|\\\\^=|\\\\^\\\\^=|\\\\^\\\\^|\\\\^|\\\\*=|\\\\*|\\\\}|\\\\{|\\\\]|\\\\[|\\\\)|\\\\(|\\\\.\\\\.\\\\.|\\\\.\\\\.|\\\\.|\\\\?|\\\\!>=|\\\\!>|\\\\!=|\\\\!<>=|\\\\!<>|\\\\!<=|\\\\!<|\\\\!|/=|/|@|:|;|,|-=|--|-\",\n          \"name\": \"meta.lexical.token.symbolic.d\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\babstract\\\\b\",\n          \"name\": \"keyword.token.abstract.d\"\n        },\n        {\n          \"match\": \"\\\\balias\\\\b\",\n          \"name\": \"keyword.token.alias.d\"\n        },\n        {\n          \"match\": \"\\\\balign\\\\b\",\n          \"name\": \"keyword.token.align.d\"\n        },\n        {\n          \"match\": \"\\\\basm\\\\b\",\n          \"name\": \"keyword.token.asm.d\"\n        },\n        {\n          \"match\": \"\\\\bassert\\\\b\",\n          \"name\": \"keyword.token.assert.d\"\n        },\n        {\n          \"match\": \"\\\\bauto\\\\b\",\n          \"name\": \"keyword.token.auto.d\"\n        },\n        {\n          \"match\": \"\\\\bbody\\\\b\",\n          \"name\": \"keyword.token.body.d\"\n        },\n        {\n          \"match\": \"\\\\bbool\\\\b\",\n          \"name\": \"keyword.token.bool.d\"\n        },\n        {\n          \"match\": \"\\\\bbreak\\\\b\",\n          \"name\": \"keyword.token.break.d\"\n        },\n        {\n          \"match\": \"\\\\bbyte\\\\b\",\n          \"name\": \"keyword.token.byte.d\"\n        },\n        {\n          \"match\": \"\\\\bcase\\\\b\",\n          \"name\": \"keyword.token.case.d\"\n        },\n        {\n          \"match\": \"\\\\bcast\\\\b\",\n          \"name\": \"keyword.token.cast.d\"\n        },\n        {\n          \"match\": \"\\\\bcatch\\\\b\",\n          \"name\": \"keyword.token.catch.d\"\n        },\n        {\n          \"match\": \"\\\\bcdouble\\\\b\",\n          \"name\": \"keyword.token.cdouble.d\"\n        },\n        {\n          \"match\": \"\\\\bcent\\\\b\",\n          \"name\": \"keyword.token.cent.d\"\n        },\n        {\n          \"match\": \"\\\\bcfloat\\\\b\",\n          \"name\": \"keyword.token.cfloat.d\"\n        },\n        {\n          \"match\": \"\\\\bchar\\\\b\",\n          \"name\": \"keyword.token.char.d\"\n        },\n        {\n          \"match\": \"\\\\bclass\\\\b\",\n          \"name\": \"keyword.token.class.d\"\n        },\n        {\n          \"match\": \"\\\\bconst\\\\b\",\n          \"name\": \"keyword.token.const.d\"\n        },\n        {\n          \"match\": \"\\\\bcontinue\\\\b\",\n          \"name\": \"keyword.token.continue.d\"\n        },\n        {\n          \"match\": \"\\\\bcreal\\\\b\",\n          \"name\": \"keyword.token.creal.d\"\n        },\n        {\n          \"match\": \"\\\\bdchar\\\\b\",\n          \"name\": \"keyword.token.dchar.d\"\n        },\n        {\n          \"match\": \"\\\\bdebug\\\\b\",\n          \"name\": \"keyword.token.debug.d\"\n        },\n        {\n          \"match\": \"\\\\bdefault\\\\b\",\n          \"name\": \"keyword.token.default.d\"\n        },\n        {\n          \"match\": \"\\\\bdelegate\\\\b\",\n          \"name\": \"keyword.token.delegate.d\"\n        },\n        {\n          \"match\": \"\\\\bdelete\\\\b\",\n          \"name\": \"keyword.token.delete.d\"\n        },\n        {\n          \"match\": \"\\\\bdeprecated\\\\b\",\n          \"name\": \"keyword.token.deprecated.d\"\n        },\n        {\n          \"match\": \"\\\\bdo\\\\b\",\n          \"name\": \"keyword.token.do.d\"\n        },\n        {\n          \"match\": \"\\\\bdouble\\\\b\",\n          \"name\": \"keyword.token.double.d\"\n        },\n        {\n          \"match\": \"\\\\belse\\\\b\",\n          \"name\": \"keyword.token.else.d\"\n        },\n        {\n          \"match\": \"\\\\benum\\\\b\",\n          \"name\": \"keyword.token.enum.d\"\n        },\n        {\n          \"match\": \"\\\\bexport\\\\b\",\n          \"name\": \"keyword.token.export.d\"\n        },\n        {\n          \"match\": \"\\\\bextern\\\\b\",\n          \"name\": \"keyword.token.extern.d\"\n        },\n        {\n          \"match\": \"\\\\bfalse\\\\b\",\n          \"name\": \"constant.language.boolean.false.d\"\n        },\n        {\n          \"match\": \"\\\\bfinal\\\\b\",\n          \"name\": \"keyword.token.final.d\"\n        },\n        {\n          \"match\": \"\\\\bfinally\\\\b\",\n          \"name\": \"keyword.token.finally.d\"\n        },\n        {\n          \"match\": \"\\\\bfloat\\\\b\",\n          \"name\": \"keyword.token.float.d\"\n        },\n        {\n          \"match\": \"\\\\bfor\\\\b\",\n          \"name\": \"keyword.token.for.d\"\n        },\n        {\n          \"match\": \"\\\\bforeach\\\\b\",\n          \"name\": \"keyword.token.foreach.d\"\n        },\n        {\n          \"match\": \"\\\\bforeach_reverse\\\\b\",\n          \"name\": \"keyword.token.foreach_reverse.d\"\n        },\n        {\n          \"match\": \"\\\\bfunction\\\\b\",\n          \"name\": \"keyword.token.function.d\"\n        },\n        {\n          \"match\": \"\\\\bgoto\\\\b\",\n          \"name\": \"keyword.token.goto.d\"\n        },\n        {\n          \"match\": \"\\\\bidouble\\\\b\",\n          \"name\": \"keyword.token.idouble.d\"\n        },\n        {\n          \"match\": \"\\\\bif\\\\b\",\n          \"name\": \"keyword.token.if.d\"\n        },\n        {\n          \"match\": \"\\\\bifloat\\\\b\",\n          \"name\": \"keyword.token.ifloat.d\"\n        },\n        {\n          \"match\": \"\\\\bimmutable\\\\b\",\n          \"name\": \"keyword.token.immutable.d\"\n        },\n        {\n          \"match\": \"\\\\bimport\\\\b\",\n          \"name\": \"keyword.token.import.d\"\n        },\n        {\n          \"match\": \"\\\\bin\\\\b\",\n          \"name\": \"keyword.token.in.d\"\n        },\n        {\n          \"match\": \"\\\\binout\\\\b\",\n          \"name\": \"keyword.token.inout.d\"\n        },\n        {\n          \"match\": \"\\\\bint\\\\b\",\n          \"name\": \"keyword.token.int.d\"\n        },\n        {\n          \"match\": \"\\\\binterface\\\\b\",\n          \"name\": \"keyword.token.interface.d\"\n        },\n        {\n          \"match\": \"\\\\binvariant\\\\b\",\n          \"name\": \"keyword.token.invariant.d\"\n        },\n        {\n          \"match\": \"\\\\bireal\\\\b\",\n          \"name\": \"keyword.token.ireal.d\"\n        },\n        {\n          \"match\": \"\\\\bis\\\\b\",\n          \"name\": \"keyword.token.is.d\"\n        },\n        {\n          \"match\": \"\\\\blazy\\\\b\",\n          \"name\": \"keyword.token.lazy.d\"\n        },\n        {\n          \"match\": \"\\\\blong\\\\b\",\n          \"name\": \"keyword.token.long.d\"\n        },\n        {\n          \"match\": \"\\\\bmacro\\\\b\",\n          \"name\": \"keyword.token.macro.d\"\n        },\n        {\n          \"match\": \"\\\\bmixin\\\\b\",\n          \"name\": \"keyword.token.mixin.d\"\n        },\n        {\n          \"match\": \"\\\\bmodule\\\\b\",\n          \"name\": \"keyword.token.module.d\"\n        },\n        {\n          \"match\": \"\\\\bnew\\\\b\",\n          \"name\": \"keyword.token.new.d\"\n        },\n        {\n          \"match\": \"\\\\bnothrow\\\\b\",\n          \"name\": \"keyword.token.nothrow.d\"\n        },\n        {\n          \"match\": \"\\\\bnull\\\\b\",\n          \"name\": \"constant.language.null.d\"\n        },\n        {\n          \"match\": \"\\\\bout\\\\b\",\n          \"name\": \"keyword.token.out.d\"\n        },\n        {\n          \"match\": \"\\\\boverride\\\\b\",\n          \"name\": \"keyword.token.override.d\"\n        },\n        {\n          \"match\": \"\\\\bpackage\\\\b\",\n          \"name\": \"keyword.token.package.d\"\n        },\n        {\n          \"match\": \"\\\\bpragma\\\\b\",\n          \"name\": \"keyword.token.pragma.d\"\n        },\n        {\n          \"match\": \"\\\\bprivate\\\\b\",\n          \"name\": \"keyword.token.private.d\"\n        },\n        {\n          \"match\": \"\\\\bprotected\\\\b\",\n          \"name\": \"keyword.token.protected.d\"\n        },\n        {\n          \"match\": \"\\\\bpublic\\\\b\",\n          \"name\": \"keyword.token.public.d\"\n        },\n        {\n          \"match\": \"\\\\bpure\\\\b\",\n          \"name\": \"keyword.token.pure.d\"\n        },\n        {\n          \"match\": \"\\\\breal\\\\b\",\n          \"name\": \"keyword.token.real.d\"\n        },\n        {\n          \"match\": \"\\\\bref\\\\b\",\n          \"name\": \"keyword.token.ref.d\"\n        },\n        {\n          \"match\": \"\\\\breturn\\\\b\",\n          \"name\": \"keyword.token.return.d\"\n        },\n        {\n          \"match\": \"\\\\bscope\\\\b\",\n          \"name\": \"keyword.token.scope.d\"\n        },\n        {\n          \"match\": \"\\\\bshared\\\\b\",\n          \"name\": \"keyword.token.shared.d\"\n        },\n        {\n          \"match\": \"\\\\bshort\\\\b\",\n          \"name\": \"keyword.token.short.d\"\n        },\n        {\n          \"match\": \"\\\\bstatic\\\\b\",\n          \"name\": \"keyword.token.static.d\"\n        },\n        {\n          \"match\": \"\\\\bstruct\\\\b\",\n          \"name\": \"keyword.token.struct.d\"\n        },\n        {\n          \"match\": \"\\\\bsuper\\\\b\",\n          \"name\": \"keyword.token.super.d\"\n        },\n        {\n          \"match\": \"\\\\bswitch\\\\b\",\n          \"name\": \"keyword.token.switch.d\"\n        },\n        {\n          \"match\": \"\\\\bsynchronized\\\\b\",\n          \"name\": \"keyword.token.synchronized.d\"\n        },\n        {\n          \"match\": \"\\\\btemplate\\\\b\",\n          \"name\": \"keyword.token.template.d\"\n        },\n        {\n          \"match\": \"\\\\bthis\\\\b\",\n          \"name\": \"keyword.token.this.d\"\n        },\n        {\n          \"match\": \"\\\\bthrow\\\\b\",\n          \"name\": \"keyword.token.throw.d\"\n        },\n        {\n          \"match\": \"\\\\btrue\\\\b\",\n          \"name\": \"constant.language.boolean.true.d\"\n        },\n        {\n          \"match\": \"\\\\btry\\\\b\",\n          \"name\": \"keyword.token.try.d\"\n        },\n        {\n          \"match\": \"\\\\btypedef\\\\b\",\n          \"name\": \"keyword.token.typedef.d\"\n        },\n        {\n          \"match\": \"\\\\btypeid\\\\b\",\n          \"name\": \"keyword.token.typeid.d\"\n        },\n        {\n          \"match\": \"\\\\btypeof\\\\b\",\n          \"name\": \"keyword.token.typeof.d\"\n        },\n        {\n          \"match\": \"\\\\bubyte\\\\b\",\n          \"name\": \"keyword.token.ubyte.d\"\n        },\n        {\n          \"match\": \"\\\\bucent\\\\b\",\n          \"name\": \"keyword.token.ucent.d\"\n        },\n        {\n          \"match\": \"\\\\buint\\\\b\",\n          \"name\": \"keyword.token.uint.d\"\n        },\n        {\n          \"match\": \"\\\\bulong\\\\b\",\n          \"name\": \"keyword.token.ulong.d\"\n        },\n        {\n          \"match\": \"\\\\bunion\\\\b\",\n          \"name\": \"keyword.token.union.d\"\n        },\n        {\n          \"match\": \"\\\\bunittest\\\\b\",\n          \"name\": \"keyword.token.unittest.d\"\n        },\n        {\n          \"match\": \"\\\\bushort\\\\b\",\n          \"name\": \"keyword.token.ushort.d\"\n        },\n        {\n          \"match\": \"\\\\bversion\\\\b\",\n          \"name\": \"keyword.token.version.d\"\n        },\n        {\n          \"match\": \"\\\\bvoid\\\\b\",\n          \"name\": \"keyword.token.void.d\"\n        },\n        {\n          \"match\": \"\\\\bvolatile\\\\b\",\n          \"name\": \"keyword.token.volatile.d\"\n        },\n        {\n          \"match\": \"\\\\bwchar\\\\b\",\n          \"name\": \"keyword.token.wchar.d\"\n        },\n        {\n          \"match\": \"\\\\bwhile\\\\b\",\n          \"name\": \"keyword.token.while.d\"\n        },\n        {\n          \"match\": \"\\\\bwith\\\\b\",\n          \"name\": \"keyword.token.with.d\"\n        },\n        {\n          \"match\": \"\\\\b__FILE__\\\\b\",\n          \"name\": \"keyword.token.__FILE__.d\"\n        },\n        {\n          \"match\": \"\\\\b__MODULE__\\\\b\",\n          \"name\": \"keyword.token.__MODULE__.d\"\n        },\n        {\n          \"match\": \"\\\\b__LINE__\\\\b\",\n          \"name\": \"keyword.token.__LINE__.d\"\n        },\n        {\n          \"match\": \"\\\\b__FUNCTION__\\\\b\",\n          \"name\": \"keyword.token.__FUNCTION__.d\"\n        },\n        {\n          \"match\": \"\\\\b__PRETTY_FUNCTION__\\\\b\",\n          \"name\": \"keyword.token.__PRETTY_FUNCTION__.d\"\n        },\n        {\n          \"match\": \"\\\\b__gshared\\\\b\",\n          \"name\": \"keyword.token.__gshared.d\"\n        },\n        {\n          \"match\": \"\\\\b__traits\\\\b\",\n          \"name\": \"keyword.token.__traits.d\"\n        },\n        {\n          \"match\": \"\\\\b__vector\\\\b\",\n          \"name\": \"keyword.token.__vector.d\"\n        },\n        {\n          \"match\": \"\\\\b__parameters\\\\b\",\n          \"name\": \"keyword.token.__parameters.d\"\n        }\n      ]\n    },\n    \"special-token-sequence\": {\n      \"patterns\": [\n        {\n          \"match\": \"#\\\\s*line.*\",\n          \"name\": \"gfm.markup.italic.special-token-sequence.d\"\n        }\n      ]\n    },\n    \"special-tokens\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(__DATE__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__)\\\\b\",\n          \"name\": \"gfm.markup.raw.special-tokens.d\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/dart.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/dart-lang/dart-syntax-highlight/blob/master/grammars/dart.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/dart-lang/dart-syntax-highlight/commit/9d4857e114b7000d94232d83187ad142961c678a\",\n  \"name\": \"dart\",\n  \"scopeName\": \"source.dart\",\n  \"patterns\": [\n    {\n      \"name\": \"meta.preprocessor.script.dart\",\n      \"match\": \"^(#!.*)$\"\n    },\n    {\n      \"name\": \"meta.declaration.dart\",\n      \"begin\": \"^\\\\w*\\\\b(library|import|part of|part|export)\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.import.dart\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.dart\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"name\": \"keyword.other.import.dart\",\n          \"match\": \"\\\\b(as|show|hide)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control.dart\",\n          \"match\": \"\\\\b(if)\\\\b\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#punctuation\"\n    },\n    {\n      \"include\": \"#annotations\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#constants-and-special-vars\"\n    },\n    {\n      \"include\": \"#strings\"\n    }\n  ],\n  \"repository\": {\n    \"dartdoc\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\[.*?\\\\])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.name.source.dart\"\n            }\n          }\n        },\n        {\n          \"match\": \"^ {4,}(?![ \\\\*]).*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.name.source.dart\"\n            }\n          }\n        },\n        {\n          \"contentName\": \"variable.other.source.dart\",\n          \"begin\": \"```.*?$\",\n          \"end\": \"```\"\n        },\n        {\n          \"match\": \"(`.*?`)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.source.dart\"\n            }\n          }\n        },\n        {\n          \"match\": \"(`.*?`)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.source.dart\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\* ((    ).*))$\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"variable.other.source.dart\"\n            }\n          }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.empty.dart\",\n          \"match\": \"/\\\\*\\\\*/\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.dart\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comments-doc-oldschool\"\n        },\n        {\n          \"include\": \"#comments-doc\"\n        },\n        {\n          \"include\": \"#comments-inline\"\n        }\n      ]\n    },\n    \"comments-doc-oldschool\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.dart\",\n          \"begin\": \"/\\\\*\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments-doc-oldschool\"\n            },\n            {\n              \"include\": \"#comments-block\"\n            },\n            {\n              \"include\": \"#dartdoc\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments-doc\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.dart\",\n          \"begin\": \"///\",\n          \"while\": \"^\\\\s*///\",\n          \"patterns\": [\n            {\n              \"include\": \"#dartdoc\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments-inline\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments-block\"\n        },\n        {\n          \"match\": \"((//).*)$\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.double-slash.dart\"\n            }\n          }\n        }\n      ]\n    },\n    \"comments-block\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.dart\",\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments-block\"\n            }\n          ]\n        }\n      ]\n    },\n    \"annotations\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.annotation.dart\",\n          \"match\": \"@[a-zA-Z]+\"\n        }\n      ]\n    },\n    \"constants-and-special-vars\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(true|false|null)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"variable.language.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(this|super)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"constant.numeric.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"include\": \"#class-identifier\"\n        },\n        {\n          \"include\": \"#function-identifier\"\n        }\n      ]\n    },\n    \"class-identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*(<(?:[a-zA-Z0-9_$<>?]|,\\\\s*|\\\\s+extends\\\\s+)+>)?|bool\\\\b|num\\\\b|int\\\\b|double\\\\b|dynamic\\\\b|(void)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.class.dart\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type-args\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"storage.type.primitive.dart\"\n            }\n          }\n        }\n      ]\n    },\n    \"function-identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"([_$]*[a-z][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\\\\s*|\\\\s+extends\\\\s+)+>)?[!?]?(\\\\(|\\\\s+=>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.dart\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type-args\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"type-args\": {\n      \"begin\": \"(<)\",\n      \"end\": \"(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"other.source.dart\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"other.source.dart\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#class-identifier\"\n        },\n        {\n          \"match\": \"[\\\\s,]+\"\n        },\n        {\n          \"name\": \"keyword.declaration.dart\",\n          \"match\": \"extends\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.cast.dart\",\n          \"match\": \"(?<!\\\\$)\\\\bas\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.catch-exception.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(try|on|catch|finally|throw|rethrow)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(break|case|continue|default|do|else|for|if|in|return|switch|while)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(sync(\\\\*)?|async(\\\\*)?|await|yield(\\\\*)?)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.dart\",\n          \"match\": \"(?<!\\\\$)\\\\bassert\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.new.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(new)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.declaration.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(abstract|class|enum|extends|extension|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.operator.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(is\\\\!?)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.operator.ternary.dart\",\n          \"match\": \"\\\\?|:\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.dart\",\n          \"match\": \"(<<|>>>?|~|\\\\^|\\\\||&)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.bitwise.dart\",\n          \"match\": \"((&|\\\\^|\\\\||<<|>>>?)=)\"\n        },\n        {\n          \"name\": \"keyword.operator.closure.dart\",\n          \"match\": \"(=>)\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.dart\",\n          \"match\": \"(==|!=|<=?|>=?)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.arithmetic.dart\",\n          \"match\": \"(([+*/%-]|\\\\~)=)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.dart\",\n          \"match\": \"(=)\"\n        },\n        {\n          \"name\": \"keyword.operator.increment-decrement.dart\",\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.dart\",\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|\\\\~\\\\/|%)\"\n        },\n        {\n          \"name\": \"keyword.operator.logical.dart\",\n          \"match\": \"(!|&&|\\\\|\\\\|)\"\n        },\n        {\n          \"name\": \"storage.modifier.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(static|final|const|required|late)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"storage.type.primitive.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(?:void|var)\\\\b(?!\\\\$)\"\n        }\n      ]\n    },\n    \"string-interp\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\$([a-zA-Z0-9_]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.dart\"\n            }\n          }\n        },\n        {\n          \"name\": \"string.interpolated.expression.dart\",\n          \"begin\": \"\\\\$\\\\{\",\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#constants-and-special-vars\",\n              \"name\": \"variable.parameter.dart\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"name\": \"variable.parameter.dart\",\n              \"match\": \"[a-zA-Z0-9_]+\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.character.escape.dart\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.interpolated.triple.double.dart\",\n          \"begin\": \"(?<!r)\\\"\\\"\\\"\",\n          \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-interp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.interpolated.triple.single.dart\",\n          \"begin\": \"(?<!r)'''\",\n          \"end\": \"'''(?!')\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-interp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.triple.double.dart\",\n          \"begin\": \"r\\\"\\\"\\\"\",\n          \"end\": \"\\\"\\\"\\\"(?!\\\")\"\n        },\n        {\n          \"name\": \"string.quoted.triple.single.dart\",\n          \"begin\": \"r'''\",\n          \"end\": \"'''(?!')\"\n        },\n        {\n          \"name\": \"string.interpolated.double.dart\",\n          \"begin\": \"(?<!\\\\|r)\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.string.newline\",\n              \"match\": \"\\\\n\"\n            },\n            {\n              \"include\": \"#string-interp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.dart\",\n          \"begin\": \"r\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.string.newline\",\n              \"match\": \"\\\\n\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.interpolated.single.dart\",\n          \"begin\": \"(?<!\\\\|r)'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.string.newline\",\n              \"match\": \"\\\\n\"\n            },\n            {\n              \"include\": \"#string-interp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.dart\",\n          \"begin\": \"r'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.string.newline\",\n              \"match\": \"\\\\n\"\n            }\n          ]\n        }\n      ]\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.comma.dart\",\n          \"match\": \",\"\n        },\n        {\n          \"name\": \"punctuation.terminator.dart\",\n          \"match\": \";\"\n        },\n        {\n          \"name\": \"punctuation.dot.dart\",\n          \"match\": \"\\\\.\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/diff.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/diff.tmbundle/blob/master/Syntaxes/Diff.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/diff.tmbundle/commit/0593bb775eab1824af97ef2172fd38822abd97d7\",\n  \"name\": \"diff\",\n  \"scopeName\": \"source.diff\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.separator.diff\"\n        }\n      },\n      \"match\": \"^((\\\\*{15})|(={67})|(-{3}))$\\\\n?\",\n      \"name\": \"meta.separator.diff\"\n    },\n    {\n      \"match\": \"^\\\\d+(,\\\\d+)*(a|d|c)\\\\d+(,\\\\d+)*$\\\\n?\",\n      \"name\": \"meta.diff.range.normal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        },\n        \"2\": {\n          \"name\": \"meta.toc-list.line-number.diff\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        }\n      },\n      \"match\": \"^(@@)\\\\s*(.+?)\\\\s*(@@)($\\\\n?)?\",\n      \"name\": \"meta.diff.range.unified\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        }\n      },\n      \"match\": \"^(((\\\\-{3}) .+ (\\\\-{4}))|((\\\\*{3}) .+ (\\\\*{4})))$\\\\n?\",\n      \"name\": \"meta.diff.range.context\"\n    },\n    {\n      \"match\": \"^diff --git a/.*$\\\\n?\",\n      \"name\": \"meta.diff.header.git\"\n    },\n    {\n      \"match\": \"^diff (-|\\\\S+\\\\s+\\\\S+).*$\\\\n?\",\n      \"name\": \"meta.diff.header.command\"\n    },\n    {\n      \"captures\": {\n        \"4\": {\n          \"name\": \"punctuation.definition.from-file.diff\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.from-file.diff\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.from-file.diff\"\n        }\n      },\n      \"match\": \"(^(((-{3}) .+)|((\\\\*{3}) .+))$\\\\n?|^(={4}) .+(?= - ))\",\n      \"name\": \"meta.diff.header.from-file\"\n    },\n    {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.to-file.diff\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.to-file.diff\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.to-file.diff\"\n        }\n      },\n      \"match\": \"(^(\\\\+{3}) .+$\\\\n?| (-) .* (={4})$\\\\n?)\",\n      \"name\": \"meta.diff.header.to-file\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.inserted.diff\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.inserted.diff\"\n        }\n      },\n      \"match\": \"^(((>)( .*)?)|((\\\\+).*))$\\\\n?\",\n      \"name\": \"markup.inserted.diff\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.changed.diff\"\n        }\n      },\n      \"match\": \"^(!).*$\\\\n?\",\n      \"name\": \"markup.changed.diff\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.deleted.diff\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.deleted.diff\"\n        }\n      },\n      \"match\": \"^(((<)( .*)?)|((-).*))$\\\\n?\",\n      \"name\": \"markup.deleted.diff\"\n    },\n    {\n      \"begin\": \"^(#)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.diff\"\n        }\n      },\n      \"comment\": \"Git produces unified diffs with embedded comments\\\"\",\n      \"end\": \"\\\\n\",\n      \"name\": \"comment.line.number-sign.diff\"\n    },\n    {\n      \"match\": \"^index [0-9a-f]{7,40}\\\\.\\\\.[0-9a-f]{7,40}.*$\\\\n?\",\n      \"name\": \"meta.diff.index.git\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.key-value.diff\"\n        },\n        \"2\": {\n          \"name\": \"meta.toc-list.file-name.diff\"\n        }\n      },\n      \"match\": \"^Index(:) (.+)$\\\\n?\",\n      \"name\": \"meta.diff.index\"\n    },\n    {\n      \"match\": \"^Only in .*: .*$\\\\n?\",\n      \"name\": \"meta.diff.only-in\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/django.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.python.django\",\n  \"fileTypes\": [],\n  \"patterns\": [\n    {\n      \"match\": \"(meta|models)\\\\.(Admin|AutoField|BooleanField|CharField|CommaSeparatedIntegerField|DateField|DateTimeField|DecimalField|EmailField|FileField|FilePathField|FloatField|ForeignKey|ImageField|IntegerField|IPAddressField|ManyToManyField|NullBooleanField|OneToOneField|PhoneNumberField|PositiveIntegerField|PositiveSmallIntegerField|SlugField|SmallIntegerField|TextField|TimeField|URLField|USStateField|XMLField)\",\n      \"name\": \"support.type.django.model\"\n    },\n    {\n      \"match\": \"django(\\\\.[a-z]+){1,} \",\n      \"name\": \"support.other.django.module\"\n    },\n    {\n      \"match\": \"(ABSOLUTE_URL_OVERRIDES|ADMIN_FOR|ADMIN_MEDIA_PREFIX|ADMINS|ALLOWED_INCLUDE_ROOTS|APPEND_SLASH|AUTHENTICATION_BACKENDS|AUTH_PROFILE_MODULE|CACHE_BACKEND|CACHE_MIDDLEWARE_KEY_PREFIX|CACHE_MIDDLEWARE_SECONDS|DATABASE_ENGINE|DATABASE_HOST|DATABASE_NAME|DATABASE_OPTIONS|DATABASE_PASSWORD|DATABASE_PORT|DATABASE_USER|DATE_FORMAT|DATETIME_FORMAT|DEBUG|DEFAULT_CHARSET|DEFAULT_CONTENT_TYPE|DEFAULT_FROM_EMAIL|DEFAULT_TABLESPACE|DEFAULT_INDEX_TABLESPACE|DISALLOWED_USER_AGENTS|EMAIL_HOST_PASSWORD|EMAIL_HOST_USER|EMAIL_HOST|EMAIL_PORT|EMAIL_SUBJECT_PREFIX|EMAIL_USE_TLS|FILE_CHARSET|FIXTURE_DIRS|IGNORABLE_404_ENDS|IGNORABLE_404_STARTS|INSTALLED_APPS|INTERNAL_IPS|JING_PATH|LANGUAGE_CODE|LANGUAGE_COOKIE_NAME|LANGUAGES|LOCALE_PATHS|LOGIN_REDIRECT_URL|LOGIN_URL|LOGOUT_URL|MANAGERS|MEDIA_ROOT|MEDIA_URL|MIDDLEWARE_CLASSES|MONTH_DAY_FORMAT|PREPEND_WWW|PROFANITIES_LIST|ROOT_URLCONF|SECRET_KEY|SEND_BROKEN_LINK_EMAILS|SERIALIZATION_MODULES|SERVER_EMAIL|SESSION_ENGINE|SESSION_COOKIE_AGE|SESSION_COOKIE_DOMAIN|SESSION_COOKIE_NAME|SESSION_COOKIE_PATH|SESSION_COOKIE_SECURE|SESSION_EXPIRE_AT_BROWSER_CLOSE|SESSION_FILE_PATH|SESSION_SAVE_EVERY_REQUEST|SITE_ID|TEMPLATE_CONTEXT_PROCESSORS|TEMPLATE_DEBUG|TEMPLATE_DIRS|TEMPLATE_LOADERS|TEMPLATE_STRING_IF_INVALID|TEST_DATABASE_CHARSET|TEST_DATABASE_COLLATION|TEST_DATABASE_NAME|TEST_RUNNER|TIME_FORMAT|TIME_ZONE|URL_VALIDATOR_USER_AGENT|USE_ETAGS|USE_I18N|YEAR_MONTH_FORMAT)\",\n      \"name\": \"variable.other.django.settings\"\n    },\n    {\n      \"match\": \"(get_list_or_404|get_object_or_404|load_and_render|loader|render_to_response)\",\n      \"name\": \"support.function.django.view\"\n    },\n    {\n      \"match\": \"[a-z_]+\\\\.get_(object|list|iterator|count|values|values_iterator|in_bulk)\",\n      \"name\": \"support.function.django.model\"\n    },\n    { \"include\": \"source.python\" }\n  ],\n  \"name\": \"Python Django\",\n  \"keyEquivalent\": \"^~P\",\n  \"uuid\": \"5326D56C-6F76-4758-8DB7-D818527919AC\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/docker.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/moby/moby/blob/master/contrib/syntax/textmate/Docker.tmbundle/Syntaxes/Dockerfile.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/moby/moby/commit/abd39744c6f3ed854500e423f5fabf952165161f\",\n  \"name\": \"docker\",\n  \"scopeName\": \"source.dockerfile\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.special-method.dockerfile\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.special-method.dockerfile\"\n        }\n      },\n      \"match\": \"^\\\\s*\\\\b(?i:(FROM))\\\\b.*?\\\\b(?i:(AS))\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.dockerfile\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.special-method.dockerfile\"\n        }\n      },\n      \"match\": \"^\\\\s*(?i:(ONBUILD)\\\\s+)?(?i:(ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR))\\\\s\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.dockerfile\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.special-method.dockerfile\"\n        }\n      },\n      \"match\": \"^\\\\s*(?i:(ONBUILD)\\\\s+)?(?i:(CMD|ENTRYPOINT))\\\\s\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.dockerfile\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.dockerfile\"\n        }\n      },\n      \"name\": \"string.quoted.double.dockerfile\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escaped.dockerfile\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.dockerfile\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.dockerfile\"\n        }\n      },\n      \"name\": \"string.quoted.single.dockerfile\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escaped.dockerfile\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.dockerfile\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.number-sign.dockerfile\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.dockerfile\"\n        }\n      },\n      \"comment\": \"comment.line\",\n      \"match\": \"^(\\\\s*)((#).*$\\\\n?)\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/dot.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"dot\", \"DOT\"],\n  \"firstLineMatch\": \"digraph.*\",\n  \"keyEquivalent\": \"^~G\",\n  \"uuid\": \"1A53D54E-6B1D-11D9-A006-000D93589AF6\",\n  \"patterns\": [\n    {\n      \"comment\": \"named digraph declaration: \\\"digraph NAME {\\\"\",\n      \"match\": \" ?(digraph)[ \\\\t]+([A-Za-z0-9]+) ?(\\\\{)\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.dot\" },\n        \"2\": { \"name\": \"variable.other.dot\" },\n        \"4\": { \"name\": \"punctuation.section.dot\" }\n      }\n    },\n    {\n      \"comment\": \"edge definition: <- -> --\",\n      \"match\": \"(<|-)(>|-)\",\n      \"name\": \"keyword.operator.dot\"\n    },\n    {\n      \"match\": \"\\\\b(node|edge|graph|digraph|subgraph|strict)\\\\b\",\n      \"name\": \"storage.type.dot\"\n    },\n    {\n      \"match\": \"\\\\b(bottomlabel|color|comment|distortion|fillcolor|fixedsize|fontcolor|fontname|fontsize|group|height|label|layer|orientation|peripheries|regular|shape|shapefile|sides|skew|style|toplabel|URL|width|z)\\\\b\",\n      \"name\": \"support.constant.attribute.node.dot\"\n    },\n    {\n      \"match\": \"\\\\b(arrowhead|arrowsize|arrowtail|color|comment|constraint|decorate|dir|fontcolor|fontname|fontsize|headlabel|headport|headURL|label|labelangle|labeldistance|labelfloat|labelcolor|labelfontname|labelfontsize|layer|lhead|ltail|minlen|samehead|sametail|splines|style|taillabel|tailport|tailURL|weight)\\\\b\",\n      \"name\": \"support.constant.attribute.edge.dot\"\n    },\n    {\n      \"match\": \"\\\\b(bgcolor|center|clusterrank|color|comment|compound|concentrate|fillcolor|fontname|fontpath|fontsize|label|labeljust|labelloc|layers|margin|mclimit|nodesep|nslimit|nslimit1|ordering|orientation|page|pagedir|quantum|rank|rankdir|ranksep|ratio|remincross|rotate|samplepoints|searchsize|size|style|URL)\\\\b\",\n      \"name\": \"support.constant.attribute.graph.dot\"\n    },\n    {\n      \"match\": \"\\\\b(box|polygon|ellipse|circle|point|egg|triangle|plaintext|diamond|trapezium|parallelogram|house|pentagon|hexagon|septagon|octagon|doublecircle|doubleoctagon|tripleoctagon|invtriangle|invtrapezium|invhouse|Mdiamond|Msquare|Mcircle|rect|rectangle|none|note|tab|folder|box3d|component|max|min|same)\\\\b\",\n      \"name\": \"variable.other.dot\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.dot\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.dot\" }\n      ],\n      \"name\": \"string.quoted.double.dot\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.dot\" }\n      }\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"//\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.double-slash.dot\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.dot\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.dot\" }\n      }\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.dot\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.dot\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.dot\" }\n      }\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.dot\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.dot\" } }\n    }\n  ],\n  \"name\": \"Graphviz (DOT)\",\n  \"scopeName\": \"source.dot\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/drools.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.drools\",\n  \"fileTypes\": [\".drl\"],\n  \"patterns\": [\n    {\n      \"comment\": \"Mathmatical operators\",\n      \"match\": \"[<|>|==|<=|>=|.|!=]\",\n      \"name\": \"keyword.operator.source.drools\"\n    },\n    {\n      \"comment\": \"Drools RHS functions\",\n      \"match\": \"\\\\b(insert|insertLogical|delete|modify)\\\\b\",\n      \"name\": \"entity.name.function.source.drools\"\n    },\n    {\n      \"comment\": \"Drools hard keywords\",\n      \"match\": \"\\\\b(true|false|null)\\\\b\",\n      \"name\": \"constant.language.source.drools\"\n    },\n    {\n      \"comment\": \"Drools soft keywords\",\n      \"match\": \"\\\\b(lock-on-active|date-effective|date-expires|no-loop|auto-focus|activation-group|agenda-group|ruleflow-group|entry-point|duration|package|import|dialect|salience|enabled|attributes|rule|extends|when|then|template|query|declare|function|global|eval|not|in|or|and|exists|forall|accumulate|collect|from|end|over|calendars|init|action|reverse|result|new)\\\\b\",\n      \"name\": \"keyword.control.source.drools\"\n    },\n    {\n      \"comment\": \"Bound variables like $person, $myList\",\n      \"match\": \"\\\\$([A-Za-z][A-Za-z0-9_]+)\",\n      \"name\": \"variable.parameter.source.drools\"\n    },\n    {\n      \"comment\": \"Java classes\",\n      \"match\": \"\\\\b([A-Z][A-Za-z_]+)\\\\b\",\n      \"name\": \"support.type.source.drools\"\n    },\n    {\n      \"comment\": \"Single line comment\",\n      \"match\": \"(\\\\/)(\\\\/).*\",\n      \"name\": \"comment.line.double-slash.source.drools\"\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"comment\": \"Multi line comment\",\n      \"name\": \"comment.line.double-slash.source.drools\"\n    },\n    {\n      \"comment\": \"Double quote strings\",\n      \"match\": \"(\\\").*(\\\")\",\n      \"name\": \"string.quoted.double.source.drools\"\n    },\n    {\n      \"comment\": \"Numbers\",\n      \"match\": \"([0-9]+(\\\\.)?[0-9]*)\",\n      \"name\": \"constant.numeric.source.drools\"\n    }\n  ],\n  \"name\": \"Drools\",\n  \"uuid\": \"a98fc7cc-15d1-401e-bb85-e72714276cdb\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/edifact.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.plain.edifact\",\n  \"patterns\": [\n    {\n      \"match\": \"^(UNB|BGM|RFF\\\\+[^:+]*|NAD\\\\+[^:+]*|LIN.+')\",\n      \"name\": \"keyword.control.other\"\n    },\n    {\n      \"match\": \"(^\\\\s*|')[A-Z]+(:|\\\\+)\",\n      \"name\": \"variable.other\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.language\" },\n        \"2\": { \"name\": \"constant.character\" }\n      }\n    },\n    { \"match\": \"\\\\+\", \"name\": \"constant.character\" },\n    { \"match\": \"'\", \"name\": \"constant.language\" },\n    { \"match\": \":\", \"name\": \"constant.numeric\" },\n    {\n      \"match\": \"(APERAK|AUTHOR|AUTACK|CONTRL|KEYMAN|BALANC|BANSTA|BAPLIE|BERMAN|BMISRM|BOPBNK|BOPCUS|BOPDIR|BOPINF|BUSCRD|CALINF|CASINT|CASRES|CHACCO|CLASET|CNTCND|COACSU|COARRI|CODECO|CODENO|COEDOR|COHAOR|COLREQ|COMDIS|CONAPW|CONDPV|CONDRA|CONDRO|CONEST|CONITT|CONPVA|CONQVA|CONRPW|CONTEN|CONWQD|COPARN|COPAYM|COPINO|COPRAR|COREOR|COSTCO|COSTOR|CREADV|CREEXT|CREMUL|CUSCAR|CUSDEC|CUSEXP|CUSPED|CUSREP|CUSRES|DAPLOS|DEBADV|DEBMUL|DEBREC|DELFOR|DELJIT|DESADV|DESTIM|DGRECA|DIRDEB|DIRDEF|DMRDEF|DMSTAT|DOCADV|DOCAMA|DOCAMI|DOCAMR|DOCAPP|DOCARE|DOCINF|ENTREC|FINCAN|FINPAY|FINSTA|GENRAL|GESMES|GOVCBR|HANMOV|ICASRP|ICSOLI|IFCSUM|IFTCCA|IFTDGN|IFTFCC|IFTICL|IFTMAN|IFTMBC|IFTMBF|IFTMBP|IFTMCA|IFTMCS|IFTMIN|IFTRIN|IFTSAI|IFTSTA|IFTSTQ|IMPDEF|INFCON|INFENT|INSDES|INSPRE|INSREQ|INSRPT|INVOIC|INVRPT|IPPOAD|IPPOMO|ISENDS|ITRRPT|JAPRES|JINFDE|JOBAPP|JOBCON|JOBMOD|JOBOFF|JUPREQ|LEDGER|LREACT|LRECLM|MEDPID|MEDPRE|MEDREQ|MEDRPT|MEDRUC|MEQPOS|MOVINS|MSCONS|ORDCHG|ORDERS|ORDRSP|OSTENQ|OSTRPT|PARTIN|PAXLST|PAYDUC|PAYEXT|PAYMUL|PAYORD|PRICAT|PRIHIS|PROCST|PRODAT|PRODEX|PROINQ|PROSRV|PROTAP|PRPAID|QALITY|QUOTES|RDRMES|REBORD|RECADV|RECALC|RECECO|RECLAM|RECORD|REGENT|RELIST|REMADV|REPREM|REQDOC|REQOTE|RESETT|RESMSG|RETACC|RETANN|RETINS|RPCALL|SAFHAZ|SANCRT|SLSFCT|SLSRPT|SOCADE|SSIMOD|SSRECH|SSREGW|STATAC|STLRPT|SUPCOT|SUPMAN|SUPRES|TANSTA|TAXCON|TPFREP|UTILMD|UTILTS|VATDEC|VESDEP|WASDIS|WKGRDC|WKGRRE)\",\n      \"name\": \"constant.language\"\n    }\n  ],\n  \"name\": \"EDIFACT\",\n  \"uuid\": \"51fb7f8a-eef3-4fe7-bc96-ce5e9f203171\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/eex.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.elixir\",\n  \"fileTypes\": [\"eex\"],\n  \"patterns\": [\n    {\n      \"begin\": \"<%+#\",\n      \"end\": \"%>\",\n      \"name\": \"comment.block.elixir\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.eex\" } }\n    },\n    {\n      \"end\": \"(-)%>|(%)>\",\n      \"begin\": \"<%+(?!>)[-=]*\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.begin.elixir\" }\n      },\n      \"contentName\": \"source.elixir\",\n      \"patterns\": [\n        {\n          \"match\": \"(#).*?(?=-?%>)\",\n          \"name\": \"comment.line.number-sign.elixir\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.elixir\" }\n          }\n        },\n        { \"include\": \"source.elixir\" }\n      ],\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.end.elixir\" },\n        \"1\": { \"name\": \"source.elixir\" },\n        \"2\": { \"name\": \"source.elixir\" }\n      },\n      \"name\": \"meta.embedded.line.elixir\"\n    }\n  ],\n  \"name\": \"EEx\",\n  \"keyEquivalent\": \"^~X\",\n  \"uuid\": \"B1393067-A26A-4BAD-9D0F-42DF21FEB1C2\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/eiffel.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"e\"],\n  \"repository\": {\n    \"number\": { \"match\": \"[0-9]+\" },\n    \"variable\": { \"match\": \"[a-zA-Z0-9_]+\" }\n  },\n  \"keyEquivalent\": \"^~E\",\n  \"uuid\": \"34672373-DED9-45B8-AF7E-2E4B6C3D6B76\",\n  \"patterns\": [\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=--)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"--\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.double-dash.eiffel\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.eiffel\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.eiffel\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(Indexing|indexing|deferred|expanded|class|inherit|rename|as|export|undefine|redefine|select|all|create|creation|feature|prefix|infix|separate|frozen|obsolete|local|is|unique|do|once|external|alias|require|ensure|invariant|variant|rescue|retry|like|check|if|else|elseif|then|inspect|when|from|loop|until|debug|not|or|and|xor|implies|old|end)\\\\b\",\n      \"name\": \"keyword.control.eiffel\"\n    },\n    { \"match\": \"[a-zA-Z_]+\", \"name\": \"variable.other.eiffel\" },\n    {\n      \"match\": \"\\\\b(True|true|False|false|Void|void|Result|result)\\\\b\",\n      \"name\": \"constant.language.eiffel\"\n    },\n    { \"begin\": \"feature\", \"end\": \"end\", \"name\": \"meta.features.eiffel\" },\n    {\n      \"begin\": \"(do|once)\",\n      \"end\": \"(ensure|end)\",\n      \"name\": \"meta.effective_routine_body.eiffel\"\n    },\n    { \"begin\": \"rescue\", \"end\": \"end\", \"name\": \"meta.rescue.eiffel\" },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.eiffel\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.eiffel\" }\n      ],\n      \"name\": \"string.quoted.double.eiffel\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.eiffel\" }\n      }\n    },\n    { \"match\": \"[0-9]+\", \"name\": \"constant.numeric.eiffel\" },\n    { \"match\": \"\\\\b(deferred|expanded)\\\\b\", \"name\": \"storage.modifier.eiffel\" },\n    {\n      \"begin\": \"^\\\\s*\\n\\t\\t\\t\\t\\t((?:\\\\b(deferred|expanded)\\\\b\\\\s*)*) # modifier\\n\\t\\t\\t\\t\\t(class)\\\\s+\\n\\t\\t\\t\\t\\t(\\\\w+)\\\\s* # identifier\",\n      \"end\": \"(?=end)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(extends)\\\\b\\\\s+\",\n          \"end\": \"(?={|implements)\",\n          \"patterns\": [{ \"include\": \"#all-types\" }],\n          \"name\": \"meta.definition.class.extends.java\",\n          \"captures\": { \"1\": { \"name\": \"storage.modifier.java\" } }\n        },\n        {\n          \"begin\": \"\\\\b(implements)\\\\b\\\\s+\",\n          \"end\": \"(?={|extends)\",\n          \"patterns\": [{ \"include\": \"#all-types\" }],\n          \"name\": \"meta.definition.class.implements.java\",\n          \"captures\": { \"1\": { \"name\": \"storage.modifier.java\" } }\n        }\n      ],\n      \"name\": \"meta.definition.class.eiffel\",\n      \"captures\": { \"1\": { \"name\": \"storage.modifier.eiffel\" } }\n    }\n  ],\n  \"name\": \"Eiffel\",\n  \"scopeName\": \"source.eiffel\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/ejs.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"(?x)\\n\\t\\t(<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\\\\b.*?>\\n\\t\\t|<!--(?!.*--\\\\s*>)\\n\\t\\t|^<!--\\\\ \\\\#tminclude\\\\ (?>.*?-->)$\\n\\t\\t|<\\\\?(?:php)?.*\\\\b(if|for(each)?|while)\\\\b.+:\\n\\t\\t|\\\\{\\\\{?(if|foreach|capture|literal|foreach|php|section|strip)\\n\\t\\t|\\\\{\\\\s*($|\\\\?>\\\\s*$|//|/\\\\*(.*\\\\*/\\\\s*$|(?!.*?\\\\*/)))\\n\\t\\t)\",\n  \"firstLineMatch\": \"<!(?i:DOCTYPE)|<(?i:html)|<\\\\?(?i:php)\",\n  \"foldingStopMarker\": \"(?x)\\n\\t\\t(</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)>\\n\\t\\t|^(?!.*?<!--).*?--\\\\s*>\\n\\t\\t|^<!--\\\\ end\\\\ tminclude\\\\ -->$\\n\\t\\t|<\\\\?(?:php)?.*\\\\bend(if|for(each)?|while)\\\\b\\n\\t\\t|\\\\{\\\\{?/(if|foreach|capture|literal|foreach|php|section|strip)\\n\\t\\t|^[^{]*\\\\}\\n\\t\\t)\",\n  \"keyEquivalent\": \"^~H\",\n  \"fileTypes\": [\"ejs\"],\n  \"repository\": {\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [{ \"include\": \"#embedded-code\" }, { \"include\": \"#entities\" }],\n      \"name\": \"string.quoted.single.html\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      }\n    },\n    \"embedded-code\": { \"patterns\": [{ \"include\": \"#js\" }] },\n    \"tag-stuff\": {\n      \"patterns\": [\n        { \"include\": \"#tag-id-attribute\" },\n        { \"include\": \"#tag-generic-attribute\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" },\n        { \"include\": \"#embedded-code\" }\n      ]\n    },\n    \"tag-id-attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")\",\n      \"patterns\": [\n        {\n          \"end\": \"\\\"\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"patterns\": [\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"#entities\" }\n          ],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"name\": \"string.quoted.double.html\"\n        },\n        {\n          \"end\": \"'\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"patterns\": [\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"#entities\" }\n          ],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"name\": \"string.quoted.single.html\"\n        }\n      ],\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.other.attribute-name.id.html\" },\n        \"2\": { \"name\": \"punctuation.separator.key-value.html\" }\n      }\n    },\n    \"tag-generic-attribute\": {\n      \"match\": \"\\\\b([a-zA-Z\\\\-:]+)\",\n      \"name\": \"entity.other.attribute-name.html\"\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.entity.html\" },\n            \"3\": { \"name\": \"punctuation.definition.entity.html\" }\n          }\n        },\n        { \"match\": \"&\", \"name\": \"invalid.illegal.bad-ampersand.html\" }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [{ \"include\": \"#embedded-code\" }, { \"include\": \"#entities\" }],\n      \"name\": \"string.quoted.double.html\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      }\n    },\n    \"js\": {\n      \"begin\": \"<\\\\%=?-?\",\n      \"end\": \"\\\\%>\",\n      \"patterns\": [{ \"include\": \"source.js\" }],\n      \"name\": \"source.js.embedded.html\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.embedded.js\" } }\n    }\n  },\n  \"uuid\": \"050E5380-B076-11E1-AFA6-0800200C9A66\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<)([a-zA-Z0-9:]++)(?=[^>]*></\\\\2>)\",\n      \"endCaptures\": {\n        \"3\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.end.html\" },\n        \"4\": { \"name\": \"entity.name.tag.html\" },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html\"\n        },\n        \"5\": { \"name\": \"punctuation.definition.tag.end.html\" }\n      },\n      \"end\": \"(>)(<)(/)(\\\\2)(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"end\": \"(\\\\?>)\",\n      \"patterns\": [\n        { \"include\": \"#tag-generic-attribute\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" }\n      ],\n      \"name\": \"meta.tag.preprocessor.xml.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n        \"2\": { \"name\": \"entity.name.tag.xml.html\" }\n      }\n    },\n    {\n      \"begin\": \"<!--\",\n      \"end\": \"--\\\\s*>\",\n      \"patterns\": [\n        { \"match\": \"--\", \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\" },\n        { \"include\": \"#embedded-code\" }\n      ],\n      \"name\": \"comment.block.html\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.html\" } }\n    },\n    {\n      \"begin\": \"<!\",\n      \"end\": \">\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i:DOCTYPE)\",\n          \"end\": \"(?=>)\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"[^\\\">]*\\\"\",\n              \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n            }\n          ],\n          \"name\": \"meta.tag.sgml.doctype.html\",\n          \"captures\": { \"1\": { \"name\": \"entity.name.tag.doctype.html\" } }\n        },\n        {\n          \"begin\": \"\\\\[CDATA\\\\[\",\n          \"end\": \"]](?=>)\",\n          \"name\": \"constant.other.inline-data.html\"\n        },\n        {\n          \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        }\n      ],\n      \"name\": \"meta.tag.sgml.html\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.tag.html\" } }\n    },\n    { \"include\": \"#embedded-code\" },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?![^>]*/>)\",\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"source.css\" }\n          ],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.css.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?![^>]*/>)\",\n      \"endCaptures\": { \"2\": { \"name\": \"punctuation.definition.tag.html\" } },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [\n            {\n              \"match\": \"(//).*?((?=</script)|$\\\\n?)\",\n              \"name\": \"comment.line.double-slash.js\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.comment.js\" }\n              }\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"end\": \"\\\\*/|(?=</script)\",\n              \"name\": \"comment.block.js\",\n              \"captures\": {\n                \"0\": { \"name\": \"punctuation.definition.comment.js\" }\n              }\n            },\n            { \"include\": \"#php\" },\n            { \"include\": \"source.js\" }\n          ],\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n            \"2\": { \"name\": \"entity.name.tag.script.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.js.embedded.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n        \"2\": { \"name\": \"entity.name.tag.script.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.structure.any.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.structure.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.block.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.block.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"((?: ?/)?>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.inline.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.inline.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)([a-zA-Z0-9:]+)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.other.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.other.html\" }\n      }\n    },\n    { \"include\": \"#entities\" },\n    { \"match\": \"<>\", \"name\": \"invalid.illegal.incomplete.html\" },\n    { \"match\": \"<\", \"name\": \"invalid.illegal.bad-angle-bracket.html\" }\n  ],\n  \"name\": \"EJS\",\n  \"scopeName\": \"text.html.js\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/elixir.tmLanguage.json",
    "content": "{\n  \"comment\": \"Textmate bundle for Elixir Programming Language.\",\n  \"fileTypes\": [\"ex\", \"exs\"],\n  \"firstLineMatch\": \"^#!/.*\\\\belixir\",\n  \"foldingStartMarker\": \"(after|else|catch|rescue|\\\\-\\\\>|\\\\{|\\\\[|do)\\\\s*$\",\n  \"foldingStopMarker\": \"^\\\\s*((\\\\}|\\\\]|after|else|catch|rescue)\\\\s*$|end\\\\b)\",\n  \"keyEquivalent\": \"^~E\",\n  \"name\": \"elixir\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\b(fn)\\\\b(?!.*->)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.elixir\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#core_syntax\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.class.elixir\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.method.elixir\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.elixir\"\n        }\n      },\n      \"match\": \"([A-Z]\\\\w+)\\\\s*(\\\\.)\\\\s*([a-z_]\\\\w*[!?]?)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.symbol.elixir\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.method.elixir\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.elixir\"\n        }\n      },\n      \"match\": \"(\\\\:\\\\w+)\\\\s*(\\\\.)\\\\s*([_]?\\\\w*[!?]?)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.other.elixir\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.elixir\"\n        }\n      },\n      \"match\": \"(\\\\|\\\\>)\\\\s*([a-z_]\\\\w*[!?]?)\"\n    },\n    {\n      \"match\": \"\\\\b[a-z_]\\\\w*[!?]?(?=\\\\s*\\\\.?\\\\s*\\\\()\",\n      \"name\": \"entity.name.function.elixir\"\n    },\n    {\n      \"begin\": \"\\\\b(fn)\\\\b(?=.*->)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.elixir\"\n        }\n      },\n      \"end\": \"(?>(->)|(when)|(\\\\)))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.other.elixir\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.elixir\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.function.elixir\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#core_syntax\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#core_syntax\"\n    },\n    {\n      \"begin\": \"^(?=.*->)((?![^\\\"']*(\\\"|')[^\\\"']*->)|(?=.*->[^\\\"']*(\\\"|')[^\\\"']*->))((?!.*\\\\([^\\\\)]*->)|(?=[^\\\\(\\\\)]*->)|(?=\\\\s*\\\\(.*\\\\).*->))((?!.*\\\\b(fn)\\\\b)|(?=.*->.*\\\\bfn\\\\b))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.elixir\"\n        }\n      },\n      \"end\": \"(?>(->)|(when)|(\\\\)))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.other.elixir\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.elixir\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.function.elixir\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#core_syntax\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"core_syntax\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(defmodule)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.module.elixir\"\n            }\n          },\n          \"end\": \"\\\\b(do)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.module.elixir\"\n            }\n          },\n          \"name\": \"meta.module.elixir\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b[A-Z]\\\\w*(?=\\\\.)\",\n              \"name\": \"entity.other.inherited-class.elixir\"\n            },\n            {\n              \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n              \"name\": \"entity.name.type.class.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(defprotocol)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.protocol.elixir\"\n            }\n          },\n          \"end\": \"\\\\b(do)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.protocol.elixir\"\n            }\n          },\n          \"name\": \"meta.protocol_declaration.elixir\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n              \"name\": \"entity.name.type.protocol.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(defimpl)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.protocol.elixir\"\n            }\n          },\n          \"end\": \"\\\\b(do)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.protocol.elixir\"\n            }\n          },\n          \"name\": \"meta.protocol_implementation.elixir\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n              \"name\": \"entity.name.type.protocol.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(def|defmacro|defdelegate|defguard)\\\\s+((?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?))((\\\\()|\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.module.elixir\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.public.elixir\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.section.function.elixir\"\n            }\n          },\n          \"end\": \"(\\\\bdo:)|(\\\\bdo\\\\b)|(?=\\\\s+(def|defn|defmacro|defdelegate|defguard)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.keywords.elixir\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.module.elixir\"\n            }\n          },\n          \"name\": \"meta.function.public.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"begin\": \"\\\\s(\\\\\\\\\\\\\\\\)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.other.elixir\"\n                }\n              },\n              \"end\": \",|\\\\)|$\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\\\b\",\n              \"name\": \"keyword.control.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(defp|defnp|defmacrop|defguardp)\\\\s+((?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?))((\\\\()|\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.module.elixir\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.private.elixir\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.section.function.elixir\"\n            }\n          },\n          \"end\": \"(\\\\bdo:)|(\\\\bdo\\\\b)|(?=\\\\s+(defp|defmacrop|defguardp)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.keywords.elixir\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.module.elixir\"\n            }\n          },\n          \"name\": \"meta.function.private.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"begin\": \"\\\\s(\\\\\\\\\\\\\\\\)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.other.elixir\"\n                }\n              },\n              \"end\": \",|\\\\)|$\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\\\b\",\n              \"name\": \"keyword.control.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*~L\\\"\\\"\\\"\",\n          \"comment\": \"Leex Sigil\",\n          \"end\": \"\\\\s*\\\"\\\"\\\"\",\n          \"name\": \"sigil.leex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.elixir\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*~H\\\"\\\"\\\"\",\n          \"comment\": \"HEEx Sigil\",\n          \"end\": \"\\\\s*\\\"\\\"\\\"\",\n          \"name\": \"sigil.heex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.elixir\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"@(module|type)?doc (~[a-z])?\\\"\\\"\\\"\",\n          \"comment\": \"@doc with heredocs is treated as documentation\",\n          \"end\": \"\\\\s*\\\"\\\"\\\"\",\n          \"name\": \"comment.block.documentation.heredoc\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"@(module|type)?doc ~[A-Z]\\\"\\\"\\\"\",\n          \"comment\": \"@doc with heredocs is treated as documentation\",\n          \"end\": \"\\\\s*\\\"\\\"\\\"\",\n          \"name\": \"comment.block.documentation.heredoc\"\n        },\n        {\n          \"begin\": \"@(module|type)?doc (~[a-z])?'''\",\n          \"comment\": \"@doc with heredocs is treated as documentation\",\n          \"end\": \"\\\\s*'''\",\n          \"name\": \"comment.block.documentation.heredoc\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"@(module|type)?doc ~[A-Z]'''\",\n          \"comment\": \"@doc with heredocs is treated as documentation\",\n          \"end\": \"\\\\s*'''\",\n          \"name\": \"comment.block.documentation.heredoc\"\n        },\n        {\n          \"comment\": \"@doc false is treated as documentation\",\n          \"match\": \"@(module|type)?doc false\",\n          \"name\": \"comment.block.documentation.false\"\n        },\n        {\n          \"begin\": \"@(module|type)?doc \\\"\",\n          \"comment\": \"@doc with string is treated as documentation\",\n          \"end\": \"\\\"\",\n          \"name\": \"comment.block.documentation.string\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defnp?|defmacrop?|defguardp?|defdelegate|defexception|defoverridable|exit|after|rescue|catch|else|raise|reraise|throw|import|require|alias|use|quote|unquote|super|with)\\\\b(?![?!:])\",\n          \"name\": \"keyword.control.elixir\"\n        },\n        {\n          \"comment\": \" as above, just doesn't need a 'end' and does a logic operation\",\n          \"match\": \"(?<!\\\\.)\\\\b(and|not|or|when|xor|in)\\\\b\",\n          \"name\": \"keyword.operator.elixir\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n          \"name\": \"entity.name.type.class.elixir\"\n        },\n        {\n          \"match\": \"\\\\b(nil|true|false)\\\\b(?![?!])\",\n          \"name\": \"constant.language.elixir\"\n        },\n        {\n          \"match\": \"\\\\b(__(CALLER|ENV|MODULE|DIR|STACKTRACE)__)\\\\b(?![?!])\",\n          \"name\": \"variable.language.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.elixir\"\n            }\n          },\n          \"match\": \"(@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.module.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.elixir\"\n            }\n          },\n          \"match\": \"(&)\\\\d+\",\n          \"name\": \"variable.other.anonymous.elixir\"\n        },\n        {\n          \"match\": \"&(?![&])\",\n          \"name\": \"variable.other.anonymous.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.elixir\"\n            }\n          },\n          \"match\": \"\\\\^[a-z_]\\\\w*\",\n          \"name\": \"variable.other.capture.elixir\"\n        },\n        {\n          \"match\": \"\\\\b0x[0-9A-Fa-f](?>_?[0-9A-Fa-f])*\\\\b\",\n          \"name\": \"constant.numeric.hex.elixir\"\n        },\n        {\n          \"match\": \"\\\\b\\\\d(?>_?\\\\d)*(\\\\.(?![^[:space:][:digit:]])(?>_?\\\\d)+)([eE][-+]?\\\\d(?>_?\\\\d)*)?\\\\b\",\n          \"name\": \"constant.numeric.float.elixir\"\n        },\n        {\n          \"match\": \"\\\\b\\\\d(?>_?\\\\d)*\\\\b\",\n          \"name\": \"constant.numeric.integer.elixir\"\n        },\n        {\n          \"match\": \"\\\\b0b[01](?>_?[01])*\\\\b\",\n          \"name\": \"constant.numeric.binary.elixir\"\n        },\n        {\n          \"match\": \"\\\\b0o[0-7](?>_?[0-7])*\\\\b\",\n          \"name\": \"constant.numeric.octal.elixir\"\n        },\n        {\n          \"begin\": \":'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.constant.elixir\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"constant.other.symbol.single-quoted.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \":\\\"\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.constant.elixir\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"name\": \"constant.other.symbol.double-quoted.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?>''')\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"Single-quoted heredocs\",\n          \"end\": \"^\\\\s*'''\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.single.heredoc.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"single quoted string (allows for interpolation)\",\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.single.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?>\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"Double-quoted heredocs\",\n          \"end\": \"^\\\\s*\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.double.heredoc.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"double quoted string (allows for interpolation)\",\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.double.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z](?>\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"Double-quoted heredocs sigils\",\n          \"end\": \"^\\\\s*\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.heredoc.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\}[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\][a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]\\\\<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\>[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\)[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]([^\\\\w])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\1[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[A-Z](?>\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"Double-quoted heredocs sigils\",\n          \"end\": \"^\\\\s*\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.heredoc.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\}[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\][a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]\\\\<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\>[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\)[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]([^\\\\w])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\1[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.elixir\"\n            }\n          },\n          \"comment\": \"symbols\",\n          \"match\": \"(?<!:)(:)(?>[a-zA-Z_][\\\\w@]*(?>[?!]|=(?![>=]))?|\\\\<\\\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\\\-|\\\\|>|=>|=~|=|/|\\\\\\\\\\\\\\\\|\\\\*\\\\*?|\\\\.\\\\.?\\\\.?|\\\\.\\\\.//|>=?|<=?|&&?&?|\\\\+\\\\+?|\\\\-\\\\-?|\\\\|\\\\|?\\\\|?|\\\\!|@|\\\\%?\\\\{\\\\}|%|\\\\[\\\\]|\\\\^(\\\\^\\\\^)?)\",\n          \"name\": \"constant.other.symbol.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.elixir\"\n            }\n          },\n          \"comment\": \"symbols\",\n          \"match\": \"(?>[a-zA-Z_][\\\\w@]*(?>[?!])?)(:)(?!:)\",\n          \"name\": \"constant.other.keywords.elixir\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=##)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.elixir\"\n            }\n          },\n          \"end\": \"(?!#)\",\n          \"patterns\": [\n            {\n              \"begin\": \"##\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.elixir\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.section.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.elixir\"\n            }\n          },\n          \"end\": \"(?!#)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.elixir\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.number-sign.elixir\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b_([^_][\\\\w]+[?!]?)\",\n          \"name\": \"comment.unused.elixir\"\n        },\n        {\n          \"match\": \"\\\\b_\\\\b\",\n          \"name\": \"comment.wildcard.elixir\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\tmatches questionmark-letters.\\n\\n\\t\\t\\texamples (1st alternation = hex):\\n\\t\\t\\t?\\\\x1     ?\\\\x61\\n\\n\\t\\t\\texamples (2rd alternation = escaped):\\n\\t\\t\\t?\\\\n      ?\\\\b\\n\\n\\t\\t\\texamples (3rd alternation = normal):\\n\\t\\t\\t?a       ?A       ?0\\n\\t\\t\\t?*       ?\\\"       ?(\\n\\t\\t\\t?.       ?#\\n\\n\\t\\t\\tthe negative lookbehind prevents against matching\\n\\t\\t\\tp(42.tainted?)\\n\\t\\t\\t\",\n          \"match\": \"(?<!\\\\w)\\\\?(\\\\\\\\(x[0-9A-Fa-f]{1,2}(?![0-9A-Fa-f])\\\\b|[^xMC])|[^\\\\s\\\\\\\\])\",\n          \"name\": \"constant.numeric.elixir\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+|\\\\-\\\\-|<\\\\|>\",\n          \"name\": \"keyword.operator.concatenation.elixir\"\n        },\n        {\n          \"match\": \"\\\\|\\\\>|<~>|<>|<<<|>>>|~>>|<<~|~>|<~|<\\\\|>\",\n          \"name\": \"keyword.operator.sigils_1.elixir\"\n        },\n        {\n          \"match\": \"&&&|&&\",\n          \"name\": \"keyword.operator.sigils_2.elixir\"\n        },\n        {\n          \"match\": \"<\\\\-|\\\\\\\\\\\\\\\\\",\n          \"name\": \"keyword.operator.sigils_3.elixir\"\n        },\n        {\n          \"match\": \"===?|!==?|<=?|>=?\",\n          \"name\": \"keyword.operator.comparison.elixir\"\n        },\n        {\n          \"match\": \"(\\\\|\\\\|\\\\||&&&|\\\\^\\\\^\\\\^|<<<|>>>|~~~)\",\n          \"name\": \"keyword.operator.bitwise.elixir\"\n        },\n        {\n          \"match\": \"(?<=[ \\\\t])!+|\\\\bnot\\\\b|&&|\\\\band\\\\b|\\\\|\\\\||\\\\bor\\\\b|\\\\bxor\\\\b\",\n          \"name\": \"keyword.operator.logical.elixir\"\n        },\n        {\n          \"match\": \"(\\\\*|\\\\+|\\\\-|/)\",\n          \"name\": \"keyword.operator.arithmetic.elixir\"\n        },\n        {\n          \"match\": \"\\\\||\\\\+\\\\+|\\\\-\\\\-|\\\\*\\\\*|\\\\\\\\\\\\\\\\|\\\\<\\\\-|\\\\<\\\\>|\\\\<\\\\<|\\\\>\\\\>|\\\\:\\\\:|\\\\.\\\\.|//|\\\\|>|~|=>|&\",\n          \"name\": \"keyword.operator.other.elixir\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.elixir\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.other.elixir\"\n        },\n        {\n          \"match\": \"\\\\;\",\n          \"name\": \"punctuation.separator.statement.elixir\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.object.elixir\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.method.elixir\"\n        },\n        {\n          \"match\": \"\\\\{|\\\\}\",\n          \"name\": \"punctuation.section.scope.elixir\"\n        },\n        {\n          \"match\": \"\\\\[|\\\\]\",\n          \"name\": \"punctuation.section.array.elixir\"\n        },\n        {\n          \"match\": \"\\\\(|\\\\)\",\n          \"name\": \"punctuation.section.function.elixir\"\n        }\n      ]\n    },\n    \"escaped_char\": {\n      \"match\": \"\\\\\\\\(x[\\\\da-fA-F]{1,2}|.)\",\n      \"name\": \"constant.character.escaped.elixir\"\n    },\n    \"interpolated_elixir\": {\n      \"begin\": \"#\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.elixir\"\n        }\n      },\n      \"contentName\": \"source.elixir\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.elixir\"\n        }\n      },\n      \"name\": \"meta.embedded.line.elixir\",\n      \"patterns\": [\n        {\n          \"include\": \"#nest_curly_and_self\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"nest_curly_and_self\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.elixir\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.elixir\",\n  \"uuid\": \"D00C06B9-71B2-4FEB-A0E3-37237F579456\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/elm.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"elm\"],\n  \"name\": \"elm\",\n  \"scopeName\": \"source.elm\",\n  \"patterns\": [\n    {\n      \"include\": \"#import\"\n    },\n    {\n      \"include\": \"#module\"\n    },\n    {\n      \"include\": \"#debug\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"match\": \"\\\\b(_)\\\\b\",\n      \"name\": \"keyword.unused.elm\"\n    },\n    {\n      \"include\": \"#type-signature\"\n    },\n    {\n      \"include\": \"#type-declaration\"\n    },\n    {\n      \"include\": \"#type-alias-declaration\"\n    },\n    {\n      \"include\": \"#string-triple\"\n    },\n    {\n      \"include\": \"#string-quote\"\n    },\n    {\n      \"include\": \"#char\"\n    },\n    {\n      \"comment\": \"Floats are always decimal\",\n      \"match\": \"\\\\b([0-9]+\\\\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\\\b\",\n      \"name\": \"constant.numeric.float.elm\"\n    },\n    {\n      \"match\": \"\\\\b([0-9]+)\\\\b\",\n      \"name\": \"constant.numeric.elm\"\n    },\n    {\n      \"match\": \"\\\\b(0x[0-9a-fA-F]+)\\\\b\",\n      \"name\": \"constant.numeric.elm\"\n    },\n    {\n      \"include\": \"#glsl\"\n    },\n    {\n      \"include\": \"#record-prefix\"\n    },\n    {\n      \"include\": \"#module-prefix\"\n    },\n    {\n      \"include\": \"#constructor\"\n    },\n    {\n      \"name\": \"meta.record.field.update.elm\",\n      \"match\": \"(\\\\{)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\|)\\\\s+([a-z][a-zA-Z0-9_]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.elm\"\n        },\n        \"2\": {\n          \"name\": \"record.name.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.pipe.elm\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.record.field.elm\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.record.field.update.elm\",\n      \"match\": \"(\\\\|)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.pipe.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.record.field.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.elm\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.record.field.update.elm\",\n      \"match\": \"(\\\\{)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.elm\"\n        },\n        \"2\": {\n          \"name\": \"record.name.elm\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.record.field.elm\",\n      \"match\": \"(\\\\{)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.record.field.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.elm\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.record.field.elm\",\n      \"match\": \"(,)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.comma.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.record.field.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.elm\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\}|\\\\{)\",\n      \"name\": \"punctuation.bracket.elm\"\n    },\n    {\n      \"include\": \"#unit\"\n    },\n    {\n      \"include\": \"#comma\"\n    },\n    {\n      \"include\": \"#parens\"\n    },\n    {\n      \"match\": \"(->)\",\n      \"name\": \"keyword.operator.arrow.elm\"\n    },\n    {\n      \"include\": \"#infix_op\"\n    },\n    {\n      \"match\": \"(\\\\=|\\\\:|\\\\||\\\\\\\\)\",\n      \"name\": \"keyword.other.elm\"\n    },\n    {\n      \"match\": \"\\\\b(type|as|port|exposing|alias|infixl|infixr|infix)\\\\s+\",\n      \"name\": \"keyword.other.elm\"\n    },\n    {\n      \"match\": \"\\\\b(if|then|else|case|of|let|in)\\\\s+\",\n      \"name\": \"keyword.control.elm\"\n    },\n    {\n      \"include\": \"#record-accessor\"\n    },\n    {\n      \"include\": \"#top_level_value\"\n    },\n    {\n      \"include\": \"#value\"\n    },\n    {\n      \"include\": \"#period\"\n    },\n    {\n      \"include\": \"#square_brackets\"\n    }\n  ],\n  \"repository\": {\n    \"comma\": {\n      \"match\": \"(,)\",\n      \"name\": \"punctuation.separator.comma.elm\"\n    },\n    \"parens\": {\n      \"match\": \"(\\\\(|\\\\))\",\n      \"name\": \"punctuation.parens.elm\"\n    },\n    \"block_comment\": {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\{-(?!#)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.elm\"\n        }\n      },\n      \"end\": \"-\\\\}\",\n      \"name\": \"comment.block.elm\",\n      \"patterns\": [\n        {\n          \"include\": \"#block_comment\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.elm\"\n            }\n          },\n          \"begin\": \"--\",\n          \"end\": \"$\",\n          \"name\": \"comment.line.double-dash.elm\"\n        },\n        {\n          \"include\": \"#block_comment\"\n        }\n      ]\n    },\n    \"import\": {\n      \"name\": \"meta.import.elm\",\n      \"begin\": \"^\\\\b(import)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.elm\"\n        }\n      },\n      \"end\": \"\\\\n(?!\\\\s)\",\n      \"patterns\": [\n        {\n          \"match\": \"(as|exposing)\",\n          \"name\": \"keyword.control.elm\"\n        },\n        {\n          \"include\": \"#module_chunk\"\n        },\n        {\n          \"include\": \"#period\"\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"include\": \"#module-exports\"\n        }\n      ]\n    },\n    \"module\": {\n      \"begin\": \"^\\\\b((port |effect )?module)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.elm\"\n        }\n      },\n      \"end\": \"\\\\n(?!\\\\s)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.elm\"\n        }\n      },\n      \"name\": \"meta.declaration.module.elm\",\n      \"patterns\": [\n        {\n          \"include\": \"#module_chunk\"\n        },\n        {\n          \"include\": \"#period\"\n        },\n        {\n          \"match\": \"(exposing)\",\n          \"name\": \"keyword.other.elm\"\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"include\": \"#module-exports\"\n        }\n      ]\n    },\n    \"string-triple\": {\n      \"name\": \"string.quoted.triple.elm\",\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.elm\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.elm\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&]|x[0-9a-fA-F]{1,5})\",\n          \"name\": \"constant.character.escape.elm\"\n        },\n        {\n          \"match\": \"\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]\",\n          \"name\": \"constant.character.escape.control.elm\"\n        }\n      ]\n    },\n    \"string-quote\": {\n      \"name\": \"string.quoted.double.elm\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.elm\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.elm\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&]|x[0-9a-fA-F]{1,5})\",\n          \"name\": \"constant.character.escape.elm\"\n        },\n        {\n          \"match\": \"\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]\",\n          \"name\": \"constant.character.escape.control.elm\"\n        }\n      ]\n    },\n    \"char\": {\n      \"name\": \"string.quoted.single.elm\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.char.begin.elm\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.char.end.elm\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&]|x[0-9a-fA-F]{1,5})\",\n          \"name\": \"constant.character.escape.elm\"\n        },\n        {\n          \"match\": \"\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]\",\n          \"name\": \"constant.character.escape.control.elm\"\n        }\n      ]\n    },\n    \"debug\": {\n      \"match\": \"\\\\b(Debug)\\\\b\",\n      \"name\": \"invalid.illegal.debug.elm\"\n    },\n    \"module-exports\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parens.module-export.elm\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parens.module-export.elm\"\n        }\n      },\n      \"name\": \"meta.declaration.exports.elm\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z_'0-9]*\",\n          \"name\": \"entity.name.function.elm\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][A-Za-z_'0-9]*\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.comma.elm\"\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"match\": \"\\\\(\\\\.\\\\.\\\\)\",\n          \"name\": \"punctuation.parens.ellipses.elm\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\",\n          \"name\": \"punctuation.parens.ellipses.elm\"\n        },\n        {\n          \"include\": \"#infix_op\"\n        },\n        {\n          \"comment\": \"So named because I don't know what to call this.\",\n          \"match\": \"\\\\(.*?\\\\)\",\n          \"name\": \"meta.other.unknown.elm\"\n        }\n      ]\n    },\n    \"module_chunk\": {\n      \"match\": \"[A-Z][a-zA-Z0-9_]*\",\n      \"name\": \"support.module.elm\"\n    },\n    \"period\": {\n      \"match\": \"[.]\",\n      \"name\": \"keyword.other.period.elm\"\n    },\n    \"square_brackets\": {\n      \"match\": \"[\\\\[\\\\]]\",\n      \"name\": \"punctuation.definition.list.elm\"\n    },\n    \"record-prefix\": {\n      \"match\": \"([a-z][a-zA-Z0-9_]*)(\\\\.)([a-z][a-zA-Z0-9_]*)\",\n      \"name\": \"record.accessor.elm\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"record.name.elm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.period.elm\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.record.field.accessor.elm\"\n        }\n      }\n    },\n    \"module-prefix\": {\n      \"match\": \"([A-Z][a-zA-Z0-9_]*)(\\\\.)\",\n      \"name\": \"meta.module.name.elm\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.module.elm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.period.elm\"\n        }\n      }\n    },\n    \"constructor\": {\n      \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n      \"name\": \"constant.type-constructor.elm\"\n    },\n    \"value\": {\n      \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n      \"name\": \"meta.value.elm\"\n    },\n    \"unit\": {\n      \"match\": \"\\\\(\\\\)\",\n      \"name\": \"constant.unit.elm\"\n    },\n    \"top_level_value\": {\n      \"match\": \"^[a-z][a-zA-Z0-9_]*\\\\b\",\n      \"name\": \"entity.name.function.top_level.elm\"\n    },\n    \"record-accessor\": {\n      \"match\": \"(\\\\.)([a-z][a-zA-Z0-9_]*)\",\n      \"name\": \"meta.record.accessor\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.period.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.record.field.accessor.elm\"\n        }\n      }\n    },\n    \"infix_op\": {\n      \"match\": \"(</>|<\\\\?>|<\\\\||<=|\\\\|\\\\||&&|>=|\\\\|>|\\\\|=|\\\\|\\\\.|\\\\+\\\\+|::|/=|==|//|>>|<<|<|>|\\\\^|\\\\+|-|/|\\\\*)\",\n      \"name\": \"keyword.operator.elm\"\n    },\n    \"type-declaration\": {\n      \"begin\": \"^(type\\\\s+)([A-Z][a-zA-Z0-9_']*)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.type.elm\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.elm\"\n        }\n      },\n      \"end\": \"^(?=\\\\S)\",\n      \"name\": \"meta.function.type-declaration.elm\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.record.field.elm\",\n          \"match\": \"^\\\\s*([A-Z][a-zA-Z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.type-constructor.elm\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"name\": \"meta.record.field.elm\",\n          \"match\": \"(\\\\=|\\\\|)\\\\s+([A-Z][a-zA-Z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.elm\"\n            },\n            \"2\": {\n              \"name\": \"constant.type-constructor.elm\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\=\",\n          \"name\": \"keyword.operator.assignment.elm\"\n        },\n        {\n          \"match\": \"\\\\-\\\\>\",\n          \"name\": \"keyword.operator.arrow.elm\"\n        },\n        {\n          \"include\": \"#module-prefix\"\n        },\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"variable.type.elm\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#type-record\"\n        }\n      ]\n    },\n    \"type-alias-declaration\": {\n      \"begin\": \"^(type\\\\s+)(alias\\\\s+)([A-Z][a-zA-Z0-9_']*)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.type.elm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.type-alias.elm\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.elm\"\n        }\n      },\n      \"end\": \"^(?=\\\\S)\",\n      \"name\": \"meta.function.type-declaration.elm\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\n\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"match\": \"\\\\=\",\n          \"name\": \"keyword.operator.assignment.elm\"\n        },\n        {\n          \"include\": \"#module-prefix\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"variable.type.elm\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#type-record\"\n        }\n      ]\n    },\n    \"type-record\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.braces.begin\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.braces.end\"\n        }\n      },\n      \"name\": \"meta.function.type-record.elm\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"match\": \"->\",\n          \"name\": \"keyword.operator.arrow.elm\"\n        },\n        {\n          \"name\": \"meta.record.field.elm\",\n          \"match\": \"([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.record.field.elm\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.elm\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\,\",\n          \"name\": \"punctuation.separator.comma.elm\"\n        },\n        {\n          \"include\": \"#module-prefix\"\n        },\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"variable.type.elm\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#type-record\"\n        }\n      ]\n    },\n    \"type-signature\": {\n      \"begin\": \"^(port\\\\s+)?([a-z_][a-zA-Z0-9_']*)\\\\s+(\\\\:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.port.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.colon.elm\"\n        }\n      },\n      \"end\": \"((^(?=[a-z]))|^$)\",\n      \"name\": \"meta.function.type-declaration.elm\",\n      \"patterns\": [\n        {\n          \"include\": \"#type-signature-chunk\"\n        }\n      ]\n    },\n    \"type-signature-chunk\": {\n      \"patterns\": [\n        {\n          \"match\": \"->\",\n          \"name\": \"keyword.operator.arrow.elm\"\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"include\": \"#module-prefix\"\n        },\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"variable.type.elm\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"match\": \"\\\\(\\\\)\",\n          \"name\": \"constant.unit.elm\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#type-record\"\n        }\n      ]\n    },\n    \"glsl\": {\n      \"begin\": \"(\\\\[)(glsl)(\\\\|)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.glsl.bracket.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.glsl.name.elm\"\n        },\n        \"3\": {\n          \"name\": \"entity.glsl.bracket.elm\"\n        }\n      },\n      \"end\": \"(\\\\|\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"entity.glsl.bracket.elm\"\n        }\n      },\n      \"name\": \"meta.embedded.block.glsl\",\n      \"patterns\": [\n        {\n          \"include\": \"source.glsl\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/erlang.tmLanguage.json",
    "content": "{\n  \"comment\": \"The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace).  Also, the function/module/record/macro names must be given unquoted.  -- desp\",\n  \"fileTypes\": [\"erl\", \"escript\", \"hrl\", \"xrl\", \"yrl\"],\n  \"keyEquivalent\": \"^~E\",\n  \"name\": \"erlang\",\n  \"patterns\": [\n    {\n      \"include\": \"#module-directive\"\n    },\n    {\n      \"include\": \"#import-export-directive\"\n    },\n    {\n      \"include\": \"#behaviour-directive\"\n    },\n    {\n      \"include\": \"#record-directive\"\n    },\n    {\n      \"include\": \"#define-directive\"\n    },\n    {\n      \"include\": \"#macro-directive\"\n    },\n    {\n      \"include\": \"#directive\"\n    },\n    {\n      \"include\": \"#function\"\n    },\n    {\n      \"include\": \"#everything-else\"\n    }\n  ],\n  \"repository\": {\n    \"atom\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.symbol.begin.erlang\"\n            }\n          },\n          \"end\": \"(')\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.symbol.end.erlang\"\n            }\n          },\n          \"name\": \"constant.other.symbol.quoted.single.erlang\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.escape.erlang\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.escape.erlang\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)([bdefnrstv\\\\\\\\'\\\"]|(\\\\^)[@-_a-z]|[0-7]{1,3}|x[\\\\da-fA-F]{2})\",\n              \"name\": \"constant.other.symbol.escape.erlang\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\^?.?\",\n              \"name\": \"invalid.illegal.atom.erlang\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[a-z][a-zA-Z\\\\d@_]*+\",\n          \"name\": \"constant.other.symbol.unquoted.erlang\"\n        }\n      ]\n    },\n    \"behaviour-directive\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.directive.begin.erlang\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.directive.behaviour.erlang\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.erlang\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.behaviour.definition.erlang\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.parameters.end.erlang\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.directive.end.erlang\"\n        }\n      },\n      \"match\": \"^\\\\s*+(-)\\\\s*+(behaviour)\\\\s*+(\\\\()\\\\s*+([a-z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n      \"name\": \"meta.directive.behaviour.erlang\"\n    },\n    \"binary\": {\n      \"begin\": \"(<<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.binary.begin.erlang\"\n        }\n      },\n      \"end\": \"(>>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.binary.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.binary.erlang\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.binary.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.value-size.erlang\"\n            }\n          },\n          \"match\": \"(,)|(:)\"\n        },\n        {\n          \"include\": \"#internal-type-specifiers\"\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"character\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character.erlang\"\n            },\n            \"2\": {\n              \"name\": \"constant.character.escape.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.escape.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.escape.erlang\"\n            }\n          },\n          \"match\": \"(\\\\$)((\\\\\\\\)([bdefnrstv\\\\\\\\'\\\"]|(\\\\^)[@-_a-z]|[0-7]{1,3}|x[\\\\da-fA-F]{2}))\",\n          \"name\": \"constant.character.erlang\"\n        },\n        {\n          \"match\": \"\\\\$\\\\\\\\\\\\^?.?\",\n          \"name\": \"invalid.illegal.character.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character.erlang\"\n            }\n          },\n          \"match\": \"(\\\\$)[ \\\\S]\",\n          \"name\": \"constant.character.erlang\"\n        },\n        {\n          \"match\": \"\\\\$.?\",\n          \"name\": \"invalid.illegal.character.erlang\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"begin\": \"(^[ \\\\t]+)?(?=%)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.erlang\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"%\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.erlang\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.percentage.erlang\"\n        }\n      ]\n    },\n    \"define-directive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*+(-)\\\\s*+(define)\\\\s*+(\\\\()\\\\s*+([a-zA-Z\\\\d@_]++)\\\\s*+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.define.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.macro.definition.erlang\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.define.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=^\\\\s*+-\\\\s*+define\\\\s*+\\\\(\\\\s*+[a-zA-Z\\\\d@_]++\\\\s*+\\\\()\",\n          \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.define.erlang\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*+(-)\\\\s*+(define)\\\\s*+(\\\\()\\\\s*+([a-zA-Z\\\\d@_]++)\\\\s*+(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.directive.begin.erlang\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.directive.define.erlang\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.parameters.begin.erlang\"\n                },\n                \"4\": {\n                  \"name\": \"entity.name.function.macro.definition.erlang\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.parameters.begin.erlang\"\n                }\n              },\n              \"end\": \"(\\\\))\\\\s*(,)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.erlang\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.parameters.erlang\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.erlang\"\n                },\n                {\n                  \"include\": \"#everything-else\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\|\\\\||\\\\||:|;|,|\\\\.|->\",\n              \"name\": \"punctuation.separator.define.erlang\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        }\n      ]\n    },\n    \"directive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*+(-)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\(?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"end\": \"(\\\\)?)\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+(-)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\.)\",\n          \"name\": \"meta.directive.erlang\"\n        }\n      ]\n    },\n    \"everything-else\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#record-usage\"\n        },\n        {\n          \"include\": \"#macro-usage\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#keyword\"\n        },\n        {\n          \"include\": \"#textual-operator\"\n        },\n        {\n          \"include\": \"#language-constant\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#tuple\"\n        },\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#binary\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#character\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#atom\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#symbolic-operator\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(if)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.if.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(case)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.case.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(receive)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.receive.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.receive.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.fun.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.separator.module-function.erlang\"\n            },\n            \"8\": {\n              \"name\": \"entity.name.function.erlang\"\n            },\n            \"9\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"10\": {\n              \"name\": \"punctuation.separator.function-arity.erlang\"\n            }\n          },\n          \"comment\": \"Implicit function expression with optional module qualifier when both module and function can be atom or variable\",\n          \"match\": \"\\\\b(fun)\\\\s+((([a-z][a-zA-Z\\\\d@_]*+)|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*+(:)\\\\s*+)?(([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*(/)\",\n          \"name\": \"meta.expression.fun.implicit.erlang\"\n        },\n        {\n          \"begin\": \"\\\\b(fun)\\\\s+(([a-z][a-zA-Z\\\\d@_]*+)|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*+(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.fun.erlang\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.module-function.erlang\"\n            }\n          },\n          \"comment\": \"Implicit function expression with module qualifier when module can be atom or variable and function can by anything\",\n          \"end\": \"(/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.function-arity.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.fun.implicit.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(fun)\\\\s+(?!\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.fun.erlang\"\n            }\n          },\n          \"comment\": \"Implicit function expression when both module and function can by anything\",\n          \"end\": \"(/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.function-arity.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.fun.implicit.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(fun)\\\\s*+(\\\\()(?=(\\\\s*+\\\\())\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"comment\": \"Function type in type specification\",\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(fun)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.fun.erlang\"\n            }\n          },\n          \"comment\": \"Explicit function expression\",\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.fun.erlang\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=\\\\()\",\n              \"end\": \"(;)|(?=\\\\bend\\\\b)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.clauses.erlang\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#internal-function-parts\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(try)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.try.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.try.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(begin)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.begin.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.begin.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function\": {\n      \"begin\": \"^\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.definition.erlang\"\n        }\n      },\n      \"end\": \"(\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.function.erlang\"\n        }\n      },\n      \"name\": \"meta.function.erlang\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(?=\\\\()\"\n        },\n        {\n          \"begin\": \"(?=\\\\()\",\n          \"end\": \"(;)|(?=\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.clauses.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthesized-expression\"\n            },\n            {\n              \"include\": \"#internal-function-parts\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"(?=([a-z][a-zA-Z\\\\d@_]*+|'[^']*+'|_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\(|:\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+'|_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+)\\\\s*+\\\\())\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.erlang\"\n        }\n      },\n      \"name\": \"meta.function-call.erlang\",\n      \"patterns\": [\n        {\n          \"begin\": \"((erlang)\\\\s*+(:)\\\\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\\\\s*+(\\\\()\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.module-function.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.guard.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.parameters.erlang\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*+(:)\\\\s*+)?(([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*+(\\\\()\",\n          \"beginCaptures\": {\n            \"3\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.module-function.erlang\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.function.erlang\"\n            },\n            \"8\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.parameters.erlang\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-export-directive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*+(-)\\\\s*+(import)\\\\s*+(\\\\()\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(,)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.import.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.parameters.erlang\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.import.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-function-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*+(-)\\\\s*+(export)\\\\s*+(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.export.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.export.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-function-list\"\n            }\n          ]\n        }\n      ]\n    },\n    \"internal-expression-punctuation\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.clause-head-body.erlang\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.clauses.erlang\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.expressions.erlang\"\n        }\n      },\n      \"match\": \"(->)|(;)|(,)\"\n    },\n    \"internal-function-list\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.list.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.list.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.list.function.erlang\",\n      \"patterns\": [\n        {\n          \"begin\": \"([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.function-arity.erlang\"\n            }\n          },\n          \"end\": \"(,)|(?=\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.list.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"internal-function-parts\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\()\",\n          \"end\": \"(->)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.clause-head-body.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.begin.erlang\"\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.erlang\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.erlang\"\n                },\n                {\n                  \"include\": \"#everything-else\"\n                }\n              ]\n            },\n            {\n              \"match\": \",|;\",\n              \"name\": \"punctuation.separator.guards.erlang\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.expressions.erlang\"\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"internal-record-body\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.class.record.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.class.record.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.record.erlang\",\n      \"patterns\": [\n        {\n          \"begin\": \"(([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')|(_))\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"variable.other.field.erlang\"\n            },\n            \"3\": {\n              \"name\": \"variable.language.omitted.field.erlang\"\n            }\n          },\n          \"end\": \"(,)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.class.record.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"internal-type-specifiers\": {\n      \"begin\": \"(/)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.value-type.erlang\"\n        }\n      },\n      \"end\": \"(?=,|:|>>)\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.erlang\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.signedness.erlang\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.endianness.erlang\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.unit.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.unit-specifiers.erlang\"\n            },\n            \"6\": {\n              \"name\": \"constant.numeric.integer.decimal.erlang\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.separator.type-specifiers.erlang\"\n            }\n          },\n          \"match\": \"(integer|float|binary|bytes|bitstring|bits|utf8|utf16|utf32)|(signed|unsigned)|(big|little|native)|(unit)(:)(\\\\d++)|(-)\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"match\": \"\\\\b(after|begin|case|catch|cond|end|fun|if|let|of|try|receive|when)\\\\b\",\n      \"name\": \"keyword.control.erlang\"\n    },\n    \"language-constant\": {\n      \"match\": \"\\\\b(false|true|undefined)\\\\b\",\n      \"name\": \"constant.language\"\n    },\n    \"list\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.list.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.list.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.list.erlang\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\||\\\\|\\\\||,\",\n          \"name\": \"punctuation.separator.list.erlang\"\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"macro-directive\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.ifdef.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.macro.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+(-)\\\\s*+(ifdef)\\\\s*+(\\\\()\\\\s*+([a-zA-z\\\\d@_]++)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n          \"name\": \"meta.directive.ifdef.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.ifndef.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.macro.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+(-)\\\\s*+(ifndef)\\\\s*+(\\\\()\\\\s*+([a-zA-z\\\\d@_]++)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n          \"name\": \"meta.directive.ifndef.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.undef.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.macro.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+(-)\\\\s*+(undef)\\\\s*+(\\\\()\\\\s*+([a-zA-z\\\\d@_]++)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n          \"name\": \"meta.directive.undef.erlang\"\n        }\n      ]\n    },\n    \"macro-usage\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.macro.erlang\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.macro.erlang\"\n        }\n      },\n      \"match\": \"(\\\\?\\\\??)\\\\s*+([a-zA-Z\\\\d@_]++)\",\n      \"name\": \"meta.macro-usage.erlang\"\n    },\n    \"module-directive\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.directive.begin.erlang\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.directive.module.erlang\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.erlang\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.module.definition.erlang\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.parameters.end.erlang\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.directive.end.erlang\"\n        }\n      },\n      \"match\": \"^\\\\s*+(-)\\\\s*+(module)\\\\s*+(\\\\()\\\\s*+([a-z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n      \"name\": \"meta.directive.module.erlang\"\n    },\n    \"number\": {\n      \"begin\": \"(?=\\\\d)\",\n      \"end\": \"(?!\\\\d)\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.integer-float.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.float-exponent.erlang\"\n            }\n          },\n          \"match\": \"\\\\d++(\\\\.)\\\\d++([eE][\\\\+\\\\-]?\\\\d++)?\",\n          \"name\": \"constant.numeric.float.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"2(#)([0-1]++_)*[0-1]++\",\n          \"name\": \"constant.numeric.integer.binary.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"3(#)([0-2]++_)*[0-2]++\",\n          \"name\": \"constant.numeric.integer.base-3.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"4(#)([0-3]++_)*[0-3]++\",\n          \"name\": \"constant.numeric.integer.base-4.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"5(#)([0-4]++_)*[0-4]++\",\n          \"name\": \"constant.numeric.integer.base-5.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"6(#)([0-5]++_)*[0-5]++\",\n          \"name\": \"constant.numeric.integer.base-6.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"7(#)([0-6]++_)*[0-6]++\",\n          \"name\": \"constant.numeric.integer.base-7.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"8(#)([0-7]++_)*[0-7]++\",\n          \"name\": \"constant.numeric.integer.octal.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"9(#)([0-8]++_)*[0-8]++\",\n          \"name\": \"constant.numeric.integer.base-9.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"10(#)(\\\\d++_)*\\\\d++\",\n          \"name\": \"constant.numeric.integer.decimal.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"11(#)([\\\\daA]++_)*[\\\\daA]++\",\n          \"name\": \"constant.numeric.integer.base-11.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"12(#)([\\\\da-bA-B]++_)*[\\\\da-bA-B]++\",\n          \"name\": \"constant.numeric.integer.base-12.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"13(#)([\\\\da-cA-C]++_)*[\\\\da-cA-C]++\",\n          \"name\": \"constant.numeric.integer.base-13.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"14(#)([\\\\da-dA-D]++_)*[\\\\da-dA-D]++\",\n          \"name\": \"constant.numeric.integer.base-14.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"15(#)([\\\\da-eA-E]++_)*[\\\\da-eA-E]++\",\n          \"name\": \"constant.numeric.integer.base-15.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"16(#)([\\\\da-fA-F]++_)*[\\\\da-fA-F]++\",\n          \"name\": \"constant.numeric.integer.hexadecimal.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"17(#)([\\\\da-gA-G]++_)*[\\\\da-gA-G]++\",\n          \"name\": \"constant.numeric.integer.base-17.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"18(#)([\\\\da-hA-H]++_)*[\\\\da-hA-H]++\",\n          \"name\": \"constant.numeric.integer.base-18.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"19(#)([\\\\da-iA-I]++_)*[\\\\da-iA-I]++\",\n          \"name\": \"constant.numeric.integer.base-19.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"20(#)([\\\\da-jA-J]++_)*[\\\\da-jA-J]++\",\n          \"name\": \"constant.numeric.integer.base-20.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"21(#)([\\\\da-kA-K]++_)*[\\\\da-kA-K]++\",\n          \"name\": \"constant.numeric.integer.base-21.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"22(#)([\\\\da-lA-L]++_)*[\\\\da-lA-L]++\",\n          \"name\": \"constant.numeric.integer.base-22.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"23(#)([\\\\da-mA-M]++_)*[\\\\da-mA-M]++\",\n          \"name\": \"constant.numeric.integer.base-23.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"24(#)([\\\\da-nA-N]++_)*[\\\\da-nA-N]++\",\n          \"name\": \"constant.numeric.integer.base-24.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"25(#)([\\\\da-oA-O]++_)*[\\\\da-oA-O]++\",\n          \"name\": \"constant.numeric.integer.base-25.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"26(#)([\\\\da-pA-P]++_)*[\\\\da-pA-P]++\",\n          \"name\": \"constant.numeric.integer.base-26.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"27(#)([\\\\da-qA-Q]++_)*[\\\\da-qA-Q]++\",\n          \"name\": \"constant.numeric.integer.base-27.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"28(#)([\\\\da-rA-R]++_)*[\\\\da-rA-R]++\",\n          \"name\": \"constant.numeric.integer.base-28.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"29(#)([\\\\da-sA-S]++_)*[\\\\da-sA-S]++\",\n          \"name\": \"constant.numeric.integer.base-29.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"30(#)([\\\\da-tA-T]++_)*[\\\\da-tA-T]++\",\n          \"name\": \"constant.numeric.integer.base-30.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"31(#)([\\\\da-uA-U]++_)*[\\\\da-uA-U]++\",\n          \"name\": \"constant.numeric.integer.base-31.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"32(#)([\\\\da-vA-V]++_)*[\\\\da-vA-V]++\",\n          \"name\": \"constant.numeric.integer.base-32.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"33(#)([\\\\da-wA-W]++_)*[\\\\da-wA-W]++\",\n          \"name\": \"constant.numeric.integer.base-33.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"34(#)([\\\\da-xA-X]++_)*[\\\\da-xA-X]++\",\n          \"name\": \"constant.numeric.integer.base-34.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"35(#)([\\\\da-yA-Y]++_)*[\\\\da-yA-Y]++\",\n          \"name\": \"constant.numeric.integer.base-35.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"36(#)([\\\\da-zA-Z]++_)*[\\\\da-zA-Z]++\",\n          \"name\": \"constant.numeric.integer.base-36.erlang\"\n        },\n        {\n          \"match\": \"\\\\d++#([\\\\da-zA-Z]++_)*[\\\\da-zA-Z]++\",\n          \"name\": \"invalid.illegal.integer.erlang\"\n        },\n        {\n          \"match\": \"(\\\\d++_)*\\\\d++\",\n          \"name\": \"constant.numeric.integer.decimal.erlang\"\n        }\n      ]\n    },\n    \"parenthesized-expression\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.end.erlang\"\n        }\n      },\n      \"name\": \"meta.expression.parenthesized\",\n      \"patterns\": [\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"record-directive\": {\n      \"begin\": \"^\\\\s*+(-)\\\\s*+(record)\\\\s*+(\\\\()\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(,)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.directive.begin.erlang\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.directive.import.erlang\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.erlang\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.record.definition.erlang\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.parameters.erlang\"\n        }\n      },\n      \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.erlang\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.directive.end.erlang\"\n        }\n      },\n      \"name\": \"meta.directive.record.erlang\",\n      \"patterns\": [\n        {\n          \"include\": \"#internal-record-body\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"record-usage\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.record.erlang\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.record.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.record-field.erlang\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.field.erlang\"\n            }\n          },\n          \"match\": \"(#)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(\\\\.)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\",\n          \"name\": \"meta.record-usage.erlang\"\n        },\n        {\n          \"begin\": \"(#)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.record.erlang\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.record.erlang\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"name\": \"meta.record-usage.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-record-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\")\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.erlang\"\n        }\n      },\n      \"name\": \"string.quoted.double.erlang\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.escape.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.escape.erlang\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)([bdefnrstv\\\\\\\\'\\\"]|(\\\\^)[@-_a-z]|[0-7]{1,3}|x[\\\\da-fA-F]{2})\",\n          \"name\": \"constant.character.escape.erlang\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\^?.?\",\n          \"name\": \"invalid.illegal.string.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.placeholder.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"10\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"12\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            }\n          },\n          \"match\": \"(~)((\\\\-)?\\\\d++|(\\\\*))?((\\\\.)(\\\\d++|(\\\\*)))?((\\\\.)((\\\\*)|.))?[~cfegswpWPBX#bx\\\\+ni]\",\n          \"name\": \"constant.other.placeholder.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.placeholder.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            }\n          },\n          \"match\": \"(~)(\\\\*)?(\\\\d++)?[~du\\\\-#fsacl]\",\n          \"name\": \"constant.other.placeholder.erlang\"\n        },\n        {\n          \"match\": \"~[^\\\"]?\",\n          \"name\": \"invalid.illegal.string.erlang\"\n        }\n      ]\n    },\n    \"symbolic-operator\": {\n      \"match\": \"\\\\+\\\\+|\\\\+|--|-|\\\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::\",\n      \"name\": \"keyword.operator.symbolic.erlang\"\n    },\n    \"textual-operator\": {\n      \"match\": \"\\\\b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\\\b\",\n      \"name\": \"keyword.operator.textual.erlang\"\n    },\n    \"tuple\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tuple.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tuple.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.tuple.erlang\",\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.tuple.erlang\"\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.erlang\"\n        },\n        \"2\": {\n          \"name\": \"variable.language.omitted.erlang\"\n        }\n      },\n      \"match\": \"(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+)|(_)\"\n    }\n  },\n  \"scopeName\": \"source.erlang\",\n  \"uuid\": \"58EA597D-5158-4BF7-9FB2-B05135D1E166\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/etc.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"etc\",\n  \"patterns\": [\n    {\n      \"include\": \"#comma\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#esc\"\n    },\n    {\n      \"include\": \"#float\"\n    },\n    {\n      \"include\": \"#int\"\n    },\n    {\n      \"include\": \"#str\"\n    },\n    {\n      \"include\": \"#colon\"\n    },\n    {\n      \"include\": \"#eql\"\n    },\n    {\n      \"include\": \"#dot\"\n    }\n  ],\n  \"repository\": {\n    \"base64\": {\n      \"name\": \"constant.numeric.base64\",\n      \"match\": \"[A-Za-z0-9+/=]{4,}\"\n    },\n    \"comma\": {\n      \"name\": \"punctuation.separator.delimiter.comma\",\n      \"match\": \",\"\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#commentHash\"\n        }\n      ]\n    },\n    \"commentHash\": {\n      \"name\": \"comment.line.number-sign\",\n      \"begin\": \"#\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment\"\n        }\n      }\n    },\n    \"commentSemi\": {\n      \"name\": \"comment.line.semicolon\",\n      \"begin\": \";+\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment\"\n        }\n      }\n    },\n    \"commentSlash\": {\n      \"name\": \"comment.line.double-slash\",\n      \"begin\": \"//\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment\"\n        }\n      }\n    },\n    \"bareword\": {\n      \"name\": \"string.unquoted.bareword\",\n      \"match\": \"[^\\\"\\\\s][\\\\S]*\"\n    },\n    \"bool\": {\n      \"name\": \"constant.logical.bool.boolean.${1:/downcase}\",\n      \"match\": \"\\\\b(true|false|TRUE|FALSE)\\\\b\"\n    },\n    \"bracket\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\{\",\n          \"name\": \"punctuation.definition.bracket.curly.brace.begin\"\n        },\n        {\n          \"match\": \"\\\\}\",\n          \"name\": \"punctuation.definition.bracket.curly.brace.end\"\n        },\n        {\n          \"match\": \"\\\\[\",\n          \"name\": \"punctuation.definition.bracket.square.begin\"\n        },\n        {\n          \"match\": \"\\\\]\",\n          \"name\": \"punctuation.definition.bracket.square.end\"\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.definition.bracket.round.parenthesis.begin\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"punctuation.definition.bracket.round.parenthesis.end\"\n        },\n        {\n          \"match\": \"<\",\n          \"name\": \"punctuation.definition.bracket.angle.ascii.begin\"\n        },\n        {\n          \"match\": \">\",\n          \"name\": \"punctuation.definition.bracket.angle.ascii.end\"\n        },\n        {\n          \"match\": \"⟨\",\n          \"name\": \"punctuation.definition.bracket.angle.unicode.begin\"\n        },\n        {\n          \"match\": \"⟩\",\n          \"name\": \"punctuation.definition.bracket.angle.unicode.end\"\n        }\n      ]\n    },\n    \"colon\": {\n      \"name\": \"punctuation.delimiter.separator.colon\",\n      \"match\": \":\"\n    },\n    \"dash\": {\n      \"name\": \"punctuation.delimiter.separator.dash.hyphen\",\n      \"match\": \"-\"\n    },\n    \"dots\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ellipsis\"\n        },\n        {\n          \"include\": \"#dotPair\"\n        },\n        {\n          \"include\": \"#dot\"\n        }\n      ]\n    },\n    \"dot\": {\n      \"name\": \"punctuation.delimiter.separator.property.period.dot\",\n      \"match\": \"\\\\.\"\n    },\n    \"dotPair\": {\n      \"name\": \"keyword.operator.punctuation.dots.splat.range.spread.rest\",\n      \"match\": \"\\\\.\\\\.|‥\"\n    },\n    \"ellipsis\": {\n      \"name\": \"keyword.operator.punctuation.ellipsis.splat.range.spread.rest\",\n      \"match\": \"\\\\.{3}|…\"\n    },\n    \"dotTrail\": {\n      \"name\": \"punctuation.delimiter.separator.dotted.border.leader.dots\",\n      \"match\": \"\\\\.{4,}\"\n    },\n    \"email\": {\n      \"patterns\": [\n        {\n          \"include\": \"#emailBracketed\"\n        },\n        {\n          \"include\": \"#emailQuoted\"\n        },\n        {\n          \"include\": \"#emailUnquoted\"\n        }\n      ]\n    },\n    \"emailBracketed\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.email-address.bracketed.ascii.angle-brackets\",\n          \"match\": \"(<)\\\\s*([^>@\\\\s]+@[^>@\\\\s]+)\\\\s*(>)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"name\": \"meta.email-address.bracketed.unicode.angle-brackets\",\n          \"match\": \"(⟨)\\\\s*([^⟩@\\\\s]+@[^⟩@\\\\s]+)\\\\s*(⟩)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"name\": \"meta.email-address.bracketed.guillemots\",\n          \"match\": \"(«)\\\\s*([^»@\\\\s]+@[^»@\\\\s]+)\\\\s*(»)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"name\": \"meta.email-address.bracketed.round-brackets\",\n          \"match\": \"(\\\\()\\\\s*([^\\\\)@\\\\s]+@[^\\\\)@\\\\s]+)\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"name\": \"meta.email-address.bracketed.curly-brackets\",\n          \"match\": \"({)\\\\s*([^}@\\\\s]+@[^}@\\\\s]+)\\\\s*(})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"name\": \"meta.email-address.bracketed.square-brackets\",\n          \"match\": \"(\\\\[)\\\\s*([^\\\\]@\\\\s]+@[^\\\\]@\\\\s]+)\\\\s*(\\\\])\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#bracket\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"emailQuoted\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.email-address.quoted.ascii.double-quotes\",\n          \"match\": \"(\\\")\\\\s*([^\\\"@\\\\s]+@[^\\\"@\\\\s]+)\\\\s*(\\\")\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.email-address\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.email-address\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.email-address.quoted.unicode.double-quotes\",\n          \"match\": \"(“)\\\\s*([^”@\\\\s]+@[^”@\\\\s]+)\\\\s*(”)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.email-address\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.email-address\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.email-address.quoted.unicode.single-quotes\",\n          \"match\": \"(‘)\\\\s*([^’@\\\\s]+@[^’@\\\\s]+)\\\\s*(’)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.email-address\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.email-address\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.email-address.quoted.backticks\",\n          \"match\": \"(`)\\\\s*([^`@\\\\s]+@[^`@\\\\s]+)\\\\s*(`)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.template.backticks\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.email-address\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.email-address\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.email-address.quoted.single-quotes\",\n          \"match\": \"(`|')\\\\s*([^'@\\\\s]+@[^'@\\\\s]+)\\\\s*(')\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.email-address\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#emailInnards\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.email-address\"\n            }\n          }\n        }\n      ]\n    },\n    \"emailUnquoted\": {\n      \"name\": \"meta.email-address.unquoted\",\n      \"match\": \"(?x)\\n((?!\\\\.) (?:[^\\\\[\\\\(<⟨«\\\"'\\\\s@.]|\\\\.(?!\\\\.))++ @\\n([^\\\\[\\\\(<⟨«\\\"'\\\\s@.]+?\\\\.(?=[^\\\\.\\\\s])(?:[^\\\\[\\\\(<⟨«\\\"'\\\\s@.]|\\\\.(?!\\\\.))++))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.unquoted.email-address\",\n          \"patterns\": [\n            {\n              \"include\": \"#emailInnards\"\n            }\n          ]\n        }\n      }\n    },\n    \"emailInnards\": {\n      \"name\": \"constant.other.reference.link.underline.email\",\n      \"match\": \"(?:\\\\G|^|(?<=\\\\n)).+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G([^@]*)(@)(.*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.local-part\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.at-sign.email\"\n                },\n                \"3\": {\n                  \"name\": \"meta.domain\"\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"esc\": {\n      \"name\": \"constant.character.escape.backslash\",\n      \"match\": \"(\\\\\\\\).\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.escape.backslash\"\n        }\n      }\n    },\n    \"eql\": {\n      \"name\": \"keyword.operator.assignment.key-value.equals-sign\",\n      \"match\": \"=\"\n    },\n    \"float\": {\n      \"patterns\": [\n        {\n          \"include\": \"#floatExp\"\n        },\n        {\n          \"include\": \"#floatNoExp\"\n        }\n      ]\n    },\n    \"floatExp\": {\n      \"name\": \"constant.numeric.float.real.decimal.dec.exponential.scientific\",\n      \"match\": \"[-+]?(?:[0-9]*\\\\.[0-9]+|[0-9]+\\\\.)(?:[eE][-+]?[0-9]+)++\"\n    },\n    \"floatNoExp\": {\n      \"name\": \"constant.numeric.float.real.decimal.dec\",\n      \"match\": \"[-+]?(?:[0-9]*\\\\.[0-9]+|[0-9]+\\\\.)++\"\n    },\n    \"hex\": {\n      \"name\": \"constant.numeric.integer.int.hexadecimal.hex\",\n      \"match\": \"[-+]?[A-Fa-f0-9]+\"\n    },\n    \"hexNoSign\": {\n      \"name\": \"constant.numeric.integer.int.hexadecimal.hex\",\n      \"match\": \"[A-Fa-f0-9]+\"\n    },\n    \"int\": {\n      \"patterns\": [\n        {\n          \"include\": \"#intExp\"\n        },\n        {\n          \"include\": \"#intNoExp\"\n        }\n      ]\n    },\n    \"intExp\": {\n      \"name\": \"constant.numeric.integer.int.decimal.dec.exponential.scientific\",\n      \"match\": \"[-+]?[0-9]+[eE][-+]?[0-9]+\"\n    },\n    \"intNoExp\": {\n      \"name\": \"constant.numeric.integer.int.decimal.dec\",\n      \"match\": \"[-+]?[0-9]+\"\n    },\n    \"ip\": {\n      \"name\": \"constant.numeric.other.ip-address\",\n      \"match\": \"(?:\\\\d+\\\\.){3,}\\\\d+(?=\\\\s|$)\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#dot\"\n            }\n          ]\n        }\n      }\n    },\n    \"kolon\": {\n      \"name\": \"keyword.operator.assignment.key-value.colon\",\n      \"match\": \":\"\n    },\n    \"num\": {\n      \"patterns\": [\n        {\n          \"include\": \"#float\"\n        },\n        {\n          \"include\": \"#int\"\n        }\n      ]\n    },\n    \"op\": {\n      \"patterns\": [\n        {\n          \"include\": \"#opBitAssign\"\n        },\n        {\n          \"include\": \"#opMathAssign\"\n        },\n        {\n          \"include\": \"#opBit\"\n        },\n        {\n          \"include\": \"#opFix\"\n        },\n        {\n          \"include\": \"#opCmp\"\n        },\n        {\n          \"include\": \"#opLog\"\n        },\n        {\n          \"include\": \"#opMath\"\n        }\n      ]\n    },\n    \"opBit\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\^\",\n          \"name\": \"keyword.operator.bitwise.xor\"\n        },\n        {\n          \"match\": \"~\",\n          \"name\": \"keyword.operator.bitwise.not\"\n        },\n        {\n          \"match\": \"&\",\n          \"name\": \"keyword.operator.bitwise.and\"\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"keyword.operator.bitwise.or\"\n        },\n        {\n          \"match\": \"<<\",\n          \"name\": \"keyword.operator.bitwise.shift.left\"\n        },\n        {\n          \"match\": \">>>\",\n          \"name\": \"keyword.operator.bitwise.shift.right.unsigned\"\n        },\n        {\n          \"match\": \">>\",\n          \"name\": \"keyword.operator.bitwise.shift.right.signed\"\n        }\n      ]\n    },\n    \"opBitAssign\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\^=\",\n          \"name\": \"keyword.operator.assignment.bitwise.xor\"\n        },\n        {\n          \"match\": \"~=\",\n          \"name\": \"keyword.operator.assignment.bitwise.not\"\n        },\n        {\n          \"match\": \"&=\",\n          \"name\": \"keyword.operator.assignment.bitwise.and\"\n        },\n        {\n          \"match\": \"\\\\|=\",\n          \"name\": \"keyword.operator.assignment.bitwise.or\"\n        },\n        {\n          \"match\": \"<<=\",\n          \"name\": \"keyword.operator.assignment.bitwise.shift.left\"\n        },\n        {\n          \"match\": \">>>=\",\n          \"name\": \"keyword.operator.assignment.bitwise.shift.right.unsigned\"\n        },\n        {\n          \"match\": \">>=\",\n          \"name\": \"keyword.operator.assignment.bitwise.shift.right.signed\"\n        }\n      ]\n    },\n    \"opCmp\": {\n      \"patterns\": [\n        {\n          \"match\": \"<=>\",\n          \"name\": \"keyword.operator.logical.comparison.starship.spaceship\"\n        },\n        {\n          \"match\": \"<=\",\n          \"name\": \"keyword.operator.logical.comparison.less-than-or-equal-to.lte\"\n        },\n        {\n          \"match\": \"<\",\n          \"name\": \"keyword.operator.logical.comparison.less-than.lt\"\n        },\n        {\n          \"match\": \">=\",\n          \"name\": \"keyword.operator.logical.comparison.greater-than-or-equal-to.gte\"\n        },\n        {\n          \"match\": \">\",\n          \"name\": \"keyword.operator.logical.comparison.greater-than.gt\"\n        },\n        {\n          \"match\": \"===\",\n          \"name\": \"keyword.operator.logical.comparison.equal-to.equals.equal.eql.eq.strict\"\n        },\n        {\n          \"match\": \"==\",\n          \"name\": \"keyword.operator.logical.comparison.equal-to.equals.equal.eql.eq\"\n        },\n        {\n          \"match\": \"!==\",\n          \"name\": \"keyword.operator.logical.comparison.not-equal-to.not-equal.unequal.neql.ne.strict\"\n        },\n        {\n          \"match\": \"!=\",\n          \"name\": \"keyword.operator.logical.comparison.not-equal-to.not-equal.unequal.neql.ne\"\n        }\n      ]\n    },\n    \"opFix\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\+{2}\",\n          \"name\": \"keyword.operator.increment\"\n        },\n        {\n          \"match\": \"-{2}\",\n          \"name\": \"keyword.operator.decrement\"\n        }\n      ]\n    },\n    \"opLog\": {\n      \"patterns\": [\n        {\n          \"match\": \"!!\",\n          \"name\": \"keyword.operator.logical.boolean.cast\"\n        },\n        {\n          \"match\": \"!\",\n          \"name\": \"keyword.operator.logical.boolean.not.negation.negate\"\n        },\n        {\n          \"match\": \"&&\",\n          \"name\": \"keyword.operator.logical.boolean.and\"\n        },\n        {\n          \"match\": \"\\\\|{2}\",\n          \"name\": \"keyword.operator.logical.boolean.or\"\n        },\n        {\n          \"match\": \"\\\\?{2}\",\n          \"name\": \"keyword.operator.logical.boolean.or.nullish\"\n        }\n      ]\n    },\n    \"opMath\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\*{2}|\\\\^\",\n          \"name\": \"keyword.operator.arithmetic.exponentiation.exponent.exp.power\"\n        },\n        {\n          \"match\": \"\\\\+\",\n          \"name\": \"keyword.operator.arithmetic.addition.add.plus\"\n        },\n        {\n          \"match\": \"\\\\*\",\n          \"name\": \"keyword.operator.arithmetic.multiplication.multiply.times\"\n        },\n        {\n          \"match\": \"/\",\n          \"name\": \"keyword.operator.arithmetic.division.divide\"\n        },\n        {\n          \"match\": \"%\",\n          \"name\": \"keyword.operator.arithmetic.remainder.modulo.modulus.mod\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.subtraction.subtract.minus\",\n          \"match\": \"[-֊־᐀᠆‐-―⸗⸚⸺⸻⹀〜〰゠︱︲﹘﹣－]\"\n        }\n      ]\n    },\n    \"opMathAssign\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\*{2}=|\\\\^=\",\n          \"name\": \"keyword.operator.assignment.arithmetic.exponentiation.exponent.exp.power\"\n        },\n        {\n          \"match\": \"\\\\+=\",\n          \"name\": \"keyword.operator.assignment.arithmetic.addition.add.plus\"\n        },\n        {\n          \"match\": \"\\\\*=\",\n          \"name\": \"keyword.operator.assignment.arithmetic.multiplication.multiply.times\"\n        },\n        {\n          \"match\": \"/=\",\n          \"name\": \"keyword.operator.assignment.arithmetic.division.divide\"\n        },\n        {\n          \"match\": \"%=\",\n          \"name\": \"keyword.operator.assignment.arithmetic.remainder.modulo.modulus.mod\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.arithmetic.subtraction.subtract.minus\",\n          \"match\": \"[-֊־᐀᠆‐-―⸗⸚⸺⸻⹀〜〰゠︱︲﹘﹣－]=\"\n        }\n      ]\n    },\n    \"semi\": {\n      \"name\": \"punctuation.delimiter.separator.semicolon\",\n      \"match\": \";\"\n    },\n    \"str\": {\n      \"patterns\": [\n        {\n          \"include\": \"#strDouble\"\n        },\n        {\n          \"include\": \"#strSingle\"\n        }\n      ]\n    },\n    \"strDouble\": {\n      \"name\": \"string.quoted.double\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"|(?=$)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#esc\"\n        }\n      ]\n    },\n    \"strSingle\": {\n      \"name\": \"string.quoted.single\",\n      \"begin\": \"'\",\n      \"end\": \"'|(?=$)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#esc\"\n        }\n      ]\n    },\n    \"tab\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\t+\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\t\",\n                  \"name\": \"punctuation.whitespace.leading.tab.hard-tab\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\t+$\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\t\",\n                  \"name\": \"punctuation.whitespace.trailing.tab.hard-tab\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\t\",\n          \"name\": \"punctuation.whitespace.tab.hard-tab\"\n        }\n      ]\n    },\n    \"url\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(\\\"|'|\\\\b)\\n(\\n\\t# Not part of official URL schemes, included here for convenience\\n\\t(?: (?:jdbc|mvn|odbc|view-source) :)?\\n\\n\\t# Common protocols/URI schemes\\n\\t( https?\\n\\t| s?ftp\\n\\t| ftps\\n\\t| file\\n\\t| wss?\\n\\t| (?:git|svn) (?:\\\\+(?:https?|ssh))?\\n\\t| ssh\\n\\t\\n\\t# Less common URI schemes\\n\\t| aaas?\\n\\t| acap\\n\\t| adiumxtra\\n\\t| admin\\n\\t| afp\\n\\t| app\\n\\t| atom\\n\\t| aurora\\n\\t| aw\\n\\t| beshare\\n\\t| bolo\\n\\t| cassandra\\n\\t| chrome(?:-extension)?\\n\\t| coaps?\\n\\t| cockroach\\n\\t| content\\n\\t| couchbase\\n\\t| crid\\n\\t| cvs\\n\\t| dict\\n\\t| dns\\n\\t| docker\\n\\t| ed2k\\n\\t| facetime\\n\\t| feed\\n\\t| finger\\n\\t| fish\\n\\t| gemini\\n\\t| github(?:-(?:mac|linux|windows))?\\n\\t| gizmoproject\\n\\t| gopher\\n\\t| go\\n\\t| hcp\\n\\t| imap\\n\\t| irc[6s]?\\n\\t| issue\\n\\t| keyparc\\n\\t| lastfm\\n\\t| ldaps?\\n\\t| man(?:-?page)?\\n\\t| maria(?:db)?\\n\\t| market\\n\\t| message\\n\\t| mms\\n\\t| modern-?sqlite\\n\\t| mongodb\\n\\t| ms-help\\n\\t| mssql\\n\\t| mumble\\n\\t| my?sql\\n\\t| netezza\\n\\t| nfs\\n\\t| ni\\n\\t| nntp\\n\\t| notes\\n\\t| oleodbc\\n\\t| oracle\\n\\t| payto\\n\\t| pgsql\\n\\t| pg\\n\\t| pop\\n\\t| postgres(?:ql)?\\n\\t| postgresql\\n\\t| presto(?:dbs?|s)\\n\\t| reload\\n\\t| resource\\n\\t| res\\n\\t| rmi\\n\\t| rsync\\n\\t| rtmf?p\\n\\t| rtmp\\n\\t| s3\\n\\t| saphana\\n\\t| secondlife\\n\\t| sgn\\n\\t| shttp\\n\\t| slack\\n\\t| smb\\n\\t| snmp\\n\\t| soldat\\n\\t| sqlite3?\\n\\t| sqlserver\\n\\t| steam\\n\\t| stratum\\\\+[a-z]+\\n\\t| stuns?\\n\\t| teamspeak\\n\\t| telnet\\n\\t| turns?\\n\\t| txmt\\n\\t| udp\\n\\t| unreal\\n\\t| ut2004\\n\\t| ventrilo\\n\\t| vnc\\n\\t| wais\\n\\t| web\\\\+[a-z]+\\n\\t| webcal\\n\\t| wtai\\n\\t| wyciwyg\\n\\t| xmpp\\n\\t| xri\\n\\t| z39\\\\.50[rs]\\n\\t| zoommtg\\n\\t\\n\\t# User-defined/arbitrary URI scheme starting with `x-`\\n\\t| x(?:-[a-z][a-z0-9]*)++\\n\\t) ://\\n\\t\\n\\t# Path specifier\\n\\t(?:\\n\\t\\t(?! \\\\#\\\\w*\\\\#)\\n\\t\\t(?: [-:\\\\@\\\\w.,~%+_/?=&\\\\#;|!])\\n\\t)+\\n\\t\\n\\t# Don't include trailing punctuation\\n\\t(?<![-.,?:\\\\#;])\\n)\\n(\\\\1)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.link.begin.url\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.reference.link.underline.$3.url\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.link.end.url\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\"|'|\\\\b)\\n(\\n\\tmailto (:)\\n\\t(?:\\n\\t\\t(?! \\\\#\\\\w*\\\\#)\\n\\t\\t(?: [-:@\\\\w.,~%+_/?=&\\\\#;|!])\\n\\t)+\\n\\t(?<![-.,?:\\\\#;])\\n)\\n(\\\\1)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.link.begin.url\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.reference.link.underline.mailto.url\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.delimiter.scheme.url\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.link.end.url\"\n            }\n          }\n        }\n      ]\n    },\n    \"version\": {\n      \"name\": \"constant.other.version-string\",\n      \"match\": \"(?x)\\n(\\\"|'|\\\\b)\\n([vV]?)\\n(0 | [1-9]\\\\d*) (\\\\.)\\n(0 | [1-9]\\\\d*) (\\\\.)\\n(0 | [1-9]\\\\d*)\\n(?:\\n\\t(-)\\n\\t(\\n\\t\\t(?: 0\\n\\t\\t| [1-9]\\\\d*\\n\\t\\t| \\\\d*[a-zA-Z-][0-9a-zA-Z-]*\\n\\t\\t)\\n\\t\\t\\n\\t\\t(?:\\n\\t\\t\\t\\\\.\\n\\t\\t\\t(?: 0\\n\\t\\t\\t| [1-9]\\\\d*\\n\\t\\t\\t| \\\\d*[a-zA-Z-][0-9a-zA-Z-]*\\n\\t\\t\\t)\\n\\t\\t)*\\n\\t)\\n)?\\n(?:\\n\\t(\\\\+)\\n\\t(\\n\\t\\t[0-9a-zA-Z-]+\\n\\t\\t(?:\\\\.[0-9a-zA-Z-]+)*\\n\\t)\\n)?\\n(\\\\1)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.version-string.begin\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.version-prefix\"\n        },\n        \"3\": {\n          \"name\": \"meta.major.release-number\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#dot\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"meta.minor.release-number\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#dot\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"meta.patch.release-number\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#dash\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"meta.prerelease.release-number\",\n          \"patterns\": [\n            {\n              \"include\": \"#dot\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.delimiter.separator.plus\"\n        },\n        \"11\": {\n          \"name\": \"meta.build-metadata\",\n          \"patterns\": [\n            {\n              \"include\": \"#dot\"\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"punctuation.definition.version-string.end\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/forth.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"frt\", \"fth\", \"fs\", \"4th\", \"forth\"],\n  \"foldingStartMarker\": \"/\\\\*\\\\*|\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"\\\\*\\\\*/|^\\\\s*\\\\}\",\n  \"name\": \"Forth\",\n  \"patterns\": [\n    {\n      \"include\": \"#forth\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"comment\": \"line comments for iForth\",\n          \"match\": \"(?<=^|\\\\s)(--\\\\s.*$)\",\n          \"name\": \"comment.line.double-dash.forth\"\n        },\n        {\n          \"comment\": \"ANSI line comment\",\n          \"match\": \"(?<=^|\\\\s)(\\\\\\\\[\\\\s\\\\S]*$)\",\n          \"name\": \"comment.line.backslash.forth\"\n        },\n        {\n          \"comment\": \"gForth line comment\",\n          \"match\": \"(?<=^|\\\\s)(\\\\\\\\[Gg] .*$)\",\n          \"name\": \"comment.line.backslash-g.forth\"\n        },\n        {\n          \"begin\": \"(?<=^|\\\\s)(\\\\(\\\\*)(?=\\\\s)\",\n          \"comment\": \"multiline comments for iForth\",\n          \"end\": \"(?<=^|\\\\s)(\\\\*\\\\))(?=\\\\s)\",\n          \"name\": \"comment.block.forth\"\n        },\n        {\n          \"begin\": \"\\\\b(?i:DOC)\\\\b\",\n          \"comment\": \"documentation comments for iForth\",\n          \"end\": \"\\\\b(?i:ENDDOC)\\\\b\",\n          \"name\": \"comment.block.documentation.forth\"\n        },\n        {\n          \"comment\": \"ANSI line comment\",\n          \"match\": \"(?<=^|\\\\s)(\\\\.?\\\\( [^)]*\\\\))\",\n          \"name\": \"comment.line.parentheses.forth\"\n        }\n      ]\n    },\n    \"constant\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i:(?<=^|\\\\s)(TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\\\s))\",\n          \"name\": \"constant.language.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)([$#%]?[-+]?[0-9]+(\\\\.[0-9]*e(-?[0-9]+)|\\\\.?[0-9a-fA-F]*))(?=\\\\s)\",\n          \"name\": \"constant.numeric.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(([&^]\\\\S)|((\\\"|')\\\\S(\\\"|')))(?=\\\\s)\",\n          \"name\": \"constant.character.forth\"\n        }\n      ]\n    },\n    \"forth\": {\n      \"patterns\": [\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#word\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#storage\"\n        },\n        {\n          \"include\": \"#word-def\"\n        }\n      ]\n    },\n    \"storage\": {\n      \"patterns\": [\n        {\n          \"comment\": \"\",\n          \"match\": \"(?<=^|\\\\s)(?i:(2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY))(?=\\\\s)\",\n          \"name\": \"storage.type.forth\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"comment\": \"\",\n          \"match\": \"(?i:((?<=ABORT\\\" )|(?<=BREAK\\\" )|(?<=\\\\.\\\" )|(C\\\" )|(0\\\")|(S\\\\\\\\?\\\" )))[^\\\"]+\\\"\",\n          \"name\": \"string.quoted.double.forth\"\n        },\n        {\n          \"comment\": \"\",\n          \"match\": \"(?i:((?<=INCLUDE)|(?<=NEEDS)|(?<=REQUIRE)|(?<=USE)))[ ]\\\\S+(?=\\\\s)\",\n          \"name\": \"string.unquoted.forth\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:I|J)\\\\b\",\n          \"name\": \"variable.language.forth\"\n        }\n      ]\n    },\n    \"word\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|\\\\s)\\\\[(?i:(NIP|TUCK|ROT|SWAP|DUP|OVER|DROP|2SWAP|2DUP|2DROP|FNIP|FTUCK|FROT|FSWAP|FDUP|FOVER|FDROP|F2SWAP|F2DUP|F2DROP))\\\\](?=\\\\s)\",\n          \"name\": \"keyword.other.word.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)\\\\[(?i:(F+|F-|F*|F**|FSQRT|F/|F.S))\\\\](?=\\\\s)\",\n          \"name\": \"keyword.other.word.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)\\\\[(?i:(EXECUTE|ABORT|CATCH|C@|F@|>R|R>|!|/MOD|MOD))\\\\](?=\\\\s)\",\n          \"name\": \"keyword.other.word.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)\\\\[(?i:(\\\\?DO|\\\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE))\\\\](?=\\\\s)\",\n          \"name\": \"keyword.control.immediate.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(?i:(COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT'S|]))(?=\\\\s)\",\n          \"name\": \"keyword.operator.immediate.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(?i:(-DO|\\\\-LOOP|\\\\?DO|\\\\?LEAVE|\\\\+DO|\\\\+LOOP|ABORT\\\\\\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\\\-DO|U\\\\+DO|UNTIL|WHILE))(?=\\\\s)\",\n          \"name\": \"keyword.control.compile-only.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(?i:(\\\\?DUP-0=-IF|\\\\?DUP-IF|\\\\)|\\\\[|\\\\['\\\\]|\\\\[CHAR\\\\]|\\\\[COMPILE\\\\]|\\\\[IS\\\\]|\\\\[TO\\\\]|<COMPILATION|<INTERPRETATION|ASSERT\\\\(|ASSERT0\\\\(|ASSERT1\\\\(|ASSERT2\\\\(|ASSERT3\\\\(|COMPILATION>|DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE))(?=\\\\s)\",\n          \"name\": \"keyword.other.compile-only.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(?i:('|<IS>|<TO>|CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE))(?=\\\\s)\",\n          \"name\": \"keyword.other.non-immediate.forth\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(?i:(~~|BREAK:|BREAK\\\"|DBG))(?=\\\\s)\",\n          \"name\": \"keyword.other.warning.forth\"\n        }\n      ]\n    },\n    \"word-def\": {\n      \"begin\": \"(^:|\\\\s:)\\\\s(\\\\S+)\\\\s|(?i:(:NONAME))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.compile-only.forth\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.forth\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.compile-only.forth\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.word.forth\"\n        }\n      },\n      \"end\": \"(;(?i:CODE)?)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.compile-only.forth\"\n        }\n      },\n      \"name\": \"meta.block.forth\",\n      \"patterns\": [\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#word\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#storage\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.forth\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/fortran.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"f\", \"F\", \"f77\", \"F77\", \"for\", \"FOR\", \"fpp\", \"FPP\"],\n  \"repository\": {\n    \"preprocessor-rule-other\": {\n      \"begin\": \"^\\\\s*(#\\\\s*(if(n?def)?)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b).*$\",\n      \"patterns\": [{ \"include\": \"$base\" }],\n      \"captures\": {\n        \"1\": { \"name\": \"meta.preprocessor.fortran\" },\n        \"2\": { \"name\": \"keyword.control.import.fortran\" }\n      }\n    },\n    \"disabled\": {\n      \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n      \"end\": \"^\\\\s*#\\\\s*endif\\\\b.*$\",\n      \"comment\": \"eat nested preprocessor if(def)s\",\n      \"patterns\": [{ \"include\": \"#disabled\" }, { \"include\": \"#pragma-mark\" }]\n    },\n    \"preprocessor-rule-enabled\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0*1)\\\\b)\",\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b)\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b).*\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*$)\",\n          \"patterns\": [\n            { \"include\": \"#disabled\" },\n            { \"include\": \"#pragma-mark\" }\n          ],\n          \"contentName\": \"comment.block.preprocessor.else-branch\",\n          \"captures\": {\n            \"1\": { \"name\": \"meta.preprocessor.fortran\" },\n            \"2\": { \"name\": \"keyword.control.import.else.fortran\" }\n          }\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*$)\",\n          \"patterns\": [{ \"include\": \"$base\" }]\n        }\n      ],\n      \"captures\": {\n        \"1\": { \"name\": \"meta.preprocessor.fortran\" },\n        \"2\": { \"name\": \"keyword.control.import.if.fortran\" },\n        \"3\": { \"name\": \"constant.numeric.preprocessor.fortran\" }\n      }\n    },\n    \"pragma-mark\": {\n      \"match\": \"^\\\\s*(#\\\\s*(pragma\\\\s+mark)\\\\s+(.*))\",\n      \"name\": \"meta.section\",\n      \"captures\": {\n        \"1\": { \"name\": \"meta.preprocessor.fortran\" },\n        \"2\": { \"name\": \"keyword.control.import.pragma.fortran\" },\n        \"3\": { \"name\": \"meta.toc-list.pragma-mark.fortran\" }\n      }\n    },\n    \"preprocessor-rule-disabled\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0)\\\\b).*\",\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b)\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b)\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*$)\",\n          \"patterns\": [{ \"include\": \"$base\" }],\n          \"captures\": {\n            \"1\": { \"name\": \"meta.preprocessor.fortran\" },\n            \"2\": { \"name\": \"keyword.control.import.else.fortran\" }\n          }\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*$)\",\n          \"patterns\": [\n            { \"include\": \"#disabled\" },\n            { \"include\": \"#pragma-mark\" }\n          ],\n          \"name\": \"comment.block.preprocessor.if-branch\"\n        }\n      ],\n      \"captures\": {\n        \"1\": { \"name\": \"meta.preprocessor.fortran\" },\n        \"2\": { \"name\": \"keyword.control.import.if.fortran\" },\n        \"3\": { \"name\": \"constant.numeric.preprocessor.fortran\" }\n      }\n    }\n  },\n  \"uuid\": \"45253F88-F7CC-49C5-9C32-F3FADD2AB579\",\n  \"injections\": {\n    \"source.fortran - (source.fortran.modern)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^[Cc](?=\\\\b|[Cc])\",\n          \"end\": \"$\\\\n?\",\n          \"patterns\": [{ \"match\": \"\\\\\\\\\\\\s*\\\\n\" }],\n          \"name\": \"comment.line.c.fortran\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.fortran\" }\n          }\n        },\n        {\n          \"begin\": \"^\\\\*\",\n          \"end\": \"$\\\\n?\",\n          \"patterns\": [{ \"match\": \"\\\\\\\\\\\\s*\\\\n\" }],\n          \"name\": \"comment.line.asterisk.fortran\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.fortran\" }\n          }\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    { \"include\": \"#preprocessor-rule-enabled\" },\n    { \"include\": \"#preprocessor-rule-disabled\" },\n    { \"include\": \"#preprocessor-rule-other\" },\n    {\n      \"comment\": \"built-in constants\",\n      \"match\": \"(?i:(r8|r4|\\\\.TRUE\\\\.|\\\\.FALSE\\\\.))\",\n      \"name\": \"constant.language.fortran\"\n    },\n    {\n      \"comment\": \"numbers\",\n      \"match\": \"\\\\b[\\\\+\\\\-]?[0-9]+\\\\.?[0-9a-zA-Z_]*\\\\b\",\n      \"name\": \"constant.numeric.fortran\"\n    },\n    {\n      \"end\": \"(?x:\\t\\t\\t\\t\\t\\t\\t\\t\\t# extended mode\\n\\t\\t\\t\\t\\t((?i:end))\\t\\t\\t\\t\\t\\t\\t# 1: the word end\\n\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# followed by\\n\\t\\t\\t\\t\\t\\t$\\t\\t\\t\\t\\t\\t\\t\\t# end of line\\n\\t\\t\\t\\t\\t|\\t\\t\\t\\t\\t\\t\\t\\t\\t# or\\n\\t\\t\\t\\t\\t\\t\\\\s*\\t\\t\\t\\t\\t\\t\\t\\t# possibly some space\\n\\t\\t\\t\\t\\t\\t(?i:(function|subroutine))\\t\\t# 2: function or subroutine\\n\\t\\t\\t\\t\\t\\t((\\\\s+[A-Za-z_][A-Za-z0-9_]*)?)\\t# 3: possibly the name\\n\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t)\",\n      \"begin\": \"(?x:\\t\\t\\t\\t\\t\\t\\t\\t# extended mode\\n\\t\\t\\t\\t\\t^\\n\\t\\t\\t\\t\\t\\\\s*\\t\\t\\t\\t\\t\\t\\t\\t\\t# start of line and possibly some space\\n\\t\\t\\t\\t\\t([a-zA-Z\\\\(\\\\)]*)(?<!end)\\t\\t\\t\\t# 1: possibly some type specification but not the word end\\n\\t\\t\\t\\t\\t\\\\s*\\t\\t\\t\\t\\t\\t\\t\\t\\t# possibly some space\\n\\t\\t\\t\\t\\t(?i:(function|subroutine))\\\\b\\t\\t# 2: function or subroutine\\n\\t\\t\\t\\t\\t\\\\s+\\t\\t\\t\\t\\t\\t\\t\\t\\t# some space\\n\\t\\t\\t\\t\\t([A-Za-z_][A-Za-z0-9_]*)\\t\\t\\t# 3: name\\n\\t\\t\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.type.fortran\" },\n        \"2\": { \"name\": \"storage.type.function.fortran\" },\n        \"3\": { \"name\": \"entity.name.function.fortran\" }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G\\\\s*(\\\\()\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.parameters.end.fortran\" }\n          },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"match\": \"([^\\\\s),]*)\\\\s*(,)?\",\n              \"captures\": {\n                \"1\": { \"name\": \"variable.parameter.fortran\" },\n                \"2\": { \"name\": \"punctuation.separator.arguments.fortan\" }\n              }\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.parameters.begin.fortran\" }\n          }\n        },\n        { \"include\": \"$base\" }\n      ],\n      \"comment\": \"First line of function/subroutine definition\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"keyword.other.fortran\" },\n        \"3\": { \"name\": \"storage.type.function.fortran\" },\n        \"4\": { \"name\": \"entity.name.function.end.fortran\" }\n      },\n      \"name\": \"meta.function.fortran\"\n    },\n    {\n      \"begin\": \"\\\\b(?i:(integer|real|double\\\\s+precision|complex|logical|character))\\\\b(?=.*::)\",\n      \"end\": \"(?=!)|$\",\n      \"comment\": \"Line of type specification\",\n      \"name\": \"meta.specification.fortran\",\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.type.fortran\" } },\n      \"patterns\": [{ \"include\": \"$base\" }]\n    },\n    {\n      \"comment\": \"statements controling the flow of the program\",\n      \"match\": \"\\\\b(?i:(go\\\\s*to|assign|to|if|then|else|elseif|end\\\\s*if|continue|stop|pause|do|end\\\\s*do|while|cycle))\\\\b\",\n      \"name\": \"keyword.control.fortran\"\n    },\n    {\n      \"comment\": \"programming units\",\n      \"match\": \"\\\\b(?i:(program|end\\\\s+program|entry|block\\\\s+data|call|return|contains|include))\\\\b\",\n      \"name\": \"keyword.control.programming-units.fortran\"\n    },\n    {\n      \"comment\": \"i/o statements\",\n      \"match\": \"\\\\b(?i:(open|close|read|write|print|inquire|backspace|endfile|format))\\\\b\",\n      \"name\": \"keyword.control.io.fortran\"\n    },\n    {\n      \"comment\": \"operators\",\n      \"match\": \"((?<!\\\\=)\\\\=(?!\\\\=)|\\\\-|\\\\+|\\\\/\\\\/|\\\\/|(?!^)\\\\*|::)\",\n      \"name\": \"keyword.operator.fortran\"\n    },\n    {\n      \"comment\": \"logical operators\",\n      \"match\": \"(?i:(\\\\.and\\\\.|\\\\.or\\\\.|\\\\.eq\\\\.|\\\\.lt\\\\.|\\\\.le\\\\.|\\\\.gt\\\\.|\\\\.ge\\\\.|\\\\.ne\\\\.|\\\\.not\\\\.|\\\\.eqv\\\\.|\\\\.neqv\\\\.))\",\n      \"name\": \"keyword.operator.logical.fortran\"\n    },\n    {\n      \"comment\": \"argument related intrisics\",\n      \"match\": \"\\\\b(?i:(present)(?=\\\\())\",\n      \"name\": \"keyword.other.instrisic.argument.fortran\"\n    },\n    {\n      \"comment\": \"numeric intrisics\",\n      \"match\": \"\\\\b(?i:(abs|aimag|aint|anint|cmplx|conjg|dble|dim|dprod|int|max|min|mod|nint|real|sign|digits|epsilon|huge|maxexponent|minexponent|precision|radix|range|tiny)(?=\\\\())\",\n      \"name\": \"keyword.other.instrisic.numeric.fortran\"\n    },\n    {\n      \"comment\": \"character string intrinsics\",\n      \"match\": \"\\\\b(?i:(achar|adjustl|adjustr|char|iachar|ichar|index|len_trim|repeat|scan|string|trim|verify|len)(?=\\\\())\",\n      \"name\": \"keyword.other.instrisic.string.fortran\"\n    },\n    {\n      \"comment\": \"mathematical intrisics\",\n      \"match\": \"\\\\b(?i:(((acos|asin|atan|atan2|cos|cosh|exp|log|log10|sin|sinh|sqrt|tan|tanh)(?=\\\\())|(random_number|random_seed)))\\\\b\",\n      \"name\": \"keyword.other.instrisic.math.fortran\"\n    },\n    {\n      \"comment\": \"data kind intrinsics\",\n      \"match\": \"\\\\b(?i:(kind|selected_int_kind|selected_real_kind|transfer)(?=\\\\())\",\n      \"name\": \"keyword.other.instrisic.data.fortran\"\n    },\n    {\n      \"comment\": \"logical intrinsics\",\n      \"match\": \"\\\\b(?i:(logical)(?=\\\\())\",\n      \"name\": \"keyword.other.instrisic.logical.fortran\"\n    },\n    {\n      \"comment\": \"bit operations intrinsics\",\n      \"match\": \"\\\\b(?i:(((bit_size|btest|iand|ibclr|ibits|ibset|ieor|ior|ishift|ishiftc|not)(?=\\\\())|mvbits))\\\\b\",\n      \"name\": \"keyword.other.instrisic.bit.fortran\"\n    },\n    {\n      \"comment\": \"floating point intrinsics\",\n      \"match\": \"\\\\b(?i:(exponent|fraction|nearest|rrspacing|scale|set_exponent|spacing)(?=\\\\())\",\n      \"name\": \"keyword.other.instrisic.floating-point.fortran\"\n    },\n    {\n      \"comment\": \"matrix/vector/array intrisics\",\n      \"match\": \"\\\\b(?i:(((dot_product|sum|matmul|transpose|all|any|count|maxval|minval|maxloc|minloc|product|sum|lbound|ubound|shape|size|merge|pack|unpack|reshape|spread|cshift|eoshift)(?=\\\\())|(where|elsewhere|end\\\\s*where)))\\\\b\",\n      \"name\": \"keyword.other.instrisic.array.fortran\"\n    },\n    {\n      \"comment\": \"other intrisics\",\n      \"match\": \"\\\\b(?i:(((dtime)(?=\\\\())|(date_and_time|system_clock)))\\\\b\",\n      \"name\": \"keyword.other.instrisic.fortran\"\n    },\n    {\n      \"comment\": \"data specification\",\n      \"match\": \"\\\\b(?i:(integer|real|double\\\\s+precision|complex|logical|character|block\\\\sdata|operator|assignment))\\\\b\",\n      \"name\": \"storage.type.fortran\"\n    },\n    {\n      \"comment\": \"data type attributes\",\n      \"match\": \"\\\\b(?i:(dimension|common|equivalence|parameter|external|intrinsic|save|data|implicit\\\\s*none|implicit|intent|in|out|inout))\\\\b\",\n      \"name\": \"storage.modifier.fortran\"\n    },\n    {\n      \"end\": \"'\",\n      \"begin\": \"'\",\n      \"applyEndPatternLast\": 1,\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.fortran\" }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"''\",\n          \"name\": \"constant.character.escape.apostrophe.fortran\"\n        }\n      ],\n      \"comment\": \"String\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.fortran\" }\n      },\n      \"name\": \"string.quoted.single.fortran\"\n    },\n    {\n      \"end\": \"\\\"\",\n      \"begin\": \"\\\"\",\n      \"applyEndPatternLast\": 1,\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.fortran\" }\n      },\n      \"patterns\": [\n        { \"match\": \"\\\"\\\"\", \"name\": \"constant.character.escape.quote.fortran\" }\n      ],\n      \"comment\": \"String\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.fortran\" }\n      },\n      \"name\": \"string.quoted.double.fortran\"\n    },\n    {\n      \"begin\": \"^\\\\s*#\\\\s*(error|warning)\\\\b\",\n      \"end\": \"$\\\\n?\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.fortran\"\n        }\n      ],\n      \"name\": \"meta.preprocessor.diagnostic.fortran\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.import.error.fortran\" } }\n    },\n    {\n      \"begin\": \"^\\\\s*#\\\\s*(include|import)\\\\b\\\\s+\",\n      \"end\": \"(?=(?://|/\\\\*))|$\\\\n?\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.fortran\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.fortran\" }\n          },\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.include.fortran\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.fortran\" }\n          }\n        },\n        {\n          \"begin\": \"<\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.fortran\" }\n          },\n          \"end\": \">\",\n          \"name\": \"string.quoted.other.lt-gt.include.fortran\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.fortran\" }\n          }\n        }\n      ],\n      \"name\": \"meta.preprocessor.fortran.include\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.import.include.fortran\" } }\n    },\n    { \"include\": \"#pragma-mark\" },\n    {\n      \"begin\": \"^\\\\s*#\\\\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef)\\\\b\",\n      \"end\": \"(?=(?://|/\\\\*))|$\\\\n?\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.fortran\"\n        }\n      ],\n      \"name\": \"meta.preprocessor.fortran\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.import.fortran\" } }\n    }\n  ],\n  \"comment\": \"?i: has to be added everywhere because fortran is case insensitive; NB: order of matching matters\",\n  \"name\": \"Fortran - Punchcard\",\n  \"scopeName\": \"source.fortran\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/fsharp.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/ionide/ionide-fsgrammar/blob/master/grammars/fsharp.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/ionide/ionide-fsgrammar/commit/e177bd7f9d3402f70d2f1fb42c74057ed1ccf6fa\",\n  \"name\": \"fsharp\",\n  \"scopeName\": \"source.fsharp\",\n  \"patterns\": [\n    {\n      \"include\": \"#compiler_directives\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#chars\"\n    },\n    {\n      \"include\": \"#double_tick\"\n    },\n    {\n      \"include\": \"#definition\"\n    },\n    {\n      \"include\": \"#abstract_definition\"\n    },\n    {\n      \"include\": \"#attributes\"\n    },\n    {\n      \"include\": \"#modules\"\n    },\n    {\n      \"include\": \"#anonymous_functions\"\n    },\n    {\n      \"include\": \"#du_declaration\"\n    },\n    {\n      \"include\": \"#record_declaration\"\n    },\n    {\n      \"include\": \"#records\"\n    },\n    {\n      \"include\": \"#strp_inlined\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#cexprs\"\n    },\n    {\n      \"include\": \"#text\"\n    }\n  ],\n  \"repository\": {\n    \"strp_inlined_body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#anonymous_functions\"\n        },\n        {\n          \"match\": \"(\\\\^[[:alpha:]0-9'._]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \"\\\\b(and|when|or)\\\\b\"\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#strp_inlined_body\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(static member|member)\\\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#compiler_directives\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#chars\"\n        },\n        {\n          \"include\": \"#double_tick\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#text\"\n        },\n        {\n          \"include\": \"#definition\"\n        },\n        {\n          \"include\": \"#attributes\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#cexprs\"\n        },\n        {\n          \"include\": \"#text\"\n        }\n      ]\n    },\n    \"strp_inlined\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#strp_inlined_body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"generic_declaration\": {\n      \"patterns\": [\n        {\n          \"comments\": \"SRTP syntax support\",\n          \"begin\": \"(:)\\\\s*(\\\\()\\\\s*(static member|member)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#member_declaration\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(('|\\\\^)[[:alpha:]0-9'._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \"\\\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\\\!|return\\\\!|return|interface|with|abstract|enum|member|try|finally|and|when|or|use|use\\\\!|struct|while|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\\\b\"\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \":\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"match\": \"(('|\\\\^)[[:alpha:]0-9'._]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(<)\",\n          \"end\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(('|\\\\^)[[:alpha:]0-9'._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#tuple_signature\"\n            },\n            {\n              \"include\": \"#generic_declaration\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(([?[:alpha:]0-9'`^._ ]+))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?!when|and|or\\\\b)\\\\b([\\\\w0-9'`^._]+)\",\n          \"comments\": \"Here we need the \\\\w modifier in order to check that the words isn't blacklisted\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\|)\",\n          \"comments\": \"Prevent captures of `|>` as a keyword when defining custom operator like `<|>`\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"anonymous_record_declaration\": {\n      \"begin\": \"(\\\\{\\\\|)\",\n      \"end\": \"(\\\\|\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.symbol.fsharp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.symbol.fsharp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"[[:alpha:]0-9'`^_ ]+(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          }\n        },\n        {\n          \"match\": \"([[:alpha:]0-9'`^_ ]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#anonymous_record_declaration\"\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"record_signature\": {\n      \"patterns\": [\n        {\n          \"match\": \"[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"({)\",\n          \"end\": \"(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#record_signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"tuple_signature\": {\n      \"patterns\": [\n        {\n          \"match\": \"(([?[:alpha:]0-9'`^._ ]+))+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(([?[:alpha:]0-9'`^._ ]+))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"anonymous_functions\": {\n      \"patterns\": [\n        {\n          \"name\": \"function.anonymous\",\n          \"begin\": \"\\\\b(fun)\\\\b\",\n          \"end\": \"(->)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.arrow.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(\\\\()\",\n              \"end\": \"\\\\s*(?=(->))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.arrow.fsharp\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.arrow.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#member_declaration\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attributes\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.function.attribute.fsharp\",\n          \"begin\": \"\\\\[\\\\<\",\n          \"end\": \"\\\\>\\\\]|\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.literate.command.fsharp\",\n          \"match\": \"(\\\\(\\\\*{3}.*\\\\*{3}\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.block.markdown.fsharp\",\n          \"begin\": \"^\\\\s*(\\\\(\\\\*\\\\*(?!\\\\)))((?!\\\\*\\\\)).)*$\",\n          \"while\": \"^(?!\\\\s*(\\\\*)+\\\\)\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.fsharp\",\n          \"begin\": \"(\\\\(\\\\*(?!\\\\)))\",\n          \"end\": \"(\\\\*+\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"comments\": \"Capture // when inside of (* *) like that the rule which capture comments starting by // is not trigger. See https://github.com/ionide/ionide-fsgrammar/issues/155\",\n              \"name\": \"fast-capture.comment.line.double-slash.fsharp\",\n              \"match\": \"//\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.markdown.fsharp.end\",\n          \"match\": \"((?<!\\\\()(\\\\*)+\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.markdown.fsharp\",\n          \"begin\": \"///\",\n          \"while\": \"///\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.line.double-slash.fsharp\",\n          \"match\": \"//.*$\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.unit.fsharp\",\n          \"match\": \"\\\\(\\\\)\"\n        },\n        {\n          \"name\": \"constant.numeric.float.fsharp\",\n          \"match\": \"\\\\b-?[0-9][0-9_]*((\\\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))\"\n        },\n        {\n          \"name\": \"constant.numeric.integer.nativeint.fsharp\",\n          \"match\": \"\\\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))\"\n        },\n        {\n          \"name\": \"constant.language.boolean.fsharp\",\n          \"match\": \"\\\\b(true|false)\\\\b\"\n        },\n        {\n          \"name\": \"constant.other.fsharp\",\n          \"match\": \"\\\\b(null|unit|void)\\\\b\"\n        }\n      ]\n    },\n    \"abstract_definition\": {\n      \"name\": \"abstract.definition.fsharp\",\n      \"begin\": \"\\\\b(abstract)\\\\s+(member)?(\\\\s+\\\\[\\\\<.*\\\\>\\\\])?\\\\s*([_[:alpha:]0-9,\\\\._`\\\\s]+)(:)\",\n      \"end\": \"\\\\s*(with)\\\\b|=|$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.fsharp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.fsharp\"\n        },\n        \"3\": {\n          \"name\": \"support.function.attribute.fsharp\"\n        },\n        \"5\": {\n          \"name\": \"keyword.fsharp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.fsharp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#common_declaration\"\n        },\n        {\n          \"match\": \"(\\\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\\\s*(:)((?!with\\\\b)\\\\b([\\\\w0-9'`^._ ]+)){0,1}\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?!with|get|set\\\\b)\\\\b([\\\\w0-9'`^._]+)\",\n          \"comments\": \"Here we need the \\\\w modifier in order to check that the words isn't blacklisted\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"common_binding_definition\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#attributes\"\n        },\n        {\n          \"comments\": \"SRTP syntax support\",\n          \"begin\": \"(:)\\\\s*(\\\\()\\\\s*(static member|member)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*((?=,)|(?=\\\\=))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\^[[:alpha:]0-9'._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\)\\\\s*(([?[:alpha:]0-9'`^._ ]*)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*(\\\\^[[:alpha:]0-9'._]+)\\\\s*(when)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"end\": \"(?=:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"keyword.fsharp\",\n              \"match\": \"\\\\b(and|when|or)\\\\b\"\n            },\n            {\n              \"comment\": \"Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition\",\n              \"match\": \"([[:alpha:]0-9'^._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"name\": \"keyword.symbol.fsharp\",\n              \"match\": \"(\\\\(|\\\\))\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(:)\\\\s*([?[:alpha:]0-9'`^._ ]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"match\": \"(->)\\\\s*(\\\\()?\\\\s*([?[:alpha:]0-9'`^._ ]+)*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(\\\\*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\)\\\\s*(([?[:alpha:]0-9'`^._ ]+))+)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\*)(\\\\s*([?[:alpha:]0-9'`^._ ]+))*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          },\n          \"end\": \"(?==)|(?=\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<+(?![[:space:]]*\\\\)))\",\n          \"beginComment\": \"The group (?![[:space:]]*\\\\) is for protection against overload operator. static member (<)\",\n          \"end\": \"((?<!:)>|\\\\))\",\n          \"endComment\": \"The group (?<!:) prevent us from stopping on :> when using SRTP synthax\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#generic_declaration\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#anonymous_record_declaration\"\n        },\n        {\n          \"begin\": \"({)\",\n          \"end\": \"(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#record_signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#definition\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"definition\": {\n      \"patterns\": [\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"\\\\b(let mutable|static let mutable|static let|let inline|let|member val|static member inline|static member|default|member|override|let!)(\\\\s+rec|mutable)?(\\\\s+\\\\[\\\\<.*\\\\>\\\\])?\\\\s*(private|internal|public)?\\\\s+(\\\\[[^-=]*\\\\]|[_[:alpha:]]([_[:alpha:]0-9\\\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\\\._`\\\\s]+|(?<=,)\\\\s)*)?\",\n          \"end\": \"\\\\s*(with\\\\b|=|\\\\n+=|(?<=\\\\=))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"support.function.attribute.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.fsharp\"\n            },\n            \"5\": {\n              \"name\": \"variable.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        },\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"\\\\b(use|use\\\\!|and|and!)\\\\s*(\\\\[[^-=]*\\\\]|[_[:alpha:]]([_[:alpha:]0-9\\\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\\\._`\\\\s]+|(?<=,)\\\\s)*)?\",\n          \"end\": \"\\\\s*(=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        },\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"(?<=with|and)\\\\s*\\\\b((get|set)\\\\s*(?=\\\\())(\\\\[[^-=]*\\\\]|[_[:alpha:]]([_[:alpha:]0-9\\\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\\\._`\\\\s]+|(?<=,)\\\\s)*)?\",\n          \"end\": \"\\\\s*(=|\\\\n+=|(?<=\\\\=))\",\n          \"beginCaptures\": {\n            \"4\": {\n              \"name\": \"variable.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        },\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"\\\\b(static val mutable|val mutable|val)(\\\\s+rec|mutable)?(\\\\s+\\\\[\\\\<.*\\\\>\\\\])?\\\\s*(private|internal|public)?\\\\s+(\\\\[[^-=]*\\\\]|[_[:alpha:]]([_[:alpha:]0-9,\\\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\\\\._`\\\\s]+|(?<=,)\\\\s)*)?\",\n          \"end\": \"\\\\n$\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"support.function.attribute.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.fsharp\"\n            },\n            \"5\": {\n              \"name\": \"variable.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        },\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"\\\\b(new)\\\\b\\\\s+(\\\\()\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        }\n      ]\n    },\n    \"du_declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"du_declaration.fsharp\",\n          \"begin\": \"\\\\b(of)\\\\b\",\n          \"end\": \"$|(\\\\|)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\\\s*(:)\\\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(``([[:alpha:]0-9'^._ ]+)``|[[:alpha:]0-9'`^._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#anonymous_record_declaration\"\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier\",\n          \"match\": \"\\\\b(private|public|internal)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \"\\\\b(private|to|public|internal|function|class|exception|delegate|of|as|begin|end|inherit|let!|interface|abstract|enum|member|and|when|or|use|use\\\\!|struct|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control\",\n          \"match\": \"\\\\b(match|yield|yield!|with|if|then|else|elif|for|in|return!|return|try|finally|while|do)(?!')\\\\b\"\n        },\n        {\n          \"name\": \"keyword.symbol.new\",\n          \"match\": \"\\\\b(new)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.symbol.fsharp\",\n          \"match\": \"(&&&|\\\\|\\\\|\\\\||\\\\^\\\\^\\\\^|~~~|<<<|>>>|\\\\|>|\\\\->|\\\\<\\\\-|:>|:\\\\?>|:|\\\\[|\\\\]|\\\\;|<>|=|@|\\\\|\\\\||&&|{|}|\\\\||_|\\\\.\\\\.|\\\\,|\\\\+|\\\\-|\\\\*|\\\\/|\\\\^|\\\\!|\\\\>|\\\\>\\\\=|\\\\>\\\\>|\\\\<|\\\\<\\\\=|\\\\(|\\\\)|\\\\<\\\\<)\"\n        }\n      ]\n    },\n    \"modules\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.section.fsharp\",\n          \"begin\": \"\\\\b(namespace global)|\\\\b(namespace|module)\\\\s*(public|internal|private|rec)?\\\\s+([[:alpha:]][[:alpha:]0-9'_. ]*)\",\n          \"end\": \"(\\\\s?=|\\\\s|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.section.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.section.fsharp\",\n              \"match\": \"(\\\\.)([A-Z][[:alpha:]0-9'_]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.namespace-reference.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.fsharp\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"name\": \"namespace.open.fsharp\",\n          \"begin\": \"\\\\b(open type|open)\\\\s+([[:alpha:]][[:alpha:]0-9'_]*)(?=(\\\\.[A-Z][[:alpha:]0-9_]*)*)\",\n          \"end\": \"(\\\\s|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.section.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.section.fsharp\",\n              \"match\": \"(\\\\.)([[:alpha:]][[:alpha:]0-9'_]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.namespace-reference.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"namespace.alias.fsharp\",\n          \"begin\": \"^\\\\s*(module)\\\\s+([A-Z][[:alpha:]0-9'_]*)\\\\s*(=)\\\\s*([A-Z][[:alpha:]0-9'_]*)\",\n          \"end\": \"(\\\\s|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.namespace.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace-definition.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.section.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.section.fsharp\",\n              \"match\": \"(\\\\.)([A-Z][[:alpha:]0-9'_]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.namespace-reference.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.fsharp\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.literal.fsharp\",\n          \"begin\": \"(?=[^\\\\\\\\])(@\\\")\",\n          \"end\": \"(\\\")(?!\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.string.escape.fsharp\",\n              \"match\": \"\\\"(\\\")\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.triple.fsharp\",\n          \"begin\": \"(?=[^\\\\\\\\])(\\\"\\\"\\\")\",\n          \"end\": \"(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string_formatter\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.fsharp\",\n          \"begin\": \"(?=[^\\\\\\\\])(\\\")\",\n          \"end\": \"(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.separator.string.ignore-eol.fsharp\",\n              \"match\": \"\\\\\\\\$[ \\\\t]*\"\n            },\n            {\n              \"name\": \"constant.character.string.escape.fsharp\",\n              \"match\": \"\\\\\\\\(['\\\"\\\\\\\\abfnrtv]|([01][0-9][0-9]|2[0-4][0-9]|25[0-5])|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U00(0[0-9a-fA-F]|10)[0-9a-fA-F]{4}))\"\n            },\n            {\n              \"name\": \"invalid.illegal.character.string.fsharp\",\n              \"match\": \"\\\\\\\\(([0-9]{1,3})|(x[^\\\\s]{0,2})|(u[^\\\\s]{0,4})|(U[^\\\\s]{0,8})|[^\\\\s])\"\n            },\n            {\n              \"include\": \"#string_formatter\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string_formatter\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.type.format.specifier.fsharp\",\n          \"match\": \"(%0?-?(\\\\d+)?((a|t)|(\\\\.\\\\d+)?(f|F|e|E|g|G|M)|(b|c|s|d|i|x|X|o|u)|(s|b|O)|(\\\\+?A)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.format.specifier.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.unit.fsharp\",\n          \"match\": \"\\\\(\\\\)\"\n        },\n        {\n          \"match\": \"(\\\\?{0,1})(``[[:alpha:]0-9'`^:,._ ]+``|(?!private\\\\b)\\\\b[\\\\w[:alpha:]0-9'`<>^._ ]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"common_declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*(->)\\\\s*([[:alpha:]0-9'`^._ ]+)(<)\",\n          \"end\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"([[:alpha:]0-9'`^._ ]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\s*(->)\\\\s*(?!with|get|set\\\\b)\\\\b([\\\\w0-9'`^._]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#anonymous_record_declaration\"\n        },\n        {\n          \"begin\": \"(\\\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\\\s*(:)(\\\\s*([?[:alpha:]0-9'`^._ ]+)(<))\",\n          \"end\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"([[:alpha:]0-9'`^._ ]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        }\n      ]\n    },\n    \"member_declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#common_declaration\"\n        },\n        {\n          \"comments\": \"SRTP syntax support\",\n          \"begin\": \"(:)\\\\s*(\\\\()\\\\s*(static member|member)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*((?=,)|(?=\\\\=))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#member_declaration\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(\\\\^[[:alpha:]0-9'._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\^[[:alpha:]0-9'._]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \"\\\\b(and|when|or)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.symbol.fsharp\",\n          \"match\": \"(\\\\(|\\\\))\"\n        },\n        {\n          \"match\": \"(\\\\?{0,1})([[:alpha:]0-9'`^._]+|``[[:alpha:]0-9'`^:,._ ]+``)\\\\s*(:{0,1})(\\\\s*([?[:alpha:]0-9'`<>._ ]+)){0,1}\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"double_tick\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.other.binding.fsharp\",\n          \"match\": \"(``)([^`]*)(``)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"string.quoted.single.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.binding.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"string.quoted.single.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"records\": {\n      \"patterns\": [\n        {\n          \"name\": \"record.fsharp\",\n          \"begin\": \"\\\\b(type)[\\\\s]+(private|internal|public)?\\\\s*\",\n          \"end\": \"\\\\s*((with)|((as)\\\\s+([[:alpha:]0-9']+))|(=)|[\\\\n=]|(\\\\(\\\\)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.fsharp\"\n            },\n            \"6\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"7\": {\n              \"name\": \"constant.language.unit.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#attributes\"\n            },\n            {\n              \"match\": \"([[:alpha:]0-9'^._]+|``[[:alpha:]0-9'`^:,._ ]+``)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(<)\",\n              \"end\": \"((?<!:)>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.fsharp\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"(('|\\\\^)``[[:alpha:]0-9`^:,._ ]+``|('|\\\\^)[[:alpha:]0-9`^:._]+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.fsharp\"\n                    }\n                  }\n                },\n                {\n                  \"name\": \"keyword.fsharp\",\n                  \"match\": \"\\\\b(interface|with|abstract|and|when|or|not|struct|equality|comparison|unmanaged|delegate|enum)\\\\b\"\n                },\n                {\n                  \"begin\": \"(\\\\()\",\n                  \"end\": \"(\\\\))\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.symbol.fsharp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.symbol.fsharp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"match\": \"(static member|member|new)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"keyword.fsharp\"\n                        }\n                      }\n                    },\n                    {\n                      \"include\": \"#common_binding_definition\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"([\\\\w0-9'`^._]+)\",\n                  \"comments\": \"Here we need the \\\\w modifier in order to check that the words isn't blacklisted\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.fsharp\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#keywords\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\s*(private|internal|public)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.fsharp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(\\\\()\",\n              \"end\": \"\\\\s*(?=(=)|[\\\\n=]|(\\\\(\\\\))|(as))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#member_declaration\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        }\n      ]\n    },\n    \"record_declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(((mutable)\\\\s[[:alpha:]]+)|[[:alpha:]0-9'`<>^._]*)\\\\s*((?<!:):(?!:))\\\\s*\",\n              \"beginCaptures\": {\n                \"3\": {\n                  \"name\": \"keyword.fsharp\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"end\": \"$|(;|\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"match\": \"([[:alpha:]0-9'`^_ ]+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.fsharp\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#keywords\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#compiler_directives\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#chars\"\n            },\n            {\n              \"include\": \"#double_tick\"\n            },\n            {\n              \"include\": \"#definition\"\n            },\n            {\n              \"include\": \"#attributes\"\n            },\n            {\n              \"include\": \"#anonymous_functions\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#cexprs\"\n            },\n            {\n              \"include\": \"#text\"\n            }\n          ]\n        }\n      ]\n    },\n    \"cexprs\": {\n      \"patterns\": [\n        {\n          \"name\": \"cexpr.fsharp\",\n          \"match\": \"\\\\b(async|seq|promise|task|maybe|asyncMaybe|controller|scope|application|pipeline)\\\\s*\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"chars\": {\n      \"patterns\": [\n        {\n          \"name\": \"char.fsharp\",\n          \"match\": \"('\\\\\\\\?.')\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"string.quoted.single.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"text\": {\n      \"patterns\": [\n        {\n          \"name\": \"text.fsharp\",\n          \"match\": \"\\\\\\\\\"\n        }\n      ]\n    },\n    \"compiler_directives\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.directive.fsharp\",\n          \"match\": \"\\\\s?(#if|#elif|#elseif|#else|#endif|#light|#nowarn)\",\n          \"captures\": {}\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/gcode.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.gcode\",\n  \"fileTypes\": [\"nc\", \"ngc\", \"prg\", \"mpf\", \"gcode\"],\n  \"patterns\": [\n    { \"comment\": \"g commands\", \"match\": \"G\\\\d+\", \"name\": \"support.variable\" },\n    { \"comment\": \"m commands\", \"match\": \"M\\\\d+\", \"name\": \"support.constant\" },\n    { \"comment\": \"comments\", \"match\": \"\\\\(.*\\\\)\", \"name\": \"comment.line\" },\n    {\n      \"comment\": \"flow control operators\",\n      \"match\": \"(IF|THEN|AND|OR|WHILE|GOTO)\",\n      \"name\": \"keyword.control\"\n    },\n    {\n      \"comment\": \"functions\",\n      \"match\": \"(ABS|ACOS|ASIN|ATAN|COS|LN|EXP|FIX|FUP|MOD|ROUND|SQRT|SIN|TAN)\",\n      \"name\": \"support.function\"\n    },\n    {\n      \"comment\": \"comparison operators\",\n      \"match\": \"(GT|LT|GE|LE|EQ)\",\n      \"name\": \"keyword.operator\"\n    },\n    {\n      \"comment\": \"flow control locations\",\n      \"match\": \"(?<=GOTO|DO)\\\\d+\",\n      \"name\": \"markup.italic\"\n    },\n    { \"comment\": \"variables\", \"match\": \"(#\\\\d+)\", \"name\": \"variable.other\" },\n    {\n      \"comment\": \"positions\",\n      \"match\": \"([XYZABC]{1})(?=([\\\\d\\\\.-])*)\",\n      \"name\": \"markup.bold\"\n    },\n    {\n      \"comment\": \"arc positions\",\n      \"match\": \"([IJK])(?=([\\\\d\\\\.-])*)\",\n      \"name\": \"markup.italic\"\n    },\n    {\n      \"comment\": \"positions\",\n      \"match\": \"(?<=[XYZABC])([\\\\d\\\\.-])*\",\n      \"name\": \"constant.numeric\"\n    },\n    {\n      \"comment\": \"feeds & speeds\",\n      \"match\": \"(?<= )[FS]([\\\\d\\\\.-])+\",\n      \"name\": \"variable.parameter\"\n    },\n    {\n      \"comment\": \"O & N numberes\",\n      \"match\": \"([ON]([\\\\d\\\\.-])+)\",\n      \"name\": \"support.function\"\n    },\n    {\n      \"comment\": \"brackets\",\n      \"match\": \"(\\\\[|\\\\])\",\n      \"name\": \"string.interpolated\"\n    }\n  ],\n  \"name\": \"G-code\",\n  \"uuid\": \"e6875107-21f9-449b-bbae-036db969b3d2\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/gherkin.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"feature\"],\n  \"firstLineMatch\": \"기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Особина|Функция|Функциональность|Свойство|Могућност|Özellik|Właściwość|Tính năng|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Ability|Business Need|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd(.*)\",\n  \"foldingStartMarker\": \"^\\\\s*\\\\b(예|시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|例子|例|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|サンプル|سيناريو مخطط|سيناريو|امثلة|الخلفية|תרחיש|תבנית תרחיש|רקע|דוגמאות|Тарих|Сценарій|Сценарији|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Примери|Пример|Приклади|Предыстория|Предистория|Позадина|Передумова|Основа|Мисоллар|Концепт|Контекст|Значения|Örnekler|Założenia|Wharrimean is|Voorbeelden|Variantai|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Tapaukset|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenarios|Scenario Outline|Scenario Amlinellol|Scenario|Example|Scenarijus|Scenariji|Scenarijaus šablonas|Scenarijai|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Piemēri|Pavyzdžiai|Paraugs|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Juhtumid|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Exemplos|Exemples|Exemplele|Exempel|Examples|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esempi|Escenario|Escenari|Enghreifftiau|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Dis is what went down|Dasar|Contoh|Contexto|Contexte|Contesto|Condiţii|Conditii|Cobber|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Beispiele|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y'all|Achtergrond|Abstrakt Scenario|Abstract Scenario|Rule|Regla|Règle|Regel|Regra)\",\n  \"foldingStopMarker\": \"^\\\\s*$\",\n  \"keyEquivalent\": \"^~C\",\n  \"name\": \"gherkin\",\n  \"patterns\": [\n    {\n      \"include\": \"#feature_element_keyword\"\n    },\n    {\n      \"include\": \"#feature_keyword\"\n    },\n    {\n      \"include\": \"#step_keyword\"\n    },\n    {\n      \"include\": \"#strings_triple_quote\"\n    },\n    {\n      \"include\": \"#strings_single_quote\"\n    },\n    {\n      \"include\": \"#strings_double_quote\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#tags\"\n    },\n    {\n      \"include\": \"#scenario_outline_variable\"\n    },\n    {\n      \"include\": \"#table\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"comment.line.number-sign\"\n        }\n      },\n      \"match\": \"^\\\\s*(#.*)\"\n    },\n    \"table\": {\n      \"begin\": \"^\\\\s*\\\\|\",\n      \"end\": \"\\\\|\\\\s*$\",\n      \"name\": \"keyword.control.cucumber.table\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\w\",\n          \"name\": \"source\"\n        }\n      ]\n    },\n    \"feature_keyword\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.language.gherkin.feature\"\n        },\n        \"2\": {\n          \"name\": \"string.language.gherkin.feature.title\"\n        }\n      },\n      \"match\": \"^\\\\s*(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Особина|Функция|Функциональность|Свойство|Могућност|Özellik|Właściwość|Tính năng|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Ability|Business Need|Feature|Ability|Egenskap|Egenskab|Crikey|Característica|Arwedd):(.*)\\\\b\"\n    },\n    \"step_keyword\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.language.gherkin.feature.step\"\n        }\n      },\n      \"match\": \"^\\\\s*(En |و |Y |E |Եվ |Ya |Too right |Və |Həm |A |И |而且 |并且 |同时 |並且 |同時 |Ak |Epi |A také |Og |😂 |And |Kaj |Ja |Et que |Et qu' |Et |და |Und |Και |અને |וגם |और |तथा |És |Dan |Agus |かつ |Lan |ಮತ್ತು |'ej |latlh |그리고 |AN |Un |Ir |an |a |Мөн |Тэгээд |Ond |7 |ਅਤੇ |Aye |Oraz |Si |Și |Şi |К тому же |Также |An |A tiež |A taktiež |A zároveň |In |Ter |Och |மேலும் |மற்றும் |Һәм |Вә |మరియు |และ |Ve |І |А також |Та |اور |Ва |Và |Maar |لكن |Pero |Բայց |Peru |Yeah nah |Amma |Ancaq |Ali |Но |Però |但是 |Men |Ale |😔 |But |Sed |Kuid |Mutta |Mais que |Mais qu' |Mais |მაგ­რამ |Aber |Αλλά |પણ |אבל |पर |परन्तु |किन्तु |De |En |Tapi |Ach |Ma |しかし |但し |ただし |Nanging |Ananging |ಆದರೆ |'ach |'a |하지만 |단 |BUT |Bet |awer |mä |No |Tetapi |Гэхдээ |Харин |Ac |ਪਰ |اما |Avast! |Mas |Dar |А |Иначе |Buh |Али |Toda |Ampak |Vendar |ஆனால் |Ләкин |Әмма |కాని |แต่ |Fakat |Ama |Але |لیکن |Лекин |Бирок |Аммо |Nhưng |Ond |Dan |اذاً |ثم |Alavez |Allora |Antonces |Ապա |Entós |But at the end of the day I reckon |O halda |Zatim |То |Aleshores |Cal |那么 |那麼 |Lè sa a |Le sa a |Onda |Pak |Så |🙏 |Then |Do |Siis |Niin |Alors |Entón |Logo |მაშინ |Dann |Τότε |પછી |אז |אזי |तब |तदा |Akkor |Þá |Maka |Ansin |ならば |Njuk |Banjur |ನಂತರ |vaj |그러면 |DEN |Tad |Tada |dann |Тогаш |Togash |Kemudian |Тэгэхэд |Үүний дараа |Tha |Þa |Ða |Tha the |Þa þe |Ða ðe |ਤਦ |آنگاه |Let go and haul |Wtedy |Então |Entao |Atunci |Затем |Тогда |Dun |Den youse gotta |Онда |Tak |Potom |Nato |Potem |Takrat |Entonces |அப்பொழுது |Нәтиҗәдә |అప్పుడు |ดังนั้น |O zaman |Тоді |پھر |تب |Унда |Thì |Yna |Wanneer |متى |عندما |Cuan |Եթե |Երբ |Cuando |It's just unbelievable |Əgər |Nə vaxt ki |Kada |Когато |Quan |当 |當 |Lè |Le |Kad |Když |Når |Als |🎬 |When |Se |Kui |Kun |Quand |Lorsque |Lorsqu' |Cando |როდესაც |Wenn |Όταν |ક્યારે |כאשר |जब |कदा |Majd |Ha |Amikor |Þegar |Ketika |Nuair a |Nuair nach |Nuair ba |Nuair nár |Quando |もし |Manawa |Menawa |ಸ್ಥಿತಿಯನ್ನು |qaSDI' |만일 |만약 |WEN |Ja |Kai |wann |Кога |Koga |Apabila |Хэрэв |Tha |Þa |Ða |ਜਦੋਂ |هنگامی |Blimey! |Jeżeli |Jeśli |Gdy |Kiedy |Cand |Când |Когда |Если |Wun |Youse know like when |Када |Кад |Keď |Ak |Ko |Ce |Če |Kadar |När |எப்போது |Әгәр |ఈ పరిస్థితిలో |เมื่อ |Eğer ki |Якщо |Коли |جب |Агар |Khi |Pryd |Gegewe |بفرض |Dau |Dada |Daus |Dadas |Դիցուք |Dáu |Daos |Daes |Y'know |Tutaq ki |Verilir |Dato |Дадено |Donat |Donada |Atès |Atesa |假如 |假设 |假定 |假設 |Sipoze |Sipoze ke |Sipoze Ke |Zadan |Zadani |Zadano |Pokud |Za předpokladu |Givet |Gegeven |Stel |😐 |Given |Donitaĵo |Komence |Eeldades |Oletetaan |Soit |Etant donné que |Etant donné qu' |Etant donné |Etant donnée |Etant donnés |Etant données |Étant donné que |Étant donné qu' |Étant donné |Étant donnée |Étant donnés |Étant données |Dado |Dados |მოცემული |Angenommen |Gegeben sei |Gegeben seien |Δεδομένου |આપેલ છે |בהינתן |अगर |यदि |चूंकि |Amennyiben |Adott |Ef |Dengan |Cuir i gcás go |Cuir i gcás nach |Cuir i gcás gur |Cuir i gcás nár |Data |Dati |Date |前提 |Nalika |Nalikaning |ನೀಡಿದ |ghu' noblu' |DaH ghu' bejlu' |조건 |먼저 |I CAN HAZ |Kad |Duota |ugeholl |Дадена |Dadeno |Dadena |Diberi |Bagi |Өгөгдсөн нь |Анх |Gitt |Thurh |Þurh |Ðurh |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |با فرض |Gangway! |Zakładając |Mając |Zakładając, że |Date fiind |Dat fiind |Dată fiind |Dati fiind |Dați fiind |Daţi fiind |Допустим |Дано |Пусть |Givun |Youse know when youse got |За дато |За дате |За дати |Za dato |Za date |Za dati |Pokiaľ |Za predpokladu |Dano |Podano |Zaradi |Privzeto |கொடுக்கப்பட்ட |Әйтик |చెప్పబడినది |กำหนดให้ |Diyelim ki |Припустимо |Припустимо, що |Нехай |اگر |بالفرض |فرض کیا |Агар |Biết |Cho |Anrhegedig a |\\\\* )\"\n    },\n    \"feature_element_keyword\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.language.gherkin.feature.scenario\"\n        },\n        \"2\": {\n          \"name\": \"string.language.gherkin.scenario.title.title\"\n        }\n      },\n      \"match\": \"^\\\\s*(예|시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|例子|例|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|サンプル|سيناريو مخطط|سيناريو|امثلة|الخلفية|תרחיש|תבנית תרחיש|רקע|דוגמאות|Тарих|Сценарій|Сценарији|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Примери|Пример|Приклади|Предыстория|Предистория|Позадина|Передумова|Основа|Мисоллар|Концепт|Контекст|Значения|Örnekler|Założenia|Wharrimean is|Voorbeelden|Variantai|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Tapaukset|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenarios|Scenario Outline|Scenario Amlinellol|Scenario|Example|Scenarijus|Scenariji|Scenarijaus šablonas|Scenarijai|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Piemēri|Pavyzdžiai|Paraugs|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Juhtumid|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Exemplos|Exemples|Exemplele|Exempel|Examples|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esempi|Escenario|Escenari|Enghreifftiau|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Dis is what went down|Dasar|Contoh|Contexto|Contexte|Contesto|Condiţii|Conditii|Cobber|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Beispiele|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y'all|Achtergrond|Abstrakt Scenario|Abstract Scenario|Rule|Regla|Règle|Regel|Regra):(.*)\"\n    },\n    \"scenario_outline_variable\": {\n      \"match\": \"<[a-zA-Z0-9 _-]*>\",\n      \"name\": \"variable.other\"\n    },\n    \"strings_double_quote\": {\n      \"begin\": \"(?<![a-zA-Z0-9'])\\\"\",\n      \"end\": \"\\\"(?![a-zA-Z0-9'])\",\n      \"name\": \"string.quoted.double\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.untitled\"\n        }\n      ]\n    },\n    \"strings_single_quote\": {\n      \"begin\": \"(?<![a-zA-Z0-9\\\"])'\",\n      \"end\": \"'(?![a-zA-Z0-9\\\"])\",\n      \"name\": \"string.quoted.single\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape\"\n        }\n      ]\n    },\n    \"strings_triple_quote\": {\n      \"begin\": \"\\\"\\\"\\\".*\",\n      \"end\": \"\\\"\\\"\\\"\",\n      \"name\": \"string.quoted.single\"\n    },\n    \"tags\": {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"entity.name.type.class.tsx\"\n        }\n      },\n      \"match\": \"(@[^@\\\\r\\\\n\\\\t ]+)\"\n    }\n  },\n  \"scopeName\": \"text.gherkin.feature\",\n  \"uuid\": \"85E2C52C-9B16-4A54-81E7-6D8D3ADAEFA8\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/git-commit.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/git.tmbundle/blob/master/Syntaxes/Git%20Commit%20Message.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/git.tmbundle/commit/93897a78c6e52bef13dadc0d4091d203c5facb40\",\n  \"name\": \"git-commit\",\n  \"scopeName\": \"text.git-commit\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\A(?!# Please enter the commit message)\",\n      \"end\": \"^(?=# Please enter the commit message)\",\n      \"name\": \"meta.scope.message.git-commit\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\A(?=#)\",\n          \"end\": \"^(?!#)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(?!# Please enter the commit message)\",\n          \"end\": \"^(?=# Please enter the commit message)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\",\n              \"end\": \"^(?!\\\\G)\",\n              \"name\": \"meta.scope.subject.git-commit\",\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.$2.git-commit\"\n                    }\n                  },\n                  \"match\": \"\\\\G((fixup|squash)!)\\\\s*\"\n                },\n                {\n                  \"match\": \".{73,}$\",\n                  \"name\": \"invalid.illegal.line-too-long.git-commit\"\n                },\n                {\n                  \"match\": \".{51,}$\",\n                  \"name\": \"invalid.deprecated.line-too-long.git-commit\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^(?!# Please enter the commit message)\",\n              \"end\": \"^(?=# Please enter the commit message)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(?=# Please enter the commit message)\",\n      \"end\": \"\\\\z\",\n      \"name\": \"meta.scope.metadata.git-commit\",\n      \"patterns\": [\n        {\n          \"include\": \"#metadata\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"begin\": \"^(#)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.git-commit\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"name\": \"comment.line.number-sign.git-commit\"\n    },\n    \"metadata\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=^# Changes to be committed:)\",\n          \"end\": \"(?!\\\\G)((?=^# \\\\w)|(?!^#))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.whitespace.comment.leading.git-commit\"\n                }\n              },\n              \"contentName\": \"comment.line.number-sign.git-commit\",\n              \"end\": \"(?!\\\\G)^\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\G#\",\n                  \"name\": \"punctuation.definition.comment.git-commit\"\n                },\n                {\n                  \"match\": \"((modified|renamed):.*)$\\\\n?\",\n                  \"name\": \"markup.changed.git-commit\"\n                },\n                {\n                  \"match\": \"(new file:.*)$\\\\n?\",\n                  \"name\": \"markup.inserted.git-commit\"\n                },\n                {\n                  \"match\": \"(deleted:.*)$\\\\n?\",\n                  \"name\": \"markup.deleted.git-commit\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?=diff\\\\ \\\\-\\\\-git)\",\n          \"comment\": \"diff presented at the end of the commit message when using commit -v.\",\n          \"contentName\": \"source.diff\",\n          \"end\": \"\\\\z\",\n          \"name\": \"meta.embedded.diff.git-commit\",\n          \"patterns\": [\n            {\n              \"include\": \"source.diff\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/git-rebase.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/git.tmbundle/blob/master/Syntaxes/Git%20Rebase%20Message.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/git.tmbundle/commit/5870cf3f8abad3a6637bdf69250b5d2ded427dc4\",\n  \"name\": \"git-rebase\",\n  \"scopeName\": \"text.git-rebase\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.git-rebase\"\n        }\n      },\n      \"match\": \"^\\\\s*(#).*$\\\\n?\",\n      \"name\": \"comment.line.number-sign.git-rebase\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.git-rebase\"\n        },\n        \"2\": {\n          \"name\": \"constant.sha.git-rebase\"\n        },\n        \"3\": {\n          \"name\": \"meta.commit-message.git-rebase\"\n        }\n      },\n      \"match\": \"^\\\\s*(pick|p|reword|r|edit|e|squash|s|fixup|f|drop|d)\\\\s+([0-9a-f]+)\\\\s+(.*)$\",\n      \"name\": \"meta.commit-command.git-rebase\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.git-rebase\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        }\n      },\n      \"match\": \"^\\\\s*(exec|x)\\\\s+(.*)$\",\n      \"name\": \"meta.commit-command.git-rebase\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.git-rebase\"\n        }\n      },\n      \"match\": \"^\\\\s*(break|b)\\\\s*$\",\n      \"name\": \"meta.commit-command.git-rebase\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/gitignore.tmLanguage.json",
    "content": "{\n  \"name\": \"Ignore List\",\n  \"scopeName\": \"source.gitignore\",\n  \"fileTypes\": [\n    \"gitignore\",\n    \"git/ignore\",\n    \"git/info/exclude\",\n    \"gitignore-global\",\n    \"gitignore_global\",\n    \"gitignore.global\",\n    \"sparse-checkout\",\n    \"alexignore\",\n    \"atomignore\",\n    \"babelignore\",\n    \"coffeelintignore\",\n    \"dockerignore\",\n    \"eleventyignore\",\n    \"eslintignore\",\n    \"markdownlintignore\",\n    \"nodemonignore\",\n    \"npmignore\",\n    \"prettierignore\",\n    \"stylelintignore\",\n    \"vercelignore\",\n    \"vscodeignore\",\n    \"bazaar/ignore\",\n    \"bzrignore\",\n    \"cpyskip.txt\",\n    \"cvsignore\",\n    \"slugignore\"\n  ],\n  \"patterns\": [\n    {\n      \"include\": \"#main\"\n    }\n  ],\n  \"firstLineMatch\": \"(?x)\\n\\n# Emacs modeline\\n-\\\\*-(?i:[ \\\\t]*(?=[^:;\\\\s]+[ \\\\t]*-\\\\*-)|(?:.*?[ \\\\t;]|(?<=-\\\\*-))[ \\\\t]*mode[ \\\\t]*:[ \\\\t]*)\\n\\t(?i:git-?ignore|ignore-?list)\\n(?=[ \\\\t;]|(?<![-*])-\\\\*-).*?-\\\\*-\\n\\n|\\n\\t\\n# Vim modeline\\n(?:(?:^|[ \\\\t])(?:vi|Vi(?=m))(?:m[<=>]?[0-9]+|m)?|[ \\\\t]ex)(?=:(?=[ \\\\t]*set?[ \\\\t][^\\\\r\\\\n:]+:)|:(?![ \\\\t]*set?[ \\\\t]))\\n(?:(?:[ \\\\t]*:[ \\\\t]*|[ \\\\t])\\\\w*(?:[ \\\\t]*=(?:[^\\\\\\\\\\\\s]|\\\\\\\\.)*)?)*[ \\\\t:]\\n(?:filetype|ft|syntax)[ \\\\t]*=\\n\\t(?i:git-?ignore|ignore-?list)\\n(?=$|\\\\s|:)\",\n  \"repository\": {\n    \"main\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#cvsSyntax\"\n        },\n        {\n          \"include\": \"#magic\"\n        },\n        {\n          \"include\": \"#pattern\"\n        },\n        {\n          \"include\": \"#escape\"\n        }\n      ]\n    },\n    \"bazaarPrefixes\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier.bazaar.re-prefix.gitignore\",\n          \"match\": \"^RE(:)(?=\\\\S)\"\n        },\n        {\n          \"name\": \"keyword.operator.logical.not.negation.elevated.bazaar.gitignore\",\n          \"match\": \"^!!(?=\\\\S)\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"name\": \"comment.line.number-sign.gitignore\",\n      \"begin\": \"#\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.gitignore\"\n        }\n      }\n    },\n    \"cvsSyntax\": {\n      \"match\": \"\\\\A(syntax)(:)\\\\s+(glob)$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.assignment.glob-syntax.cvs.gitignore\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.assignment.separator.key-value.cvs.gitignore\"\n        },\n        \"3\": {\n          \"name\": \"support.constant.language.syntax-type.cvs.gitignore\"\n        }\n      }\n    },\n    \"escape\": {\n      \"name\": \"constant.character.escape.backslash.gitignore\",\n      \"match\": \"(\\\\\\\\).\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.escape.backslash.gitignore\"\n        }\n      }\n    },\n    \"magic\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.magic-signature.long.gitignore\",\n          \"begin\": \"^(:)(\\\\()(?=.*?\\\\))\",\n          \"end\": \"(?<!\\\\\\\\)\\\\)|(?=\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.signature.begin.gitignore\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.signature.begin.gitignore\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.signature.end.gitignore\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escape\"\n            },\n            {\n              \"include\": \"#magicInnards\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.magic-signature.short.gitignore\",\n          \"match\": \"^(:)([!^]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.signature.begin.gitignore\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.mnemonic.gitignore\"\n            }\n          }\n        }\n      ]\n    },\n    \"magicMnemonic\": {\n      \"patterns\": [\n        {\n          \"match\": \"-\",\n          \"name\": \"keyword.operator.logical.not.negation.gitignore\"\n        },\n        {\n          \"match\": \"!\",\n          \"name\": \"keyword.operator.unset.delete.gitignore\"\n        }\n      ]\n    },\n    \"magicInnards\": {\n      \"patterns\": [\n        {\n          \"include\": \"etc#comma\"\n        },\n        {\n          \"name\": \"meta.attribute-list.gitignore\",\n          \"begin\": \"(?:\\\\G|(?<=,|\\\\())(attr)(:)\",\n          \"end\": \"(?=,|\\\\)|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.magic-signature.$1.gitignore\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"etc#colon\"\n                }\n              ]\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"meta.attribute.gitignore\",\n              \"match\": \"(-|!)?((?:[^\\\\\\\\\\\\s=\\\\(\\\\),]|\\\\\\\\.)++)(?:(=)((?:[^\\\\\\\\\\\\s=\\\\(\\\\),]|\\\\\\\\.)*+))?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#magicMnemonic\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.attribute.gitignore\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escape\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.assignment.equals-sign.gitignore\"\n                },\n                \"4\": {\n                  \"name\": \"constant.language.other.gitignore\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escape\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.$1-attribute.gitignore\",\n          \"match\": \"(?:\\\\G|(?<=,|\\\\())(-|!)?(attr|exclude|glob|icase|literal|top)(?=,|\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#magicMnemonic\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"keyword.control.magic-signature.$2.gitignore\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.unknown-attribute.gitignore\",\n          \"match\": \"(?:\\\\G|(?<=,|\\\\())(-|!)?((?:[^\\\\\\\\=\\\\s,:\\\\)]|\\\\\\\\.)++)(?=,|\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#magicMnemonic\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"keyword.control.magic-signature.unknown.gitignore\"\n            }\n          }\n        }\n      ]\n    },\n    \"pattern\": {\n      \"name\": \"meta.pattern.gitignore\",\n      \"begin\": \"(?=[^#\\\\s])\",\n      \"end\": \"$|(?=#)\",\n      \"patterns\": [\n        {\n          \"include\": \"#bazaarPrefixes\"\n        },\n        {\n          \"include\": \"#patternInnards\"\n        }\n      ]\n    },\n    \"patternInnards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#range\"\n        },\n        {\n          \"match\": \"\\\\G!\",\n          \"name\": \"keyword.operator.logical.not.negation.gitignore\"\n        },\n        {\n          \"match\": \"\\\\*\\\\*\",\n          \"name\": \"keyword.operator.glob.wildcard.globstar.gitignore\"\n        },\n        {\n          \"match\": \"[*?]\",\n          \"name\": \"keyword.operator.glob.wildcard.gitignore\"\n        },\n        {\n          \"match\": \"/\",\n          \"name\": \"punctuation.directory.separator.meta.gitignore\"\n        },\n        {\n          \"name\": \"entity.other.file.name.gitignore\",\n          \"match\": \"[^\\\\[\\\\]\\\\\\\\*?#/\\\\s]+\"\n        }\n      ]\n    },\n    \"range\": {\n      \"name\": \"meta.character-range.gitignore\",\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]|(?=$)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.square.bracket.begin.gitignore\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.square.bracket.end.gitignore\"\n        }\n      },\n      \"contentName\": \"constant.character.class.gitignore\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"name\": \"punctuation.delimiter.range.character-set.gitignore\",\n          \"match\": \"-\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/glsl.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\n    \"vs\",\n    \"fs\",\n    \"gs\",\n    \"vsh\",\n    \"fsh\",\n    \"gsh\",\n    \"vshader\",\n    \"fshader\",\n    \"gshader\",\n    \"vert\",\n    \"frag\",\n    \"geom\",\n    \"f.glsl\",\n    \"v.glsl\",\n    \"g.glsl\"\n  ],\n  \"foldingStartMarker\": \"/\\\\*\\\\*|\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"\\\\*\\\\*/|^\\\\s*\\\\}\",\n  \"keyEquivalent\": \"^~G\",\n  \"name\": \"glsl\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(break|case|continue|default|discard|do|else|for|if|return|switch|while)\\\\b\",\n      \"name\": \"keyword.control.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(void|bool|int|uint|float|vec2|vec3|vec4|bvec2|bvec3|bvec4|ivec2|ivec2|ivec3|uvec2|uvec2|uvec3|mat2|mat3|mat4|mat2x2|mat2x3|mat2x4|mat3x2|mat3x3|mat3x4|mat4x2|mat4x3|mat4x4|sampler[1|2|3]D|samplerCube|sampler2DRect|sampler[1|2]DShadow|sampler2DRectShadow|sampler[1|2]DArray|sampler[1|2]DArrayShadow|samplerBuffer|sampler2DMS|sampler2DMSArray|struct|isampler[1|2|3]D|isamplerCube|isampler2DRect|isampler[1|2]DArray|isamplerBuffer|isampler2DMS|isampler2DMSArray|usampler[1|2|3]D|usamplerCube|usampler2DRect|usampler[1|2]DArray|usamplerBuffer|usampler2DMS|usampler2DMSArray)\\\\b\",\n      \"name\": \"storage.type.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(attribute|centroid|const|flat|in|inout|invariant|noperspective|out|smooth|uniform|varying)\\\\b\",\n      \"name\": \"storage.modifier.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(gl_BackColor|gl_BackLightModelProduct|gl_BackLightProduct|gl_BackMaterial|gl_BackSecondaryColor|gl_ClipDistance|gl_ClipPlane|gl_ClipVertex|gl_Color|gl_DepthRange|gl_DepthRangeParameters|gl_EyePlaneQ|gl_EyePlaneR|gl_EyePlaneS|gl_EyePlaneT|gl_Fog|gl_FogCoord|gl_FogFragCoord|gl_FogParameters|gl_FragColor|gl_FragCoord|gl_FragDat|gl_FragDept|gl_FrontColor|gl_FrontFacing|gl_FrontLightModelProduct|gl_FrontLightProduct|gl_FrontMaterial|gl_FrontSecondaryColor|gl_InstanceID|gl_Layer|gl_LightModel|gl_LightModelParameters|gl_LightModelProducts|gl_LightProducts|gl_LightSource|gl_LightSourceParameters|gl_MaterialParameters|gl_ModelViewMatrix|gl_ModelViewMatrixInverse|gl_ModelViewMatrixInverseTranspose|gl_ModelViewMatrixTranspose|gl_ModelViewProjectionMatrix|gl_ModelViewProjectionMatrixInverse|gl_ModelViewProjectionMatrixInverseTranspose|gl_ModelViewProjectionMatrixTranspose|gl_MultiTexCoord[0-7]|gl_Normal|gl_NormalMatrix|gl_NormalScale|gl_ObjectPlaneQ|gl_ObjectPlaneR|gl_ObjectPlaneS|gl_ObjectPlaneT|gl_Point|gl_PointCoord|gl_PointParameters|gl_PointSize|gl_Position|gl_PrimitiveIDIn|gl_ProjectionMatrix|gl_ProjectionMatrixInverse|gl_ProjectionMatrixInverseTranspose|gl_ProjectionMatrixTranspose|gl_SecondaryColor|gl_TexCoord|gl_TextureEnvColor|gl_TextureMatrix|gl_TextureMatrixInverse|gl_TextureMatrixInverseTranspose|gl_TextureMatrixTranspose|gl_Vertex|gl_VertexIDh)\\\\b\",\n      \"name\": \"support.variable.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(gl_MaxClipPlanes|gl_MaxCombinedTextureImageUnits|gl_MaxDrawBuffers|gl_MaxFragmentUniformComponents|gl_MaxLights|gl_MaxTextureCoords|gl_MaxTextureImageUnits|gl_MaxTextureUnits|gl_MaxVaryingFloats|gl_MaxVertexAttribs|gl_MaxVertexTextureImageUnits|gl_MaxVertexUniformComponents)\\\\b\",\n      \"name\": \"support.constant.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(abs|acos|all|any|asin|atan|ceil|clamp|cos|cross|degrees|dFdx|dFdy|distance|dot|equal|exp|exp2|faceforward|floor|fract|ftransform|fwidth|greaterThan|greaterThanEqual|inversesqrt|length|lessThan|lessThanEqual|log|log2|matrixCompMult|max|min|mix|mod|noise[1-4]|normalize|not|notEqual|outerProduct|pow|radians|reflect|refract|shadow1D|shadow1DLod|shadow1DProj|shadow1DProjLod|shadow2D|shadow2DLod|shadow2DProj|shadow2DProjLod|sign|sin|smoothstep|sqrt|step|tan|texture1D|texture1DLod|texture1DProj|texture1DProjLod|texture2D|texture2DLod|texture2DProj|texture2DProjLod|texture3D|texture3DLod|texture3DProj|texture3DProjLod|textureCube|textureCubeLod|transpose)\\\\b\",\n      \"name\": \"support.function.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(asm|double|enum|extern|goto|inline|long|short|sizeof|static|typedef|union|unsigned|volatile)\\\\b\",\n      \"name\": \"invalid.illegal.glsl\"\n    },\n    {\n      \"include\": \"source.c\"\n    }\n  ],\n  \"scopeName\": \"source.glsl\",\n  \"uuid\": \"D0FD1B52-F137-4FBA-A148-B8A893CD948C\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/gnuplot.tmLanguage.json",
    "content": "{\n  \"name\": \"gnuplot\",\n  \"scopeName\": \"source.gnuplot\",\n  \"uuid\": \"A75AB1C2-611C-4500-9EE4-20668B5BB465\",\n  \"fileTypes\": [\"gp\", \"plt\", \"plot\", \"gnuplot\"],\n  \"patterns\": [\n    {\n      \"name\": \"invalid.illegal.backslash.gnuplot\",\n      \"match\": \"(\\\\\\\\(?!\\\\n).*)\"\n    },\n    {\n      \"name\": \"punctuation.separator.statement.gnuplot\",\n      \"match\": \"(;)\"\n    },\n    {\n      \"include\": \"#LineComment\"\n    },\n    {\n      \"include\": \"#DataBlock\"\n    },\n    {\n      \"include\": \"#MacroExpansion\"\n    },\n    {\n      \"include\": \"#VariableDecl\"\n    },\n    {\n      \"include\": \"#ArrayDecl\"\n    },\n    {\n      \"include\": \"#FunctionDecl\"\n    },\n    {\n      \"include\": \"#ShellCommand\"\n    },\n    {\n      \"include\": \"#Command\"\n    }\n  ],\n  \"repository\": {\n    \"DataBlock\": {\n      \"name\": \"meta.datablock.gnuplot\",\n      \"begin\": \"(?x:\\n\\t\\t\\t\\t([$][A-Za-z_]\\\\w*)\\\\s*             # 1: var name\\n\\t\\t\\t\\t(<<)\\\\s*                    # 2: shift operator\\n\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*                # 3: end tag\\n\\t\\t\\t\\t(?=(\\\\#|$))                       # 4: comment or end of line\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#SpecialVariable\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"constant.language.datablock.gnuplot\"\n        }\n      },\n      \"end\": \"^(\\\\3)\\\\b(.*)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language.datablock.gnuplot\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.datablock.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#LineComment\"\n        },\n        {\n          \"include\": \"#NumberLiteral\"\n        },\n        {\n          \"include\": \"#DoubleQuotedStringLiteral\"\n        }\n      ]\n    },\n    \"MacroExpansion\": {\n      \"begin\": \"([@][A-Za-z_]\\\\w*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#SpecialVariable\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"VariableDecl\": {\n      \"name\": \"meta.variable.gnuplot\",\n      \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*                # 1: var name\\n\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t(\\\\[)\\\\s*                      # 2: opening bracket\\n\\t\\t\\t\\t\\t(.*)\\\\s*                      # 3: expression\\n\\t\\t\\t\\t\\t(\\\\])\\\\s*                      # 4: closing bracket\\n\\t\\t\\t\\t)?\\n\\t\\t\\t\\t(?=(=)(?!\\\\s*=))                  # 5: assignment\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.gnuplot\",\n          \"patterns\": [\n            {\n              \"include\": \"#InvalidVariableDecl\"\n            },\n            {\n              \"include\": \"#BuiltinVariable\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"ArrayDecl\": {\n      \"name\": \"meta.variable.gnuplot\",\n      \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t(array)\\\\s+                       # 1: array keyword\\n\\t\\t\\t\\t([A-Za-z_]\\\\w*)?                  # 2: var name\\n\\t\\t\\t\\t# Note: Handle size decl and init expression inside.\\n\\t\\t\\t\\t# TODO: Properly annotate brackets.\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type.array.gnuplot\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.gnuplot\",\n          \"patterns\": [\n            {\n              \"include\": \"#InvalidVariableDecl\"\n            },\n            {\n              \"include\": \"#BuiltinVariable\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"FunctionDecl\": {\n      \"name\": \"meta.function.gnuplot\",\n      \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*                # 1: func name\\n\\t\\t\\t\\t(                                # 2: parameter list\\n\\t\\t\\t\\t\\t(\\\\()\\\\s*                      # 3: opening parens\\n\\t\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*            # 4: arg name\\n\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t(,)\\\\s*                   # 5: comma\\n\\t\\t\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*        # 6: other args\\n\\t\\t\\t\\t\\t)*\\n\\t\\t\\t\\t\\t(\\\\))                         # 7: closing parens\\n\\t\\t\\t\\t)\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.gnuplot\",\n          \"patterns\": [\n            {\n              \"include\": \"#BuiltinFunction\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"meta.function.parameters.gnuplot\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.gnuplot\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.language.gnuplot\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.parameters.gnuplot\"\n        },\n        \"6\": {\n          \"name\": \"variable.parameter.function.language.gnuplot\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.parameters.end.gnuplot\"\n        }\n      },\n      \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"InvalidVariableDecl\": {\n      \"name\": \"invalid.illegal.variable.gnuplot\",\n      \"match\": \"\\\\b(GPVAL_\\\\w*|MOUSE_\\\\w*)\\\\b\"\n    },\n    \"ShellCommand\": {\n      \"begin\": \"(!)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.shell.gnuplot\"\n        }\n      },\n      \"end\": \"(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"name\": \"string.unquoted\",\n          \"match\": \"([^#]|\\\\\\\\(?=\\\\n))\"\n        }\n      ]\n    },\n    \"Command\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.command.gnuplot\",\n          \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tupdate\\n\\t\\t\\t\\t\\t)\\\\b\",\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\"\n        },\n        {\n          \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tbreak        |\\n\\t\\t\\t\\t\\t\\tclear        |\\n\\t\\t\\t\\t\\t\\tcontinue     |\\n\\t\\t\\t\\t\\t\\tpwd          |\\n\\t\\t\\t\\t\\t\\trefresh      |\\n\\t\\t\\t\\t\\t\\treplot       |\\n\\t\\t\\t\\t\\t\\treread       |\\n\\t\\t\\t\\t\\t\\tshell\\n\\t\\t\\t\\t\\t)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#InvalidWord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tcd           |\\n\\t\\t\\t\\t\\t\\tcall         |\\n\\t\\t\\t\\t\\t\\teval         |\\n\\t\\t\\t\\t\\t\\texit         |\\n\\t\\t\\t\\t\\t\\thelp         |\\n\\t\\t\\t\\t\\t\\thistory      |\\n\\t\\t\\t\\t\\t\\tload         |\\n\\t\\t\\t\\t\\t\\tlower        |\\n\\t\\t\\t\\t\\t\\tpause        |\\n\\t\\t\\t\\t\\t\\tprint        |\\n\\t\\t\\t\\t\\t\\tprinterr     |\\n\\t\\t\\t\\t\\t\\tquit         |\\n\\t\\t\\t\\t\\t\\traise        |\\n\\t\\t\\t\\t\\t\\tsave         |\\n\\t\\t\\t\\t\\t\\tstats        |\\n\\t\\t\\t\\t\\t\\tsystem       |\\n\\t\\t\\t\\t\\t\\ttest         |\\n\\t\\t\\t\\t\\t\\ttoggle\\n\\t\\t\\t\\t\\t)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(import)\\\\s(.+)\\\\s(from)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.gnuplot\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#FunctionDecl\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#SingleQuotedStringLiteral\"\n            },\n            {\n              \"include\": \"#DoubleQuotedStringLiteral\"\n            },\n            {\n              \"include\": \"#InvalidWord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(reset)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"name\": \"support.class.reset.gnuplot\",\n              \"match\": \"\\\\b(bind|error(state)?|session)\\\\b\"\n            },\n            {\n              \"include\": \"#InvalidWord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(undefine)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#BuiltinVariable\"\n            },\n            {\n              \"include\": \"#BuiltinFunction\"\n            },\n            {\n              \"name\": \"source.gnuplot\",\n              \"match\": \"(?<=\\\\s)([$]?[A-Za-z_]\\\\w*\\\\*?)(?=\\\\s)\"\n            },\n            {\n              \"include\": \"#InvalidWord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(if|while)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.conditional.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(\\\\{|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(else)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.conditional.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(\\\\{|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\"\n        },\n        {\n          \"begin\": \"\\\\b(do)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(\\\\{|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#ForIterationExpr\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(set)(?=\\\\s+pm3d)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.deprecated.options.gnuplot\",\n              \"match\": \"\\\\b(hidden3d|map|transparent|solid)\\\\b\"\n            },\n            {\n              \"include\": \"#SetUnsetOptions\"\n            },\n            {\n              \"include\": \"#ForIterationExpr\"\n            },\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b((un)?set)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#SetUnsetOptions\"\n            },\n            {\n              \"include\": \"#ForIterationExpr\"\n            },\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(show)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#ExtraShowOptions\"\n            },\n            {\n              \"include\": \"#SetUnsetOptions\"\n            },\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(fit|(s)?plot)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#ColumnIndexLiteral\"\n            },\n            {\n              \"include\": \"#PlotModifiers\"\n            },\n            {\n              \"include\": \"#ForIterationExpr\"\n            },\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"SetUnsetOptions\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.options.gnuplot\",\n          \"match\": \"\\\\G\\\\s*\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tclabel              |\\n\\t\\t\\t\\t\\t\\tdata                |\\n\\t\\t\\t\\t\\t\\tfunction            |\\n\\t\\t\\t\\t\\t\\thistorysize         |\\n\\t\\t\\t\\t\\t\\tmacros              |\\n\\t\\t\\t\\t\\t\\tticslevel           |\\n\\t\\t\\t\\t\\t\\tticscale            |\\n\\t\\t\\t\\t\\t\\t(style\\\\s+increment\\\\s+\\\\w+)\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.class.options.gnuplot\",\n          \"match\": \"\\\\G\\\\s*\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tangles              |\\n\\t\\t\\t\\t\\t\\tarrow               |\\n\\t\\t\\t\\t\\t\\tautoscale           |\\n\\t\\t\\t\\t\\t\\tborder              |\\n\\t\\t\\t\\t\\t\\tboxwidth            |\\n\\t\\t\\t\\t\\t\\tclip                |\\n\\t\\t\\t\\t\\t\\tcntr(label|param)   |\\n\\t\\t\\t\\t\\t\\tcolor(box|sequence)?|\\n\\t\\t\\t\\t\\t\\tcontour             |\\n\\t\\t\\t\\t\\t\\t(dash|line)type     |\\n\\t\\t\\t\\t\\t\\tdatafile            |\\n\\t\\t\\t\\t\\t\\tdecimal(sign)?      |\\n\\t\\t\\t\\t\\t\\tdgrid3d             |\\n\\t\\t\\t\\t\\t\\tdummy               |\\n\\t\\t\\t\\t\\t\\tencoding            |\\n\\t\\t\\t\\t\\t\\t(error)?bars        |\\n\\t\\t\\t\\t\\t\\tfit                 |\\n\\t\\t\\t\\t\\t\\tfontpath            |\\n\\t\\t\\t\\t\\t\\tformat              |\\n\\t\\t\\t\\t\\t\\tgrid                |\\n\\t\\t\\t\\t\\t\\thidden3d            |\\n\\t\\t\\t\\t\\t\\thistory             |\\n\\t\\t\\t\\t\\t\\t(iso)?samples       |\\n\\t\\t\\t\\t\\t\\tjitter              |\\n\\t\\t\\t\\t\\t\\tkey                 |\\n\\t\\t\\t\\t\\t\\tlabel               |\\n\\t\\t\\t\\t\\t\\tlink                |\\n\\t\\t\\t\\t\\t\\tloadpath            |\\n\\t\\t\\t\\t\\t\\tlocale              |\\n\\t\\t\\t\\t\\t\\tlogscale            |\\n\\t\\t\\t\\t\\t\\tmapping             |\\n\\t\\t\\t\\t\\t\\t[lrtb]margin        |\\n\\t\\t\\t\\t\\t\\tmargins             |\\n\\t\\t\\t\\t\\t\\tmicro               |\\n\\t\\t\\t\\t\\t\\tminus(sign)?        |\\n\\t\\t\\t\\t\\t\\tmono(chrome)?       |\\n\\t\\t\\t\\t\\t\\tmouse               |\\n\\t\\t\\t\\t\\t\\tmultiplot           |\\n\\t\\t\\t\\t\\t\\tnonlinear           |\\n\\t\\t\\t\\t\\t\\tobject              |\\n\\t\\t\\t\\t\\t\\toffsets             |\\n\\t\\t\\t\\t\\t\\torigin              |\\n\\t\\t\\t\\t\\t\\toutput              |\\n\\t\\t\\t\\t\\t\\tparametric          |\\n\\t\\t\\t\\t\\t\\t(p|r)axis           |\\n\\t\\t\\t\\t\\t\\tpm3d                |\\n\\t\\t\\t\\t\\t\\tpalette             |\\n\\t\\t\\t\\t\\t\\tpointintervalbox    |\\n\\t\\t\\t\\t\\t\\tpointsize           |\\n\\t\\t\\t\\t\\t\\tpolar               |\\n\\t\\t\\t\\t\\t\\tprint               |\\n\\t\\t\\t\\t\\t\\tpsdir               |\\n\\t\\t\\t\\t\\t\\tsize                |\\n\\t\\t\\t\\t\\t\\tstyle               |\\n\\t\\t\\t\\t\\t\\tsurface             |\\n\\t\\t\\t\\t\\t\\ttable               |\\n\\t\\t\\t\\t\\t\\tterminal            |\\n\\t\\t\\t\\t\\t\\ttermoption          |\\n\\t\\t\\t\\t\\t\\ttheta               |\\n\\t\\t\\t\\t\\t\\ttics                |\\n\\t\\t\\t\\t\\t\\ttimestamp           |\\n\\t\\t\\t\\t\\t\\ttimefmt             |\\n\\t\\t\\t\\t\\t\\ttitle               |\\n\\t\\t\\t\\t\\t\\tview                |\\n\\t\\t\\t\\t\\t\\txyplane             |\\n\\t\\t\\t\\t\\t\\tzero                |\\n\\t\\t\\t\\t\\t\\t(no)?(m)?(x|x2|y|y2|z|cb|r|t)tics  |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb)data               |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb|r)label            |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb)dtics              |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb)mtics              |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb|[rtuv])range       |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z)?zeroaxis\\n\\t\\t\\t\\t\\t)\\\\b\"\n        }\n      ]\n    },\n    \"ExtraShowOptions\": {\n      \"name\": \"support.class.options.gnuplot\",\n      \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\tall                         |\\n\\t\\t\\t\\tbind                        |\\n\\t\\t\\t\\tcolornames                  |\\n\\t\\t\\t\\tfunctions                   |\\n\\t\\t\\t\\tplot                        |\\n\\t\\t\\t\\tvariables                   |\\n\\t\\t\\t\\tversion\\n\\t\\t\\t)\\\\b\"\n    },\n    \"PlotModifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.plot.gnuplot\",\n          \"match\": \"\\\\b(thru)\\\\b\"\n        },\n        {\n          \"name\": \"storage.type.plot.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tin(dex)?            |\\n\\t\\t\\t\\t\\t\\tevery               |\\n\\t\\t\\t\\t\\t\\tus(ing)?            |\\n\\t\\t\\t\\t\\t\\twi(th)?             |\\n\\t\\t\\t\\t\\t\\tvia\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"storage.type.plot.gnuplot\",\n          \"match\": \"\\\\b(newhist(ogram)?)\\\\b\"\n        }\n      ]\n    },\n    \"InvalidWord\": {\n      \"name\": \"invalid.illegal.gnuplot\",\n      \"match\": \"([^;#\\\\\\\\[:space:]]+)\"\n    },\n    \"Expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#Literal\"\n        },\n        {\n          \"include\": \"#SpecialVariable\"\n        },\n        {\n          \"include\": \"#BuiltinVariable\"\n        },\n        {\n          \"include\": \"#BuiltinOperator\"\n        },\n        {\n          \"include\": \"#TernaryExpr\"\n        },\n        {\n          \"include\": \"#FunctionCallExpr\"\n        },\n        {\n          \"include\": \"#SummationExpr\"\n        }\n      ]\n    },\n    \"ForIterationExpr\": {\n      \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t(for)\\\\s*                    # 1: for keyword\\n\\t\\t\\t\\t(\\\\[)\\\\s*                     # 2: opening bracket\\n\\t\\t\\t\\t(?:                         #    optionally\\n\\t\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s+       # 3: var name\\n\\t\\t\\t\\t\\t(in)\\\\b                  # 4: in keyword\\n\\t\\t\\t\\t)?\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.gnuplot\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#RangeSeparators\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"variable.other.iterator.gnuplot\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.flow.gnuplot\"\n        }\n      },\n      \"end\": \"((\\\\])|(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$)))\",\n      \"endCaptures\": {\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#RangeSeparators\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        },\n        {\n          \"include\": \"#RangeSeparators\"\n        }\n      ]\n    },\n    \"SummationExpr\": {\n      \"begin\": \"\\\\b(sum)\\\\s*(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.sum.gnuplot\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#RangeSeparators\"\n            }\n          ]\n        }\n      },\n      \"end\": \"((\\\\])|(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$)))\",\n      \"endCaptures\": {\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#RangeSeparators\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        },\n        {\n          \"include\": \"#RangeSeparators\"\n        }\n      ]\n    },\n    \"FunctionCallExpr\": {\n      \"name\": \"meta.function-call.gnuplot\",\n      \"begin\": \"\\\\b([A-Za-z_]\\\\w*)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.function.gnuplot\",\n          \"patterns\": [\n            {\n              \"include\": \"#BuiltinFunction\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.arguments.begin.gnuplot\"\n        }\n      },\n      \"end\": \"((\\\\))|(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$)))\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.arguments.end.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"TernaryExpr\": {\n      \"begin\": \"(?<!\\\\?)(\\\\?)(?!\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.gnuplot\"\n        }\n      },\n      \"end\": \"((?<!:)(:)(?!:)|(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$)))\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.operator.ternary.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"RangeSeparators\": {\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.section.brackets.begin.gnuplot\",\n          \"match\": \"(\\\\[)\"\n        },\n        {\n          \"name\": \"punctuation.separator.range.gnuplot\",\n          \"match\": \"(:)\"\n        },\n        {\n          \"name\": \"punctuation.section.brackets.end.gnuplot\",\n          \"match\": \"(\\\\])\"\n        }\n      ]\n    },\n    \"BuiltinOperator\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.logical.gnuplot\",\n          \"match\": \"(&&|\\\\|\\\\|)\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.gnuplot\",\n          \"match\": \"(<<|>>|&|\\\\||\\\\^)\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.gnuplot\",\n          \"match\": \"(==|!=|<=|<|>=|>)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.gnuplot\",\n          \"match\": \"(=)\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.gnuplot\",\n          \"match\": \"(\\\\+|-|~|!)\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.gnuplot\",\n          \"match\": \"(\\\\*\\\\*|\\\\+|-|\\\\*|/|%)\"\n        },\n        {\n          \"name\": \"keyword.operator.strings.gnuplot\",\n          \"match\": \"(\\\\.|\\\\b(eq|ne)\\\\b)\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"keyword.operator.word.gnuplot\"\n            }\n          }\n        }\n      ]\n    },\n    \"BuiltinVariable\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.variable.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tFIT_LIMIT           |\\n\\t\\t\\t\\t\\t\\tFIT_MAXITER         |\\n\\t\\t\\t\\t\\t\\tFIT_START_LAMBDA    |\\n\\t\\t\\t\\t\\t\\tFIT_LAMBDA_FACTOR   |\\n\\t\\t\\t\\t\\t\\tFIT_SKIP            |\\n\\t\\t\\t\\t\\t\\tFIT_INDEX\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.constant.gnuplot\",\n          \"match\": \"\\\\b(GPVAL_\\\\w*|MOUSE_\\\\w*)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.gnuplot\",\n          \"match\": \"\\\\b(ARG[0-9C]|GPFUN_\\\\w*|FIT_\\\\w*|STATS_\\\\w*|pi|NaN)\\\\b\"\n        }\n      ]\n    },\n    \"SpecialVariable\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=[\\\\[:=])\\\\s*(\\\\*)\\\\s*(?=[:\\\\]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.language.wildcard.gnuplot\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.language.special.gnuplot\",\n          \"match\": \"(([@$])[A-Za-z_]\\\\w*)\\\\b\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.gnuplot\"\n            }\n          }\n        }\n      ]\n    },\n    \"BuiltinFunction\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.function.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tdefined\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.function.math.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tabs            |\\n\\t\\t\\t\\t\\t\\tacos           |\\n\\t\\t\\t\\t\\t\\tacosh          |\\n\\t\\t\\t\\t\\t\\tairy           |\\n\\t\\t\\t\\t\\t\\targ            |\\n\\t\\t\\t\\t\\t\\tasin           |\\n\\t\\t\\t\\t\\t\\tasinh          |\\n\\t\\t\\t\\t\\t\\tatan           |\\n\\t\\t\\t\\t\\t\\tatan2          |\\n\\t\\t\\t\\t\\t\\tatanh          |\\n\\t\\t\\t\\t\\t\\tEllipticK      |\\n\\t\\t\\t\\t\\t\\tEllipticE      |\\n\\t\\t\\t\\t\\t\\tEllipticPi     |\\n\\t\\t\\t\\t\\t\\tbesj0          |\\n\\t\\t\\t\\t\\t\\tbesj1          |\\n\\t\\t\\t\\t\\t\\tbesy0          |\\n\\t\\t\\t\\t\\t\\tbesy1          |\\n\\t\\t\\t\\t\\t\\tceil           |\\n\\t\\t\\t\\t\\t\\tcos            |\\n\\t\\t\\t\\t\\t\\tcosh           |\\n\\t\\t\\t\\t\\t\\terf            |\\n\\t\\t\\t\\t\\t\\terfc           |\\n\\t\\t\\t\\t\\t\\texp            |\\n\\t\\t\\t\\t\\t\\texpint         |\\n\\t\\t\\t\\t\\t\\tfloor          |\\n\\t\\t\\t\\t\\t\\tgamma          |\\n\\t\\t\\t\\t\\t\\tibeta          |\\n\\t\\t\\t\\t\\t\\tinverf         |\\n\\t\\t\\t\\t\\t\\tigamma         |\\n\\t\\t\\t\\t\\t\\timag           |\\n\\t\\t\\t\\t\\t\\tinvnorm        |\\n\\t\\t\\t\\t\\t\\tint            |\\n\\t\\t\\t\\t\\t\\tlambertw       |\\n\\t\\t\\t\\t\\t\\tlgamma         |\\n\\t\\t\\t\\t\\t\\tlog            |\\n\\t\\t\\t\\t\\t\\tlog10          |\\n\\t\\t\\t\\t\\t\\tnorm           |\\n\\t\\t\\t\\t\\t\\trand           |\\n\\t\\t\\t\\t\\t\\treal           |\\n\\t\\t\\t\\t\\t\\tsgn            |\\n\\t\\t\\t\\t\\t\\tsin            |\\n\\t\\t\\t\\t\\t\\tsinh           |\\n\\t\\t\\t\\t\\t\\tsqrt           |\\n\\t\\t\\t\\t\\t\\ttan            |\\n\\t\\t\\t\\t\\t\\ttanh           |\\n\\t\\t\\t\\t\\t\\tvoigt          |\\n\\t\\t\\t\\t\\t\\tcerf           |\\n\\t\\t\\t\\t\\t\\tcdawson        |\\n\\t\\t\\t\\t\\t\\tfaddeeva       |\\n\\t\\t\\t\\t\\t\\terfi           |\\n\\t\\t\\t\\t\\t\\tVP\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.function.string.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tgprintf        |\\n\\t\\t\\t\\t\\t\\tsprintf        |\\n\\t\\t\\t\\t\\t\\tstrlen         |\\n\\t\\t\\t\\t\\t\\tstrstrt        |\\n\\t\\t\\t\\t\\t\\tsubstr         |\\n\\t\\t\\t\\t\\t\\tstrftime       |\\n\\t\\t\\t\\t\\t\\tstrptime       |\\n\\t\\t\\t\\t\\t\\tsystem         |\\n\\t\\t\\t\\t\\t\\tword           |\\n\\t\\t\\t\\t\\t\\twords\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.function.other.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tcolumn         |\\n\\t\\t\\t\\t\\t\\tcolumnhead     |\\n\\t\\t\\t\\t\\t\\texists         |\\n\\t\\t\\t\\t\\t\\thsv2rgb        |\\n\\t\\t\\t\\t\\t\\tstringcolumn   |\\n\\t\\t\\t\\t\\t\\ttimecolumn     |\\n\\t\\t\\t\\t\\t\\ttm_hour        |\\n\\t\\t\\t\\t\\t\\ttm_mday        |\\n\\t\\t\\t\\t\\t\\ttm_min         |\\n\\t\\t\\t\\t\\t\\ttm_mon         |\\n\\t\\t\\t\\t\\t\\ttm_sec         |\\n\\t\\t\\t\\t\\t\\ttm_wday        |\\n\\t\\t\\t\\t\\t\\ttm_yday        |\\n\\t\\t\\t\\t\\t\\ttm_year        |\\n\\t\\t\\t\\t\\t\\ttime           |\\n\\t\\t\\t\\t\\t\\tvalid          |\\n\\t\\t\\t\\t\\t\\tvalue\\n\\t\\t\\t\\t\\t)\\\\b\"\n        }\n      ]\n    },\n    \"Literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#NumberLiteral\"\n        },\n        {\n          \"include\": \"#DeprecatedScriptArgsLiteral\"\n        },\n        {\n          \"include\": \"#SingleQuotedStringLiteral\"\n        },\n        {\n          \"include\": \"#DoubleQuotedStringLiteral\"\n        },\n        {\n          \"include\": \"#InterpolatedStringLiteral\"\n        }\n      ]\n    },\n    \"NumberLiteral\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.float.gnuplot\",\n          \"match\": \"(?x:\\n\\t\\t\\t\\t\\t\\t# .5e2 and 0.5e2\\n\\t\\t\\t\\t\\t\\t( ((\\\\b[0-9]+)|(?<!\\\\d)) )           # number or not a preceding digit\\n\\t\\t\\t\\t\\t\\t( [.][0-9]+ )                         # non-optional fractional\\n\\t\\t\\t\\t\\t\\t( [Ee][+-]?[0-9]+ )?                  # optional exponent\\n\\t\\t\\t\\t\\t)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.float.gnuplot\",\n          \"match\": \"(?x:\\n\\t\\t\\t\\t\\t\\t# 5e2 and 5.e2\\n\\t\\t\\t\\t\\t\\t( \\\\b[0-9]+ )                          # non-optional number\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(     ( [Ee][+-]?[0-9]+\\\\b )  ) |  # non-optional exponent\\n\\t\\t\\t\\t\\t\\t\\t( [.] ( [Ee][+-]?[0-9]+\\\\b )? )    # point and optional exponent\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t)(cm\\\\b|in\\\\b)?\"\n        },\n        {\n          \"name\": \"constant.numeric.hex.gnuplot\",\n          \"match\": \"\\\\b(0[Xx][0-9a-fA-F]+)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.dec.gnuplot\",\n          \"match\": \"\\\\b(0+)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.oct.gnuplot\",\n          \"match\": \"\\\\b(0[0-7]+)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"invalid.illegal.oct.gnuplot\",\n          \"match\": \"\\\\b(0[0-9]+)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.dec.gnuplot\",\n          \"match\": \"\\\\b([0-9]+)(cm|in)?\\\\b\"\n        }\n      ]\n    },\n    \"ColumnIndexLiteral\": {\n      \"name\": \"support.constant.columnindex.gnuplot\",\n      \"match\": \"([$][0-9]+)\\\\b\"\n    },\n    \"DeprecatedScriptArgsLiteral\": {\n      \"name\": \"invalid.illegal.scriptargs.gnuplot\",\n      \"match\": \"([$][0-9#])\"\n    },\n    \"SingleQuotedStringLiteral\": {\n      \"name\": \"string.quoted.single.gnuplot\",\n      \"begin\": \"(')\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.gnuplot\"\n        }\n      },\n      \"end\": \"((')(?!')|(?=(?<!\\\\\\\\)\\\\n$))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#RGBColorSpec\"\n        },\n        {\n          \"name\": \"constant.character.escape.gnuplot\",\n          \"match\": \"('')\"\n        }\n      ]\n    },\n    \"DoubleQuotedStringLiteral\": {\n      \"name\": \"string.quoted.double.gnuplot\",\n      \"begin\": \"(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.gnuplot\"\n        }\n      },\n      \"end\": \"((\\\")|(?=(?<!\\\\\\\\)\\\\n$))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#EscapedChar\"\n        },\n        {\n          \"include\": \"#RGBColorSpec\"\n        },\n        {\n          \"include\": \"#DeprecatedScriptArgsLiteral\"\n        },\n        {\n          \"include\": \"#InterpolatedStringLiteral\"\n        }\n      ]\n    },\n    \"InterpolatedStringLiteral\": {\n      \"name\": \"string.interpolated.gnuplot\",\n      \"begin\": \"(`)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.gnuplot\"\n        }\n      },\n      \"end\": \"((`)|(?=(?<!\\\\\\\\)\\\\n$))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#EscapedChar\"\n        }\n      ]\n    },\n    \"RGBColorSpec\": {\n      \"name\": \"constant.other.placeholder.gnuplot\",\n      \"match\": \"\\\\G(0x|#)(([0-9a-fA-F]{6})|([0-9a-fA-F]{8}))\\\\b\"\n    },\n    \"EscapedChar\": {\n      \"name\": \"constant.character.escape.gnuplot\",\n      \"match\": \"(\\\\\\\\.)\"\n    },\n    \"LineComment\": {\n      \"name\": \"comment.line.number-sign.gnuplot\",\n      \"begin\": \"(#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.begin.gnuplot\"\n        }\n      },\n      \"end\": \"(?=(?<!\\\\\\\\)\\\\n$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.gnuplot\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/go.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-go-syntax/blob/master/export/generated.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-go-syntax/commit/6175663a7a0e23d58ccf9aab95054cb6e5c92aff\",\n  \"name\": \"go\",\n  \"scopeName\": \"source.go\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"comment\": \"Interpreted string literals\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.go\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.go\"\n        }\n      },\n      \"name\": \"string.quoted.double.go\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        },\n        {\n          \"include\": \"#string_placeholder\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"Raw string literals\",\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.go\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.go\"\n        }\n      },\n      \"name\": \"string.quoted.raw.go\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_placeholder\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"Syntax error receiving channels\",\n      \"match\": \"<\\\\-([\\\\t ]+)chan\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.receive-channel.go\"\n        }\n      }\n    },\n    {\n      \"comment\": \"Syntax error sending channels\",\n      \"match\": \"\\\\bchan([\\\\t ]+)<-\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.send-channel.go\"\n        }\n      }\n    },\n    {\n      \"comment\": \"Syntax error using slices\",\n      \"match\": \"\\\\[\\\\](\\\\s+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.slice.go\"\n        }\n      }\n    },\n    {\n      \"comment\": \"Syntax error numeric literals\",\n      \"match\": \"\\\\b0[0-7]*[89]\\\\d*\\\\b\",\n      \"name\": \"invalid.illegal.numeric.go\"\n    },\n    {\n      \"comment\": \"Built-in functions\",\n      \"match\": \"\\\\b(append|cap|close|complex|copy|delete|imag|len|make|new|panic|print|println|real|recover)\\\\b(?=\\\\()\",\n      \"name\": \"support.function.builtin.go\"\n    },\n    {\n      \"comment\": \"Function declarations\",\n      \"match\": \"^(\\\\bfunc\\\\b)(?:\\\\s+(\\\\([^\\\\)]+\\\\)\\\\s+)?(\\\\w+)(?=\\\\())?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.function.go\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            },\n            {\n              \"include\": \"#operators\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\d\\\\w*\",\n              \"name\": \"invalid.illegal.identifier.go\"\n            },\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"entity.name.function.go\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"comment\": \"Functions\",\n      \"match\": \"(\\\\bfunc\\\\b)|(\\\\w+)(?=\\\\()\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.function.go\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\d\\\\w*\",\n              \"name\": \"invalid.illegal.identifier.go\"\n            },\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"support.function.go\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"include\": \"#numeric_literals\"\n    },\n    {\n      \"comment\": \"Language constants\",\n      \"match\": \"\\\\b(true|false|nil|iota)\\\\b\",\n      \"name\": \"constant.language.go\"\n    },\n    {\n      \"begin\": \"\\\\b(package)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.package.go\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\d\\\\w*\",\n          \"name\": \"invalid.illegal.identifier.go\"\n        },\n        {\n          \"match\": \"\\\\w+\",\n          \"name\": \"entity.name.package.go\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(type)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.type.go\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\d\\\\w*\",\n          \"name\": \"invalid.illegal.identifier.go\"\n        },\n        {\n          \"match\": \"\\\\w+\",\n          \"name\": \"entity.name.type.go\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(import)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.import.go\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"include\": \"#imports\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(var)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.var.go\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?<!var)\\\\s*(\\\\w+(?:\\\\.\\\\w+)*(?>,\\\\s*\\\\w+(?:\\\\.\\\\w+)*)*)(?=\\\\s*=(?!=))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\d\\\\w*\",\n              \"name\": \"invalid.illegal.identifier.go\"\n            },\n            {\n              \"match\": \"\\\\w+(?:\\\\.\\\\w+)*\",\n              \"name\": \"variable.other.assignment.go\",\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#delimiters\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"include\": \"#delimiters\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\b\\\\w+(?:,\\\\s*\\\\w+)*(?=\\\\s*:=)\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\d\\\\w*\",\n              \"name\": \"invalid.illegal.identifier.go\"\n            },\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"variable.other.assignment.go\"\n            },\n            {\n              \"include\": \"#delimiters\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"comment\": \"Terminators\",\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.go\"\n    },\n    {\n      \"include\": \"#brackets\"\n    },\n    {\n      \"include\": \"#delimiters\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#runes\"\n    },\n    {\n      \"include\": \"#storage_types\"\n    }\n  ],\n  \"repository\": {\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.curly.go\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.curly.go\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.round.go\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.round.go\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\[|\\\\]\",\n          \"name\": \"punctuation.definition.bracket.square.go\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.go\",\n          \"begin\": \"(\\\\/\\\\*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.go\"\n            }\n          },\n          \"end\": \"(\\\\*\\\\/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.go\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.double-slash.go\",\n          \"begin\": \"(\\\\/\\\\/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.go\"\n            }\n          },\n          \"end\": \"(?:\\\\n|$)\"\n        }\n      ]\n    },\n    \"delimiters\": {\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.other.comma.go\"\n        },\n        {\n          \"match\": \"\\\\.(?!\\\\.\\\\.)\",\n          \"name\": \"punctuation.other.period.go\"\n        },\n        {\n          \"match\": \":(?!=)\",\n          \"name\": \"punctuation.other.colon.go\"\n        }\n      ]\n    },\n    \"imports\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?!\\\\s+\\\")[^\\\\s]*)?\\\\s*((\\\")([^\\\"]*)(\\\"))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.alias.import.go\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.double.go\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.begin.go\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.import.go\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.end.go\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.imports.begin.bracket.round.go\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.imports.end.bracket.round.go\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#imports\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Flow control keywords\",\n          \"match\": \"\\\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\\\b\",\n          \"name\": \"keyword.control.go\"\n        },\n        {\n          \"match\": \"\\\\bchan\\\\b\",\n          \"name\": \"keyword.channel.go\"\n        },\n        {\n          \"match\": \"\\\\bconst\\\\b\",\n          \"name\": \"keyword.const.go\"\n        },\n        {\n          \"match\": \"\\\\bfunc\\\\b\",\n          \"name\": \"keyword.function.go\"\n        },\n        {\n          \"match\": \"\\\\binterface\\\\b\",\n          \"name\": \"keyword.interface.go\"\n        },\n        {\n          \"match\": \"\\\\bmap\\\\b\",\n          \"name\": \"keyword.map.go\"\n        },\n        {\n          \"match\": \"\\\\bstruct\\\\b\",\n          \"name\": \"keyword.struct.go\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"comment\": \"Note that the order here is very important!\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\*|&)(?=\\\\w)\",\n          \"name\": \"keyword.operator.address.go\"\n        },\n        {\n          \"match\": \"<\\\\-\",\n          \"name\": \"keyword.operator.channel.go\"\n        },\n        {\n          \"match\": \"\\\\-\\\\-\",\n          \"name\": \"keyword.operator.decrement.go\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.go\"\n        },\n        {\n          \"match\": \"(==|!=|<=|>=|<(?!<)|>(?!>))\",\n          \"name\": \"keyword.operator.comparison.go\"\n        },\n        {\n          \"match\": \"(&&|\\\\|\\\\||!)\",\n          \"name\": \"keyword.operator.logical.go\"\n        },\n        {\n          \"match\": \"(=|\\\\+=|\\\\-=|\\\\|=|\\\\^=|\\\\*=|/=|:=|%=|<<=|>>=|&\\\\^=|&=)\",\n          \"name\": \"keyword.operator.assignment.go\"\n        },\n        {\n          \"match\": \"(\\\\+|\\\\-|\\\\*|/|%)\",\n          \"name\": \"keyword.operator.arithmetic.go\"\n        },\n        {\n          \"match\": \"(&(?!\\\\^)|\\\\||\\\\^|&\\\\^|<<|>>)\",\n          \"name\": \"keyword.operator.arithmetic.bitwise.go\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\\\\.\",\n          \"name\": \"keyword.operator.ellipsis.go\"\n        }\n      ]\n    },\n    \"runes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.go\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.go\"\n            }\n          },\n          \"name\": \"string.quoted.rune.go\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G(\\\\\\\\([0-7]{3}|[abfnrtv\\\\\\\\'\\\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})|.)(?=')\",\n              \"name\": \"constant.other.rune.go\"\n            },\n            {\n              \"match\": \"[^']+\",\n              \"name\": \"invalid.illegal.unknown-rune.go\"\n            }\n          ]\n        }\n      ]\n    },\n    \"storage_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bbool\\\\b\",\n          \"name\": \"storage.type.boolean.go\"\n        },\n        {\n          \"match\": \"\\\\bbyte\\\\b\",\n          \"name\": \"storage.type.byte.go\"\n        },\n        {\n          \"match\": \"\\\\berror\\\\b\",\n          \"name\": \"storage.type.error.go\"\n        },\n        {\n          \"match\": \"\\\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\\\b\",\n          \"name\": \"storage.type.numeric.go\"\n        },\n        {\n          \"match\": \"\\\\brune\\\\b\",\n          \"name\": \"storage.type.rune.go\"\n        },\n        {\n          \"match\": \"\\\\bstring\\\\b\",\n          \"name\": \"storage.type.string.go\"\n        },\n        {\n          \"match\": \"\\\\buintptr\\\\b\",\n          \"name\": \"storage.type.uintptr.go\"\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\([0-7]{3}|[abfnrtv\\\\\\\\'\\\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})\",\n          \"name\": \"constant.character.escape.go\"\n        },\n        {\n          \"match\": \"\\\\\\\\[^0-7xuUabfnrtv\\\\'\\\"]\",\n          \"name\": \"invalid.illegal.unknown-escape.go\"\n        }\n      ]\n    },\n    \"string_placeholder\": {\n      \"patterns\": [\n        {\n          \"match\": \"%(\\\\[\\\\d+\\\\])?([\\\\+#\\\\-0\\\\x20]{,2}((\\\\d+|\\\\*)?(\\\\.?(\\\\d+|\\\\*|(\\\\[\\\\d+\\\\])\\\\*?)?(\\\\[\\\\d+\\\\])?)?))?[vT%tbcdoqxXUbeEfFgGspw]\",\n          \"name\": \"constant.other.placeholder.go\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\w+(?:,\\\\s*\\\\w+)*)(\\\\s+\\\\*?\\\\w+(?:\\\\.\\\\w+)?\\\\s*)?(?=\\\\s*=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\d\\\\w*\",\n                  \"name\": \"invalid.illegal.identifier.go\"\n                },\n                {\n                  \"match\": \"\\\\w+\",\n                  \"name\": \"variable.other.assignment.go\"\n                },\n                {\n                  \"include\": \"#delimiters\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\w+(?:,\\\\s*\\\\w+)*)(\\\\s+(\\\\[(\\\\d*|\\\\.\\\\.\\\\.)\\\\])*\\\\*?(<-)?\\\\w+(?:\\\\.\\\\w+)?\\\\s*[^=].*)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\d\\\\w*\",\n                  \"name\": \"invalid.illegal.identifier.go\"\n                },\n                {\n                  \"match\": \"\\\\w+\",\n                  \"name\": \"variable.other.declaration.go\"\n                },\n                {\n                  \"include\": \"#delimiters\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variables.begin.bracket.round.go\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variables.end.bracket.round.go\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"numeric_literals\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.])|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"(?:\\\\n|$)\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?:(?:(?:(?:\\\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?(?:(?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?(i(?!\\\\w))?(?:\\\\n|$)|\\\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\\\w))?(?:\\\\n|$))|\\\\G((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?:(?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?(?<!_)([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[xX])((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\\\w))?(?:\\\\n|$))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.decimal.point.go\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.go\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.go\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.go\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.exponent.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"11\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"12\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"13\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.go\"\n                    },\n                    \"14\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.go\"\n                    },\n                    \"15\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.go\"\n                    },\n                    \"16\": {\n                      \"name\": \"constant.numeric.exponent.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"17\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"18\": {\n                      \"name\": \"constant.numeric.decimal.point.go\"\n                    },\n                    \"19\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"20\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"21\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.go\"\n                    },\n                    \"22\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.go\"\n                    },\n                    \"23\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.go\"\n                    },\n                    \"24\": {\n                      \"name\": \"constant.numeric.exponent.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"25\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"26\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.go\"\n                    },\n                    \"27\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"28\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"29\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\"\n                    },\n                    \"30\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"31\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"32\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.go\"\n                    },\n                    \"33\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.go\"\n                    },\n                    \"34\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.go\"\n                    },\n                    \"35\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"36\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"37\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.go\"\n                    },\n                    \"38\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"39\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"40\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.go\"\n                    },\n                    \"41\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.go\"\n                    },\n                    \"42\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.go\"\n                    },\n                    \"43\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"44\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"45\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.go\"\n                    },\n                    \"46\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\"\n                    },\n                    \"47\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"48\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"49\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.go\"\n                    },\n                    \"50\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.go\"\n                    },\n                    \"51\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.go\"\n                    },\n                    \"52\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"53\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:(?:\\\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\\\w))?(?:\\\\n|$)|(\\\\G0[bB])_?([01](?:[01]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[oO]?)_?((?:[0-7]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))+)(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\\\w))?(?:\\\\n|$))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.binary.go\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.binary.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.octal.go\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.octal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"12\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.go\"\n                    },\n                    \"13\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"15\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.])|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.go\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/graphql.tmLanguage.json",
    "content": "{\n  \"name\": \"graphql\",\n  \"scopeName\": \"source.graphql\",\n  \"fileTypes\": [\"graphql\", \"graphqls\", \"gql\", \"graphcool\"],\n  \"patterns\": [\n    {\n      \"include\": \"#graphql\"\n    }\n  ],\n  \"repository\": {\n    \"graphql\": {\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-fragment-definition\"\n        },\n        {\n          \"include\": \"#graphql-directive-definition\"\n        },\n        {\n          \"include\": \"#graphql-type-interface\"\n        },\n        {\n          \"include\": \"#graphql-enum\"\n        },\n        {\n          \"include\": \"#graphql-scalar\"\n        },\n        {\n          \"include\": \"#graphql-union\"\n        },\n        {\n          \"include\": \"#graphql-schema\"\n        },\n        {\n          \"include\": \"#graphql-operation-def\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-operation-def\": {\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-query-mutation\"\n        },\n        {\n          \"include\": \"#graphql-name\"\n        },\n        {\n          \"include\": \"#graphql-variable-definitions\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        }\n      ]\n    },\n    \"graphql-fragment-definition\": {\n      \"name\": \"meta.fragment.graphql\",\n      \"begin\": \"\\\\s*(?:(\\\\bfragment\\\\b)\\\\s*([_A-Za-z][_0-9A-Za-z]*)?\\\\s*(?:(\\\\bon\\\\b)\\\\s*([_A-Za-z][_0-9A-Za-z]*)))\",\n      \"end\": \"(?<=})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.fragment.graphql\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.fragment.graphql\"\n        },\n        \"3\": {\n          \"name\": \"keyword.on.graphql\"\n        },\n        \"4\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-query-mutation\": {\n      \"match\": \"\\\\s*\\\\b(query|mutation)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operation.graphql\"\n        }\n      }\n    },\n    \"graphql-type-interface\": {\n      \"name\": \"meta.type.interface.graphql\",\n      \"begin\": \"\\\\s*\\\\b(?:(extends?)?\\\\b\\\\s*\\\\b(type)|(interface)|(input))\\\\b\\\\s*([_A-Za-z][_0-9A-Za-z]*)?\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.type.graphql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.type.graphql\"\n        },\n        \"3\": {\n          \"name\": \"keyword.interface.graphql\"\n        },\n        \"4\": {\n          \"name\": \"keyword.input.graphql\"\n        },\n        \"5\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*\\\\b(implements)\\\\b\\\\s*\",\n          \"end\": \"\\\\s*(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.implements.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.type.graphql\"\n                }\n              }\n            },\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-directive\"\n            },\n            {\n              \"include\": \"#graphql-ampersand\"\n            },\n            {\n              \"include\": \"#graphql-comma\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-type-object\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-ignore-spaces\"\n        }\n      ]\n    },\n    \"graphql-ignore-spaces\": {\n      \"match\": \"\\\\s*\"\n    },\n    \"graphql-type-object\": {\n      \"name\": \"meta.type.object.graphql\",\n      \"begin\": \"\\\\s*({)\",\n      \"end\": \"\\\\s*(})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.operation.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.operation.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-object-type\"\n        },\n        {\n          \"include\": \"#graphql-type-definition\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-type-definition\": {\n      \"comment\": \"key (optionalArgs): Type\",\n      \"begin\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\\\s*\\\\(|:)\",\n      \"end\": \"(?=\\\\s*(([_A-Za-z][_0-9A-Za-z]*)\\\\s*(\\\\(|:)|(})))|\\\\s*(,)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"5\": {\n          \"name\": \"punctuation.comma.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-variable-definitions\"\n        },\n        {\n          \"include\": \"#graphql-type-object\"\n        },\n        {\n          \"include\": \"#graphql-colon\"\n        },\n        {\n          \"include\": \"#graphql-input-types\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-schema\": {\n      \"begin\": \"\\\\s*\\\\b(schema)\\\\b\",\n      \"end\": \"(?<=})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.schema.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*({)\",\n          \"end\": \"\\\\s*(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.operation.graphql\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.operation.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\\\s*\\\\(|:)\",\n              \"end\": \"(?=\\\\s*(([_A-Za-z][_0-9A-Za-z]*)\\\\s*(\\\\(|:)|(})))|\\\\s*(,)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.arguments.graphql\"\n                }\n              },\n              \"endCaptures\": {\n                \"5\": {\n                  \"name\": \"punctuation.comma.graphql\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"support.type.graphql\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#graphql-comment\"\n                },\n                {\n                  \"include\": \"#graphql-description-docstring\"\n                },\n                {\n                  \"include\": \"#graphql-description-singleline\"\n                },\n                {\n                  \"include\": \"#graphql-colon\"\n                },\n                {\n                  \"include\": \"#graphql-skip-newlines\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-skip-newlines\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-comment\": {\n      \"patterns\": [\n        {\n          \"comment\": \"need to prefix comment space with a scope else Atom's reflow cmd doesn't work\",\n          \"name\": \"comment.line.graphql.js\",\n          \"match\": \"(\\\\s*)(#).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.graphql\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.graphql.js\",\n          \"begin\": \"(\\\"\\\"\\\")\",\n          \"end\": \"(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.graphql\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.graphql.js\",\n          \"begin\": \"(\\\")\",\n          \"end\": \"(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.graphql\"\n            }\n          }\n        }\n      ]\n    },\n    \"graphql-description-singleline\": {\n      \"name\": \"comment.line.number-sign.graphql\",\n      \"match\": \"#(?=([^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$).*$\"\n    },\n    \"graphql-description-docstring\": {\n      \"name\": \"comment.block.graphql\",\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"end\": \"\\\"\\\"\\\"\"\n    },\n    \"graphql-variable-definitions\": {\n      \"begin\": \"\\\\s*(\\\\()\",\n      \"end\": \"\\\\s*(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-variable-definition\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-variable-definition\": {\n      \"comment\": \"variable: type = value,.... which may be a list\",\n      \"name\": \"meta.variables.graphql\",\n      \"begin\": \"\\\\s*(\\\\$?[_A-Za-z][_0-9A-Za-z]*)(?=\\\\s*\\\\(|:)\",\n      \"end\": \"(?=\\\\s*((\\\\$?[_A-Za-z][_0-9A-Za-z]*)\\\\s*(\\\\(|:)|(}|\\\\))))|\\\\s*(,)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"5\": {\n          \"name\": \"punctuation.comma.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-colon\"\n        },\n        {\n          \"include\": \"#graphql-input-types\"\n        },\n        {\n          \"include\": \"#graphql-variable-assignment\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-input-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-scalar-type\"\n        },\n        {\n          \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\\\s*(!))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.graphql\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nulltype.graphql\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.type.list.graphql\",\n          \"begin\": \"\\\\s*(\\\\[)\",\n          \"end\": \"\\\\s*(\\\\])(?:\\\\s*(!))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.brace.square.graphql\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nulltype.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-input-types\"\n            },\n            {\n              \"include\": \"#graphql-comma\"\n            },\n            {\n              \"include\": \"#literal-quasi-embedded\"\n            }\n          ]\n        }\n      ]\n    },\n    \"graphql-scalar\": {\n      \"match\": \"\\\\s*\\\\b(scalar)\\\\b\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.scalar.graphql\"\n        },\n        \"2\": {\n          \"name\": \"entity.scalar.graphql\"\n        }\n      }\n    },\n    \"graphql-scalar-type\": {\n      \"match\": \"\\\\s*\\\\b(Int|Float|String|Boolean|ID)\\\\b(?:\\\\s*(!))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.builtin.graphql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.nulltype.graphql\"\n        }\n      }\n    },\n    \"graphql-variable-assignment\": {\n      \"begin\": \"\\\\s(=)\",\n      \"end\": \"(?=[\\n,)])\",\n      \"applyEndPatternLast\": 1,\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.assignment.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-value\"\n        }\n      ]\n    },\n    \"graphql-comma\": {\n      \"match\": \"\\\\s*(,)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.comma.graphql\"\n        }\n      }\n    },\n    \"graphql-ampersand\": {\n      \"match\": \"\\\\s*(&)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.logical.graphql\"\n        }\n      }\n    },\n    \"graphql-colon\": {\n      \"match\": \"\\\\s*(:)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.colon.graphql\"\n        }\n      }\n    },\n    \"graphql-union-mark\": {\n      \"match\": \"\\\\s*(\\\\|)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.union.graphql\"\n        }\n      }\n    },\n    \"graphql-name\": {\n      \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.graphql\"\n        }\n      }\n    },\n    \"graphql-directive\": {\n      \"begin\": \"\\\\s*((@)\\\\s*([_A-Za-z][_0-9A-Za-z]*))\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.directive.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-arguments\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-directive-definition\": {\n      \"begin\": \"\\\\s*(\\\\bdirective\\\\b)\\\\s*(@[_A-Za-z][_0-9A-Za-z]*)\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.graphql\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.directive.graphql\"\n        },\n        \"3\": {\n          \"name\": \"keyword.on.graphql\"\n        },\n        \"4\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-variable-definitions\"\n        },\n        {\n          \"begin\": \"\\\\s*(\\\\bon\\\\b)\\\\s*([_A-Za-z]*)\",\n          \"end\": \"(?=.)\",\n          \"applyEndPatternLast\": 1,\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.on.graphql\"\n            },\n            \"2\": {\n              \"name\": \"support.type.location.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-skip-newlines\"\n            },\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#literal-quasi-embedded\"\n            },\n            {\n              \"match\": \"\\\\s*(\\\\|)\\\\s*([_A-Za-z]*)\",\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"support.type.location.graphql\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-selection-set\": {\n      \"name\": \"meta.selectionset.graphql\",\n      \"begin\": \"\\\\s*({)\",\n      \"end\": \"\\\\s*(})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.operation.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.operation.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-field\"\n        },\n        {\n          \"include\": \"#graphql-fragment-spread\"\n        },\n        {\n          \"include\": \"#graphql-inline-fragment\"\n        },\n        {\n          \"include\": \"#graphql-comma\"\n        },\n        {\n          \"include\": \"#native-interpolation\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-field\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.alias.graphql\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.colon.graphql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.graphql\"\n            }\n          }\n        },\n        {\n          \"include\": \"#graphql-arguments\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-fragment-spread\": {\n      \"begin\": \"\\\\s*(\\\\.\\\\.\\\\.)\\\\s*(?!\\\\bon\\\\b)([_A-Za-z][_0-9A-Za-z]*)\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.spread.graphql\"\n        },\n        \"2\": {\n          \"name\": \"variable.fragment.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-inline-fragment\": {\n      \"begin\": \"\\\\s*(\\\\.\\\\.\\\\.)\\\\s*(?:(\\\\bon\\\\b)\\\\s*([_A-Za-z][_0-9A-Za-z]*))?\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.spread.graphql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.on.graphql\"\n        },\n        \"3\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-arguments\": {\n      \"name\": \"meta.arguments.graphql\",\n      \"begin\": \"\\\\s*(\\\\()\",\n      \"end\": \"\\\\s*(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.directive.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.directive.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"begin\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\\\s*(:))\",\n          \"end\": \"(?=\\\\s*(?:(?:([_A-Za-z][_0-9A-Za-z]*)\\\\s*(:))|\\\\)))|\\\\s*(,)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.graphql\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.colon.graphql\"\n            }\n          },\n          \"endCaptures\": {\n            \"3\": {\n              \"name\": \"punctuation.comma.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-directive\"\n            },\n            {\n              \"include\": \"#graphql-value\"\n            },\n            {\n              \"include\": \"#graphql-skip-newlines\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-variable-name\": {\n      \"match\": \"\\\\s*(\\\\$[_A-Za-z][_0-9A-Za-z]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.graphql\"\n        }\n      }\n    },\n    \"graphql-float-value\": {\n      \"match\": \"\\\\s*(-?(0|[1-9][0-9]*)(\\\\.[0-9]+)?((e|E)(\\\\+|-)?[0-9]+)?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.float.graphql\"\n        }\n      }\n    },\n    \"graphql-boolean-value\": {\n      \"match\": \"\\\\s*\\\\b(true|false)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.language.boolean.graphql\"\n        }\n      }\n    },\n    \"graphql-null-value\": {\n      \"match\": \"\\\\s*\\\\b(null)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.language.null.graphql\"\n        }\n      }\n    },\n    \"graphql-string-value\": {\n      \"contentName\": \"string.quoted.double.graphql\",\n      \"begin\": \"\\\\s*+((\\\"))\",\n      \"end\": \"\\\\s*+(?:((\\\"))|(\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.quoted.double.graphql\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.quoted.double.graphql\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.end.graphql\"\n        },\n        \"3\": {\n          \"name\": \"invalid.illegal.newline.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-string-content\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-string-content\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.graphql\",\n          \"match\": \"\\\\\\\\[/'\\\"\\\\\\\\nrtbf]\"\n        },\n        {\n          \"name\": \"constant.character.escape.graphql\",\n          \"match\": \"\\\\\\\\u([0-9a-fA-F]{4})\"\n        }\n      ]\n    },\n    \"graphql-enum\": {\n      \"name\": \"meta.enum.graphql\",\n      \"begin\": \"\\\\s*+\\\\b(enum)\\\\b\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n      \"end\": \"(?<=})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.enum.graphql\"\n        },\n        \"2\": {\n          \"name\": \"support.type.enum.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.object.graphql\",\n          \"begin\": \"\\\\s*({)\",\n          \"end\": \"\\\\s*(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.operation.graphql\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.operation.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-object-type\"\n            },\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-directive\"\n            },\n            {\n              \"include\": \"#graphql-enum-value\"\n            },\n            {\n              \"include\": \"#literal-quasi-embedded\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        }\n      ]\n    },\n    \"graphql-enum-value\": {\n      \"name\": \"constant.character.enum.graphql\",\n      \"match\": \"\\\\s*(?!=\\\\b(true|false|null)\\\\b)([_A-Za-z][_0-9A-Za-z]*)\"\n    },\n    \"graphql-value\": {\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-variable-name\"\n        },\n        {\n          \"include\": \"#graphql-float-value\"\n        },\n        {\n          \"include\": \"#graphql-string-value\"\n        },\n        {\n          \"include\": \"#graphql-boolean-value\"\n        },\n        {\n          \"include\": \"#graphql-null-value\"\n        },\n        {\n          \"include\": \"#graphql-enum-value\"\n        },\n        {\n          \"include\": \"#graphql-list-value\"\n        },\n        {\n          \"include\": \"#graphql-object-value\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-list-value\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.listvalues.graphql\",\n          \"begin\": \"\\\\s*+(\\\\[)\",\n          \"end\": \"\\\\s*(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.square.graphql\"\n            }\n          },\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.square.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-value\"\n            }\n          ]\n        }\n      ]\n    },\n    \"graphql-object-value\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.objectvalues.graphql\",\n          \"begin\": \"\\\\s*+({)\",\n          \"end\": \"\\\\s*(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.curly.graphql\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.curly.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-object-field\"\n            },\n            {\n              \"include\": \"#graphql-value\"\n            }\n          ]\n        }\n      ]\n    },\n    \"graphql-object-field\": {\n      \"match\": \"\\\\s*(([_A-Za-z][_0-9A-Za-z]*))\\\\s*(:)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.object.key.graphql\"\n        },\n        \"2\": {\n          \"name\": \"string.unquoted.graphql\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.graphql\"\n        }\n      }\n    },\n    \"graphql-union\": {\n      \"begin\": \"\\\\s*\\\\b(union)\\\\b\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.union.graphql\"\n        },\n        \"2\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*(=)\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n          \"end\": \"(?=.)\",\n          \"applyEndPatternLast\": 1,\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.assignment.graphql\"\n            },\n            \"2\": {\n              \"name\": \"support.type.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-skip-newlines\"\n            },\n            {\n              \"include\": \"#literal-quasi-embedded\"\n            },\n            {\n              \"match\": \"\\\\s*(\\\\|)\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.or.graphql\"\n                },\n                \"2\": {\n                  \"name\": \"support.type.graphql\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"native-interpolation\": {\n      \"name\": \"native.interpolation\",\n      \"begin\": \"\\\\s*(\\\\${)\",\n      \"end\": \"(})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.substitution.begin\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.substitution.end\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        },\n        {\n          \"include\": \"source.ts\"\n        },\n        {\n          \"include\": \"source.js.jsx\"\n        },\n        {\n          \"include\": \"source.tsx\"\n        }\n      ]\n    },\n    \"graphql-skip-newlines\": {\n      \"match\": \"\\\\s*\\n\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/groovy.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/groovy.tmbundle/blob/master/Syntaxes/Groovy.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/groovy.tmbundle/commit/85d8f7c97ae473ccb9473f6c8d27e4ec957f4be1\",\n  \"name\": \"groovy\",\n  \"scopeName\": \"source.groovy\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.groovy\"\n        }\n      },\n      \"match\": \"^(#!).+$\\\\n\",\n      \"name\": \"comment.line.hashbang.groovy\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.package.groovy\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.package.groovy\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"match\": \"^\\\\s*(package)\\\\b(?:\\\\s*([^ ;$]+)\\\\s*(;)?)?\",\n      \"name\": \"meta.package.groovy\"\n    },\n    {\n      \"begin\": \"(import static)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.static.groovy\"\n        }\n      },\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.groovy\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.groovy\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"contentName\": \"storage.modifier.import.groovy\",\n      \"end\": \"\\\\s*(?:$|(?=%>)(;))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"name\": \"meta.import.groovy\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.groovy\"\n        },\n        {\n          \"match\": \"\\\\s\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.groovy\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(import)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.groovy\"\n        }\n      },\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.groovy\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.groovy\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"contentName\": \"storage.modifier.import.groovy\",\n      \"end\": \"\\\\s*(?:$|(?=%>)|(;))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"name\": \"meta.import.groovy\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.groovy\"\n        },\n        {\n          \"match\": \"\\\\s\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.groovy\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.groovy\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.import.static.groovy\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.import.groovy\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"match\": \"^\\\\s*(import)(?:\\\\s+(static)\\\\s+)\\\\b(?:\\\\s*([^ ;$]+)\\\\s*(;)?)?\",\n      \"name\": \"meta.import.groovy\"\n    },\n    {\n      \"include\": \"#groovy\"\n    }\n  ],\n  \"repository\": {\n    \"annotations\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!\\\\.)(@[^ (]+)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.annotation.groovy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.annotation-arguments.begin.groovy\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation-arguments.end.groovy\"\n            }\n          },\n          \"name\": \"meta.declaration.annotation.groovy\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.other.key.groovy\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.groovy\"\n                }\n              },\n              \"match\": \"(\\\\w*)\\\\s*(=)\"\n            },\n            {\n              \"include\": \"#values\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.definition.seperator.groovy\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\.)@\\\\S+\",\n          \"name\": \"storage.type.annotation.groovy\"\n        }\n      ]\n    },\n    \"anonymous-classes-and-new\": {\n      \"begin\": \"\\\\bnew\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.new.groovy\"\n        }\n      },\n      \"end\": \"(?<=\\\\)|\\\\])(?!\\\\s*{)|(?<=})|(?=[;])|$\",\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\w+)\\\\s*(?=\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.groovy\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*(?:,|;|\\\\)))|$\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"end\": \"(?=})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\w.*\\\\(?)\",\n          \"end\": \"(?<=\\\\))|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.groovy\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"end\": \"}\",\n          \"name\": \"meta.inner-class.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"braces\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#groovy-code\"\n        }\n      ]\n    },\n    \"class\": {\n      \"begin\": \"(?=\\\\w?[\\\\w\\\\s]*(?:class|(?:@)?interface|enum)\\\\s+\\\\w+)\",\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.class.end.groovy\"\n        }\n      },\n      \"name\": \"meta.definition.class.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.groovy\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.groovy\"\n            }\n          },\n          \"match\": \"(class|(?:@)?interface|enum)\\\\s+(\\\\w+)\",\n          \"name\": \"meta.class.identifier.groovy\"\n        },\n        {\n          \"begin\": \"extends\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.extends.groovy\"\n            }\n          },\n          \"end\": \"(?={|implements)\",\n          \"name\": \"meta.definition.class.inherited.classes.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(implements)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.groovy\"\n            }\n          },\n          \"end\": \"(?=\\\\s*extends|\\\\{)\",\n          \"name\": \"meta.definition.class.implemented.interfaces.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"end\": \"(?=})\",\n          \"name\": \"meta.class.body.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#enum-values\"\n        },\n        {\n          \"include\": \"#constructors\"\n        },\n        {\n          \"include\": \"#groovy\"\n        }\n      ]\n    },\n    \"closures\": {\n      \"begin\": \"\\\\{(?=.*?->)\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\{)(?=[^\\\\}]*?->)\",\n          \"end\": \"->\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.groovy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?!->)\",\n              \"end\": \"(?=->)\",\n              \"name\": \"meta.closure.parameters.groovy\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?!,|->)\",\n                  \"end\": \"(?=,|->)\",\n                  \"name\": \"meta.closure.parameter.groovy\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"=\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"keyword.operator.assignment.groovy\"\n                        }\n                      },\n                      \"end\": \"(?=,|->)\",\n                      \"name\": \"meta.parameter.default.groovy\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#groovy-code\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#parameters\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=[^}])\",\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#groovy-code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comment-block\": {\n      \"begin\": \"/\\\\*\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.groovy\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.groovy\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.groovy\"\n            }\n          },\n          \"match\": \"/\\\\*\\\\*/\",\n          \"name\": \"comment.block.empty.groovy\"\n        },\n        {\n          \"include\": \"text.html.javadoc\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.groovy\"\n            }\n          },\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.groovy\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([A-Z][A-Z0-9_]+)\\\\b\",\n          \"name\": \"constant.other.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(true|false|null)\\\\b\",\n          \"name\": \"constant.language.groovy\"\n        }\n      ]\n    },\n    \"constructors\": {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"(?<=;|^)(?=\\\\s*(?:(?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)\\\\s+)*[A-Z]\\\\w*\\\\()\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-content\"\n        }\n      ]\n    },\n    \"enum-values\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=;|^)\\\\s*\\\\b([A-Z0-9_]+)(?=\\\\s*(?:,|;|}|\\\\(|$))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"constant.enum.name.groovy\"\n            }\n          },\n          \"end\": \",|;|(?=})|^(?!\\\\s*\\\\w+\\\\s*(?:,|$))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"name\": \"meta.enum.value.groovy\",\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.seperator.parameter.groovy\"\n                },\n                {\n                  \"include\": \"#groovy-code\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"groovy\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#methods\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#groovy-code\"\n        }\n      ]\n    },\n    \"groovy-code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#groovy-code-minus-map-keys\"\n        },\n        {\n          \"include\": \"#map-keys\"\n        }\n      ]\n    },\n    \"groovy-code-minus-map-keys\": {\n      \"comment\": \"In some situations, maps can't be declared without enclosing []'s, \\n\\t\\t\\t\\ttherefore we create a collection of everything but that\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#support-functions\"\n        },\n        {\n          \"include\": \"#keyword-language\"\n        },\n        {\n          \"include\": \"#values\"\n        },\n        {\n          \"include\": \"#anonymous-classes-and-new\"\n        },\n        {\n          \"include\": \"#keyword-operator\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#closures\"\n        },\n        {\n          \"include\": \"#braces\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"include\": \"#keyword-operator\"\n        },\n        {\n          \"include\": \"#keyword-language\"\n        }\n      ]\n    },\n    \"keyword-language\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(try|catch|finally|throw)\\\\b\",\n          \"name\": \"keyword.control.exception.groovy\"\n        },\n        {\n          \"match\": \"\\\\b((?<!\\\\.)(?:return|break|continue|default|do|while|for|switch|if|else))\\\\b\",\n          \"name\": \"keyword.control.groovy\"\n        },\n        {\n          \"begin\": \"\\\\bcase\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.groovy\"\n            }\n          },\n          \"end\": \":\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.case-terminator.groovy\"\n            }\n          },\n          \"name\": \"meta.case.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#groovy-code-minus-map-keys\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(assert)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.assert.groovy\"\n            }\n          },\n          \"end\": \"$|;|}\",\n          \"name\": \"meta.declaration.assertion.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \":\",\n              \"name\": \"keyword.operator.assert.expression-seperator.groovy\"\n            },\n            {\n              \"include\": \"#groovy-code-minus-map-keys\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(throws)\\\\b\",\n          \"name\": \"keyword.other.throws.groovy\"\n        }\n      ]\n    },\n    \"keyword-operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(as)\\\\b\",\n          \"name\": \"keyword.operator.as.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(in)\\\\b\",\n          \"name\": \"keyword.operator.in.groovy\"\n        },\n        {\n          \"match\": \"\\\\?\\\\:\",\n          \"name\": \"keyword.operator.elvis.groovy\"\n        },\n        {\n          \"match\": \"\\\\*\\\\:\",\n          \"name\": \"keyword.operator.spreadmap.groovy\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\",\n          \"name\": \"keyword.operator.range.groovy\"\n        },\n        {\n          \"match\": \"\\\\->\",\n          \"name\": \"keyword.operator.arrow.groovy\"\n        },\n        {\n          \"match\": \"<<\",\n          \"name\": \"keyword.operator.leftshift.groovy\"\n        },\n        {\n          \"match\": \"(?<=\\\\S)\\\\.(?=\\\\S)\",\n          \"name\": \"keyword.operator.navigation.groovy\"\n        },\n        {\n          \"match\": \"(?<=\\\\S)\\\\?\\\\.(?=\\\\S)\",\n          \"name\": \"keyword.operator.safe-navigation.groovy\"\n        },\n        {\n          \"begin\": \"\\\\?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.ternary.groovy\"\n            }\n          },\n          \"end\": \"(?=$|\\\\)|}|])\",\n          \"name\": \"meta.evaluation.ternary.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \":\",\n              \"name\": \"keyword.operator.ternary.expression-seperator.groovy\"\n            },\n            {\n              \"include\": \"#groovy-code-minus-map-keys\"\n            }\n          ]\n        },\n        {\n          \"match\": \"==~\",\n          \"name\": \"keyword.operator.match.groovy\"\n        },\n        {\n          \"match\": \"=~\",\n          \"name\": \"keyword.operator.find.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(instanceof)\\\\b\",\n          \"name\": \"keyword.operator.instanceof.groovy\"\n        },\n        {\n          \"match\": \"(===|==|!=|<=|>=|<=>|<>|<|>|<<)\",\n          \"name\": \"keyword.operator.comparison.groovy\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.groovy\"\n        },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.groovy\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.groovy\"\n        },\n        {\n          \"match\": \"(!|&&|\\\\|\\\\|)\",\n          \"name\": \"keyword.operator.logical.groovy\"\n        }\n      ]\n    },\n    \"language-variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(this|super)\\\\b\",\n          \"name\": \"variable.language.groovy\"\n        }\n      ]\n    },\n    \"map-keys\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.other.key.groovy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.seperator.key-value.groovy\"\n            }\n          },\n          \"match\": \"(\\\\w+)\\\\s*(:)\"\n        }\n      ]\n    },\n    \"method-call\": {\n      \"begin\": \"([\\\\w$]+)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.method.groovy\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.method-parameters.begin.groovy\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.method-parameters.end.groovy\"\n        }\n      },\n      \"name\": \"meta.method-call.groovy\",\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.definition.seperator.parameter.groovy\"\n        },\n        {\n          \"include\": \"#groovy-code\"\n        }\n      ]\n    },\n    \"method-content\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"begin\": \"(?=(?:\\\\w|<)[^\\\\(]*\\\\s+(?:[\\\\w$]|<)+\\\\s*\\\\()\",\n          \"end\": \"(?=[\\\\w$]+\\\\s*\\\\()\",\n          \"name\": \"meta.method.return-type.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#storage-modifiers\"\n            },\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([\\\\w$]+)\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"meta.definition.method.signature.java\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=[^)])\",\n              \"end\": \"(?=\\\\))\",\n              \"name\": \"meta.method.parameters.groovy\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?=[^,)])\",\n                  \"end\": \"(?=,|\\\\))\",\n                  \"name\": \"meta.method.parameter.groovy\",\n                  \"patterns\": [\n                    {\n                      \"match\": \",\",\n                      \"name\": \"punctuation.definition.separator.groovy\"\n                    },\n                    {\n                      \"begin\": \"=\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"keyword.operator.assignment.groovy\"\n                        }\n                      },\n                      \"end\": \"(?=,|\\\\))\",\n                      \"name\": \"meta.parameter.default.groovy\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#groovy-code\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#parameters\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=<)\",\n          \"end\": \"(?=\\\\s)\",\n          \"name\": \"meta.method.paramerised-type.groovy\",\n          \"patterns\": [\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"name\": \"storage.type.parameters.groovy\",\n              \"patterns\": [\n                {\n                  \"include\": \"#types\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.seperator.groovy\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"throws\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.groovy\"\n            }\n          },\n          \"end\": \"(?={|;)|^(?=\\\\s*(?:[^{\\\\s]|$))\",\n          \"name\": \"meta.throwables.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"end\": \"(?=})\",\n          \"name\": \"meta.method.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#groovy-code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"methods\": {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"(?x:(?<=;|^|{)(?=\\\\s*\\n                (?:\\n                    (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\\n                        |\\n                    (?:def)\\n                        |\\n                    (?:\\n                        (?:\\n                            (?:void|boolean|byte|char|short|int|float|long|double)\\n                                |\\n                            (?:@?(?:[a-zA-Z]\\\\w*\\\\.)*[A-Z]+\\\\w*) # object type\\n                        )\\n                        [\\\\[\\\\]]*\\n                        (?:<.*>)?\\n                    ) \\n                    \\n                )\\n                \\\\s+\\n                ([^=]+\\\\s+)?\\\\w+\\\\s*\\\\(\\n\\t\\t\\t))\",\n      \"end\": \"}|(?=[^{])\",\n      \"name\": \"meta.definition.method.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-content\"\n        }\n      ]\n    },\n    \"nest_curly\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.groovy\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#nest_curly\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"((0(x|X)[0-9a-fA-F]*)|(\\\\+|-)?\\\\b(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\\\b\",\n          \"name\": \"constant.numeric.groovy\"\n        }\n      ]\n    },\n    \"object-types\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b((?:[a-z]\\\\w*\\\\.)*(?:[A-Z]+\\\\w*[a-z]+\\\\w*|UR[LI]))<\",\n          \"end\": \">|[^\\\\w\\\\s,\\\\?<\\\\[\\\\]]\",\n          \"name\": \"storage.type.generic.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types\"\n            },\n            {\n              \"begin\": \"<\",\n              \"comment\": \"This is just to support <>'s with no actual type prefix\",\n              \"end\": \">|[^\\\\w\\\\s,\\\\[\\\\]<]\",\n              \"name\": \"storage.type.generic.groovy\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b((?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*[a-z]+\\\\w*)(?=\\\\[)\",\n          \"end\": \"(?=[^\\\\]\\\\s])\",\n          \"name\": \"storage.type.object.array.groovy\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?:[a-zA-Z]\\\\w*\\\\.)*(?:[A-Z]+\\\\w*[a-z]+\\\\w*|UR[LI])\\\\b\",\n          \"name\": \"storage.type.groovy\"\n        }\n      ]\n    },\n    \"object-types-inherited\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b((?:[a-zA-Z]\\\\w*\\\\.)*[A-Z]+\\\\w*[a-z]+\\\\w*)<\",\n          \"end\": \">|[^\\\\w\\\\s,\\\\?<\\\\[\\\\]]\",\n          \"name\": \"entity.other.inherited-class.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"begin\": \"<\",\n              \"comment\": \"This is just to support <>'s with no actual type prefix\",\n              \"end\": \">|[^\\\\w\\\\s,\\\\[\\\\]<]\",\n              \"name\": \"storage.type.generic.groovy\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.dereference.groovy\"\n            }\n          },\n          \"match\": \"\\\\b(?:[a-zA-Z]\\\\w*(\\\\.))*[A-Z]+\\\\w*[a-z]+\\\\w*\\\\b\",\n          \"name\": \"entity.other.inherited-class.groovy\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"match\": \"\\\\w+\",\n          \"name\": \"variable.parameter.method.groovy\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#groovy-code\"\n        }\n      ]\n    },\n    \"primitive-arrays\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?:void|boolean|byte|char|short|int|float|long|double)(\\\\[\\\\])*\\\\b\",\n          \"name\": \"storage.type.primitive.array.groovy\"\n        }\n      ]\n    },\n    \"primitive-types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?:void|boolean|byte|char|short|int|float|long|double)\\\\b\",\n          \"name\": \"storage.type.primitive.groovy\"\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/(?=[^/]+/([^>]|$))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.begin.groovy\"\n            }\n          },\n          \"end\": \"/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.end.groovy\"\n            }\n          },\n          \"name\": \"string.regexp.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.groovy\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.begin.groovy\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.end.groovy\"\n            }\n          },\n          \"name\": \"string.regexp.compiled.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.groovy\"\n            }\n          ]\n        }\n      ]\n    },\n    \"storage-modifiers\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(private|protected|public)\\\\b\",\n          \"name\": \"storage.modifier.access-control.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(static)\\\\b\",\n          \"name\": \"storage.modifier.static.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(final)\\\\b\",\n          \"name\": \"storage.modifier.final.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(native|synchronized|abstract|threadsafe|transient)\\\\b\",\n          \"name\": \"storage.modifier.other.groovy\"\n        }\n      ]\n    },\n    \"string-quoted-double\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.groovy\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.groovy\"\n        }\n      },\n      \"name\": \"string.quoted.double.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-double-contents\"\n        }\n      ]\n    },\n    \"string-quoted-double-contents\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.groovy\"\n        },\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"\\\\$\\\\w\",\n          \"end\": \"(?=\\\\W)\",\n          \"name\": \"variable.other.interpolated.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\w\",\n              \"name\": \"variable.other.interpolated.groovy\"\n            },\n            {\n              \"match\": \"\\\\.\",\n              \"name\": \"keyword.other.dereference.groovy\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\$\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.groovy\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"source.groovy.embedded.source\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-quoted-double-multiline\": {\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.groovy\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.groovy\"\n        }\n      },\n      \"name\": \"string.quoted.double.multiline.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-double-contents\"\n        }\n      ]\n    },\n    \"string-quoted-single\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.groovy\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.groovy\"\n        }\n      },\n      \"name\": \"string.quoted.single.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-single-contents\"\n        }\n      ]\n    },\n    \"string-quoted-single-contents\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.groovy\"\n        }\n      ]\n    },\n    \"string-quoted-single-multiline\": {\n      \"begin\": \"'''\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.groovy\"\n        }\n      },\n      \"end\": \"'''\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.groovy\"\n        }\n      },\n      \"name\": \"string.quoted.single.multiline.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-single-contents\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-double-multiline\"\n        },\n        {\n          \"include\": \"#string-quoted-single-multiline\"\n        },\n        {\n          \"include\": \"#string-quoted-double\"\n        },\n        {\n          \"include\": \"#string-quoted-single\"\n        },\n        {\n          \"include\": \"#regexp\"\n        }\n      ]\n    },\n    \"structures\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.structure.begin.groovy\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.structure.end.groovy\"\n        }\n      },\n      \"name\": \"meta.structure.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#groovy-code\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.definition.separator.groovy\"\n        }\n      ]\n    },\n    \"support-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\b(?:sprintf|print(?:f|ln)?)\\\\b\",\n          \"name\": \"support.function.print.groovy\"\n        },\n        {\n          \"match\": \"(?x)\\\\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same|\\n\\t\\t\\t\\t\\tNull)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length|\\n\\t\\t\\t\\t\\tArrayEquals)))\\\\b\",\n          \"name\": \"support.function.testing.groovy\"\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(def)\\\\b\",\n          \"name\": \"storage.type.def.groovy\"\n        },\n        {\n          \"include\": \"#primitive-types\"\n        },\n        {\n          \"include\": \"#primitive-arrays\"\n        },\n        {\n          \"include\": \"#object-types\"\n        }\n      ]\n    },\n    \"values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#language-variables\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#structures\"\n        },\n        {\n          \"include\": \"#method-call\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"applyEndPatternLast\": 1,\n      \"patterns\": [\n        {\n          \"begin\": \"(?x:(?=\\n                        (?:\\n                            (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\\n                                |\\n                            (?:def)\\n                                |\\n                            (?:void|boolean|byte|char|short|int|float|long|double)\\n                                |\\n                            (?:(?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*) # object type\\n                        )\\n                        \\\\s+\\n                        [\\\\w\\\\d_<>\\\\[\\\\],\\\\s]+\\n                        (?:=|$)\\n                        \\n        \\t\\t\\t))\",\n          \"end\": \";|$\",\n          \"name\": \"meta.definition.variable.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.variable.groovy\"\n                }\n              },\n              \"match\": \"([A-Z_0-9]+)\\\\s+(?=\\\\=)\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.definition.variable.name.groovy\"\n                }\n              },\n              \"match\": \"(\\\\w[^\\\\s,]*)\\\\s+(?=\\\\=)\"\n            },\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.assignment.groovy\"\n                }\n              },\n              \"end\": \"$\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy-code\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.definition.variable.name.groovy\"\n                }\n              },\n              \"match\": \"(\\\\w[^\\\\s=]*)(?=\\\\s*($|;))\"\n            },\n            {\n              \"include\": \"#groovy-code\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/haml.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"haml\", \"html.haml\"],\n  \"foldingStartMarker\": \"^\\\\s*([-%#\\\\:\\\\.\\\\w\\\\=].*)\\\\s$\",\n  \"foldingStopMarker\": \"^\\\\s*$\",\n  \"keyEquivalent\": \"^~H\",\n  \"name\": \"haml\",\n  \"patterns\": [\n    {\n      \"begin\": \"^(\\\\s*)==\",\n      \"contentName\": \"string.quoted.double.ruby\",\n      \"end\": \"$\\\\n*\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):ruby\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.prolog.haml\"\n        }\n      },\n      \"match\": \"^(!!!)($|\\\\s.*)\",\n      \"name\": \"meta.prolog.haml\"\n    },\n    {\n      \"begin\": \"^(\\\\s*):javascript\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"js.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)%script\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"js.inline.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):ruby$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.comment.haml\"\n        }\n      },\n      \"match\": \"^(\\\\s*)(\\\\/\\\\[[^\\\\]].*?$\\\\n?)\",\n      \"name\": \"comment.line.slash.haml\"\n    },\n    {\n      \"begin\": \"^(\\\\s*)(\\\\-\\\\#|\\\\/|\\\\-\\\\s*\\\\/\\\\*+)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.section.comment.haml\"\n        }\n      },\n      \"end\": \"^(?!\\\\1\\\\s+|\\\\n)\",\n      \"name\": \"comment.block.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"text.haml\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*(?:((%)([-\\\\w:]+))|(?=\\\\.|#))\",\n      \"end\": \"$|(?!\\\\.|#|\\\\{|\\\\(|\\\\[|&amp;|=|-|~|!=|&=|/)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.tag.haml\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.haml\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"==\",\n          \"contentName\": \"string.quoted.double.ruby\",\n          \"end\": \"$\\\\n?\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_ruby\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.class\"\n            }\n          },\n          \"match\": \"(\\\\.[\\\\w\\\\-\\\\:]+)\",\n          \"name\": \"meta.selector.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.id\"\n            }\n          },\n          \"match\": \"(#[\\\\w-]+)\",\n          \"name\": \"meta.selector.css\"\n        },\n        {\n          \"begin\": \"(?<!\\\\#)\\\\{(?=.*(,|(do)|\\\\{|\\\\}|\\\\||(\\\\#.*)|\\\\R)\\\\s*)\",\n          \"end\": \"\\\\s*\\\\}(?!\\\\s*\\\\,)(?!\\\\s*\\\\|)(?!\\\\#\\\\{.*\\\\})\",\n          \"name\": \"meta.section.attributes.haml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            },\n            {\n              \"include\": \"#continuation\"\n            },\n            {\n              \"include\": \"#rubyline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"meta.section.attributes.plain.haml\",\n          \"patterns\": [\n            {\n              \"match\": \"([\\\\w-]+)\",\n              \"name\": \"constant.other.symbol.ruby\"\n            },\n            {\n              \"match\": \"\\\\=\",\n              \"name\": \"punctuation\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"end\": \"\\\"\",\n              \"name\": \"string.quoted.double.ruby\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\(x\\\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[(?=.+(,|\\\\[|\\\\]|\\\\||(\\\\#.*))\\\\s*)\",\n          \"end\": \"\\\\s*\\\\](?!.*(?!\\\\#\\\\[)\\\\])\",\n          \"name\": \"meta.section.object.haml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            },\n            {\n              \"include\": \"#continuation\"\n            },\n            {\n              \"include\": \"#rubyline\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#interpolated_ruby_line\"\n        },\n        {\n          \"include\": \"#rubyline\"\n        },\n        {\n          \"match\": \"/\",\n          \"name\": \"punctuation.terminator.tag.haml\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(ruby|opal)$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):ruby$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(style|sass)$\",\n      \"end\": \"^(?=\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.sass.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):coffee(script)?\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.coffee.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):plain$\",\n      \"end\": \"^(?=\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"text.plain.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"text.plain\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:ruby)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control.filter.haml\"\n        }\n      },\n      \"end\": \"(?m:(?<=\\\\n)(?!\\\\1\\\\s+|$\\\\n*))\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:sass)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control.filter.haml\"\n        }\n      },\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.embedded.filter.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(styles|sass)$\",\n      \"end\": \"^(?=\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.sass.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):plain$\",\n      \"end\": \"^(?=\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"text.plain.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"text.plain\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.escape.haml\"\n        }\n      },\n      \"match\": \"^\\\\s*(\\\\.)\"\n    },\n    {\n      \"begin\": \"^\\\\s*(?==|-|~|!=|&=)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby_line\"\n        },\n        {\n          \"include\": \"#rubyline\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:php)\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.php\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.html.php#language\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:markdown)\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.markdown\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.html.markdown\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:(css|styles?))$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.css\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.css\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:sass)$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.sass\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:scss)$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.scss\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.scss\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"continuation\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.continuation.haml\"\n        }\n      },\n      \"match\": \"(\\\\|)\\\\s*\\\\n\"\n    },\n    \"interpolated_ruby\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.ruby\"\n            },\n            \"1\": {\n              \"name\": \"source.ruby.embedded.source.empty\"\n            }\n          },\n          \"match\": \"#\\\\{(\\\\})\",\n          \"name\": \"source.ruby.embedded.source\"\n        },\n        {\n          \"begin\": \"#\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.ruby\"\n            }\n          },\n          \"end\": \"(\\\\})\",\n          \"name\": \"source.ruby.embedded.source\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#variables\"\n        }\n      ]\n    },\n    \"interpolated_ruby_line\": {\n      \"begin\": \"!?==\",\n      \"contentName\": \"string.source.ruby.embedded.haml\",\n      \"end\": \"$\",\n      \"name\": \"meta.line.ruby.interpolated.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"source.ruby#escaped_char\"\n        }\n      ]\n    },\n    \"nest_curly_and_self\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.ruby\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.instance.ruby\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#@@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.class.ruby\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#\\\\$)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.global.ruby\"\n        }\n      ]\n    },\n    \"rubyline\": {\n      \"begin\": \"(&amp|!)?(=|-|~)\",\n      \"contentName\": \"source.ruby.embedded.haml\",\n      \"end\": \"((do|\\\\{)( \\\\|[.*]+\\\\|)?)$|$|^(?!.*\\\\|\\\\s*)$\\\\n?\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"source.ruby.embedded.html\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.ruby.start-block\"\n        }\n      },\n      \"name\": \"meta.line.ruby.haml\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+((elseif|foreach|switch|declare|default|use))(?=\\\\s|\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s+(require_once|include_once)(?=\\\\s|\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.include.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s+(catch|try|throw|exception|finally|die)(?=\\\\s|\\\\(|\\\\n*)\",\n          \"name\": \"keyword.control.exception.php\"\n        },\n        {\n          \"match\": \"\\\\s+(function\\\\s*)((?=\\\\())\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s+(use\\\\s*)((?=\\\\())\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\||,|<|do|\\\\{)\\\\s*(\\\\#.*)?$\\\\n*\",\n          \"name\": \"source.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#rubyline\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Hack to let ruby comments work in this context properly\",\n          \"match\": \"#.*$\",\n          \"name\": \"comment.line.number-sign.ruby\"\n        },\n        {\n          \"include\": \"source.ruby\"\n        },\n        {\n          \"include\": \"#continuation\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"text.haml\",\n  \"uuid\": \"3D727049-DD05-45DF-92A5-D50EA36FD035\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/handlebars.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/daaain/Handlebars/blob/master/grammars/Handlebars.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/daaain/Handlebars/commit/85a153a6f759df4e8da7533e1b3651f007867c51\",\n  \"name\": \"Handlebars\",\n  \"scopeName\": \"text.html.handlebars\",\n  \"patterns\": [\n    {\n      \"include\": \"#yfm\"\n    },\n    {\n      \"include\": \"#extends\"\n    },\n    {\n      \"include\": \"#block_comments\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#block_helper\"\n    },\n    {\n      \"include\": \"#end_block\"\n    },\n    {\n      \"include\": \"#else_token\"\n    },\n    {\n      \"include\": \"#partial_and_var\"\n    },\n    {\n      \"include\": \"#inline_script\"\n    },\n    {\n      \"include\": \"#html_tags\"\n    },\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"html_tags\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<)([a-zA-Z0-9:-]+)(?=[^>]*></\\\\2>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"(>(<)/)(\\\\2)(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"meta.scope.between-tag-pair.html\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"name\": \"meta.tag.any.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<\\\\?)(xml)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.xml.html\"\n            }\n          },\n          \"end\": \"(\\\\?>)\",\n          \"name\": \"meta.tag.preprocessor.xml.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag_generic_attribute\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<!--\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            }\n          },\n          \"end\": \"--\\\\s*>\",\n          \"name\": \"comment.block.html\",\n          \"patterns\": [\n            {\n              \"match\": \"--\",\n              \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<!\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"meta.tag.sgml.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"(DOCTYPE|doctype)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.tag.doctype.html\"\n                }\n              },\n              \"end\": \"(?=>)\",\n              \"name\": \"meta.tag.sgml.doctype.html\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\"[^\\\">]*\\\"\",\n                  \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\[CDATA\\\\[\",\n              \"end\": \"]](?=>)\",\n              \"name\": \"constant.other.inline-data.html\"\n            },\n            {\n              \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n              \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?![^>]*/>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n          \"name\": \"source.css.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            },\n            {\n              \"begin\": \"(>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.html\"\n                }\n              },\n              \"end\": \"(?=</(?i:style))\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?![^>]*/>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.script.html\"\n            }\n          },\n          \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"name\": \"source.js.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            },\n            {\n              \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.script.html\"\n                }\n              },\n              \"end\": \"(</)((?i:script))\",\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.js\"\n                    }\n                  },\n                  \"match\": \"(//).*?((?=</script)|$\\\\n?)\",\n                  \"name\": \"comment.line.double-slash.js\"\n                },\n                {\n                  \"begin\": \"/\\\\*\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.comment.js\"\n                    }\n                  },\n                  \"end\": \"\\\\*/|(?=</script)\",\n                  \"name\": \"comment.block.js\"\n                },\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.structure.any.html\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"name\": \"meta.tag.structure.any.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)((?i:address|blockquote|dd|div|header|section|footer|aside|nav|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.block.any.html\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"name\": \"meta.tag.block.any.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.inline.any.html\"\n            }\n          },\n          \"end\": \"((?: ?/)?>)\",\n          \"name\": \"meta.tag.inline.any.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)([a-zA-Z0-9:-]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.other.html\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"name\": \"meta.tag.other.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)([a-zA-Z0-9{}:-]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.tokenised.html\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"name\": \"meta.tag.tokenised.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#entities\"\n        },\n        {\n          \"match\": \"<>\",\n          \"name\": \"invalid.illegal.incomplete.html\"\n        },\n        {\n          \"match\": \"<\",\n          \"name\": \"invalid.illegal.bad-angle-bracket.html\"\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          },\n          \"name\": \"constant.character.entity.html\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\"\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.html\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"end_block\": {\n      \"begin\": \"(\\\\{\\\\{)(~?/)([a-zA-Z0-9/_\\\\.-]+)\\\\s*\",\n      \"end\": \"(~?\\\\}\\\\})\",\n      \"name\": \"meta.function.block.end.handlebars\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      },\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"2\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        }\n      },\n      \"patterns\": []\n    },\n    \"yfm\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"include\": \"source.yaml\"\n            }\n          ],\n          \"begin\": \"(?<!\\\\s)---\\\\n$\",\n          \"end\": \"^---\\\\s\",\n          \"name\": \"markup.raw.yaml.front-matter\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"name\": \"keyword.annotation.handlebars\",\n              \"match\": \"@\\\\w*\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ],\n          \"begin\": \"\\\\{\\\\{!\",\n          \"end\": \"\\\\}\\\\}\",\n          \"name\": \"comment.block.handlebars\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            }\n          },\n          \"begin\": \"<!--\",\n          \"end\": \"-{2,3}\\\\s*>\",\n          \"name\": \"comment.block.html\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\",\n              \"match\": \"--\"\n            }\n          ]\n        }\n      ]\n    },\n    \"block_comments\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"name\": \"keyword.annotation.handlebars\",\n              \"match\": \"@\\\\w*\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ],\n          \"begin\": \"\\\\{\\\\{!--\",\n          \"end\": \"--\\\\}\\\\}\",\n          \"name\": \"comment.block.handlebars\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            }\n          },\n          \"begin\": \"<!--\",\n          \"end\": \"-{2,3}\\\\s*>\",\n          \"name\": \"comment.block.html\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\",\n              \"match\": \"--\"\n            }\n          ]\n        }\n      ]\n    },\n    \"block_helper\": {\n      \"begin\": \"(\\\\{\\\\{)(~?\\\\#)([-a-zA-Z0-9_\\\\./>]+)\\\\s?(@?[-a-zA-Z0-9_\\\\./]+)*\\\\s?(@?[-a-zA-Z0-9_\\\\./]+)*\\\\s?(@?[-a-zA-Z0-9_\\\\./]+)*\",\n      \"end\": \"(~?\\\\}\\\\})\",\n      \"name\": \"meta.function.block.start.handlebars\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      },\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"2\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.handlebars\"\n        },\n        \"5\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"6\": {\n          \"name\": \"variable.parameter.handlebars\"\n        },\n        \"7\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#handlebars_attribute\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.handlebars\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#escaped-single-quote\"\n        },\n        {\n          \"include\": \"#block_comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#block_helper\"\n        },\n        {\n          \"include\": \"#else_token\"\n        },\n        {\n          \"include\": \"#end_block\"\n        },\n        {\n          \"include\": \"#partial_and_var\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-single-quoted\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        }\n      ]\n    },\n    \"escaped-single-quote\": {\n      \"name\": \"constant.character.escape.js\",\n      \"match\": \"\\\\\\\\'\"\n    },\n    \"escaped-double-quote\": {\n      \"name\": \"constant.character.escape.js\",\n      \"match\": \"\\\\\\\\\\\"\"\n    },\n    \"partial_and_var\": {\n      \"begin\": \"(\\\\{\\\\{~?\\\\{*(>|!<)*)\\\\s*(@?[-a-zA-Z0-9$_\\\\./]+)*\",\n      \"end\": \"(~?\\\\}\\\\}\\\\}*)\",\n      \"name\": \"meta.function.inline.other.handlebars\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.handlebars\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#handlebars_attribute\"\n        }\n      ]\n    },\n    \"handlebars_attribute_name\": {\n      \"begin\": \"\\\\b([-a-zA-Z0-9_\\\\.]+)\\\\b=\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.handlebars\"\n        }\n      },\n      \"end\": \"(?='|\\\"|)\",\n      \"name\": \"entity.other.attribute-name.handlebars\"\n    },\n    \"handlebars_attribute_value\": {\n      \"begin\": \"([-a-zA-Z0-9_\\\\./]+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.handlebars\"\n        }\n      },\n      \"end\": \"('|\\\"|)\",\n      \"name\": \"entity.other.attribute-value.handlebars\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"handlebars_attribute\": {\n      \"patterns\": [\n        {\n          \"include\": \"#handlebars_attribute_name\"\n        },\n        {\n          \"include\": \"#handlebars_attribute_value\"\n        }\n      ]\n    },\n    \"extends\": {\n      \"patterns\": [\n        {\n          \"end\": \"(\\\\}\\\\})\",\n          \"begin\": \"(\\\\{\\\\{!<)\\\\s([-a-zA-Z0-9_\\\\./]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.handlebars\"\n            },\n            \"2\": {\n              \"name\": \"support.class.handlebars\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.handlebars\"\n            }\n          },\n          \"name\": \"meta.preprocessor.handlebars\"\n        }\n      ]\n    },\n    \"else_token\": {\n      \"begin\": \"(\\\\{\\\\{)(~?else)(@?\\\\s(if)\\\\s([-a-zA-Z0-9_\\\\.\\\\(\\\\s\\\\)/]+))?\",\n      \"end\": \"(~?\\\\}\\\\}\\\\}*)\",\n      \"name\": \"meta.function.inline.else.handlebars\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"2\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.handlebars\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      }\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.handlebars\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#escaped-double-quote\"\n        },\n        {\n          \"include\": \"#block_comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#block_helper\"\n        },\n        {\n          \"include\": \"#else_token\"\n        },\n        {\n          \"include\": \"#end_block\"\n        },\n        {\n          \"include\": \"#partial_and_var\"\n        }\n      ]\n    },\n    \"inline_script\": {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?:.*(type)=([\\\"'](?:text/x-handlebars-template|text/x-handlebars|text/template|x-tmpl-handlebars)[\\\"']))(?![^>]*/>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.double.html\"\n        }\n      },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"name\": \"source.handlebars.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.script.html\"\n            }\n          },\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#block_helper\"\n            },\n            {\n              \"include\": \"#end_block\"\n            },\n            {\n              \"include\": \"#else_token\"\n            },\n            {\n              \"include\": \"#partial_and_var\"\n            },\n            {\n              \"include\": \"#html_tags\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag_generic_attribute\": {\n      \"begin\": \"\\\\b([a-zA-Z0-9_-]+)\\\\b\\\\s*(=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.generic.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        }\n      ],\n      \"name\": \"entity.other.attribute-name.html\",\n      \"end\": \"(?<='|\\\"|)\"\n    },\n    \"tag_id_attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"end\": \"(?<='|\\\"|)\",\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tag_id_attribute\"\n        },\n        {\n          \"include\": \"#tag_generic_attribute\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#block_comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#block_helper\"\n        },\n        {\n          \"include\": \"#end_block\"\n        },\n        {\n          \"include\": \"#else_token\"\n        },\n        {\n          \"include\": \"#partial_and_var\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/haskell-cabal.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"cabal\"],\n  \"name\": \"Cabal\",\n  \"patterns\": [\n    {\n      \"name\": \"keyword.other.cabal\",\n      \"match\": \"(?ix)(\\\\n|^)\\n  ( name\\n  | version\\n  | cabal-version\\n  | build-type\\n  | license(-file)?\\n  | copyright\\n  | author\\n  | maintainer\\n  | stability\\n  | homepage\\n  | bug-reports\\n  | package-url\\n  | synopsis\\n  | data-(files|dir)\\n  | description\\n  | category\\n  | extra-(source|doc|tmp)-files\\n  | tested-with\\n  ):\\n\"\n    },\n    {\n      \"name\": \"keyword.other.cabal\",\n      \"match\": \"(?ix)^[ \\\\t]+\\n  ( (build(-tool)?|pkgconfig|setup)-depends\\n  | (hs-source|include|extra-(lib|frameworks))-dirs\\n  | ((other|default)-)?extensions\\n  | build-tools\\n  | buildable\\n  | ((install|autogen)-)?includes\\n  | (c(xx)?|js)-sources\\n  | extra-\\n    ( ((ghci|bundled)-)?libraries\\n    | (dynamic-)?library-flavours\\n    )\\n  | (cmm|cxx|cc|cpp|ld|ghc(-(prof|shared))?)-options\\n  | (asm|cmm)-(sources|options)\\n  | other-languages\\n  | default-language\\n  | frameworks\\n  | default\\n  | manual\\n  | location\\n  | branch\\n  | tag\\n  | subdir\\n  | exposed(-modules)?\\n  | (other|virtual|autogen|reexported)-modules\\n  | visibility\\n  | main-is\\n  | type\\n  | test-module\\n  | description\\n  | mixins\\n  | import\\n  | signatures\\n  | scope\\n  | lib-version-(version|linux)\\n  | mod-def-file\\n  | options\\n  | x-\\\\w[1-9\\\\w_-]*\\n  ):\\n\"\n    },\n    {\n      \"name\": \"keyword.operator.cabal\",\n      \"match\": \"(==|>=|<=|<|>|^>=|\\\\|\\\\||&&|!)\"\n    },\n    {\n      \"name\": \"constant.numeric.cabal\",\n      \"match\": \"(?<=[^\\\\w])\\\\d+(\\\\.\\\\d+)*(\\\\.\\\\*)?\"\n    },\n    {\n      \"name\": \"markup.underline.link.cabal\",\n      \"match\": \"\\\\w+:/(/[\\\\w._\\\\-\\\\d%])+(\\\\?[\\\\w.+_\\\\-\\\\d%]+)(&[\\\\w._+\\\\-\\\\d%]+)*\"\n    },\n    {\n      \"name\": \"entity.name.section.cabal\",\n      \"match\": \"^(?ix:\\n  ( library\\n  | custom-setup\\n  )\\n)$\\n\"\n    },\n    {\n      \"match\": \"^(?ix:\\n  ( executable\\n  | flag\\n  | test-suite\\n  | benchmark\\n  | common\\n  | source-repository\\n  | library\\n  | foreign-library\\n  )\\n)( |\\\\t)+([\\\\w\\\\-_]+)$\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.section.cabal\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.cabal\"\n        }\n      }\n    },\n    {\n      \"name\": \"keyword.control.cabal\",\n      \"match\": \"^[ \\\\t]*(if|else)\"\n    },\n    {\n      \"name\": \"comment.line.double-dash\",\n      \"match\": \"^\\\\s*--.*$\"\n    }\n  ],\n  \"scopeName\": \"source.cabal\",\n  \"uuid\": \"5eb56f02-df11-40b2-b6d5-fa444522416c\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/haskell.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"hs\", \"hs-boot\", \"hsig\"],\n  \"keyEquivalent\": \"^~H\",\n  \"name\": \"haskell\",\n  \"patterns\": [\n    {\n      \"include\": \"#liquid_haskell\"\n    },\n    {\n      \"include\": \"#comment_like\"\n    },\n    {\n      \"include\": \"#numeric_literals\"\n    },\n    {\n      \"include\": \"#string_literal\"\n    },\n    {\n      \"include\": \"#char_literal\"\n    },\n    {\n      \"match\": \"(?<!@|#)-\\\\}\",\n      \"name\": \"invalid\"\n    },\n    {\n      \"match\": \"(\\\\()\\\\s*(\\\\))\",\n      \"name\": \"constant.language.unit.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\()(#)\\\\s*(#)(\\\\))\",\n      \"name\": \"constant.language.unit.unboxed.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\()\\\\s*,[\\\\s,]*(\\\\))\",\n      \"name\": \"support.constant.tuple.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\()(#)\\\\s*,[\\\\s,]*(#)(\\\\))\",\n      \"name\": \"support.constant.tuple.unboxed.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\[)\\\\s*(\\\\])\",\n      \"name\": \"constant.language.empty-list.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      }\n    },\n    {\n      \"begin\": \"(\\\\b(?<!')(module)|^(signature))(\\\\b(?!'))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.module.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.signature.haskell\"\n        }\n      },\n      \"end\": \"(?=\\\\b(?<!')where\\\\b(?!'))\",\n      \"name\": \"meta.declaration.module.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#module_name\"\n        },\n        {\n          \"include\": \"#module_exports\"\n        },\n        {\n          \"match\": \"[a-z]+\",\n          \"name\": \"invalid\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#ffi\"\n    },\n    {\n      \"begin\": \"^(\\\\s*)(class)(\\\\b(?!'))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.class.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of class declaration:\\n         # 'where' keyword\\n   (?=(?<!')\\\\bwhere\\\\b(?!'))  \\n         # Decreasing indentation\\n   |(?=\\\\}|;)      # Explicit indentation\\n   |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n       \\\\1\\\\s+\\\\S    # - more indented, or\\n     | \\\\s*        # - starts with whitespace, followed by:\\n       (?: $      #   - the end of the line (i.e. empty line), or\\n       |\\\\{-[^@]   #   - the start of a block comment, or\\n       |--+       #   - the start of a single-line comment.\\n          (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                  # The double dash may not be followed by other operator characters\\n                  # (then it would be an operator, not a comment)\\n     )\",\n      \"name\": \"meta.declaration.class.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#where\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n  ^(\\\\s*)(data|newtype)(?:\\\\s+(instance))?\\\\s+\\n  # Keep consuming characters until:\\n  ((?:(?!\\n  # the equals symbol or the start of a single-line comment, or\\n    (?: \\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n      (?:=|--+)\\n      (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\\n    )\\n  # the \\\"where\\\" or \\\"deriving\\\" keywords, or\\n  | (?:\\\\b(?<!')(?:where|deriving)\\\\b(?!'))\\n  # the start of a block comment.\\n  | {-\\n  #\\n  ).)*)\\n  (?=\\\\b(?<!'')where\\\\b(?!''))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.$2.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.instance.haskell\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.declaration.$2.generalized.haskell\",\n      \"end\": \"(?x) # Detect end of data declaration:\\n         # Deriving clause\\n   (?=(?<!')\\\\bderiving\\\\b(?!'))  \\n         # Decreasing indentation\\n   |(?=\\\\}|;)      # Explicit indentation\\n   |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n       \\\\1\\\\s+\\\\S    # - more indented, or\\n     | \\\\s*        # - starts with whitespace, followed by:\\n       (?: $      #   - the end of the line (i.e. empty line), or\\n       |\\\\{-[^@]   #   - the start of a block comment, or\\n       |--+       #   - the start of a single-line comment.\\n          (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                  # The double dash may not be followed by other operator characters\\n                  # (then it would be an operator, not a comment)\\n     )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"begin\": \"(?x)\\n  (?<!')\\\\b(where)\\n  \\\\s*(\\\\{)(?!-)\",\n          \"end\": \"(\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.where.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brace.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.brace.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#gadt_constructor\"\n            },\n            {\n              \"match\": \";\",\n              \"name\": \"punctuation.semicolon.haskell\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?<!')(where)\\\\b(?!')\",\n          \"name\": \"keyword.other.where.haskell\"\n        },\n        {\n          \"include\": \"#deriving\"\n        },\n        {\n          \"include\": \"#gadt_constructor\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#role_annotation\"\n    },\n    {\n      \"name\": \"meta.declaration.pattern.type.haskell\",\n      \"begin\": \"^(\\\\s*)(pattern)\\\\s+(.*?)\\\\s+(::|∷)(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.pattern.haskell\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#data_constructor\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.double-colon.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of pattern type definition by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.pattern.haskell\",\n      \"begin\": \"^\\\\s*(pattern)\\\\b(?!')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.pattern.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of pattern type definition by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n  # Data declaration\\n  ^(\\\\s*)(data|newtype)(?:\\\\s+(family|instance))?\\\\s+\\n  # Keep consuming characters until:\\n  (((?!\\n  # the equals symbol or the start of a single-line comment, or\\n    (?: \\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n      (?:=|--+)\\n      (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\\n    )\\n  # the \\\"where\\\" or \\\"deriving\\\" keywords, or\\n  | (?:\\\\b(?<!')(?:where|deriving)\\\\b(?!'))\\n  # the start of a block comment.\\n  | {-\\n  #\\n  ).)*)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.$2.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.$3.haskell\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.declaration.$2.algebraic.haskell\",\n      \"end\": \"(?x) # Detect end of data declaration: \\n     # Decreasing indentation\\n   (?=\\\\}|;)      # Explicit indentation\\n   |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n       \\\\1\\\\s+\\\\S    # - more indented, or\\n     | \\\\s*        # - starts with whitespace, followed by:\\n       (?: $      #   - the end of the line (i.e. empty line), or\\n       |\\\\{-[^@]   #   - the start of a block comment, or\\n       |--+       #   - the start of a single-line comment.\\n          (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                  # The double dash may not be followed by other operator characters\\n                  # (then it would be an operator, not a comment)\\n     )\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#deriving\"\n        },\n        {\n          \"include\": \"#forall\"\n        },\n        {\n          \"include\": \"#adt_constructor\"\n        },\n        {\n          \"include\": \"#context\"\n        },\n        {\n          \"include\": \"#record_decl\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.type.family.haskell\",\n      \"begin\": \"(?x)\\n  # Type family\\n  ^(\\\\s*)(type)\\\\s+(family)\\\\b(?!')\\n  # Keep consuming characters until:\\n  (((?!\\n  # the equals symbol or the start of a single-line comment, or\\n    (?: \\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n      (?:=|--+)\\n      (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\\n    )\\n  # the \\\"where\\\" keyword, or\\n  | \\\\b(?<!')where\\\\b(?!')\\n  # the start of a block comment.\\n  | {-\\n  #\\n  ).)*)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.type.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.family.haskell\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#where\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x) # Detect end of type family by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#where\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.type.haskell\",\n      \"begin\": \"(?x)\\n  # Type declaration\\n  ^(\\\\s*)(type)(?:\\\\s+(instance))?\\\\s+\\n  # Keep consuming characters until:\\n  (((?!\\n  # the equals symbol, the start of a single-line comment, or a type signature\\n    (?: \\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n      (?:=|--+|::|∷)\\n      (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\\n    )\\n  # the start of a block comment.\\n  | {-\\n  #\\n  ).)*)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.type.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.instance.haskell\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x) # Detect end of type definition by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(instance)(\\\\b(?!'))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.instance.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of instance declaration:\\n  # 'where' keyword\\n  (?=\\\\b(?<!')(where)\\\\b(?!'))\\n  # Decreasing indentation\\n  |(?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"name\": \"meta.declaration.instance.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#where\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(import)(\\\\b(?!'))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.import.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of import\\n  # 'where' keyword\\n  (?=\\\\b(?<!')(where)\\\\b(?!'))\\n  # Decreasing indentation\\n  |(?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"name\": \"meta.import.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#where\"\n        },\n        {\n          \"match\": \"(qualified|as|hiding)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.$1.haskell\"\n            }\n          }\n        },\n        {\n          \"include\": \"#module_name\"\n        },\n        {\n          \"include\": \"#module_exports\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#deriving\"\n    },\n    {\n      \"include\": \"#layout_herald\"\n    },\n    {\n      \"include\": \"#keyword\"\n    },\n    {\n      \"match\": \"^\\\\s*(infix[lr]?)\\\\s+(.*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.$1.haskell\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#integer_literals\"\n            },\n            {\n              \"include\": \"#infix_op\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.fixity-declaration.haskell\"\n    },\n    {\n      \"include\": \"#overloaded_label\"\n    },\n    {\n      \"include\": \"#type_application\"\n    },\n    {\n      \"include\": \"#reserved_symbol\"\n    },\n    {\n      \"include\": \"#fun_decl\"\n    },\n    {\n      \"include\": \"#qualifier\"\n    },\n    {\n      \"include\": \"#data_constructor\"\n    },\n    {\n      \"include\": \"#start_type_signature\"\n    },\n    {\n      \"include\": \"#prefix_op\"\n    },\n    {\n      \"include\": \"#infix_op\"\n    },\n    {\n      \"begin\": \"(\\\\()(#)\\\\s\",\n      \"end\": \"(#)(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\()\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#quasi_quote\"\n    },\n    {\n      \"begin\": \"(\\\\[)\",\n      \"end\": \"(\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#record\"\n    }\n  ],\n  \"repository\": {\n    \"block_comment\": {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\{-\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.haskell\"\n        }\n      },\n      \"end\": \"-\\\\}\",\n      \"name\": \"comment.block.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#block_comment\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(\\\\s*)(--\\\\s[\\\\|\\\\$])\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.whitespace.comment.leading.haskell\"\n            }\n          },\n          \"end\": \"(?=^(?!\\\\1--+(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])))\",\n          \"name\": \"comment.block.documentation.haskell\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(--\\\\s[\\\\^\\\\*])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.haskell\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.documentation.haskell\"\n        },\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"\\\\{-\\\\s?[\\\\|\\\\$\\\\*\\\\^]\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.haskell\"\n            }\n          },\n          \"end\": \"-\\\\}\",\n          \"name\": \"comment.block.documentation.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_comment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--+(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.haskell\"\n            }\n          },\n          \"comment\": \"Operators may begin with '--' as long as they are not entirely composed of '-' characters. This means comments can't be immediately followed by an allowable operator character.\",\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"--\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.haskell\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.haskell\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#block_comment\"\n        }\n      ]\n    },\n    \"comment_like\": {\n      \"patterns\": [\n        {\n          \"include\": \"#cpp\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"cpp\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.preprocessor.c\"\n        }\n      },\n      \"comment\": \"In addition to Haskell's \\\"native\\\" syntax, GHC permits the C preprocessor to be run on a source file.\",\n      \"match\": \"^(#).*$\",\n      \"name\": \"meta.preprocessor.c\"\n    },\n    \"where\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n  (?<!')\\\\b(where)\\n  \\\\s*(\\\\{)(?!-)\",\n          \"end\": \"(\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.where.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brace.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.brace.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"match\": \";\",\n              \"name\": \"punctuation.semicolon.haskell\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?<!')(where)\\\\b(?!')\",\n          \"name\": \"keyword.other.where.haskell\"\n        }\n      ]\n    },\n    \"layout_herald\": {\n      \"begin\": \"(?x)\\n  (?<!')\\\\b(?:(where|let|m?do)|(of))\\n  \\\\s*(\\\\{)(?!-)\",\n      \"end\": \"(\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.$1.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.of.haskell\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.semicolon.haskell\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"match\": \"\\\\b(?<!')(?:(where|let|in|default)|(m?do|if|then|else|case|of|proc|rec))\\\\b(?!')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.$1.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.$2.haskell\"\n        }\n      }\n    },\n    \"deriving\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(\\\\s*)(deriving)\\\\s+(?:(via|stock|newtype|anyclass)\\\\s+)?\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.other.deriving.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.deriving.strategy.$3.haskell\"\n            }\n          },\n          \"end\": \"(?x) # Detect end of deriving statement\\n  # Decreasing indentation\\n   (?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"match\": \"(?<!')\\\\b(instance)\\\\b(?!')\",\n              \"name\": \"keyword.other.instance.haskell\"\n            },\n            {\n              \"match\": \"(?<!')\\\\b(via|stock|newtype|anyclass)\\\\b(?!')\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.deriving.strategy.$1.haskell\"\n                }\n              }\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ],\n          \"name\": \"meta.deriving.haskell\"\n        },\n        {\n          \"begin\": \"(deriving)(?:\\\\s+(stock|newtype|anyclass))?\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.deriving.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.deriving.strategy.$2.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"meta.deriving.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n  (deriving)(?:\\\\s+(stock|newtype|anyclass))?\\\\s+\\n    ([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n    (\\\\s+(via)\\\\s+(.*)$)?\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.deriving.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.deriving.strategy.$2.haskell\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"keyword.other.deriving.strategy.via.haskell\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            }\n          },\n          \"name\": \"meta.deriving.haskell\"\n        },\n        {\n          \"match\": \"(?<!')\\\\b(via)\\\\b(?!')\",\n          \"name\": \"keyword.other.deriving.strategy.via.haskell\"\n        }\n      ]\n    },\n    \"prefix_op\": {\n      \"patterns\": [\n        {\n          \"comment\": \"An operator cannot be composed entirely of '-' characters;  instead, it should be matched as a comment.\\n\",\n          \"match\": \"(?x)\\n  (\\\\()\\\\s*(?!(?:--+|\\\\.\\\\.)\\\\))(\\\\#+|[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+(?<!\\\\#))\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.infix.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          }\n        }\n      ]\n    },\n    \"infix_op\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  ((?:(?<!'')('')?[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'']*\\\\.)*)\\n    (\\\\#+|[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+(?<!\\\\#))\",\n          \"comment\": \"In case this regex seems overly general, note that Haskell permits  the definition of new operators which can be nearly any string of  punctuation characters, such as $%^&*.\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.infix.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(`)((?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'']*\\\\.)*)([\\\\p{Ll}\\\\p{Lu}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'']*)(`)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#data_constructor\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            }\n          },\n          \"comment\": \"In case this regex seems unusual for an infix operator, note that Haskell\\nallows any ordinary function application (elem 4 [1..10]) to be rewritten\\nas an infix expression (4 `elem` [1..10]).\\n\",\n          \"name\": \"keyword.operator.function.infix.haskell\"\n        }\n      ]\n    },\n    \"module_exports\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"applyEndPatternLast\": 1,\n      \"name\": \"meta.declaration.exports.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"match\": \"\\\\b(?<!')(module)\\\\b(?!')\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.module.haskell\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#export_constructs\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#record_wildcard\"\n            },\n            {\n              \"include\": \"#export_constructs\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"export_constructs\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"begin\": \"\\\\b(?<!')(pattern)\\\\b(?!')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.pattern.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n   # Data constructor\\n   ([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n   # Prefix form of symbolic constructor\\n   | (\\\\()\\\\s*(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(?<!')(type)\\\\b(?!')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.type.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n   # Type name\\n   ([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n   # Prefix form of type operator\\n   | (\\\\()\\\\s*([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.operator.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!')\\\\b[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\",\n          \"name\": \"entity.name.function.haskell\"\n        },\n        {\n          \"match\": \"(?<!')\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\",\n          \"name\": \"storage.type.haskell\"\n        },\n        {\n          \"include\": \"#record_wildcard\"\n        },\n        {\n          \"include\": \"#reserved_symbol\"\n        },\n        {\n          \"include\": \"#prefix_op\"\n        }\n      ]\n    },\n    \"comma\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.comma.haskell\"\n    },\n    \"module_name\": {\n      \"match\": \"(?<conid>[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(\\\\.\\\\g<conid>)?)\",\n      \"name\": \"entity.name.namespace.haskell\"\n    },\n    \"pragma\": {\n      \"begin\": \"\\\\{-#\",\n      \"end\": \"#-\\\\}\",\n      \"name\": \"meta.preprocessor.haskell\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?xi) \\\\b(?<!')(LANGUAGE)\\\\b(?!')\",\n          \"end\": \"(?=#-\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\n  (?:No)?\\n  (?:AutoDeriveTypeable|DatatypeContexts|DoRec|IncoherentInstances|MonadFailDesugaring|MonoPatBinds|NullaryTypeClasses|OverlappingInstances|PatternSignatures|RecordPuns|RelaxedPolyRec)\",\n              \"name\": \"invalid.deprecated\"\n            },\n            {\n              \"match\": \"(?x)\\n  (\\n  (?:No)?\\n  (?:AllowAmbiguousTypes|AlternativeLayoutRule|AlternativeLayoutRuleTransitional|Arrows|BangPatterns|BinaryLiterals|CApiFFI|CPP|CUSKs|ConstrainedClassMethods|ConstraintKinds|DataKinds|DefaultSignatures|DeriveAnyClass|DeriveDataTypeable|DeriveFoldable|DeriveFunctor|DeriveGeneric|DeriveLift|DeriveTraversable|DerivingStrategies|DerivingVia|DisambiguateRecordFields|DoAndIfThenElse|BlockArguments|DuplicateRecordFields|EmptyCase|EmptyDataDecls|EmptyDataDeriving|ExistentialQuantification|ExplicitForAll|ExplicitNamespaces|ExtendedDefaultRules|FlexibleContexts|FlexibleInstances|ForeignFunctionInterface|FunctionalDependencies|GADTSyntax|GADTs|GHCForeignImportPrim|Generali(?:s|z)edNewtypeDeriving|ImplicitParams|ImplicitPrelude|ImportQualifiedPost|ImpredicativeTypes|TypeFamilyDependencies|InstanceSigs|ApplicativeDo|InterruptibleFFI|JavaScriptFFI|KindSignatures|LambdaCase|LiberalTypeSynonyms|MagicHash|MonadComprehensions|MonoLocalBinds|MonomorphismRestriction|MultiParamTypeClasses|MultiWayIf|NumericUnderscores|NPlusKPatterns|NamedFieldPuns|NamedWildCards|NegativeLiterals|HexFloatLiterals|NondecreasingIndentation|NumDecimals|OverloadedLabels|OverloadedLists|OverloadedStrings|PackageImports|ParallelArrays|ParallelListComp|PartialTypeSignatures|PatternGuards|PatternSynonyms|PolyKinds|PolymorphicComponents|QuantifiedConstraints|PostfixOperators|QuasiQuotes|Rank2Types|RankNTypes|RebindableSyntax|RecordWildCards|RecursiveDo|RelaxedLayout|RoleAnnotations|ScopedTypeVariables|StandaloneDeriving|StarIsType|StaticPointers|Strict|StrictData|TemplateHaskell|TemplateHaskellQuotes|StandaloneKindSignatures|TraditionalRecordSyntax|TransformListComp|TupleSections|TypeApplications|TypeInType|TypeFamilies|TypeOperators|TypeSynonymInstances|UnboxedTuples|UnboxedSums|UndecidableInstances|UndecidableSuperClasses|UnicodeSyntax|UnliftedFFITypes|UnliftedNewtypes|ViewPatterns)\\n  )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.preprocessor.extension.haskell\"\n                }\n              }\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi)\\n  \\\\b(?<!')(SPECIALI(?:S|Z)E)\\n  (?:\\n  \\\\s*( \\\\[ [^\\\\[\\\\]]* \\\\])?\\\\s*\\n  |\\\\s+\\n  )\\n  (instance)\\\\b(?!')\",\n          \"end\": \"(?=#-\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_phase\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.other.instance.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi)\\n  \\\\b(?<!')(SPECIALI(?:S|Z)E)\\\\b(?!')\\n  (?:\\\\s+(INLINE)\\\\b(?!'))?\\n  (?:\\\\s*(\\\\[ [^\\\\[\\\\]]* \\\\])?)\\n  \\\\s*\",\n          \"end\": \"(?=#-\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_phase\"\n                }\n              ]\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi) \\\\b(?<!')\\n  (LANGUAGE|OPTIONS_GHC|INCLUDE\\n  |MINIMAL|UNPACK|OVERLAPS|INCOHERENT\\n  |NOUNPACK|SOURCE|OVERLAPPING|OVERLAPPABLE|INLINE\\n  |NOINLINE|INLINE?ABLE|CONLIKE|LINE|COLUMN|RULES\\n  |COMPLETE)\\\\b(?!')\",\n          \"name\": \"keyword.other.preprocessor.haskell\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(DEPRECATED|WARNING)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            }\n          },\n          \"end\": \"(?=#-\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_literal\"\n            }\n          ]\n        }\n      ]\n    },\n    \"liquid_haskell\": {\n      \"name\": \"block.liquidhaskell.haskell\",\n      \"begin\": \"\\\\{-@\",\n      \"end\": \"@-\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"context\": {\n      \"match\": \"(?x)\\n  (.*)\\n  (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n  (=>|⇒)\\n  (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.big-arrow.haskell\"\n        }\n      }\n    },\n    \"data_constructor\": {\n      \"match\": \"\\\\b(?<!')[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?![\\\\.'\\\\w])\",\n      \"name\": \"constant.other.haskell\"\n    },\n    \"qualifier\": {\n      \"match\": \"\\\\b(?<!')[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.\",\n      \"name\": \"entity.name.namespace.haskell\"\n    },\n    \"record_decl\": {\n      \"begin\": \"({)(?!-)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"end\": \"(?<!-)(})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"name\": \"meta.record.definition.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#record_decl_field\"\n        }\n      ]\n    },\n    \"record\": {\n      \"begin\": \"({)(?!-)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"end\": \"(?<!-)(})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"name\": \"meta.record.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#record_field\"\n        }\n      ]\n    },\n    \"record_decl_field\": {\n      \"begin\": \"(?x)\\n  (?:([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n    |(\\\\()\\\\s*([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\))\\n  )\\n\",\n      \"end\": \"(,)|(?=})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.member.definition.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.member.definition.haskell\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comma.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#double_colon\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        },\n        {\n          \"include\": \"#record_decl_field\"\n        }\n      ]\n    },\n    \"record_wildcard\": {\n      \"match\": \"(?x)\\n  (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n  (\\\\.\\\\.)\\n  (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.member.wildcard.haskell\"\n        }\n      }\n    },\n    \"record_field\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n  (?:([\\\\p{Ll}\\\\p{Lu}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\.']*)\\n    |(\\\\()\\\\s*([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\))\\n  )\\n\",\n          \"end\": \"(,)|(?=})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.member.haskell\",\n              \"patterns\": [\n                {\n                  \"include\": \"#qualifier\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.comma.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#record_wildcard\"\n        }\n      ]\n    },\n    \"role_annotation\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(\\\\s*)(type)\\\\s+(role)\\\\b(?!')\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.other.type.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.role.haskell\"\n            }\n          },\n          \"end\": \"(?x) # Detect end of block by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\",\n          \"name\": \"meta.role-annotation.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#type_constructor\"\n            },\n            {\n              \"match\": \"\\\\b(?<!')(nominal|representational|phantom)\\\\b(?!')\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.role.$1.haskell\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"fun_decl\": {\n      \"begin\": \"(?x)^(\\\\s*)\\n  (?<fn>\\n    (?:\\n      [\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\#*\\n    | \\\\(\\\\s*\\n        (?!--+\\\\))\\n        [\\\\p{S}\\\\p{P}&&[^(),:;\\\\[\\\\]`{}_\\\"']]\\n        [\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*\\n      \\\\s*\\\\)\\n    )\\n    (?:\\\\s*,\\\\s*\\\\g<fn>)?\\n  )\\n  \\\\s*(?<![\\\\p{S}\\\\p{P}&&[^\\\\),;\\\\]`}_\\\"']])(::|∷)(?![\\\\p{S}\\\\p{P}&&[^\\\\(,;\\\\[`{_\\\"']])\\n\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"entity.name.function.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#reserved_symbol\"\n            },\n            {\n              \"include\": \"#prefix_op\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.double-colon.haskell\"\n        }\n      },\n      \"name\": \"meta.function.type-declaration.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#type_signature\"\n        }\n      ],\n      \"end\": \"(?x)\\n  # End of type annotation:\\n    # To the left of a reserved symbolic keyword such as = or <-\\n  (?= \\n      # non-symbolic character\\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n      # symbolic keyword except (->)\\n      ((<-|←)|(=)|(-<|↢)|(-<<|⤛))\\n      # non-symbolic character\\n      ([(),;\\\\[\\\\]`{}_\\\"']|[^\\\\p{S}\\\\p{P}])\\n  )\\n  # Decreasing indentation:\\n  |(?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\"\n    },\n    \"adt_constructor\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"begin\": \"(?x)\\n  (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n  (?:(=)|(\\\\|))\\n  (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.eq.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.pipe.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n  (?:\\\\G|^)\\\\s* # Enforce starting condition to avoid catastrophic backtracking (https://github.com/JustusAdam/language-haskell/issues/161)\\n  (?: # Infix data constructor\\n    # First argument\\n    (?:\\n    # Simple type\\n      (?<!')\\\\b((?:[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'\\\\.])+)\\n    # Type inside balanced parentheses\\n    | ('? # Optional promotion tick\\n        (?<paren>\\n          \\\\(          # Opening parenthesis\\n          (?:\\n            [^\\\\(\\\\)]*  # Match non-parentheses\\n          | \\\\g<paren> # or recurse into further depth\\n          )*\\n          \\\\)          # Closing parenthesis\\n        )\\n      )\\n    # Type inside balanced brackets\\n    | ('? # Optional promotion tick\\n        (?<brac>\\n          \\\\(          # Opening bracket\\n          (?:\\n            [^\\\\[\\\\]]*  # Match non-brackets\\n          | \\\\g<brac>  # or recurse into further depth\\n          )*\\n          \\\\]          # Closing bracket\\n        )\\n      )\\n    )        \\n    # Then either\\n    \\\\s*\\n      # - a symbolic infix constructor, or\\n    (?:(?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*)\\n      # - an alphabetic infix constructor\\n    | (`)([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)(`)\\n    )\\n\\n  ) # Otherwise, prefix data constructor, either:\\n  | # - an alphabetic data constructor e.g. \\\"Cons_123\\\"\\n    (?:(?<!')\\\\b([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*))\\n  | # - a symbolic (prefix) data constructor\\n    (\\\\()\\\\s*(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*)\\\\s*(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            },\n            \"8\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            },\n            \"10\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"11\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"12\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"13\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#deriving\"\n            },\n            {\n              \"include\": \"#record_decl\"\n            },\n            {\n              \"include\": \"#forall\"\n            },\n            {\n              \"include\": \"#context\"\n            }\n          ]\n        }\n      ]\n    },\n    \"gadt_constructor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n   ^(\\\\s*)\\n      (?:\\n        (\\\\b(?<!')[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n      |(\\\\()\\\\s*(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*)\\\\s*(\\\\))\\n      )\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"4\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n  # GADT constructor ends\\n  (?=\\\\b(?<!'')deriving\\\\b(?!'))  \\n        # Decreasing indentation\\n  |(?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#deriving\"\n            },\n            {\n              \"include\": \"#double_colon\"\n            },\n            {\n              \"include\": \"#record_decl\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n  (\\\\b(?<!')[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}]*) # named constructor\\n |(\\\\()\\\\s*(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*)\\\\s*(\\\\))    # prefix operator\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#deriving\"\n            },\n            {\n              \"include\": \"#double_colon\"\n            },\n            {\n              \"include\": \"#record_decl\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type_application\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[\\\\s,;\\\\[\\\\]{}\\\"])(@)(')?(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.at.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"meta.type-application.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[\\\\s,;\\\\[\\\\]{}\\\"])(@)(')?(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.at.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"meta.type-application.haskell\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[\\\\s,;\\\\[\\\\]{}\\\"])(@)(?=\\\\\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.at.haskell\"\n            }\n          },\n          \"end\": \"(?<=\\\\\\\")\",\n          \"name\": \"meta.type-application.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_literal\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[\\\\s,;\\\\[\\\\]{}\\\"])(@)(?=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.at.haskell\"\n            }\n          },\n          \"end\": \"(?![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'])\",\n          \"name\": \"meta.type-application.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type_signature\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"match\": \"(')?(\\\\()\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"support.constant.unit.haskell\"\n        },\n        {\n          \"match\": \"(\\\\()(#)\\\\s*(#)(\\\\))\",\n          \"name\": \"support.constant.unit.unboxed.haskell\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(')?(\\\\()\\\\s*,[\\\\s,]*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"support.constant.tuple.haskell\"\n        },\n        {\n          \"match\": \"(\\\\()(#)\\\\s*(#)(\\\\))\",\n          \"name\": \"support.constant.unit.unboxed.haskell\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\()(#)\\\\s*,[\\\\s,]*(#)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"support.constant.tuple.unboxed.haskell\"\n        },\n        {\n          \"match\": \"(')?(\\\\[)\\\\s*(\\\\])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"name\": \"support.constant.empty-list.haskell\"\n        },\n        {\n          \"include\": \"#integer_literals\"\n        },\n        {\n          \"match\": \"(::|∷)(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\",\n          \"name\": \"keyword.operator.double-colon.haskell\"\n        },\n        {\n          \"include\": \"#forall\"\n        },\n        {\n          \"match\": \"=>|⇒\",\n          \"name\": \"keyword.operator.big-arrow.haskell\"\n        },\n        {\n          \"include\": \"#string_literal\"\n        },\n        {\n          \"match\": \"'[^']'\",\n          \"name\": \"invalid\"\n        },\n        {\n          \"include\": \"#type_application\"\n        },\n        {\n          \"include\": \"#reserved_symbol\"\n        },\n        {\n          \"include\": \"#type_operator\"\n        },\n        {\n          \"include\": \"#type_constructor\"\n        },\n        {\n          \"begin\": \"(\\\\()(#)\",\n          \"end\": \"(#)(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(')?(\\\\()\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(')?(\\\\[)\",\n          \"end\": \"(\\\\])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type_variable\"\n        }\n      ]\n    },\n    \"double_colon\": {\n      \"match\": \"\\\\s*(::|∷)(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.double-colon.haskell\"\n        }\n      }\n    },\n    \"start_type_signature\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(\\\\s*)(::|∷)(?![\\\\p{S}\\\\p{P}&&[^\\\\(,;\\\\[`{_\\\"']])\\\\s*\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.operator.double-colon.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n  # End type annotation when seeing one of:\\n  (?=\\n    \\\\#?\\\\)                             # closing parenthesis\\n    |\\\\]                               # closing bracket\\n    |,                                # comma\\n    |(?<!')\\\\b(in|then|else|of)\\\\b(?!') # keyword\\n    |                                 # symbolic keyword except (->)\\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n      (?:\\n         (\\\\\\\\|λ)\\n        |(<-|←)\\n        |(=)\\n        |(-<|↢)\\n        |(-<<|⤛)\\n      )\\n      ([(),;\\\\[\\\\]`{}_\\\"']|[^\\\\p{S}\\\\p{P}])\\n    |(\\\\#|@)-\\\\}                             # End of annotation block (LiquidHaskell or pragma)\\n    # Decreasing indentation:\\n    | (?=\\\\}|;)     # Explicit indentation\\n    |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n        \\\\1\\\\s*\\\\S    # - equally indented, or\\n      | \\\\s*        # - starts with whitespace, followed by:\\n        (?: $      #   - the end of the line (i.e. empty line), or\\n        |\\\\{-[^@]   #   - the start of a block comment, or\\n        |--+       #   - the start of a single-line comment.\\n           (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                   # The double dash may not be followed by other operator characters\\n                   # (then it would be an operator, not a comment)\\n      )\\n  )\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ],\n          \"name\": \"meta.type-declaration.haskell\"\n        },\n        {\n          \"begin\": \"(?<![\\\\p{S}\\\\p{P}&&[^\\\\(,;\\\\[`{_\\\"']])(::|∷)(?![\\\\p{S}\\\\p{P}&&[^\\\\(,;\\\\[`{_\\\"']])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.double-colon.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n  # End type annotation when seeing one of:\\n  (?=\\n    \\\\#?\\\\)                             # closing parenthesis\\n    |\\\\]                               # closing bracket\\n    |,                                # comma\\n    |\\\\b(?<!')(in|then|else|of)\\\\b(?!') # keyword\\n    |(\\\\#|@)-\\\\}                        # End of annotation block (LiquidHaskell or pragma)\\n    |                                 # symbolic keyword except (->)\\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n      (?:\\n         (\\\\\\\\|λ)\\n        |(<-|←)\\n        |(=)\\n        |(-<|↢)\\n        |(-<<|⤛)\\n      )\\n      ([(),;\\\\[\\\\]`{}_\\\"']|[^\\\\p{S}\\\\p{P}])\\n    # Indentation \\n    |(?=\\\\}|;)      # Explicit indentation\\n    |$             # End of line\\n  )\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type_variable\": {\n      \"match\": \"\\\\b(?<!')(?!(?:forall|deriving)\\\\b(?!'))[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\",\n      \"name\": \"variable.other.generic-type.haskell\"\n    },\n    \"type_constructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  # Optional promotion tick\\n    (')?\\n  # Optional qualified name\\n    ((?:\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.)*)\\n  # Type constructor proper\\n    (\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  # Optional promotion tick\\n    (')?\\n  # Opening parenthesis\\n    (\\\\()\\\\s*\\n  # Optional qualified name\\n    ((?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.)*)\\n  # Type operator proper\\n    ([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\n  # Closing parenthesis\\n    \\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.operator.haskell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          }\n        }\n      ]\n    },\n    \"overloaded_label\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x) \\n  (?<![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\p{S}\\\\p{P}&&[^(,;\\\\[`{]]) # Disallow closing characters\\n  (\\\\#)\\n    (?:\\n    # String\\n    (\\\"(?:\\\\\\\\\\\"|[^\\\"])*\\\")\\n    # Sequence of allowed label identifiers\\n    |[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'\\\\.]+\\n    )\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.hash.haskell\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string_literal\"\n                }\n              ]\n            }\n          },\n          \"name\": \"entity.name.label.haskell\"\n        }\n      ]\n    },\n    \"reserved_symbol\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"'']])\\n  (?:\\n     (\\\\.\\\\.)\\n    |(:)\\n    |(=)\\n    |(\\\\\\\\)     # λ not reserved as it is a letter\\n    |(\\\\|)\\n    |(<-|←)\\n    |(->|→)\\n    |(-<|↢)\\n    |(-<<|⤛)\\n    |(>-|⤚)\\n    |(>>-|⤜)\\n    |(∀)\\n  )\\n  (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"'']])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.double-dot.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.colon.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.eq.haskell\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.lambda.haskell\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.pipe.haskell\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.arrow.left.haskell\"\n            },\n            \"7\": {\n              \"name\": \"keyword.operator.arrow.haskell\"\n            },\n            \"8\": {\n              \"name\": \"keyword.operator.arrow.left.tail.haskell\"\n            },\n            \"9\": {\n              \"name\": \"keyword.operator.arrow.left.tail.double.haskell\"\n            },\n            \"10\": {\n              \"name\": \"keyword.operator.arrow.tail.haskell\"\n            },\n            \"11\": {\n              \"name\": \"keyword.operator.arrow.tail.double.haskell\"\n            },\n            \"12\": {\n              \"name\": \"keyword.other.forall.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  (?<=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\p{S}\\\\p{P}&&[^\\\\#,;\\\\[`{]]) # Require closing characters\\n  (\\\\#+)\\n  (?![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\p{S}\\\\p{P}&&[^),;\\\\]`}]])   # Disallow opening character\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.postfix.hash.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  (?<=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\)\\\\}\\\\]]) # Require closing characters\\n  (@)\\n  (?=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\(\\\\[\\\\{]) # Require opening character\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.infix.tight.at.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  (?<![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\p{S}\\\\p{P}&&[^(,;\\\\[`{]])  # Disallow closing characters\\n  (?:(~)|(!)|(-)|(\\\\$)|(\\\\$\\\\$))\\n  (?=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\(\\\\{\\\\[]) # Require opening character (non operator symbol)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.tilde.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prefix.bang.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.prefix.minus.haskell\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.prefix.dollar.haskell\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.prefix.double-dollar.haskell\"\n            }\n          }\n        }\n      ]\n    },\n    \"type_operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  # Optional promotion tick\\n    (?:(?<!')('))?\\n  # Optional qualified name\\n    ((?:\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.)*)\\n  # Type operator proper\\n    (?![#@]?-})(\\\\#+|[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+(?<!\\\\#))\\n    #((?:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']&&[^#@]]|[@#](?!-}))+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.operator.infix.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  # Optional promotion tick\\n    (')?\\n  # Opening backtick\\n    (\\\\`)\\n  # Optional qualified name\\n    ((?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.)*)\\n  # Type constructor proper\\n    ([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n  # Closing backtick\\n    (`)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.infix.haskell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            }\n          }\n        }\n      ]\n    },\n    \"forall\": {\n      \"begin\": \"\\\\b(?<!')(forall|∀)\\\\b(?!')\",\n      \"end\": \"(\\\\.)|(->|→)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.forall.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.period.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.arrow.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#type_variable\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    \"string_literal\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.haskell\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.haskell\"\n        }\n      },\n      \"name\": \"string.quoted.double.haskell\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&])\",\n          \"name\": \"constant.character.escape.haskell\"\n        },\n        {\n          \"match\": \"\\\\\\\\o[0-7]+|\\\\\\\\x[0-9A-Fa-f]+|\\\\\\\\[0-9]+\",\n          \"name\": \"constant.character.escape.octal.haskell\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]\",\n          \"name\": \"constant.character.escape.control.haskell\"\n        },\n        {\n          \"begin\": \"\\\\\\\\\\\\s\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"constant.character.escape.begin.haskell\"\n            }\n          },\n          \"end\": \"\\\\\\\\\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.character.escape.end.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\S+\",\n              \"name\": \"invalid.illegal.character-not-allowed-here.haskell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"char_literal\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.haskell\"\n        },\n        \"2\": {\n          \"name\": \"constant.character.escape.haskell\"\n        },\n        \"3\": {\n          \"name\": \"constant.character.escape.octal.haskell\"\n        },\n        \"4\": {\n          \"name\": \"constant.character.escape.hexadecimal.haskell\"\n        },\n        \"5\": {\n          \"name\": \"constant.character.escape.control.haskell\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.end.haskell\"\n        }\n      },\n      \"match\": \"(?x)\\n  (?<![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'])\\n  (')\\n  (?:\\n    [\\\\ -\\\\[\\\\]-~]                         # Basic Char\\n  | (\\\\\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE\\n       |DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS\\n       |US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\\\\\&]))   # Escapes\\n  | (\\\\\\\\o[0-7]+)                         # Octal Escapes\\n  | (\\\\\\\\x[0-9A-Fa-f]+)                   # Hexadecimal Escapes\\n  | (\\\\\\\\\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_])                 # Control Chars\\n  )\\n  (')\\n\",\n      \"name\": \"string.quoted.single.haskell\"\n    },\n    \"float_literals\": {\n      \"comment\": \"Floats are decimal or hexadecimal\",\n      \"match\": \"(?x)\\n  \\\\b(?<!')\\n  (?:  # Decimal\\n    ([0-9][_0-9]*\\\\.[0-9][_0-9]*(?:[eE][-+]?[0-9][_0-9]*)?\\n    |[0-9][_0-9]*[eE][-+]?[0-9][_0-9]*\\n    )\\n  |    # Hexadecimal\\n    (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*\\\\.[0-9a-fA-F][_0-9a-fA-F]*(?:[pP][-+]?[0-9][_0-9]*)?\\n    |0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*[pP][-+]?[0-9][_0-9]*\\n    )\\n  )\\\\b(?!')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.floating.decimal.haskell\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.floating.hexadecimal.haskell\"\n        }\n      }\n    },\n    \"integer_literals\": {\n      \"match\": \"(?x)\\n  \\\\b(?<!')\\n  (?:\\n    ([0-9][_0-9]*)                    # Decimal integer\\n  | (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*) # Hexadecimal integer\\n  | (0[oO]_*[0-7][_0-7]*)             # Octal integer\\n  | (0[bB]_*[01][_01]*)               # Binary integer\\n  )\\n  \\\\b(?!')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.integral.decimal.haskell\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.integral.hexadecimal.haskell\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.integral.octal.haskell\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.integral.binary.haskell\"\n        }\n      }\n    },\n    \"numeric_literals\": {\n      \"patterns\": [\n        {\n          \"include\": \"#float_literals\"\n        },\n        {\n          \"include\": \"#integer_literals\"\n        }\n      ]\n    },\n    \"ffi\": {\n      \"begin\": \"^(\\\\s*)(foreign)\\\\s+(import|export)\\\\s+\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.foreign.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.$3.haskell\"\n        }\n      },\n      \"name\": \"meta.$3.foreign.haskell\",\n      \"end\": \"(?x) # Detect end of FFI block by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"match\": \"\\\\b(?<!')(ccall|cplusplus|dotnet|jvm|stdcall|prim|capi)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.calling-convention.$1.haskell\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?=\\\")|(?=\\\\b(?<!')([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\b(?!'))\",\n          \"end\": \"(?=(::|∷)(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"match\": \"(?x)\\n  \\\\b(?<!')(safe|unsafe|interruptible)\\\\b(?!')\\n  \\\\s*\\n  (\\\"(?:\\\\\\\\\\\"|[^\\\"])*\\\")?\\n  \\\\s*\\n  (?:\\n    (?:\\\\b(?<!'')([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\b(?!'))\\n   |(?:\\\\(\\\\s*(?!--+\\\\))([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*\\\\))\\n  )\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.safety.$1.haskell\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.foreign.haskell\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#string_literal\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"entity.name.function.haskell\"\n                },\n                \"4\": {\n                  \"name\": \"entity.name.function.infix.haskell\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?x)\\n  \\\\b(?<!')(safe|unsafe|interruptible)\\\\b(?!')\\n  \\\\s*\\n  (\\\"(?:\\\\\\\\\\\"|[^\\\"])*\\\")?\\n  \\\\s*$\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.safety.$1.haskell\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.foreign.haskell\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#string_literal\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"(?x)\\n  \\\"(?:\\\\\\\\\\\"|[^\\\"])*\\\"\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"entity.name.foreign.haskell\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#string_literal\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"(?x)\\n   (?:\\\\b(?<!'')([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\b(?!'))\\n  |(?:(\\\\()\\\\s*(?!--+\\\\))([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\)))\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.haskell\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.paren.haskell\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.function.infix.haskell\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.paren.haskell\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#double_colon\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    \"inline_phase\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      },\n      \"name\": \"meta.inlining-phase.haskell\",\n      \"patterns\": [\n        {\n          \"match\": \"~\",\n          \"name\": \"punctuation.tilde.haskell\"\n        },\n        {\n          \"include\": \"#integer_literals\"\n        },\n        {\n          \"match\": \"\\\\w*\",\n          \"name\": \"invalid\"\n        }\n      ]\n    },\n    \"quasi_quote\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n  (\\\\[)\\n  (e|d|p)?\\n  (\\\\|\\\\|?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.quasi-quoter.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            }\n          },\n          \"end\": \"\\\\3\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.quasi-quotation.end.haskell\"\n            }\n          },\n          \"name\": \"meta.quasi-quotation.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n  (\\\\[)\\n  (t)\\n  (\\\\|\\\\|?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.quasi-quoter.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            }\n          },\n          \"end\": \"\\\\3\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.quasi-quotation.end.haskell\"\n            }\n          },\n          \"name\": \"meta.quasi-quotation.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n  (\\\\[)\\n  (?:(\\\\$\\\\$)|(\\\\$))?\\n  ((?:[^\\\\s\\\\p{S}\\\\p{P}]|[\\\\.'_])*)\\n  (\\\\|\\\\|?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prefix.double-dollar.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.prefix.dollar.haskell\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#qualifier\"\n                }\n              ],\n              \"name\": \"entity.name.quasi-quoter.haskell\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            }\n          },\n          \"end\": \"\\\\5\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.quasi-quotation.end.haskell\"\n            }\n          },\n          \"name\": \"meta.quasi-quotation.haskell\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.haskell\",\n  \"uuid\": \"5C034675-1F6D-497E-8073-369D37E2FD7D\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/haxe.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.hx\",\n  \"fileTypes\": [\"hx\", \"dump\"],\n  \"patterns\": [{ \"include\": \"#all\" }],\n  \"repository\": {\n    \"interface-block\": {\n      \"begin\": \"(?<=\\\\{)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.block.end.hx\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#method\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#block-contents\" }\n      ],\n      \"name\": \"meta.block.hx\"\n    },\n    \"for-loop\": {\n      \"begin\": \"\\\\b(for)\\\\b\\\\s*(\\\\()\",\n      \"endCaptures\": { \"1\": { \"name\": \"meta.brace.round.hx\" } },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [\n        { \"match\": \"\\\\b(in)\\\\b\", \"name\": \"keyword.other.in.hx\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#block-contents\" }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.flow-control.hx\" },\n        \"2\": { \"name\": \"meta.brace.round.hx\" }\n      }\n    },\n    \"operators\": {\n      \"patterns\": [\n        { \"match\": \"(&&|\\\\|\\\\|)\", \"name\": \"keyword.operator.logical.hx\" },\n        {\n          \"match\": \"(~|&|\\\\||\\\\^|>>>|<<|>>)\",\n          \"name\": \"keyword.operator.bitwise.hx\"\n        },\n        {\n          \"match\": \"(==|!=|<=|>=|<|>)\",\n          \"name\": \"keyword.operator.comparison.hx\"\n        },\n        { \"match\": \"(!)\", \"name\": \"keyword.operator.logical.hx\" },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.hx\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.hx\"\n        },\n        { \"match\": \"\\\\.\\\\.\\\\.\", \"name\": \"keyword.operator.intiterator.hx\" },\n        { \"match\": \"=>\", \"name\": \"keyword.operator.arrow.hx\" },\n        { \"match\": \"\\\\?\\\\?\", \"name\": \"keyword.operator.nullcoalescing.hx\" },\n        { \"match\": \"\\\\?\\\\.\", \"name\": \"keyword.operator.safenavigation.hx\" },\n        { \"match\": \"\\\\bis\\\\b(?!\\\\()\", \"name\": \"keyword.other.hx\" },\n        {\n          \"begin\": \"\\\\?\",\n          \"endCaptures\": { \"0\": { \"name\": \"keyword.operator.ternary.hx\" } },\n          \"end\": \":\",\n          \"patterns\": [{ \"include\": \"#block-contents\" }],\n          \"beginCaptures\": { \"0\": { \"name\": \"keyword.operator.ternary.hx\" } }\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        { \"match\": \"\\\\b(true|false|null)\\\\b\", \"name\": \"constant.language.hx\" },\n        {\n          \"match\": \"\\\\b(0(x|X)[0-9a-fA-F]*)\\\\b\",\n          \"name\": \"constant.numeric.hex.hx\"\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9]+(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9]+(\\\\.)[eE][+-]?[0-9]+\\\\b)|       # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)|       # .1E+3\\n  (?:\\\\b[0-9]+[eE][+-]?[0-9]+\\\\b)|           # 1E+3\\n  (?:\\\\b[0-9]+(\\\\.)[0-9]+\\\\b)|                # 1.1\\n  (?:\\\\b[0-9]+(\\\\.)(?!\\\\.)\\\\B)|                # 1.\\n  (?:\\\\B(\\\\.)[0-9]+\\\\b)|                      # .1\\n  (?:\\\\b[0-9]+\\\\b)                           # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"3\": { \"name\": \"meta.delimiter.decimal.period.hx\" },\n            \"4\": { \"name\": \"meta.delimiter.decimal.period.hx\" },\n            \"0\": { \"name\": \"constant.numeric.decimal.hx\" },\n            \"5\": { \"name\": \"meta.delimiter.decimal.period.hx\" },\n            \"1\": { \"name\": \"meta.delimiter.decimal.period.hx\" },\n            \"6\": { \"name\": \"meta.delimiter.decimal.period.hx\" },\n            \"2\": { \"name\": \"meta.delimiter.decimal.period.hx\" }\n          }\n        }\n      ]\n    },\n    \"identifier-name\": {\n      \"match\": \"\\\\b([_A-Za-z]\\\\w*)\\\\b\",\n      \"name\": \"variable.other.hx\"\n    },\n    \"global\": {\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#conditional-compilation\" }\n      ]\n    },\n    \"string-escape-sequences\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[0-3][0-9]{2}\",\n          \"name\": \"constant.character.escape.hx\"\n        },\n        {\n          \"match\": \"\\\\\\\\x[0-9A-Fa-f]{2}\",\n          \"name\": \"constant.character.escape.hx\"\n        },\n        { \"match\": \"\\\\\\\\u[0-9]{4}\", \"name\": \"constant.character.escape.hx\" },\n        {\n          \"match\": \"\\\\\\\\u\\\\{[0-9A-Fa-f]{1,}\\\\}\",\n          \"name\": \"constant.character.escape.hx\"\n        },\n        { \"match\": \"\\\\\\\\[nrt\\\"'\\\\\\\\]\", \"name\": \"constant.character.escape.hx\" },\n        { \"match\": \"\\\\\\\\.\", \"name\": \"invalid.escape.sequence.hx\" }\n      ]\n    },\n    \"variable-name-next\": {\n      \"begin\": \",\",\n      \"endCaptures\": { \"1\": { \"name\": \"variable.other.hx\" } },\n      \"end\": \"([_a-zA-Z]\\\\w*)\",\n      \"patterns\": [{ \"include\": \"#global\" }],\n      \"beginCaptures\": { \"0\": { \"name\": \"punctuation.separator.comma.hx\" } }\n    },\n    \"enum-name\": {\n      \"begin\": \"\\\\b(enum)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"entity.name.type.class.hx\" } },\n      \"end\": \"([_A-Za-z]\\\\w*)\",\n      \"patterns\": [{ \"include\": \"#global\" }],\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.type.class.hx\" } }\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=trace|$type|if|while|for|super)\\\\s*(\\\\()\",\n          \"endCaptures\": { \"0\": { \"name\": \"meta.brace.round.hx\" } },\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"#block-contents\" }],\n          \"beginCaptures\": { \"2\": { \"name\": \"meta.brace.round.hx\" } }\n        },\n        {\n          \"begin\": \"(?<=catch)\\\\s*(\\\\()\",\n          \"endCaptures\": { \"0\": { \"name\": \"meta.brace.round.hx\" } },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            { \"include\": \"#block-contents\" },\n            { \"include\": \"#type-check\" }\n          ],\n          \"beginCaptures\": { \"2\": { \"name\": \"meta.brace.round.hx\" } }\n        },\n        {\n          \"begin\": \"(?<=cast)\\\\s*(\\\\()\",\n          \"endCaptures\": { \"0\": { \"name\": \"meta.brace.round.hx\" } },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=,)\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [{ \"include\": \"#type\" }]\n            },\n            { \"include\": \"#block-contents\" }\n          ],\n          \"beginCaptures\": { \"2\": { \"name\": \"meta.brace.round.hx\" } }\n        },\n        {\n          \"match\": \"\\\\b(try|catch|throw)\\\\b\",\n          \"name\": \"keyword.control.catch-exception.hx\"\n        },\n        {\n          \"begin\": \"\\\\b(case|default)\\\\b\",\n          \"end\": \":|(?=if)|$\",\n          \"patterns\": [\n            { \"include\": \"#global\" },\n            { \"include\": \"#metadata\" },\n            {\n              \"match\": \"\\\\b(var|final)\\\\b\\\\s*([_a-zA-Z]\\\\w*)\\\\b\",\n              \"captures\": {\n                \"1\": { \"name\": \"storage.type.variable.hx\" },\n                \"2\": { \"name\": \"variable.other.hx\" }\n              }\n            },\n            { \"include\": \"#array\" },\n            { \"include\": \"#constants\" },\n            { \"include\": \"#strings\" },\n            { \"match\": \"\\\\(\", \"name\": \"meta.brace.round.hx\" },\n            { \"match\": \"\\\\)\", \"name\": \"meta.brace.round.hx\" },\n            { \"include\": \"#macro-reification\" },\n            { \"match\": \"=>\", \"name\": \"keyword.operator.extractor.hx\" },\n            { \"include\": \"#operator-assignment\" },\n            { \"include\": \"#punctuation-comma\" },\n            { \"include\": \"#keywords\" },\n            { \"include\": \"#method-call\" },\n            { \"include\": \"#identifiers\" }\n          ],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.control.flow-control.hx\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b(if|else|return|do|while|for|break|continue|switch|case|default)\\\\b\",\n          \"name\": \"keyword.control.flow-control.hx\"\n        },\n        { \"match\": \"\\\\b(cast|untyped)\\\\b\", \"name\": \"keyword.other.untyped.hx\" },\n        { \"match\": \"\\\\btrace\\\\b\", \"name\": \"keyword.other.trace.hx\" },\n        { \"match\": \"\\\\$type\\\\b\", \"name\": \"keyword.other.type.hx\" },\n        {\n          \"match\": \"\\\\__(global|this)__\\\\b\",\n          \"name\": \"keyword.other.untyped-property.hx\"\n        },\n        { \"match\": \"\\\\b(this|super)\\\\b\", \"name\": \"variable.language.hx\" },\n        { \"match\": \"\\\\bnew\\\\b\", \"name\": \"keyword.operator.new.hx\" },\n        {\n          \"match\": \"\\\\b(abstract|class|enum|interface|typedef)\\\\b\",\n          \"name\": \"storage.type.hx\"\n        },\n        { \"match\": \"->\", \"name\": \"storage.type.function.arrow.hx\" },\n        { \"include\": \"#modifiers\" },\n        { \"include\": \"#modifiers-inheritance\" }\n      ]\n    },\n    \"method-call\": {\n      \"begin\": \"\\\\b(?:(__(?:addressOf|as|call|checked|cpp|cs|define_feature|delete|feature|field|fixed|foreach|forin|has_next|hkeys|in|int|is|java|js|keys|lock|lua|lua_table|new|php|physeq|prefix|ptr|resources|rethrow|set|setfield|sizeof|type|typeof|unprotect|unsafe|valueOf|var|vector|vmem_get|vmem_set|vmem_sign|instanceof|strict_eq|strict_neq)__)|([_a-z]\\\\w*))\\\\s*(\\\\()\",\n      \"endCaptures\": { \"1\": { \"name\": \"meta.brace.round.hx\" } },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [{ \"include\": \"#block\" }, { \"include\": \"#block-contents\" }],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.other.untyped-function.hx\" },\n        \"2\": { \"name\": \"entity.name.function.hx\" },\n        \"3\": { \"name\": \"meta.brace.round.hx\" }\n      }\n    },\n    \"modifiers\": {\n      \"patterns\": [\n        { \"match\": \"\\\\b(enum)\\\\b\", \"name\": \"storage.type.class\" },\n        {\n          \"match\": \"\\\\b(public|private|static|dynamic|inline|macro|extern|override|overload|abstract)\\\\b\",\n          \"name\": \"storage.modifier.hx\"\n        },\n        {\n          \"match\": \"\\\\b(final)\\\\b(?=\\\\s+(public|private|static|dynamic|inline|macro|extern|override|overload|abstract|function))\",\n          \"name\": \"storage.modifier.hx\"\n        }\n      ]\n    },\n    \"type-path-package-name\": {\n      \"match\": \"\\\\b([_A-Za-z]\\\\w*)\\\\b\",\n      \"name\": \"support.package.hx\"\n    },\n    \"variable\": {\n      \"begin\": \"(?=\\\\b(var|final)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.terminator.hx\" } },\n      \"end\": \"(?=$)|(;)\",\n      \"patterns\": [\n        { \"include\": \"#variable-name\" },\n        { \"include\": \"#variable-name-next\" },\n        { \"include\": \"#variable-assign\" },\n        { \"include\": \"#variable-name-post\" }\n      ]\n    },\n    \"function-type-parameter-name\": {\n      \"match\": \"([_a-zA-Z]\\\\w*)(?=\\\\s*:)\",\n      \"captures\": { \"1\": { \"name\": \"variable.parameter.hx\" } }\n    },\n    \"modifiers-inheritance\": {\n      \"match\": \"\\\\b(implements|extends)\\\\b\",\n      \"name\": \"storage.modifier.hx\"\n    },\n    \"typedef-simple-field-type-hint\": {\n      \"begin\": \":\",\n      \"end\": \"(?=\\\\}|,|;)\",\n      \"patterns\": [{ \"include\": \"#type\" }],\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.operator.type.annotation.hx\" }\n      }\n    },\n    \"type-check\": {\n      \"begin\": \"(?<!macro)(?=:)\",\n      \"end\": \"(?=\\\\))\",\n      \"patterns\": [{ \"include\": \"#operator-type-hint\" }, { \"include\": \"#type\" }]\n    },\n    \"variable-name-post\": {\n      \"begin\": \"(?<=\\\\w)\",\n      \"end\": \"(?=;)|(?==)\",\n      \"patterns\": [\n        { \"include\": \"#variable-accessors\" },\n        { \"include\": \"#variable-type-hint\" },\n        { \"include\": \"#block-contents\" }\n      ]\n    },\n    \"type-parameter-constraint-new\": {\n      \"match\": \":\",\n      \"name\": \"keyword.operator.type.annotation.hxt\"\n    },\n    \"array\": {\n      \"begin\": \"\\\\[\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.array.end.hx\" } },\n      \"end\": \"\\\\]\",\n      \"patterns\": [{ \"include\": \"#block\" }, { \"include\": \"#block-contents\" }],\n      \"name\": \"meta.array.literal.hx\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.array.begin.hx\" }\n      }\n    },\n    \"class-name-post\": {\n      \"begin\": \"(?<=\\\\w)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.block.begin.hx\" }\n      },\n      \"end\": \"([\\\\{;])\",\n      \"patterns\": [\n        { \"include\": \"#modifiers-inheritance\" },\n        { \"include\": \"#type\" }\n      ]\n    },\n    \"operator-optional\": {\n      \"match\": \"(\\\\?)(?!\\\\s)\",\n      \"name\": \"keyword.operator.optional.hx\"\n    },\n    \"interface-name\": {\n      \"begin\": \"\\\\b(interface)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"entity.name.type.class.hx\" } },\n      \"end\": \"([_A-Za-z]\\\\w*)\",\n      \"patterns\": [{ \"include\": \"#global\" }],\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.type.class.hx\" } }\n    },\n    \"parameter-type-hint\": {\n      \"begin\": \":\",\n      \"end\": \"(?=\\\\)(?!\\\\s*->)|,|=)\",\n      \"patterns\": [{ \"include\": \"#type\" }],\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.operator.type.annotation.hx\" }\n      }\n    },\n    \"typedef-name\": {\n      \"begin\": \"\\\\b(typedef)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"entity.name.type.class.hx\" } },\n      \"end\": \"([_A-Za-z]\\\\w*)\",\n      \"patterns\": [{ \"include\": \"#global\" }],\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.type.class.hx\" } }\n    },\n    \"method\": {\n      \"begin\": \"(?=\\\\bfunction\\\\b)\",\n      \"end\": \"(?<=[\\\\};])\",\n      \"patterns\": [\n        { \"include\": \"#macro-reification\" },\n        { \"include\": \"#method-name\" },\n        { \"include\": \"#method-name-post\" },\n        { \"include\": \"#method-block\" }\n      ],\n      \"name\": \"meta.method.hx\"\n    },\n    \"enum-block\": {\n      \"begin\": \"(?<=\\\\{)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.block.end.hx\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#metadata\" },\n        { \"include\": \"#parameters\" },\n        { \"include\": \"#identifiers\" }\n      ],\n      \"name\": \"meta.block.hx\"\n    },\n    \"abstract-name\": {\n      \"begin\": \"\\\\b(abstract)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"entity.name.type.class.hx\" } },\n      \"end\": \"([_A-Za-z]\\\\w*)\",\n      \"patterns\": [{ \"include\": \"#global\" }],\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.type.class.hx\" } }\n    },\n    \"variable-type-hint\": {\n      \"begin\": \":\",\n      \"end\": \"(?=$|;|,|=)\",\n      \"patterns\": [{ \"include\": \"#type\" }],\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.operator.type.annotation.hx\" }\n      }\n    },\n    \"class-name\": {\n      \"begin\": \"\\\\b(class)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"entity.name.type.class.hx\" } },\n      \"end\": \"([_A-Za-z]\\\\w*)\",\n      \"patterns\": [{ \"include\": \"#global\" }],\n      \"name\": \"meta.class.identifier.hx\",\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.type.class.hx\" } }\n    },\n    \"import\": {\n      \"begin\": \"import\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.terminator.hx\" } },\n      \"end\": \"$|(;)\",\n      \"patterns\": [\n        { \"include\": \"#type-path\" },\n        { \"match\": \"\\\\b(as)\\\\b\", \"name\": \"keyword.control.as.hx\" },\n        { \"match\": \"\\\\b(in)\\\\b\", \"name\": \"keyword.control.in.hx\" },\n        { \"match\": \"\\\\*\", \"name\": \"constant.language.import-all.hx\" },\n        {\n          \"match\": \"\\\\b([_A-Za-z]\\\\w*)\\\\b(?=\\\\s*(as|in|$|(;)))\",\n          \"name\": \"variable.other.hxt\"\n        },\n        { \"include\": \"#type-path-package-name\" }\n      ],\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.control.import.hx\" } }\n    },\n    \"macro-reification\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\$)([eabipv])\\\\{\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.reification.hx\" },\n            \"2\": { \"name\": \"keyword.reification.hx\" }\n          }\n        },\n        {\n          \"match\": \"((\\\\$)([a-zA-Z]*))\",\n          \"captures\": {\n            \"2\": { \"name\": \"punctuation.definition.reification.hx\" },\n            \"3\": { \"name\": \"variable.reification.hx\" }\n          }\n        }\n      ]\n    },\n    \"javadoc-tags\": {\n      \"patterns\": [\n        {\n          \"match\": \"(@(?:param|exception|throws|event))\\\\s+([_A-Za-z]\\\\w*)\\\\s+\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.class.javadoc\" },\n            \"2\": { \"name\": \"variable.other.javadoc\" }\n          }\n        },\n        {\n          \"match\": \"(@since)\\\\s+([\\\\w\\\\.-]+)\\\\s+\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.class.javadoc\" },\n            \"2\": { \"name\": \"constant.numeric.javadoc\" }\n          }\n        },\n        {\n          \"match\": \"@(param|exception|throws|deprecated|returns?|since|default|see|event)\",\n          \"captures\": { \"0\": { \"name\": \"storage.type.class.javadoc\" } }\n        }\n      ]\n    },\n    \"conditional-compilation\": {\n      \"patterns\": [\n        {\n          \"match\": \"((#(if|elseif))[\\\\s!]+([a-zA-Z_][a-zA-Z0-9_]*(\\\\.[a-zA-Z_][a-zA-Z0-9_]*)*)(?=\\\\s|/\\\\*|//))\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.tag\" } }\n        },\n        {\n          \"begin\": \"((#(if|elseif))[\\\\s!]*)(?=\\\\()\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.tag\" } },\n          \"end\": \"(?<=\\\\)|\\\\n)\",\n          \"patterns\": [{ \"include\": \"#conditional-compilation-parens\" }],\n          \"name\": \"punctuation.definition.tag\",\n          \"beginCaptures\": { \"0\": { \"name\": \"punctuation.definition.tag\" } }\n        },\n        {\n          \"match\": \"(#(end|else|error|line))\",\n          \"name\": \"punctuation.definition.tag\"\n        },\n        {\n          \"match\": \"(#([a-zA-Z0-9_]*))\\\\s\",\n          \"name\": \"punctuation.definition.tag\"\n        }\n      ]\n    },\n    \"enum\": {\n      \"begin\": \"(?=enum\\\\s+[A-Z])\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.terminator.hx\" } },\n      \"end\": \"(?<=\\\\})|(;)\",\n      \"patterns\": [\n        { \"include\": \"#enum-name\" },\n        { \"include\": \"#enum-name-post\" },\n        { \"include\": \"#enum-block\" }\n      ],\n      \"name\": \"meta.enum.hx\"\n    },\n    \"parameters\": {\n      \"begin\": \"\\\\(\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.parameters.end.hx\" }\n      },\n      \"end\": \"\\\\s*(\\\\)(?!\\\\s*->))\",\n      \"patterns\": [{ \"include\": \"#parameter\" }],\n      \"name\": \"meta.parameters.hx\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.parameters.begin.hx\" }\n      }\n    },\n    \"method-return-type-hint\": {\n      \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n      \"end\": \"(?=\\\\{|;|[a-z0-9])\",\n      \"patterns\": [{ \"include\": \"#type\" }],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.operator.type.annotation.hx\" }\n      }\n    },\n    \"method-name\": {\n      \"begin\": \"\\\\b(function)\\\\b\\\\s*\\\\b(?:(new)|([_A-Za-z]\\\\w*))?\\\\b\",\n      \"end\": \"(?=$|\\\\()\",\n      \"patterns\": [\n        { \"include\": \"#macro-reification\" },\n        { \"include\": \"#type-parameters\" }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.type.function.hx\" },\n        \"2\": { \"name\": \"storage.type.hx\" },\n        \"3\": { \"name\": \"entity.name.function.hx\" }\n      }\n    },\n    \"arrow-function\": {\n      \"begin\": \"(\\\\()(?=[^(]*?\\\\)\\\\s*->)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.parameters.end.hx\" },\n        \"2\": { \"name\": \"storage.type.function.arrow.hx\" }\n      },\n      \"end\": \"(\\\\))\\\\s*(->)\",\n      \"patterns\": [{ \"include\": \"#arrow-function-parameter\" }],\n      \"name\": \"meta.method.arrow.hx\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.parameters.begin.hx\" }\n      }\n    },\n    \"function-type-parameter-type-hint\": {\n      \"begin\": \":\",\n      \"end\": \"(?=\\\\)|,|=)\",\n      \"patterns\": [{ \"include\": \"#type\" }],\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.operator.type.annotation.hx\" }\n      }\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(Any|Array|ArrayAccess|Bool|Class|Date|DateTools|Dynamic|Enum|EnumValue|EReg|Float|IMap|Int|IntIterator|Iterable|Iterator|KeyValueIterator|KeyValueIterable|Lambda|List|ListIterator|ListNode|Map|Math|Null|Reflect|Single|Std|String|StringBuf|StringTools|Sys|Type|UInt|UnicodeString|ValueType|Void|Xml|XmlType)(?:(\\\\.)(_*[A-Z]\\\\w*[a-z]\\\\w*))*\\\\b\",\n          \"captures\": {\n            \"1\": { \"name\": \"support.class.builtin.hx\" },\n            \"2\": { \"name\": \"support.package.hx\" },\n            \"3\": { \"name\": \"entity.name.type.hx\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?<![^.]\\\\.)((_*[a-z]\\\\w*\\\\.)*)(_*[A-Z]\\\\w*)(?:(\\\\.)(_*[A-Z]\\\\w*[a-z]\\\\w*))*\\\\b\",\n          \"captures\": {\n            \"3\": { \"name\": \"entity.name.type.hx\" },\n            \"1\": { \"name\": \"support.package.hx\" },\n            \"4\": { \"name\": \"support.package.hx\" },\n            \"5\": { \"name\": \"entity.name.type.hx\" }\n          }\n        }\n      ]\n    },\n    \"identifiers\": {\n      \"patterns\": [\n        { \"include\": \"#constant-name\" },\n        { \"include\": \"#type-name\" },\n        { \"include\": \"#identifier-name\" }\n      ]\n    },\n    \"new-expr\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(new)\\\\b\",\n      \"end\": \"(?=$|\\\\()\",\n      \"patterns\": [{ \"include\": \"#type\" }],\n      \"name\": \"new.expr.hx\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.operator.new.hx\" } }\n    },\n    \"method-name-post\": {\n      \"begin\": \"(?<=[\\\\w\\\\s>])\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.block.begin.hx\" },\n        \"2\": { \"name\": \"punctuation.terminator.hx\" }\n      },\n      \"end\": \"(\\\\{)|(;)\",\n      \"patterns\": [\n        { \"include\": \"#parameters\" },\n        { \"include\": \"#method-return-type-hint\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#block-contents\" }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.comma.hx\"\n    },\n    \"type-path\": {\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#punctuation-accessor\" },\n        { \"include\": \"#type-path-type-name\" }\n      ]\n    },\n    \"punctuation-accessor\": {\n      \"match\": \"\\\\.\",\n      \"name\": \"punctuation.accessor.hx\"\n    },\n    \"type-parameters\": {\n      \"begin\": \"(<)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.typeparameters.end.hx\" }\n      },\n      \"end\": \"(?=$)|(>)\",\n      \"patterns\": [\n        { \"include\": \"#type\" },\n        { \"include\": \"#type-parameter-constraint-old\" },\n        { \"include\": \"#type-parameter-constraint-new\" },\n        { \"include\": \"#global\" },\n        { \"include\": \"#regex\" },\n        { \"include\": \"#array\" },\n        { \"include\": \"#constants\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#metadata\" },\n        { \"include\": \"#punctuation-comma\" }\n      ],\n      \"name\": \"meta.type-parameters.hx\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.typeparameters.begin.hx\" }\n      }\n    },\n    \"variable-assign\": {\n      \"begin\": \"=\",\n      \"end\": \"(?=;|,)\",\n      \"patterns\": [{ \"include\": \"#block\" }, { \"include\": \"#block-contents\" }],\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.operator.assignment.hx\" } }\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.hx\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [{ \"include\": \"#string-escape-sequences\" }],\n          \"name\": \"string.quoted.double.hx\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.hx\" }\n          }\n        },\n        {\n          \"begin\": \"(')\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"string.quoted.single.hx\" },\n            \"1\": { \"name\": \"punctuation.definition.string.end.hx\" }\n          },\n          \"end\": \"(')\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\$(?=\\\\$)\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"constant.character.escape.hx\" }\n              },\n              \"end\": \"\\\\$\",\n              \"name\": \"string.quoted.single.hx\",\n              \"beginCaptures\": {\n                \"0\": { \"name\": \"constant.character.escape.hx\" }\n              }\n            },\n            { \"include\": \"#string-escape-sequences\" },\n            {\n              \"begin\": \"(\\\\${)\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.block.end.hx\" }\n              },\n              \"end\": \"(})\",\n              \"patterns\": [{ \"include\": \"#block-contents\" }],\n              \"beginCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.block.begin.hx\" }\n              }\n            },\n            {\n              \"match\": \"(\\\\$)([_a-zA-Z]\\\\w*)\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.block.begin.hx\" },\n                \"2\": { \"name\": \"variable.other.hx\" }\n              }\n            },\n            { \"match\": \"\", \"name\": \"constant.character.escape.hx\" },\n            { \"match\": \".\", \"name\": \"string.quoted.single.hx\" }\n          ],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"string.quoted.single.hx\" },\n            \"1\": { \"name\": \"punctuation.definition.string.begin.hx\" }\n          }\n        }\n      ]\n    },\n    \"arrow-function-parameter-type-hint\": {\n      \"begin\": \":\",\n      \"end\": \"(?=\\\\)|,|=)\",\n      \"patterns\": [{ \"include\": \"#type\" }],\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.operator.type.annotation.hx\" }\n      }\n    },\n    \"constant-name\": {\n      \"match\": \"\\\\b([_A-Z][_A-Z0-9]*)\\\\b\",\n      \"name\": \"variable.other.hx\"\n    },\n    \"arrow-function-parameter\": {\n      \"begin\": \"(?<=\\\\(|,)\",\n      \"end\": \"(?=\\\\)|,)\",\n      \"patterns\": [\n        { \"include\": \"#parameter-name\" },\n        { \"include\": \"#arrow-function-parameter-type-hint\" },\n        { \"include\": \"#parameter-assign\" },\n        { \"include\": \"#punctuation-comma\" },\n        { \"include\": \"#global\" }\n      ]\n    },\n    \"using\": {\n      \"begin\": \"using\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.terminator.hx\" } },\n      \"end\": \"$|(;)\",\n      \"patterns\": [\n        { \"include\": \"#type-path\" },\n        { \"include\": \"#type-path-package-name\" }\n      ],\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.other.using.hx\" } }\n    },\n    \"punctuation-terminator\": {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.hx\"\n    },\n    \"accessor-method\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(get|set)_[_A-Za-z]\\\\w*\\\\b\",\n          \"name\": \"entity.name.function.hx\"\n        }\n      ]\n    },\n    \"interface-name-post\": {\n      \"begin\": \"(?<=\\\\w)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.block.begin.hx\" }\n      },\n      \"end\": \"([\\\\{;])\",\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#modifiers-inheritance\" },\n        { \"include\": \"#type\" }\n      ]\n    },\n    \"type-path-type-name\": {\n      \"match\": \"\\\\b(_*[A-Z]\\\\w*)\\\\b\",\n      \"name\": \"entity.name.type.hx\"\n    },\n    \"function-type-parameter\": {\n      \"begin\": \"(?<=\\\\(|,)\",\n      \"end\": \"(?=\\\\)|,)\",\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#metadata\" },\n        { \"include\": \"#operator-optional\" },\n        { \"include\": \"#punctuation-comma\" },\n        { \"include\": \"#function-type-parameter-name\" },\n        { \"include\": \"#function-type-parameter-type-hint\" },\n        { \"include\": \"#parameter-assign\" },\n        { \"include\": \"#type\" },\n        { \"include\": \"#global\" }\n      ]\n    },\n    \"all\": {\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#package\" },\n        { \"include\": \"#import\" },\n        { \"include\": \"#using\" },\n        {\n          \"match\": \"\\\\b(final)\\\\b(?=\\\\s+(class|interface|extern|private)\\\\b)\",\n          \"name\": \"storage.modifier.hx\"\n        },\n        { \"include\": \"#abstract\" },\n        { \"include\": \"#class\" },\n        { \"include\": \"#enum\" },\n        { \"include\": \"#interface\" },\n        { \"include\": \"#typedef\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#block-contents\" }\n      ]\n    },\n    \"function-type\": {\n      \"begin\": \"\\\\(\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.parameters.end.hx\" }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#function-type-parameter\" }],\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.parameters.begin.hx\" }\n      }\n    },\n    \"typedef-block\": {\n      \"begin\": \"(?<=\\\\{)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.block.end.hx\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#metadata\" },\n        { \"include\": \"#method\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#modifiers\" },\n        { \"include\": \"#punctuation-comma\" },\n        { \"include\": \"#operator-optional\" },\n        { \"include\": \"#typedef-extension\" },\n        { \"include\": \"#typedef-simple-field-type-hint\" },\n        { \"include\": \"#identifier-name\" },\n        { \"include\": \"#strings\" }\n      ],\n      \"name\": \"meta.block.hx\"\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\",\n          \"name\": \"keyword.control.anchor.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9]\\\\d*\",\n          \"name\": \"keyword.other.back-reference.regexp\"\n        },\n        {\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\",\n          \"name\": \"keyword.operator.quantifier.regexp\"\n        },\n        { \"match\": \"\\\\|\", \"name\": \"keyword.operator.or.regexp\" },\n        {\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!))\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.group.regexp\" }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [{ \"include\": \"#regexp\" }],\n          \"name\": \"meta.group.assertion.regexp\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"meta.assertion.look-ahead.regexp\" },\n            \"1\": { \"name\": \"punctuation.definition.group.regexp\" },\n            \"4\": { \"name\": \"meta.assertion.negative-look-ahead.regexp\" },\n            \"2\": { \"name\": \"punctuation.definition.group.assertion.regexp\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\((\\\\?:)?\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.group.regexp\" }\n          },\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"#regexp\" }],\n          \"name\": \"meta.group.regexp\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.group.regexp\" },\n            \"1\": { \"name\": \"punctuation.definition.group.capture.regexp\" }\n          }\n        },\n        {\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.character-class.regexp\" }\n          },\n          \"end\": \"(\\\\])\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h\\\\h|u\\\\h\\\\h\\\\h\\\\h))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h\\\\h|u\\\\h\\\\h\\\\h\\\\h))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"name\": \"constant.other.character-class.range.regexp\",\n              \"captures\": {\n                \"3\": { \"name\": \"constant.character.escape.backslash.regexp\" },\n                \"1\": { \"name\": \"constant.character.numeric.regexp\" },\n                \"6\": { \"name\": \"constant.character.escape.backslash.regexp\" },\n                \"4\": { \"name\": \"constant.character.numeric.regexp\" },\n                \"2\": { \"name\": \"constant.character.control.regexp\" },\n                \"5\": { \"name\": \"constant.character.control.regexp\" }\n              }\n            },\n            { \"include\": \"#regex-character-class\" }\n          ],\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.character-class.regexp\" },\n            \"2\": { \"name\": \"keyword.operator.negation.regexp\" }\n          }\n        },\n        { \"include\": \"#regex-character-class\" }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[wWsSdDtrnvf]|\\\\.\",\n          \"name\": \"constant.other.character-class.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\([0-7]{3}|x\\\\h\\\\h|u\\\\h\\\\h\\\\h\\\\h)\",\n          \"name\": \"constant.character.numeric.regexp\"\n        },\n        { \"match\": \"\\\\\\\\c[A-Z]\", \"name\": \"constant.character.control.regexp\" },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.backslash.regexp\"\n        }\n      ]\n    },\n    \"enum-name-post\": {\n      \"begin\": \"(?<=\\\\w)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.block.begin.hx\" }\n      },\n      \"end\": \"([\\\\{;])\",\n      \"patterns\": [{ \"include\": \"#type\" }]\n    },\n    \"type-parameter-constraint-old\": {\n      \"begin\": \"(:)\\\\s*(\\\\()\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.constraint.end.hx\" }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#type\" }, { \"include\": \"#punctuation-comma\" }],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.operator.type.annotation.hx\" },\n        \"2\": { \"name\": \"punctuation.definition.constraint.begin.hx\" }\n      }\n    },\n    \"variable-accessors\": {\n      \"begin\": \"\\\\(\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.parameters.end.hx\" }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#keywords-accessor\" },\n        { \"include\": \"#accessor-method\" },\n        { \"include\": \"#punctuation-comma\" }\n      ],\n      \"name\": \"meta.parameters.hx\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.parameters.begin.hx\" }\n      }\n    },\n    \"operator-type-hint\": {\n      \"match\": \"(:)\",\n      \"name\": \"keyword.operator.type.annotation.hx\"\n    },\n    \"typedef-name-post\": {\n      \"begin\": \"(?<=\\\\w)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.block.begin.hx\" }\n      },\n      \"end\": \"(\\\\{)|(?=;)\",\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#punctuation-brackets\" },\n        { \"include\": \"#punctuation-separator\" },\n        { \"include\": \"#operator-assignment\" },\n        { \"include\": \"#type\" }\n      ]\n    },\n    \"operator-assignment\": {\n      \"match\": \"(=)\",\n      \"name\": \"keyword.operator.assignment.hx\"\n    },\n    \"metadata\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(@)(:(abi|abstract|access|allow|analyzer|annotation|arrayAccess|astSource|autoBuild|bind|bitmap|bridgeProperties|build|buildXml|bypassAccessor|callable|classCode|commutative|compilerGenerated|const|coreApi|coreType|cppFileCode|cppInclude|cppNamespaceCode|cs.assemblyMeta|cs.assemblyStrict|cs.using|dce|debug|decl|delegate|depend|deprecated|eager|enum|event|expose|extern|file|fileXml|final|fixed|flash.property|font|forward.new|forward.variance|forward|forwardStatics|from|functionCode|functionTailCode|generic|genericBuild|genericClassPerMethod|getter|hack|headerClassCode|headerCode|headerInclude|headerNamespaceCode|hlNative|hxGen|ifFeature|include|inheritDoc|inline|internal|isVar|java.native|javaCanonical|jsRequire|jvm.synthetic|keep|keepInit|keepSub|luaDotMethod|luaRequire|macro|markup|mergeBlock|multiReturn|multiType|native|nativeChildren|nativeGen|nativeProperty|nativeStaticExtension|noClosure|noCompletion|noDebug|noDoc|noImportGlobal|noPrivateAccess|noStack|noUsing|nonVirtual|notNull|nullSafety|objc|objcProtocol|op|optional|overload|persistent|phpClassConst|phpGlobal|phpMagic|phpNoConstructor|pos|private|privateAccess|property|protected|publicFields|pure|pythonImport|readOnly|remove|require|resolve|rtti|runtimeValue|scalar|selfCall|semantics|setter|sound|sourceFile|stackOnly|strict|struct|structAccess|structInit|suppressWarnings|templatedCall|throws|to|transient|transitive|unifyMinDynamic|unreflective|unsafe|using|void|volatile)\\\\b)\\\\s*(\\\\()\",\n          \"endCaptures\": { \"0\": { \"name\": \"meta.brace.round.hx\" } },\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"#block-contents\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.metadata.hx\" },\n            \"2\": { \"name\": \"storage.modifier.metadata.hx\" },\n            \"3\": { \"name\": \"meta.brace.round.hx\" }\n          }\n        },\n        {\n          \"match\": \"((@)(:(abi|abstract|access|allow|analyzer|annotation|arrayAccess|astSource|autoBuild|bind|bitmap|bridgeProperties|build|buildXml|bypassAccessor|callable|classCode|commutative|compilerGenerated|const|coreApi|coreType|cppFileCode|cppInclude|cppNamespaceCode|cs.assemblyMeta|cs.assemblyStrict|cs.using|dce|debug|decl|delegate|depend|deprecated|eager|enum|event|expose|extern|file|fileXml|final|fixed|flash.property|font|forward.new|forward.variance|forward|forwardStatics|from|functionCode|functionTailCode|generic|genericBuild|genericClassPerMethod|getter|hack|headerClassCode|headerCode|headerInclude|headerNamespaceCode|hlNative|hxGen|ifFeature|include|inheritDoc|inline|internal|isVar|java.native|javaCanonical|jsRequire|jvm.synthetic|keep|keepInit|keepSub|luaDotMethod|luaRequire|macro|markup|mergeBlock|multiReturn|multiType|native|nativeChildren|nativeGen|nativeProperty|nativeStaticExtension|noClosure|noCompletion|noDebug|noDoc|noImportGlobal|noPrivateAccess|noStack|noUsing|nonVirtual|notNull|nullSafety|objc|objcProtocol|op|optional|overload|persistent|phpClassConst|phpGlobal|phpMagic|phpNoConstructor|pos|private|privateAccess|property|protected|publicFields|pure|pythonImport|readOnly|remove|require|resolve|rtti|runtimeValue|scalar|selfCall|semantics|setter|sound|sourceFile|stackOnly|strict|struct|structAccess|structInit|suppressWarnings|templatedCall|throws|to|transient|transitive|unifyMinDynamic|unreflective|unsafe|using|void|volatile)\\\\b))\",\n          \"captures\": {\n            \"2\": { \"name\": \"punctuation.metadata.hx\" },\n            \"3\": { \"name\": \"storage.modifier.metadata.hx\" }\n          }\n        },\n        {\n          \"begin\": \"(@)(:?[a-zA-Z_]*)\\\\s*(\\\\()\",\n          \"endCaptures\": { \"0\": { \"name\": \"meta.brace.round.hx\" } },\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"#block-contents\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.metadata.hx\" },\n            \"2\": { \"name\": \"variable.metadata.hx\" },\n            \"3\": { \"name\": \"meta.brace.round.hx\" }\n          }\n        },\n        {\n          \"match\": \"(@)(:?)([a-zA-Z_]*(\\\\.))*([a-zA-Z_]*)?\",\n          \"captures\": {\n            \"3\": { \"name\": \"variable.metadata.hx\" },\n            \"1\": { \"name\": \"punctuation.metadata.hx\" },\n            \"4\": { \"name\": \"punctuation.accessor.hx\" },\n            \"2\": { \"name\": \"variable.metadata.hx\" },\n            \"5\": { \"name\": \"variable.metadata.hx\" }\n          }\n        }\n      ]\n    },\n    \"class\": {\n      \"begin\": \"(?=class)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.terminator.hx\" } },\n      \"end\": \"(?<=\\\\})|(;)\",\n      \"patterns\": [\n        { \"include\": \"#class-name\" },\n        { \"include\": \"#class-name-post\" },\n        { \"include\": \"#class-block\" }\n      ],\n      \"name\": \"meta.class.hx\"\n    },\n    \"typedef-extension\": {\n      \"begin\": \">\",\n      \"end\": \",|$\",\n      \"patterns\": [{ \"include\": \"#type\" }]\n    },\n    \"variable-name\": {\n      \"begin\": \"\\\\b(var|final)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"variable.other.hx\" } },\n      \"end\": \"(?=$)|([_a-zA-Z]\\\\w*)\",\n      \"patterns\": [{ \"include\": \"#operator-optional\" }],\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.type.variable.hx\" } }\n    },\n    \"parameter-assign\": {\n      \"begin\": \"=\",\n      \"end\": \"(?=\\\\)|,)\",\n      \"patterns\": [{ \"include\": \"#block\" }, { \"include\": \"#block-contents\" }],\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.operator.assignment.hx\" } }\n    },\n    \"type\": {\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#macro-reification\" },\n        { \"include\": \"#type-name\" },\n        { \"include\": \"#type-parameters\" },\n        { \"match\": \"->\", \"name\": \"keyword.operator.type.function.hx\" },\n        { \"match\": \"&\", \"name\": \"keyword.operator.type.intersection.hx\" },\n        { \"match\": \"\\\\?(?=\\\\s*[_A-Z])\", \"name\": \"keyword.operator.optional\" },\n        { \"match\": \"\\\\?(?!\\\\s*[_A-Z])\", \"name\": \"punctuation.definition.tag\" },\n        {\n          \"begin\": \"(\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [{ \"include\": \"#typedef-block\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.block.begin.hx\" }\n          }\n        },\n        { \"include\": \"#function-type\" }\n      ]\n    },\n    \"parameter\": {\n      \"begin\": \"(?<=\\\\(|,)\",\n      \"end\": \"(?=\\\\)(?!\\\\s*->)|,)\",\n      \"patterns\": [\n        { \"include\": \"#parameter-name\" },\n        { \"include\": \"#parameter-type-hint\" },\n        { \"include\": \"#parameter-assign\" },\n        { \"include\": \"#punctuation-comma\" },\n        { \"include\": \"#global\" }\n      ]\n    },\n    \"punctuation-braces\": {\n      \"begin\": \"\\\\(\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.round.hx\" } },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        { \"include\": \"#keywords\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#block-contents\" },\n        { \"include\": \"#type-check\" }\n      ],\n      \"beginCaptures\": { \"0\": { \"name\": \"meta.brace.round.hx\" } }\n    },\n    \"interface\": {\n      \"begin\": \"(?=interface)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.terminator.hx\" } },\n      \"end\": \"(?<=\\\\})|(;)\",\n      \"patterns\": [\n        { \"include\": \"#interface-name\" },\n        { \"include\": \"#interface-name-post\" },\n        { \"include\": \"#interface-block\" }\n      ],\n      \"name\": \"meta.interface.hx\"\n    },\n    \"block\": {\n      \"begin\": \"\\\\{\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.block.end.hx\" } },\n      \"end\": \"\\\\}\",\n      \"patterns\": [{ \"include\": \"#block\" }, { \"include\": \"#block-contents\" }],\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.block.begin.hx\" }\n      }\n    },\n    \"block-contents\": {\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#regex\" },\n        { \"include\": \"#array\" },\n        { \"include\": \"#constants\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#metadata\" },\n        { \"include\": \"#method\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#modifiers\" },\n        { \"include\": \"#new-expr\" },\n        { \"include\": \"#for-loop\" },\n        { \"include\": \"#keywords\" },\n        { \"include\": \"#arrow-function\" },\n        { \"include\": \"#method-call\" },\n        { \"include\": \"#enum-constructor-call\" },\n        { \"include\": \"#punctuation-braces\" },\n        { \"include\": \"#macro-reification\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#operator-assignment\" },\n        { \"include\": \"#punctuation-terminator\" },\n        { \"include\": \"#punctuation-comma\" },\n        { \"include\": \"#punctuation-accessor\" },\n        { \"include\": \"#identifiers\" }\n      ]\n    },\n    \"abstract\": {\n      \"begin\": \"(?=abstract\\\\s+[A-Z])\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.terminator.hx\" } },\n      \"end\": \"(?<=\\\\})|(;)\",\n      \"patterns\": [\n        { \"include\": \"#abstract-name\" },\n        { \"include\": \"#abstract-name-post\" },\n        { \"include\": \"#abstract-block\" }\n      ],\n      \"name\": \"meta.abstract.hx\"\n    },\n    \"method-block\": {\n      \"begin\": \"(?<=\\\\{)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.block.end.hx\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [{ \"include\": \"#block\" }, { \"include\": \"#block-contents\" }],\n      \"name\": \"meta.method.block.hx\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.block.begin.hx\" }\n      }\n    },\n    \"parameter-name\": {\n      \"begin\": \"(?<=\\\\(|,)\",\n      \"endCaptures\": { \"1\": { \"name\": \"variable.parameter.hx\" } },\n      \"end\": \"([_a-zA-Z]\\\\w*)\",\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"include\": \"#metadata\" },\n        { \"include\": \"#operator-optional\" }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.hx\" }\n          },\n          \"end\": \"\\\\*/\",\n          \"patterns\": [{ \"include\": \"#javadoc-tags\" }],\n          \"name\": \"comment.block.documentation.hx\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.hx\" }\n          }\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.hx\" }\n          },\n          \"end\": \"\\\\*/\",\n          \"patterns\": [{ \"include\": \"#javadoc-tags\" }],\n          \"name\": \"comment.block.hx\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.hx\" }\n          }\n        },\n        {\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.hx\",\n          \"captures\": { \"1\": { \"name\": \"punctuation.definition.comment.hx\" } }\n        }\n      ]\n    },\n    \"abstract-name-post\": {\n      \"begin\": \"(?<=\\\\w)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.block.begin.hx\" }\n      },\n      \"end\": \"([\\\\{;])\",\n      \"patterns\": [\n        { \"include\": \"#global\" },\n        { \"match\": \"\\\\b(from|to)\\\\b\", \"name\": \"keyword.other.hx\" },\n        { \"include\": \"#type\" },\n        { \"match\": \"[\\\\(\\\\)]\", \"name\": \"punctuation.definition.other.hx\" }\n      ]\n    },\n    \"enum-constructor-call\": {\n      \"begin\": \"\\\\b(?<!\\\\.)((_*[a-z]\\\\w*\\\\.)*)(_*[A-Z]\\\\w*)(?:(\\\\.)(_*[A-Z]\\\\w*[a-z]\\\\w*))*\\\\s*(\\\\()\",\n      \"endCaptures\": { \"1\": { \"name\": \"meta.brace.round.hx\" } },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [{ \"include\": \"#block\" }, { \"include\": \"#block-contents\" }],\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"entity.name.type.hx\" },\n        \"1\": { \"name\": \"support.package.hx\" },\n        \"6\": { \"name\": \"meta.brace.round.hx\" },\n        \"4\": { \"name\": \"support.package.hx\" },\n        \"5\": { \"name\": \"entity.name.type.hx\" }\n      }\n    },\n    \"regex\": {\n      \"begin\": \"(~/)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.end.hx\" },\n        \"2\": { \"name\": \"keyword.other.hx\" }\n      },\n      \"end\": \"(/)([gimsu]*)\",\n      \"patterns\": [{ \"include\": \"#regexp\" }],\n      \"name\": \"string.regexp.hx\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.begin.hx\" }\n      }\n    },\n    \"abstract-block\": {\n      \"begin\": \"(?<=\\\\{)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.block.end.hx\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#method\" },\n        { \"include\": \"#modifiers\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#block-contents\" }\n      ],\n      \"name\": \"meta.block.hx\"\n    },\n    \"conditional-compilation-parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#conditional-compilation-parens\" }]\n    },\n    \"keywords-accessor\": {\n      \"match\": \"\\\\b(default|get|set|dynamic|never|null)\\\\b\",\n      \"name\": \"storage.type.property.hx\"\n    },\n    \"package\": {\n      \"begin\": \"package\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.terminator.hx\" } },\n      \"end\": \"$|(;)\",\n      \"patterns\": [\n        { \"include\": \"#type-path\" },\n        { \"include\": \"#type-path-package-name\" }\n      ],\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.other.package.hx\" } }\n    },\n    \"class-block\": {\n      \"begin\": \"(?<=\\\\{)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.block.end.hx\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#method\" },\n        { \"include\": \"#modifiers\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#block-contents\" }\n      ],\n      \"name\": \"meta.block.hx\"\n    },\n    \"typedef\": {\n      \"begin\": \"(?=typedef)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.terminator.hx\" } },\n      \"end\": \"(?<=\\\\})|(;)\",\n      \"patterns\": [\n        { \"include\": \"#typedef-name\" },\n        { \"include\": \"#typedef-name-post\" },\n        { \"include\": \"#typedef-block\" }\n      ],\n      \"name\": \"meta.typedef.hx\"\n    }\n  },\n  \"name\": \"Haxe\",\n  \"uuid\": \"67c72f9f-862c-4e48-8951-dcc22c0bb4ea\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/hjson.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"(?x:   # turn on extended mode\\n    ^    # a line beginning with\\n    \\\\s*  # some optional space\\n    [}\\\\]]  # and the close of an object or array\\n  )\",\n  \"foldingStartMarker\": \"(?x:     # turn on extended mode\\n    ^    # a line beginning with\\n    \\\\s*    # some optional space\\n    [{\\\\[]  # the start of an object or array\\n    (?!    # but not followed by\\n    .*   # whatever\\n    [}\\\\]]  # and the close of an object or array\\n    ,?   # an optional comma\\n    \\\\s*  # some optional space\\n    $    # at the end of the line\\n    )\\n    |    # ...or...\\n    [{\\\\[]  # the start of an object or array\\n    \\\\s*    # some optional space\\n    $    # at the end of the line\\n  )\",\n  \"repository\": {\n    \"arrayContent\": {\n      \"name\": \"meta.structure.array.hjson\",\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#arrayValue\" },\n        {\n          \"begin\": \"(?<=\\\\[)|,\",\n          \"end\": \"(?=[^\\\\s,/#])|(?=/[^/*])\",\n          \"patterns\": [\n            { \"include\": \"#comments\" },\n            { \"match\": \",\", \"name\": \"invalid.illegal.extra-comma.hjson\" }\n          ],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.separator.dictionary.pair.hjson\" }\n          }\n        },\n        { \"match\": \",\", \"name\": \"punctuation.separator.array.hjson\" },\n        {\n          \"match\": \"[^\\\\s\\\\]]\",\n          \"name\": \"invalid.illegal.expected-array-separator.hjson\"\n        }\n      ]\n    },\n    \"object\": {\n      \"begin\": \"\\\\{\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.dictionary.end.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n      },\n      \"end\": \"(\\\\}|(?<=\\\\}))(?:\\\\s*([^,\\\\s]+))?\",\n      \"patterns\": [{ \"include\": \"#objectContent\" }],\n      \"name\": \"meta.structure.dictionary.hjson\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.dictionary.begin.hjson\" }\n      }\n    },\n    \"jstringDoubleContent\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(?:[\\\"'\\\\\\\\\\\\/bfnrt]|u[0-9a-fA-F]{4})\",\n          \"name\": \"constant.character.escape.hjson\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-string-escape.hjson\"\n        },\n        {\n          \"match\": \"[^\\\"]*[^\\\\n\\\\r\\\"\\\\\\\\]$\",\n          \"name\": \"invalid.illegal.string.hjson\"\n        }\n      ]\n    },\n    \"arrayValue\": {\n      \"patterns\": [\n        { \"include\": \"#arrayNumber\" },\n        { \"include\": \"#arrayConstant\" },\n        { \"include\": \"#arrayString\" },\n        { \"include\": \"#arrayObject\" },\n        { \"include\": \"#arrayArray\" }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(#).*(?:\\\\n)?\",\n          \"name\": \"comment.line.hash\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          }\n        },\n        {\n          \"match\": \"^\\\\s*(//).*(?:\\\\n)?\",\n          \"name\": \"comment.line.double-slash\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          }\n        },\n        {\n          \"begin\": \"^\\\\s*/\\\\*\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          },\n          \"end\": \"\\\\*/(?:\\\\s*\\\\n)?\",\n          \"name\": \"comment.block.double-slash\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          }\n        },\n        {\n          \"match\": \"(#)[^\\\\n]*\",\n          \"name\": \"comment.line.hash\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          }\n        },\n        {\n          \"match\": \"(//)[^\\\\n]*\",\n          \"name\": \"comment.line.double-slash\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          }\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.double-slash\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          }\n        }\n      ]\n    },\n    \"keyValue\": {\n      \"begin\": \"(?x:\\n        \\\\s*\\n        (:)\\n        \\\\s* # capture the line ending if there is no value on the same line\\n        ([,\\\\}\\\\]]*)\\n      )\",\n      \"end\": \"(?<!^)\\\\s*(?=\\\\n)|(?=[},])\",\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"match\": \"^\\\\s+\" },\n        { \"include\": \"#objectValue\" },\n        {\n          \"match\": \"^\\\\s*(\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.object-property.closing-bracket.hjson\"\n            }\n          }\n        },\n        { \"match\": \"[^\\\\s]\", \"name\": \"invalid.illegal.object-property.hjson\" }\n      ],\n      \"name\": \"meta.structure.key-value.hjson\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.separator.dictionary.key-value.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.object-property.hjson\" }\n      }\n    },\n    \"jstring\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.end.hjson\" },\n            \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n          },\n          \"end\": \"(\\\")(?:\\\\s*((?:[^\\\\s#/]|/[^/*]).*)$)?\",\n          \"patterns\": [{ \"include\": \"#jstringDoubleContent\" }],\n          \"name\": \"string.quoted.double.hjson\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.hjson\" }\n          }\n        },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.end.hjson\" },\n            \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n          },\n          \"end\": \"(')(?:\\\\s*((?:[^\\\\s#/]|/[^/*]).*)$)?\",\n          \"patterns\": [{ \"include\": \"#jstringSingleContent\" }],\n          \"name\": \"string.quoted.single.hjson\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.hjson\" }\n          }\n        }\n      ]\n    },\n    \"arrayConstant\": {\n      \"match\": \"\\\\b(true|false|null)(?:[\\\\t ]*(?=,)|[\\\\t ]*(?:(,)[\\\\t ]*)?(?=$|#|/\\\\*|//|\\\\]))\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.language.hjson\" },\n        \"2\": { \"name\": \"punctuation.separator.array.after-const.hjson\" }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        { \"include\": \"#mstring\" },\n        { \"include\": \"#jstring\" },\n        { \"include\": \"#ustring\" }\n      ]\n    },\n    \"key\": {\n      \"begin\": \"(?x:\\n        (\\n          (?:[^:,\\\\{\\\\}\\\\[\\\\]\\\\s\\\"'][^:,\\\\{\\\\}\\\\[\\\\]\\\\s]*) |\\n          (?: # json string w/ '\\n            '\\n            (?:\\n              [^\\\\\\\\'] | # anything but an escape character or quote\\n              (\\\\\\\\(?:[\\\"'\\\\\\\\\\\\/bfnrt]|u[0-9a-fA-F]{4})) | # escape characters\\n              (\\\\\\\\.) # bad escape characters\\n            )*\\n            '\\n          ) |\\n          (?: # json string w/ \\\"\\n            \\\"\\n            (?:\\n              [^\\\\\\\\\\\"] | # anything but an escape character or quote\\n              (\\\\\\\\(?:[\\\"'\\\\\\\\\\\\/bfnrt]|u[0-9a-fA-F]{4})) | # escape characters\\n              (\\\\\\\\.) # bad escape characters\\n            )*\\n            \\\"\\n          )\\n        )\\n        \\\\s*\\n        (?!\\\\n)\\n        ([,\\\\{\\\\}\\\\[\\\\]]*)\\n      )\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.separator.dictionary.pair.hjson\" }\n      },\n      \"end\": \"(?<!^|:)\\\\s*\\\\n|(?=})|(,)\",\n      \"patterns\": [\n        { \"include\": \"#commentsNewline\" },\n        { \"include\": \"#keyValue\" },\n        { \"match\": \"[^\\\\s]\", \"name\": \"invalid.illegal.object-property.hjson\" }\n      ],\n      \"beginCaptures\": {\n        \"7\": { \"name\": \"invalid.illegal.property-name.hjson\" },\n        \"3\": { \"name\": \"invalid.illegal.unrecognized-string-escape.hjson\" },\n        \"4\": { \"name\": \"constant.character.escape.hjson\" },\n        \"0\": { \"name\": \"meta.structure.key-value.begin.hjson\" },\n        \"5\": { \"name\": \"invalid.illegal.unrecognized-string-escape.hjson\" },\n        \"1\": { \"name\": \"support.type.property-name.hjson\" },\n        \"6\": { \"name\": \"invalid.illegal.separator.hjson\" },\n        \"2\": { \"name\": \"constant.character.escape.hjson\" }\n      }\n    },\n    \"number\": {\n      \"match\": \"(-?(?:0|(?:[1-9]\\\\d*))(?:\\\\.\\\\d+)?(?:[eE][+-]?\\\\d+)?)[\\\\t ]*(?=$|#|/\\\\*|//|\\\\])\",\n      \"captures\": { \"1\": { \"name\": \"constant.numeric.hjson\" } }\n    },\n    \"objectObject\": {\n      \"begin\": \"\\\\{\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.dictionary.end.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n      },\n      \"end\": \"(\\\\}|(?<=\\\\})\\\\}?)(?:\\\\s*([^,\\\\s}]+))?\",\n      \"patterns\": [{ \"include\": \"#objectContent\" }],\n      \"name\": \"meta.structure.dictionary.hjson\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.dictionary.begin.hjson\" }\n      }\n    },\n    \"value\": {\n      \"patterns\": [\n        { \"include\": \"#number\" },\n        { \"include\": \"#constant\" },\n        { \"include\": \"#string\" },\n        { \"include\": \"#object\" },\n        { \"include\": \"#array\" }\n      ]\n    },\n    \"arrayNumber\": {\n      \"match\": \"(-?(?:0|(?:[1-9]\\\\d*))(?:\\\\.\\\\d+)?(?:[eE][+-]?\\\\d+)?)(?:[\\\\t ]*(?=,)|[\\\\t ]*(?:(,)[\\\\t ]*)?(?=$|#|/\\\\*|//|\\\\]))\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.numeric.hjson\" },\n        \"2\": { \"name\": \"punctuation.separator.array.after-num.hjson\" }\n      }\n    },\n    \"arrayJstring\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.end.hjson\" },\n            \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n          },\n          \"end\": \"(\\\")(?:\\\\s*((?:[^,\\\\s\\\\]#/]|/[^/*])+))?\",\n          \"patterns\": [{ \"include\": \"#jstringDoubleContent\" }],\n          \"name\": \"string.quoted.double.hjson\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.hjson\" }\n          }\n        },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.end.hjson\" },\n            \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n          },\n          \"end\": \"(')(?:\\\\s*((?:[^,\\\\s\\\\]#/]|/[^/*])+))?\",\n          \"patterns\": [{ \"include\": \"#jstringSingleContent\" }],\n          \"name\": \"string.quoted.single.hjson\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.hjson\" }\n          }\n        }\n      ]\n    },\n    \"constant\": {\n      \"match\": \"\\\\b(true|false|null)[\\\\t ]*(?=$|#|/\\\\*|//|\\\\])\",\n      \"captures\": { \"1\": { \"name\": \"constant.language.hjson\" } }\n    },\n    \"jstringSingleContent\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(?:[\\\"'\\\\\\\\\\\\/bfnrt]|u[0-9a-fA-F]{4})\",\n          \"name\": \"constant.character.escape.hjson\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-string-escape.hjson\"\n        },\n        {\n          \"match\": \"[^']*[^\\\\n\\\\r'\\\\\\\\]$\",\n          \"name\": \"invalid.illegal.string.hjson\"\n        }\n      ]\n    },\n    \"commentsNewline\": {\n      \"patterns\": [\n        {\n          \"match\": \"(#).*\\\\n\",\n          \"name\": \"comment.line.hash\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          }\n        },\n        {\n          \"match\": \"(//).*\\\\n\",\n          \"name\": \"comment.line.double-slash\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          }\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          },\n          \"end\": \"\\\\*/(\\\\s*\\\\n)?\",\n          \"name\": \"comment.block.double-slash\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.hjson\" }\n          }\n        }\n      ]\n    },\n    \"objectMstring\": {\n      \"begin\": \"'''\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.end.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n      },\n      \"end\": \"(''')(?:\\\\s*((?:[^,\\\\s\\\\}#/]|/[^/*])+))?\",\n      \"name\": \"string.quoted.multiline.hjson\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.hjson\" }\n      }\n    },\n    \"objectString\": {\n      \"patterns\": [\n        { \"include\": \"#objectMstring\" },\n        { \"include\": \"#objectJstring\" },\n        { \"include\": \"#ustring\" }\n      ]\n    },\n    \"arrayObject\": {\n      \"begin\": \"\\\\{\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.dictionary.end.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n      },\n      \"end\": \"(\\\\}|(?<=\\\\}))(?:\\\\s*([^,\\\\s\\\\]]+))?\",\n      \"patterns\": [{ \"include\": \"#objectContent\" }],\n      \"name\": \"meta.structure.dictionary.hjson\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.dictionary.begin.hjson\" }\n      }\n    },\n    \"mstring\": {\n      \"begin\": \"'''\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.end.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n      },\n      \"end\": \"(''')(?:\\\\s*((?:[^\\\\s#/]|/[^/*]).*)$)?\",\n      \"name\": \"string.quoted.multiline.hjson\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.hjson\" }\n      }\n    },\n    \"ustring\": {\n      \"match\": \"([^:,\\\\{\\\\[\\\\}\\\\]\\\\s].*)$\",\n      \"name\": \"string.quoted.none.hjson\"\n    },\n    \"arrayString\": {\n      \"patterns\": [\n        { \"include\": \"#arrayMstring\" },\n        { \"include\": \"#arrayJstring\" },\n        { \"include\": \"#ustring\" }\n      ]\n    },\n    \"array\": {\n      \"begin\": \"\\\\[\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.array.end.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n      },\n      \"end\": \"(\\\\])(?:\\\\s*([^,\\\\s]+))?\",\n      \"patterns\": [{ \"include\": \"#arrayContent\" }],\n      \"name\": \"meta.structure.array.hjson\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.array.begin.hjson\" }\n      }\n    },\n    \"objectConstant\": {\n      \"match\": \"\\\\b(true|false|null)(?:[\\\\t ]*(?=,)|[\\\\t ]*(?:(,)[\\\\t ]*)?(?=$|#|/\\\\*|//|\\\\}))\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.language.hjson\" },\n        \"2\": {\n          \"name\": \"punctuation.separator.dictionary.pair.after-const.hjson\"\n        }\n      }\n    },\n    \"arrayArray\": {\n      \"begin\": \"\\\\[\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.array.end.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n      },\n      \"end\": \"(\\\\])(?:\\\\s*([^,\\\\s\\\\]]+))?\",\n      \"patterns\": [{ \"include\": \"#arrayContent\" }],\n      \"name\": \"meta.structure.array.hjson\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.array.begin.hjson\" }\n      }\n    },\n    \"objectValue\": {\n      \"patterns\": [\n        { \"include\": \"#objectNumber\" },\n        { \"include\": \"#objectConstant\" },\n        { \"include\": \"#objectString\" },\n        { \"include\": \"#objectObject\" },\n        { \"include\": \"#objectArray\" }\n      ]\n    },\n    \"objectArray\": {\n      \"begin\": \"\\\\[\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.array.end.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n      },\n      \"end\": \"(\\\\])(?:\\\\s*([^,\\\\s\\\\}]+))?\",\n      \"patterns\": [{ \"include\": \"#arrayContent\" }],\n      \"name\": \"meta.structure.array.hjson\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.array.begin.hjson\" }\n      }\n    },\n    \"objectNumber\": {\n      \"match\": \"(-?(?:0|(?:[1-9]\\\\d*))(?:\\\\.\\\\d+)?(?:[eE][+-]?\\\\d+)?)(?:[\\\\t ]*(?=,)|[\\\\t ]*(?:(,)[\\\\t ]*)?(?=$|#|/\\\\*|//|\\\\}))\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.numeric.hjson\" },\n        \"2\": { \"name\": \"punctuation.separator.dictionary.pair.after-num.hjson\" }\n      }\n    },\n    \"objectContent\": {\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#key\" },\n        {\n          \"match\": \":[.|\\\\s]\",\n          \"name\": \"invalid.illegal.object-property.hjson\"\n        },\n        {\n          \"begin\": \"(?<=\\\\{|,)|,\",\n          \"end\": \"(?=[^\\\\s,/#])|(?=/[^/*])\",\n          \"patterns\": [\n            { \"include\": \"#comments\" },\n            { \"match\": \",\", \"name\": \"invalid.illegal.extra-comma.hjson\" }\n          ],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.separator.dictionary.pair.hjson\" }\n          }\n        },\n        { \"match\": \"[^\\\\s]\", \"name\": \"invalid.illegal.object-property.hjson\" }\n      ]\n    },\n    \"objectJstring\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.end.hjson\" },\n            \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n          },\n          \"end\": \"(\\\")(?:\\\\s*((?:[^,\\\\s\\\\}#/]|/[^/*])+))?\",\n          \"patterns\": [{ \"include\": \"#jstringDoubleContent\" }],\n          \"name\": \"string.quoted.double.hjson\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.hjson\" }\n          }\n        },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.end.hjson\" },\n            \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n          },\n          \"end\": \"(')(?:\\\\s*((?:[^,\\\\s\\\\}#/]|/[^/*])+))?\",\n          \"patterns\": [{ \"include\": \"#jstringSingleContent\" }],\n          \"name\": \"string.quoted.single.hjson\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.hjson\" }\n          }\n        }\n      ]\n    },\n    \"arrayMstring\": {\n      \"begin\": \"'''\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.end.hjson\" },\n        \"2\": { \"name\": \"invalid.illegal.value.hjson\" }\n      },\n      \"end\": \"(''')(?:\\\\s*((?:[^,\\\\s\\\\]#/]|/[^/*])+))?\",\n      \"name\": \"string.quoted.multiline.hjson\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.hjson\" }\n      }\n    }\n  },\n  \"keyEquivalent\": \"^~J\",\n  \"fileTypes\": [\"hjson\"],\n  \"patterns\": [\n    { \"include\": \"#comments\" },\n    { \"include\": \"#value\" },\n    { \"match\": \"[^\\\\s]\", \"name\": \"invalid.illegal.excess-characters.hjson\" }\n  ],\n  \"name\": \"Hjson\",\n  \"scopeName\": \"source.hjson\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/html-cfml.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"(?x)\\n\\t\\t(<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\\\\b.*?>\\n\\t\\t|<!--(?!.*--\\\\s*>)\\n\\t\\t|^<!--\\\\ \\\\#tminclude\\\\ (?>.*?-->)$\\n\\t\\t|<\\\\?(?:php)?.*\\\\b(if|for(each)?|while)\\\\b.+:\\n\\t\\t|\\\\{\\\\{?(if|foreach|capture|literal|foreach|php|section|strip)\\n\\t\\t|\\\\{\\\\s*($|\\\\?>\\\\s*$|//|/\\\\*(.*\\\\*/\\\\s*$|(?!.*?\\\\*/)))\\n\\t\\t)\",\n  \"firstLineMatch\": \"<!(?i:DOCTYPE)|<(?i:html)|<\\\\?(?i:php)\",\n  \"foldingStopMarker\": \"(?x)\\n\\t\\t(</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)>\\n\\t\\t|^(?!.*?<!--).*?--\\\\s*>\\n\\t\\t|^<!--\\\\ end\\\\ tminclude\\\\ -->$\\n\\t\\t|<\\\\?(?:php)?.*\\\\bend(if|for(each)?|while)\\\\b\\n\\t\\t|\\\\{\\\\{?/(if|foreach|capture|literal|foreach|php|section|strip)\\n\\t\\t|^[^{]*\\\\}\\n\\t\\t)\",\n  \"keyEquivalent\": \"^~H\",\n  \"fileTypes\": [\"cfm\", \"cfml\"],\n  \"repository\": {\n    \"tag-stuff\": {\n      \"patterns\": [\n        { \"include\": \"#nest-hash\" },\n        { \"include\": \"#cfcomments\" },\n        { \"include\": \"text.cfml.basic\" },\n        { \"include\": \"#tag-id-attribute\" },\n        { \"include\": \"#tag-generic-attribute\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" },\n        { \"include\": \"#embedded-code\" }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"include\": \"#embedded-code\" },\n        { \"include\": \"#entities\" },\n        { \"include\": \"#nest-hash\" }\n      ],\n      \"name\": \"string.quoted.double.html\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      }\n    },\n    \"nest-hash\": {\n      \"patterns\": [\n        { \"match\": \"##\", \"name\": \"string.escaped.hash.html\" },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t(\\\\#)\\n\\t\\t\\t\\t\\t\\t\\t(?!\\t\\t# zero width negative lookahead assertion\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t([\\\\w$]+\\t# assertion for plain variables or function names including currency symbol \\\"$\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\[.*\\\\])\\t\\t\\t\\t# asserts a match for anything in square brackets\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\(.*\\\\))\\t\\t\\t\\t# or anything in parens\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\.[\\\\w$]+)\\t\\t\\t\\t# or zero or more \\\"dot\\\" notated variables\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\s*[\\\\+\\\\-\\\\*\\\\/&]\\\\s*[\\\\w$]+)\\t# or simple arithmentic operators + concatenation\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\s*&\\\\s*[\\\"|'].+[\\\"|']) \\t# or concatenation with a quoted string\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\t\\t# asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\(.*\\\\))\\t # asserts a match for anything in parens\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\\\#\\t\\t# asserts closing hash\\n\\t\\t\\t\\t\\t\\t\\t)\",\n          \"name\": \"invalid.illegal.unescaped.hash.html\"\n        },\n        {\n          \"end\": \"(#)\",\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t(\\\\#)\\n\\t\\t\\t\\t\\t\\t\\t(?=\\t\\t# zero width negative lookahead assertion\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t([\\\\w$]+\\t# assertion for plain variables or function names including currency symbol \\\"$\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\[.*\\\\])\\t\\t\\t\\t# asserts a match for anything in square brackets\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\(.*\\\\))\\t\\t\\t\\t# or anything in parens\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\.[\\\\w$]+)\\t\\t\\t\\t# or zero or more \\\"dot\\\" notated variables\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\s*[\\\\+\\\\-\\\\*\\\\/&]\\\\s*[\\\\w$]+)\\t# or simple arithmentic operators + concatenation\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\s*&\\\\s*[\\\"|'].+[\\\"|']) \\t# or concatenation with a quoted string\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\t\\t# asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\(.*\\\\))\\t # asserts a match for anything in parens\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\\\#\\t\\t# asserts closing hash\\n\\t\\t\\t\\t\\t\\t\\t)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.hash.begin.html\" }\n          },\n          \"contentName\": \"source.cfscript.embedded.html\",\n          \"patterns\": [{ \"include\": \"source.cfscript\" }],\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.hash.end.html\" }\n          },\n          \"name\": \"meta.name.interpolated.hash.html\"\n        }\n      ]\n    },\n    \"cfcomments\": {\n      \"patterns\": [\n        { \"match\": \"<!---.*?--->\", \"name\": \"comment.line.cfml\" },\n        {\n          \"begin\": \"<!---\",\n          \"end\": \"--->\",\n          \"patterns\": [{ \"include\": \"#cfcomments\" }],\n          \"name\": \"comment.block.cfml\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.cfml\" } }\n        }\n      ]\n    },\n    \"python\": {\n      \"begin\": \"(?:^\\\\s*)<\\\\?python(?!.*\\\\?>)\",\n      \"end\": \"\\\\?>(?:\\\\s*$\\\\n)?\",\n      \"patterns\": [{ \"include\": \"source.python\" }],\n      \"name\": \"source.python.embedded.html\"\n    },\n    \"embedded-code\": {\n      \"patterns\": [\n        { \"include\": \"#ruby\" },\n        { \"include\": \"#php\" },\n        { \"include\": \"#python\" }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [\n        { \"include\": \"#embedded-code\" },\n        { \"include\": \"#entities\" },\n        { \"include\": \"#nest-hash\" }\n      ],\n      \"name\": \"string.quoted.single.html\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      }\n    },\n    \"tag-generic-attribute\": {\n      \"match\": \"\\\\b([a-zA-Z\\\\-:]+)\",\n      \"name\": \"entity.other.attribute-name.html\"\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.entity.html\" },\n            \"3\": { \"name\": \"punctuation.definition.entity.html\" }\n          }\n        },\n        { \"match\": \"&\", \"name\": \"invalid.illegal.bad-ampersand.html\" }\n      ]\n    },\n    \"tag-id-attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")\",\n      \"patterns\": [\n        {\n          \"end\": \"\\\"\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"patterns\": [\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"#entities\" },\n            { \"include\": \"#nest-hash\" }\n          ],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"name\": \"string.quoted.double.html\"\n        },\n        {\n          \"end\": \"'\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"patterns\": [\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"#entities\" },\n            { \"include\": \"#nest-hash\" }\n          ],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"name\": \"string.quoted.single.html\"\n        }\n      ],\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.other.attribute-name.id.html\" },\n        \"2\": { \"name\": \"punctuation.separator.key-value.html\" }\n      }\n    },\n    \"ruby\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<%+#\",\n          \"end\": \"%>\",\n          \"name\": \"comment.block.erb\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.erb\" } }\n        },\n        {\n          \"begin\": \"<%+(?!>)=?\",\n          \"end\": \"-?%>\",\n          \"patterns\": [\n            {\n              \"match\": \"(#).*?(?=-?%>)\",\n              \"name\": \"comment.line.number-sign.ruby\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.comment.ruby\" }\n              }\n            },\n            { \"include\": \"source.ruby\" }\n          ],\n          \"name\": \"source.ruby.embedded.html\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.section.embedded.ruby\" } }\n        },\n        {\n          \"begin\": \"<\\\\?r(?!>)=?\",\n          \"end\": \"-?\\\\?>\",\n          \"patterns\": [\n            {\n              \"match\": \"(#).*?(?=-?\\\\?>)\",\n              \"name\": \"comment.line.number-sign.ruby.nitro\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.comment.ruby.nitro\" }\n              }\n            },\n            { \"include\": \"source.ruby\" }\n          ],\n          \"name\": \"source.ruby.nitro.embedded.html\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.section.embedded.ruby.nitro\" }\n          }\n        }\n      ]\n    },\n    \"php\": {\n      \"begin\": \"(?=(^\\\\s*)?<\\\\?)\",\n      \"end\": \"(?!(^\\\\s*)?<\\\\?)\",\n      \"patterns\": [{ \"include\": \"source.php\" }]\n    }\n  },\n  \"uuid\": \"b2e03230-b205-4546-884e-ba107e964e46\",\n  \"patterns\": [\n    { \"include\": \"text.cfml.basic\" },\n    {\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"end\": \"(\\\\?>)\",\n      \"patterns\": [\n        { \"include\": \"#tag-generic-attribute\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" }\n      ],\n      \"name\": \"meta.tag.preprocessor.xml.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n        \"2\": { \"name\": \"entity.name.tag.xml.html\" }\n      }\n    },\n    {\n      \"begin\": \"<!--+\",\n      \"end\": \"--+\\\\s*>\",\n      \"patterns\": [\n        { \"match\": \"--\", \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\" },\n        { \"include\": \"#embedded-code\" }\n      ],\n      \"name\": \"comment.block.html\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.html\" } }\n    },\n    {\n      \"begin\": \"<!\",\n      \"end\": \">\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i:DOCTYPE)\",\n          \"end\": \"(?=>)\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"[^\\\">]*\\\"\",\n              \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n            }\n          ],\n          \"name\": \"meta.tag.sgml.doctype.html\",\n          \"captures\": { \"1\": { \"name\": \"entity.name.tag.doctype.html\" } }\n        },\n        {\n          \"begin\": \"\\\\[CDATA\\\\[\",\n          \"end\": \"]](?=>)\",\n          \"name\": \"constant.other.inline-data.html\"\n        },\n        {\n          \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        }\n      ],\n      \"name\": \"meta.tag.sgml.html\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.tag.html\" } }\n    },\n    { \"include\": \"#embedded-code\" },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?![^>]*/>)\",\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [\n            { \"include\": \"text.html.cfm\" },\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"source.css\" }\n          ],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.css.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?![^>]*/>)\",\n      \"endCaptures\": { \"2\": { \"name\": \"punctuation.definition.tag.html\" } },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [\n            {\n              \"match\": \"(//).*?((?=</script)|$\\\\n?)\",\n              \"name\": \"comment.line.double-slash.js\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.comment.js\" }\n              }\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"end\": \"\\\\*/|(?=</script)\",\n              \"name\": \"comment.block.js\",\n              \"captures\": {\n                \"0\": { \"name\": \"punctuation.definition.comment.js\" }\n              }\n            },\n            { \"include\": \"text.cfml.basic\" },\n            { \"include\": \"#php\" },\n            { \"include\": \"#nest-hash\" },\n            { \"include\": \"source.js\" }\n          ],\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n            \"2\": { \"name\": \"entity.name.tag.script.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.js.embedded.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n        \"2\": { \"name\": \"entity.name.tag.script.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.structure.any.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.structure.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:form|fieldset|textarea)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.block.form.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.block.form.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:object|applet)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.block.object.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.block.object.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:address|blockquote|dd|div|dl|dt|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|ol|p|ul|center|dir|hr|menu|pre)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.block.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.block.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:img|area|map|param)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"((?: ?/)?>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.inline.img.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.img.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:a|base)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"((?: ?/)?>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.inline.link.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.link.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:table|tr|td|th|tbody|thead|tfoot|col|colgroup|caption)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"((?: ?/)?>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.inline.table.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.table.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:input|select|option|optgroup|button|label|legend)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"((?: ?/)?>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.inline.form.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.form.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:abbr|acronym|b|basefont|bdo|big|br|cite|code|del|dfn|em|font|head|html|i|ins|isindex|kbd|li|link|meta|noscript|q|s|samp|script|small|span|strike|strong|style|sub|sup|title|tt|u|var)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"((?: ?/)?>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.inline.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.inline.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)([a-zA-Z0-9:]+)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.other.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.other.html\" }\n      }\n    },\n    {\n      \"begin\": \"(<)([a-zA-Z0-9:]++)(?=[^>]*></\\\\2>)\",\n      \"endCaptures\": {\n        \"3\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.end.html\" },\n        \"4\": { \"name\": \"entity.name.tag.html\" },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html\"\n        },\n        \"5\": { \"name\": \"punctuation.definition.tag.end.html\" }\n      },\n      \"end\": \"(>)(<)(/)(\\\\2)(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.html\" }\n      }\n    },\n    { \"include\": \"#entities\" },\n    { \"match\": \"<>\", \"name\": \"invalid.illegal.incomplete.html\" },\n    { \"match\": \"<\", \"name\": \"invalid.illegal.bad-angle-bracket.html\" }\n  ],\n  \"name\": \"ColdFusion Markup\",\n  \"scopeName\": \"text.html.cfm\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/html-derivative.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML%20%28Derivative%29.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/html.tmbundle/commit/390c8870273a2ae80244dae6db6ba064a802f407\",\n  \"name\": \"HTML (Derivative)\",\n  \"scopeName\": \"text.html.derivative\",\n  \"injections\": {\n    \"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)\": {\n      \"comment\": \"Uses R: to ensure this matches after any other injections.\",\n      \"patterns\": [\n        {\n          \"match\": \"<\",\n          \"name\": \"invalid.illegal.bad-angle-bracket.html\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"include\": \"text.html.basic#core-minus-invalid\"\n    },\n    {\n      \"begin\": \"(</?)(\\\\w[^\\\\s>]*)(?<!/)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"end\": \"((?: ?/)?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.other.unrecognized.html.derivative\",\n      \"patterns\": [\n        {\n          \"include\": \"text.html.basic#attribute\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/html-django.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.html.django\",\n  \"fileTypes\": [],\n  \"patterns\": [\n    {\n      \"comment\": \"Since html is valid in Django templates include the html patterns\",\n      \"include\": \"text.html.basic\"\n    },\n    {\n      \"begin\": \"{% comment %}\",\n      \"end\": \"{% endcomment %}\",\n      \"name\": \"comment.block.django.template\"\n    },\n    { \"begin\": \"{#\", \"end\": \"#}\", \"name\": \"comment.line.django.template\" },\n    {\n      \"begin\": \"{{\",\n      \"end\": \"}}\",\n      \"patterns\": [\n        {\n          \"match\": \"[\\\\S&&[^}]]+\",\n          \"name\": \"variable.other.readwrite.django.template\"\n        }\n      ],\n      \"name\": \"meta.tag.template.variable.django.template\"\n    },\n    {\n      \"begin\": \"({%)\",\n      \"end\": \"(%})\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(autoescape|endautoescape|block|endblock|trans|blocktrans|endblocktrans|plural|debug|extends|filter|firstof|for|endfor|if|include|else|endif|ifchanged|endifchanged|ifequal|endifequal|ifnotequal|endifnotequal|load|now|regroup|ssi|spaceless|templatetag|widthratio)\\\\b\",\n          \"name\": \"keyword.control.django.template\"\n        },\n        {\n          \"match\": \"\\\\b(and|or|not|in|by|as)\\\\b\",\n          \"name\": \"keyword.operator.django.template\"\n        },\n        {\n          \"match\": \"\\\\|(add|addslashes|capfirst|center|cut|date|default|default_if_none|dictsort|dictsortreversed|divisibleby|escape|filesizeformat|first|fix_ampersands|floatformat|get_digit|join|length|length_is|linebreaks|linebreaksbr|linenumbers|ljust|lower|make_list|phone2numeric|pluralize|pprint|random|removetags|rjust|safe|slice|slugify|stringformat|striptags|time|timesince|title|truncatewords|unordered_list|upper|urlencode|urlize|urlizetrunc|wordcount|wordwrap|yesno)\\\\b\",\n          \"name\": \"support.function.filter.django\"\n        },\n        {\n          \"begin\": \"('|\\\")\",\n          \"end\": \"\\\\1\",\n          \"name\": \"string.other.django.template.tag\"\n        },\n        { \"match\": \"[a-zA-Z_]+\", \"name\": \"string.unquoted.django.template.tag\" }\n      ],\n      \"name\": \"meta.scope.django.template.tag\",\n      \"captures\": { \"1\": { \"name\": \"entity.other.django.tagbraces\" } }\n    }\n  ],\n  \"name\": \"HTML (Django)\",\n  \"keyEquivalent\": \"^~D\",\n  \"uuid\": \"F4B0A70C-ECF6-4660-BC26-785216E3CF02\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/html-elixir.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"(?x)\\n\\t\\t(</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)>\\n\\t\\t|^\\\\s*-->\\n\\t\\t|(^|\\\\s)\\\\}\\n\\t\\t)\",\n  \"foldingStartMarker\": \"(?x)\\n\\t\\t(<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)\\\\b.*?>\\n\\t\\t|<!--(?!.*-->)\\n\\t\\t|\\\\{\\\\s*($|\\\\?>\\\\s*$|//|/\\\\*(.*\\\\*/\\\\s*$|(?!.*?\\\\*/)))\\n\\t\\t)\",\n  \"fileTypes\": [\"html.eex\", \"html.leex\", \"html.heex\"],\n  \"uuid\": \"206E7013-2252-41AA-99A3-E8B3F4C2CC98\",\n  \"injections\": {\n    \"R:text.html.elixir meta.tag meta.attribute string.quoted\": {\n      \"comment\": \"Uses R: to ensure this matches after any other injections.\",\n      \"patterns\": [{ \"include\": \"text.elixir\" }]\n    }\n  },\n  \"patterns\": [{ \"include\": \"text.elixir\" }, { \"include\": \"text.html.basic\" }],\n  \"name\": \"HTML (EEx)\",\n  \"scopeName\": \"text.html.elixir\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/html-ruby.tmLanguage.json",
    "content": "{\n  \"name\": \"HTML (Ruby - ERB)\",\n  \"scopeName\": \"text.html.erb\",\n  \"fileTypes\": [\"rhtml\", \"html.erb\"],\n  \"injections\": {\n    \"text.html.erb - (meta.embedded.block.erb | meta.embedded.line.erb | meta.tag | comment), meta.tag string.quoted, L:source.js.embedded.html\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^\\\\s*)(?=<%+#(?![^%]*%>))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.comment.leading.erb\"\n            }\n          },\n          \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.comment.trailing.erb\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^\\\\s*)(?=<%(?![^%]*%>))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.embedded.leading.erb\"\n            }\n          },\n          \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.embedded.trailing.erb\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#tags\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#tags\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<%+#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.erb\"\n            }\n          },\n          \"end\": \"%>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.erb\"\n            }\n          },\n          \"name\": \"comment.block.erb\"\n        }\n      ]\n    },\n    \"tags\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<%+(?!>)[-=]?(?![^%]*%>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.erb\"\n            }\n          },\n          \"contentName\": \"source.ruby.embedded.erb\",\n          \"end\": \"-?%>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.erb\"\n            },\n            \"1\": {\n              \"name\": \"source.ruby\"\n            }\n          },\n          \"name\": \"meta.embedded.block.erb\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.erb\"\n                }\n              },\n              \"match\": \"(#).*?(?=-?%>)\",\n              \"name\": \"comment.line.number-sign.erb\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<%+(?!>)[-=]?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.erb\"\n            }\n          },\n          \"contentName\": \"source.ruby.embedded.erb\",\n          \"end\": \"-?%>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.erb\"\n            },\n            \"1\": {\n              \"name\": \"source.ruby\"\n            }\n          },\n          \"name\": \"meta.embedded.line.erb\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.erb\"\n                }\n              },\n              \"match\": \"(#).*?(?=-?%>)\",\n              \"name\": \"comment.line.number-sign.erb\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/html.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/html.tmbundle/commit/a723f08ebd49c67c22aca08dd8f17d0bf836ec93\",\n  \"name\": \"HTML\",\n  \"scopeName\": \"text.html.basic\",\n  \"injections\": {\n    \"R:text.html - (comment.block, text.html source)\": {\n      \"comment\": \"Use R: to ensure this matches after any other injections.\",\n      \"patterns\": [\n        {\n          \"match\": \"<\",\n          \"name\": \"invalid.illegal.bad-angle-bracket.html\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"begin\": \"(<)([a-zA-Z][a-zA-Z0-9:-]*)(?=[^>]*></\\\\2>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"end\": \"(>(<)/)(\\\\2)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"meta.scope.between-tag-pair.html\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.html\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"name\": \"meta.tag.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.xml.html\"\n        }\n      },\n      \"end\": \"(\\\\?>)\",\n      \"name\": \"meta.tag.preprocessor.xml.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!--\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      },\n      \"end\": \"--\\\\s*>\",\n      \"name\": \"comment.block.html\",\n      \"patterns\": [\n        {\n          \"match\": \"--\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        },\n        {\n          \"include\": \"#embedded-code\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"end\": \">\",\n      \"name\": \"meta.tag.sgml.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i:DOCTYPE)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.doctype.html\"\n            }\n          },\n          \"end\": \"(?=>)\",\n          \"name\": \"meta.tag.sgml.doctype.html\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"[^\\\">]*\\\"\",\n              \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[CDATA\\\\[\",\n          \"end\": \"]](?=>)\",\n          \"name\": \"constant.other.inline-data.html\"\n        },\n        {\n          \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#embedded-code\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=<(?i:style))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.html\"\n        }\n      },\n      \"end\": \"(?!\\\\G)([ \\\\t]*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)((?i:style))\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.metadata.style.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"(/>)|((<)/)((?i:style))(>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.metadata.style.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"3\": {\n              \"name\": \"source.css\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?=/>)|(>)\",\n              \"name\": \"meta.tag.metadata.style.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#tag-stuff\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?!\\\\G)\",\n              \"end\": \"(?=</(?i:style))\",\n              \"name\": \"source.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#embedded-code\"\n                },\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=<(?i:script))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.html\"\n        }\n      },\n      \"end\": \"(?!\\\\G)([ \\\\t]*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)((?i:script))\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.metadata.script.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"(/>)|(/)((?i:script))(>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.metadata.script.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\",\n              \"end\": \"(?=/>|/)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(>)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.tag.metadata.script.html\"\n                    },\n                    \"1\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"end\": \"((<))(?=/(?i:script))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.tag.metadata.script.html\"\n                    },\n                    \"1\": {\n                      \"name\": \"punctuation.definition.tag.begin.html\"\n                    },\n                    \"2\": {\n                      \"name\": \"source.js\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G\",\n                      \"end\": \"(?=</(?i:script))\",\n                      \"name\": \"source.js\",\n                      \"patterns\": [\n                        {\n                          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n                          \"beginCaptures\": {\n                            \"1\": {\n                              \"name\": \"punctuation.whitespace.comment.leading.js\"\n                            }\n                          },\n                          \"end\": \"(?!\\\\G)\",\n                          \"patterns\": [\n                            {\n                              \"begin\": \"//\",\n                              \"beginCaptures\": {\n                                \"0\": {\n                                  \"name\": \"punctuation.definition.comment.js\"\n                                }\n                              },\n                              \"end\": \"(?=</script)|\\\\n\",\n                              \"name\": \"comment.line.double-slash.js\"\n                            }\n                          ]\n                        },\n                        {\n                          \"begin\": \"/\\\\*\",\n                          \"captures\": {\n                            \"0\": {\n                              \"name\": \"punctuation.definition.comment.js\"\n                            }\n                          },\n                          \"end\": \"\\\\*/|(?=</script)\",\n                          \"name\": \"comment.block.js\"\n                        },\n                        {\n                          \"include\": \"source.js\"\n                        }\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\G\",\n                  \"end\": \"(?i:(?=/?>|type(?=[\\\\s=])(?!\\\\s*=\\\\s*('|\\\"|)(text/(javascript|ecmascript|babel)|application/((x-)?javascript|ecmascript|babel)|module)[\\\\s\\\"'>])))\",\n                  \"name\": \"meta.tag.metadata.script.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tag-stuff\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(?=(?i:type\\\\s*=\\\\s*('|\\\"|)(text/(x-handlebars|(x-(handlebars-)?|ng-)?template|html)[\\\\s\\\"'>])))\",\n                  \"end\": \"((<))(?=/(?i:script))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.tag.metadata.script.html\"\n                    },\n                    \"1\": {\n                      \"name\": \"punctuation.definition.tag.begin.html\"\n                    },\n                    \"2\": {\n                      \"name\": \"text.html.basic\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G\",\n                      \"end\": \"(>)|(?=/>)\",\n                      \"endCaptures\": {\n                        \"1\": {\n                          \"name\": \"punctuation.definition.tag.end.html\"\n                        }\n                      },\n                      \"name\": \"meta.tag.metadata.script.html\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#tag-stuff\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?!\\\\G)\",\n                      \"end\": \"(?=</(?i:script))\",\n                      \"name\": \"text.html.basic\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"text.html.basic\"\n                        }\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(?=(?i:type))\",\n                  \"end\": \"(<)(?=/(?i:script))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.tag.metadata.script.html\"\n                    },\n                    \"1\": {\n                      \"name\": \"punctuation.definition.tag.begin.html\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G\",\n                      \"end\": \"(>)|(?=/>)\",\n                      \"endCaptures\": {\n                        \"1\": {\n                          \"name\": \"punctuation.definition.tag.end.html\"\n                        }\n                      },\n                      \"name\": \"meta.tag.metadata.script.html\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#tag-stuff\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?!\\\\G)\",\n                      \"end\": \"(?=</(?i:script))\",\n                      \"name\": \"source.unknown\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.structure.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"name\": \"meta.tag.structure.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:address|blockquote|dd|div|section|article|aside|header|footer|nav|menu|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|pre)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.block.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.block.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\\\b(?!-))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.inline.any.html\"\n        }\n      },\n      \"end\": \"((?: ?/)?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.inline.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)([a-zA-Z][a-zA-Z0-9:-]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.other.html\"\n        }\n      },\n      \"end\": \"(/?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.other.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#entities\"\n    },\n    {\n      \"match\": \"<>\",\n      \"name\": \"invalid.illegal.incomplete.html\"\n    }\n  ],\n  \"repository\": {\n    \"embedded-code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#smarty\"\n        },\n        {\n          \"include\": \"#python\"\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          },\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#[xX][0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\"\n        },\n        {\n          \"match\": \"&\",\n          \"name\": \"invalid.illegal.bad-ampersand.html\"\n        }\n      ]\n    },\n    \"python\": {\n      \"begin\": \"(?:^\\\\s*)<\\\\?python(?!.*\\\\?>)\",\n      \"end\": \"\\\\?>(?:\\\\s*$\\\\n)?\",\n      \"name\": \"source.python.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"source.python\"\n        }\n      ]\n    },\n    \"smarty\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\{(literal)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"source.smarty.embedded.html\"\n            },\n            \"2\": {\n              \"name\": \"support.function.built-in.smarty\"\n            }\n          },\n          \"end\": \"(\\\\{/(literal)\\\\})\"\n        },\n        {\n          \"begin\": \"{{|{\",\n          \"disabled\": 1,\n          \"end\": \"}}|}\",\n          \"name\": \"source.smarty.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"source.smarty\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.double.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.single.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"tag-generic-attribute\": {\n      \"match\": \"(?<=[^=])\\\\b([a-zA-Z0-9:-]+)\",\n      \"name\": \"entity.other.attribute-name.html\"\n    },\n    \"tag-id-attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(?<='|\\\"|[^\\\\s<>/])\",\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"name\": \"string.quoted.double.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"name\": \"string.quoted.single.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.toc-list.id.html\"\n            }\n          },\n          \"match\": \"(?<==)(?:[^\\\\s<>/'\\\"]|/(?!>))+\",\n          \"name\": \"string.unquoted.html\"\n        }\n      ]\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tag-id-attribute\"\n        },\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        },\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#unquoted-attribute\"\n        }\n      ]\n    },\n    \"unquoted-attribute\": {\n      \"match\": \"(?<==)(?:[^\\\\s<>/'\\\"]|/(?!>))+\",\n      \"name\": \"string.unquoted.html\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/ini.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/ini.tmbundle/blob/master/Syntaxes/Ini.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/ini.tmbundle/commit/2af0cbb0704940f967152616f2f1ff0aae6287a6\",\n  \"name\": \"ini\",\n  \"scopeName\": \"source.ini\",\n  \"patterns\": [\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.ini\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ini\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.ini\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.ini\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \";\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ini\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.semicolon.ini\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.definition.ini\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.ini\"\n        }\n      },\n      \"match\": \"\\\\b([a-zA-Z0-9_.-]+)\\\\b\\\\s*(=)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.ini\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.entity.ini\"\n        }\n      },\n      \"match\": \"^(\\\\[)(.*?)(\\\\])\",\n      \"name\": \"entity.name.section.group-title.ini\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ini\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ini\"\n        }\n      },\n      \"name\": \"string.quoted.single.ini\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.ini\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ini\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ini\"\n        }\n      },\n      \"name\": \"string.quoted.double.ini\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/io.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.io\",\n  \"fileTypes\": [\"io\"],\n  \"patterns\": [\n    {\n      \"comment\": \"we match this to overload return inside () --Allan; scoping rules for what gets the scope have changed, so we now group the ) instead of the ( -- Rob\",\n      \"match\": \"\\\\((\\\\))\",\n      \"captures\": { \"1\": { \"name\": \"meta.empty-parenthesis.io\" } }\n    },\n    {\n      \"comment\": \"We want to do the same for ,) -- Seckar; same as above -- Rob\",\n      \"match\": \"\\\\,(\\\\))\",\n      \"captures\": { \"1\": { \"name\": \"meta.comma-parenthesis.io\" } }\n    },\n    {\n      \"match\": \"\\\\b(if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\\\b\",\n      \"name\": \"keyword.control.io\"\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.io\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.io\" } }\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"//\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.double-slash.io\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.io\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.io\" }\n      }\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.io\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.io\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.io\" }\n      }\n    },\n    {\n      \"comment\": \"I wonder if some of this isn't variable.other.language? --Allan; scoping this as variable.language to match Objective-C's handling of 'self', which is inconsistent with C++'s handling of 'this' but perhaps intentionally so -- Rob\",\n      \"match\": \"\\\\b(self|sender|target|proto|protos|parent)\\\\b\",\n      \"name\": \"variable.language.io\"\n    },\n    {\n      \"match\": \"<=|>=|=|:=|\\\\*|\\\\||\\\\|\\\\||\\\\+|-|/|&|&&|>|<|\\\\?|@|@@|\\\\b(and|or)\\\\b\",\n      \"name\": \"keyword.operator.io\"\n    },\n    { \"match\": \"\\\\bGL[\\\\w_]+\\\\b\", \"name\": \"constant.other.io\" },\n    { \"match\": \"\\\\b([A-Z](\\\\w+)?)\\\\b\", \"name\": \"support.class.io\" },\n    {\n      \"match\": \"\\\\b(clone|call|init|method|list|vector|block|(\\\\w+(?=\\\\s*\\\\()))\\\\b\",\n      \"name\": \"support.function.io\"\n    },\n    {\n      \"match\": \"\\\\b(gl(u|ut)?[A-Z]\\\\w+)\\\\b\",\n      \"name\": \"support.function.open-gl.io\"\n    },\n    {\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.io\" }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.io\" }\n      ],\n      \"name\": \"string.quoted.triple.io\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.io\" }\n      }\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.io\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.io\" }\n      ],\n      \"name\": \"string.quoted.double.io\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.io\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\\\b\",\n      \"name\": \"constant.numeric.io\"\n    },\n    { \"match\": \"(Lobby)\\\\b\", \"name\": \"variable.other.global.io\" },\n    {\n      \"match\": \"\\\\b(TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\\\b\",\n      \"name\": \"constant.language.io\"\n    }\n  ],\n  \"name\": \"Io\",\n  \"keyEquivalent\": \"^~I\",\n  \"uuid\": \"BD798537-3548-47F3-A6AB-7FB95C45DB83\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/java.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-java/blob/master/grammars/java.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-java/commit/29f977dc42a7e2568b39bb6fb34c4ef108eb59b3\",\n  \"name\": \"Java\",\n  \"scopeName\": \"source.java\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\b(package)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.package.java\"\n        }\n      },\n      \"end\": \"\\\\s*(;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.java\"\n        }\n      },\n      \"name\": \"meta.package.java\",\n      \"contentName\": \"storage.modifier.package.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"(?<=\\\\.)\\\\s*\\\\.|\\\\.(?=\\\\s*;)\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"(?<!_)_(?=\\\\s*(\\\\.|;))|\\\\b\\\\d+|-+\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"[A-Z]+\",\n          \"name\": \"invalid.deprecated.package_name_not_lowercase.java\"\n        },\n        {\n          \"match\": \"(?x)\\\\b(?<!\\\\$)\\n(abstract|assert|boolean|break|byte|case|catch|char|class|\\nconst|continue|default|do|double|else|enum|extends|final|\\nfinally|float|for|goto|if|implements|import|instanceof|int|\\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\\nthrow|throws|transient|try|void|volatile|while|yield|\\ntrue|false|null)\\\\b\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.java\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(import)\\\\b\\\\s*\\\\b(static)?\\\\b\\\\s\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.java\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.java\"\n        }\n      },\n      \"end\": \"\\\\s*(;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.java\"\n        }\n      },\n      \"name\": \"meta.import.java\",\n      \"contentName\": \"storage.modifier.import.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"(?<=\\\\.)\\\\s*\\\\.|\\\\.(?=\\\\s*;)\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\s*\\\\*\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"(?<!_)_(?=\\\\s*(\\\\.|;))|\\\\b\\\\d+|-+\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"(?x)\\\\b(?<!\\\\$)\\n(abstract|assert|boolean|break|byte|case|catch|char|class|\\nconst|continue|default|do|double|else|enum|extends|final|\\nfinally|float|for|goto|if|implements|import|instanceof|int|\\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\\nthrow|throws|transient|try|void|volatile|while|yield|\\ntrue|false|null)\\\\b\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.java\"\n        },\n        {\n          \"match\": \"\\\\*\",\n          \"name\": \"variable.language.wildcard.java\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#comments-javadoc\"\n    },\n    {\n      \"include\": \"#code\"\n    },\n    {\n      \"include\": \"#module\"\n    }\n  ],\n  \"repository\": {\n    \"all-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#primitive-arrays\"\n        },\n        {\n          \"include\": \"#primitive-types\"\n        },\n        {\n          \"include\": \"#object-types\"\n        }\n      ]\n    },\n    \"annotations\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((@)\\\\s*([^\\\\s(]+))(\\\\()\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.annotation.java\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.annotation.java\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.annotation-arguments.begin.bracket.round.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.annotation-arguments.end.bracket.round.java\"\n            }\n          },\n          \"name\": \"meta.declaration.annotation.java\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.other.key.java\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.java\"\n                }\n              },\n              \"match\": \"(\\\\w*)\\\\s*(=)\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(@)(interface)\\\\s+(\\\\w*)|((@)\\\\s*(\\\\w+))\",\n          \"name\": \"meta.declaration.annotation.java\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation.java\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.java\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.annotation.java\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.annotation.java\"\n            },\n            \"6\": {\n              \"name\": \"storage.type.annotation.java\"\n            }\n          }\n        }\n      ]\n    },\n    \"anonymous-block-and-instance-initializer\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.begin.bracket.curly.java\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.end.bracket.curly.java\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"anonymous-classes-and-new\": {\n      \"begin\": \"\\\\bnew\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.new.java\"\n        }\n      },\n      \"end\": \"(?=;|\\\\)|\\\\]|\\\\.|,|\\\\?|:|}|\\\\+|\\\\-|\\\\*|\\\\/(?!\\\\/|\\\\*)|%|!|&|\\\\||\\\\^|=)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#all-types\"\n        },\n        {\n          \"begin\": \"(?<=\\\\))\",\n          \"end\": \"(?=;|\\\\)|\\\\]|\\\\.|,|\\\\?|:|}|\\\\+|\\\\-|\\\\*|\\\\/(?!\\\\/|\\\\*)|%|!|&|\\\\||\\\\^|=)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.inner-class.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.inner-class.end.bracket.curly.java\"\n                }\n              },\n              \"name\": \"meta.inner-class.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#class-body\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\])\",\n          \"end\": \"(?=;|\\\\)|\\\\]|\\\\.|,|\\\\?|:|}|\\\\+|\\\\-|\\\\*|\\\\/(?!\\\\/|\\\\*)|%|!|&|\\\\||\\\\^|=)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.array-initializer.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.array-initializer.end.bracket.curly.java\"\n                }\n              },\n              \"name\": \"meta.array-initializer.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#parens\"\n        }\n      ]\n    },\n    \"assertions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(assert)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.assert.java\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"meta.declaration.assertion.java\",\n          \"patterns\": [\n            {\n              \"match\": \":\",\n              \"name\": \"keyword.operator.assert.expression-separator.java\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class\": {\n      \"begin\": \"(?=\\\\w?[\\\\w\\\\s-]*\\\\b(?:class|(?<!@)interface|enum)\\\\s+[\\\\w$]+)\",\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.class.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.class.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.java\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.java\"\n            }\n          },\n          \"match\": \"(class|(?<!@)interface|enum)\\\\s+([\\\\w$]+)\",\n          \"name\": \"meta.class.identifier.java\"\n        },\n        {\n          \"begin\": \"extends\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.extends.java\"\n            }\n          },\n          \"end\": \"(?={|implements|permits)\",\n          \"name\": \"meta.definition.class.inherited.classes.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(implements)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.java\"\n            }\n          },\n          \"end\": \"(?=\\\\s*extends|permits|\\\\{)\",\n          \"name\": \"meta.definition.class.implemented.interfaces.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(permits)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.permits.java\"\n            }\n          },\n          \"end\": \"(?=\\\\s*extends|implements|\\\\{)\",\n          \"name\": \"meta.definition.class.permits.classes.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.class.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"contentName\": \"meta.class.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments-javadoc\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#enums\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"include\": \"#static-initializer\"\n        },\n        {\n          \"include\": \"#class-fields-and-methods\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#member-variables\"\n        },\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"class-fields-and-methods\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\=)\",\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#methods\"\n        }\n      ]\n    },\n    \"code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#enums\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#record\"\n        },\n        {\n          \"include\": \"#anonymous-block-and-instance-initializer\"\n        },\n        {\n          \"include\": \"#try-catch-finally\"\n        },\n        {\n          \"include\": \"#assertions\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#constants-and-special-vars\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#anonymous-classes-and-new\"\n        },\n        {\n          \"include\": \"#lambda-expression\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#method-call\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#variables-local\"\n        },\n        {\n          \"include\": \"#objects\"\n        },\n        {\n          \"include\": \"#properties\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#all-types\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.period.java\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.java\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.java\"\n            }\n          },\n          \"match\": \"/\\\\*\\\\*/\",\n          \"name\": \"comment.block.empty.java\"\n        },\n        {\n          \"include\": \"#comments-inline\"\n        }\n      ]\n    },\n    \"comments-inline\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.java\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.java\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.java\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.java\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-slash.java\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments-javadoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(/\\\\*\\\\*)(?!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.java\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.java\"\n            }\n          },\n          \"name\": \"comment.block.javadoc.java\",\n          \"patterns\": [\n            {\n              \"match\": \"@(author|deprecated|return|see|serial|since|version)\\\\b\",\n              \"name\": \"keyword.other.documentation.javadoc.java\"\n            },\n            {\n              \"match\": \"(@param)\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.java\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.java\"\n                }\n              }\n            },\n            {\n              \"match\": \"(@(?:exception|throws))\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.java\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.java\"\n                }\n              }\n            },\n            {\n              \"match\": \"{(@link)\\\\s+(\\\\S+)?#([\\\\w$]+\\\\s*\\\\([^\\\\(\\\\)]*\\\\)).*?}\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.java\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.java\"\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.java\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"constants-and-special-vars\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(true|false|null)\\\\b\",\n          \"name\": \"constant.language.java\"\n        },\n        {\n          \"match\": \"\\\\bthis\\\\b\",\n          \"name\": \"variable.language.this.java\"\n        },\n        {\n          \"match\": \"\\\\bsuper\\\\b\",\n          \"name\": \"variable.language.java\"\n        }\n      ]\n    },\n    \"enums\": {\n      \"begin\": \"^\\\\s*([\\\\w\\\\s]*)(enum)\\\\s+(\\\\w+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#storage-modifiers\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.java\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.enum.java\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.enum.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.enum.java\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(extends)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.extends.java\"\n            }\n          },\n          \"end\": \"(?={|\\\\bimplements\\\\b)\",\n          \"name\": \"meta.definition.class.inherited.classes.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(implements)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.java\"\n            }\n          },\n          \"end\": \"(?={|\\\\bextends\\\\b)\",\n          \"name\": \"meta.definition.class.implemented.interfaces.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.enum.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<={)\",\n              \"end\": \"(?=;|})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments-javadoc\"\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"begin\": \"\\\\b(\\\\w+)\\\\b\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"constant.other.enum.java\"\n                    }\n                  },\n                  \"end\": \"(,)|(?=;|})\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.separator.delimiter.java\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#comments-javadoc\"\n                    },\n                    {\n                      \"include\": \"#comments\"\n                    },\n                    {\n                      \"begin\": \"\\\\(\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.bracket.round.java\"\n                        }\n                      },\n                      \"end\": \"\\\\)\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.bracket.round.java\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"include\": \"#code\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"{\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.bracket.curly.java\"\n                        }\n                      },\n                      \"end\": \"}\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.bracket.curly.java\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"include\": \"#class-body\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#class-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"([A-Za-z_$][\\\\w$]*)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.java\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n        }\n      },\n      \"name\": \"meta.function-call.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"generics\": {\n      \"begin\": \"<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.bracket.angle.java\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.bracket.angle.java\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(extends|super)\\\\b\",\n          \"name\": \"storage.modifier.$1.java\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)([a-zA-Z$_][a-zA-Z0-9$_]*)(?=\\\\s*<)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.java\"\n            }\n          }\n        },\n        {\n          \"include\": \"#primitive-arrays\"\n        },\n        {\n          \"match\": \"[a-zA-Z$_][a-zA-Z0-9$_]*\",\n          \"name\": \"storage.type.generic.java\"\n        },\n        {\n          \"match\": \"\\\\?\",\n          \"name\": \"storage.type.generic.wildcard.java\"\n        },\n        {\n          \"match\": \"&\",\n          \"name\": \"punctuation.separator.types.java\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.period.java\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bthrow\\\\b\",\n          \"name\": \"keyword.control.throw.java\"\n        },\n        {\n          \"match\": \"\\\\?|:\",\n          \"name\": \"keyword.control.ternary.java\"\n        },\n        {\n          \"match\": \"\\\\b(return|yield|break|case|continue|default|do|while|for|switch|if|else)\\\\b\",\n          \"name\": \"keyword.control.java\"\n        },\n        {\n          \"match\": \"\\\\b(instanceof)\\\\b\",\n          \"name\": \"keyword.operator.instanceof.java\"\n        },\n        {\n          \"match\": \"(<<|>>>?|~|\\\\^)\",\n          \"name\": \"keyword.operator.bitwise.java\"\n        },\n        {\n          \"match\": \"((&|\\\\^|\\\\||<<|>>>?)=)\",\n          \"name\": \"keyword.operator.assignment.bitwise.java\"\n        },\n        {\n          \"match\": \"(===?|!=|<=|>=|<>|<|>)\",\n          \"name\": \"keyword.operator.comparison.java\"\n        },\n        {\n          \"match\": \"([+*/%-]=)\",\n          \"name\": \"keyword.operator.assignment.arithmetic.java\"\n        },\n        {\n          \"match\": \"(=)\",\n          \"name\": \"keyword.operator.assignment.java\"\n        },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.java\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.java\"\n        },\n        {\n          \"match\": \"(!|&&|\\\\|\\\\|)\",\n          \"name\": \"keyword.operator.logical.java\"\n        },\n        {\n          \"match\": \"(\\\\||&)\",\n          \"name\": \"keyword.operator.bitwise.java\"\n        },\n        {\n          \"match\": \"\\\\b(const|goto)\\\\b\",\n          \"name\": \"keyword.reserved.java\"\n        }\n      ]\n    },\n    \"lambda-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"->\",\n          \"name\": \"storage.type.function.arrow.java\"\n        }\n      ]\n    },\n    \"member-variables\": {\n      \"begin\": \"(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)\",\n      \"end\": \"(?=\\\\=|;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#primitive-arrays\"\n        },\n        {\n          \"include\": \"#object-types\"\n        }\n      ]\n    },\n    \"method-call\": {\n      \"begin\": \"(\\\\.)\\\\s*([A-Za-z_$][\\\\w$]*)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.period.java\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.java\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n        }\n      },\n      \"name\": \"meta.method-call.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"methods\": {\n      \"begin\": \"(?!new)(?=[\\\\w<].*\\\\s+)(?=([^=/]|/(?!/))+\\\\()\",\n      \"end\": \"(})|(?=;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.method.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.method.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"begin\": \"(\\\\w+)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.java\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n            }\n          },\n          \"name\": \"meta.method.identifier.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameters\"\n            },\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"begin\": \"(?=\\\\w.*\\\\s+\\\\w+\\\\s*\\\\()\",\n          \"end\": \"(?=\\\\s+\\\\w+\\\\s*\\\\()\",\n          \"name\": \"meta.method.return-type.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#all-types\"\n            },\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#throws\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.method.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"contentName\": \"meta.method.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"module\": {\n      \"begin\": \"((open)\\\\s)?(module)\\\\s+(\\\\w+)\",\n      \"end\": \"}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.java\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.java\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.module.java\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.module.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.module.java\",\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.module.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"contentName\": \"meta.module.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#comments-javadoc\"\n            },\n            {\n              \"match\": \"\\\\b(requires|transitive|exports|opens|to|uses|provides|with)\\\\b\",\n              \"name\": \"keyword.module.java\"\n            }\n          ]\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\\\b(?<!\\\\$)\\n0(x|X)\\n(\\n  (?<!\\\\.)[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?[Ll]?(?!\\\\.)\\n  |\\n  (\\n    [0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\\\\.?\\n    |\\n    ([0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?)?\\\\.[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\\n  )\\n  [Pp][+-]?[0-9]([0-9_]*[0-9])?[FfDd]?\\n)\\n\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.hex.java\"\n        },\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0(b|B)[01]([01_]*[01])?[Ll]?\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.binary.java\"\n        },\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0[0-7]([0-7_]*[0-7])?[Ll]?\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.octal.java\"\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)\\n(\\n  \\\\b[0-9]([0-9_]*[0-9])?\\\\.\\\\B(?!\\\\.)\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?\\\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\\\b\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?\\\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\\\b\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?\\\\.([0-9]([0-9_]*[0-9])?)([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\\\b\\n  |\\n  (?<!\\\\.)\\\\B\\\\.[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\\\b\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\\\b\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\\\b\\n  |\\n  \\\\b(0|[1-9]([0-9_]*[0-9])?)(?!\\\\.)[Ll]?\\\\b\\n)\\n(?!\\\\$)\",\n          \"name\": \"constant.numeric.decimal.java\"\n        }\n      ]\n    },\n    \"object-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"begin\": \"\\\\b((?:[A-Za-z_]\\\\w*\\\\s*\\\\.\\\\s*)*)([A-Z_]\\\\w*)\\\\s*(?=\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[A-Za-z_]\\\\w*\",\n                  \"name\": \"storage.type.java\"\n                },\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.period.java\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.type.object.array.java\"\n            }\n          },\n          \"end\": \"(?!\\\\s*\\\\[)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#parens\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b((?:[A-Za-z_]\\\\w*\\\\s*\\\\.\\\\s*)*[A-Z_]\\\\w*)\\\\s*(?=<)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[A-Za-z_]\\\\w*\",\n                  \"name\": \"storage.type.java\"\n                },\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.period.java\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b((?:[A-Za-z_]\\\\w*\\\\s*\\\\.\\\\s*)*[A-Z_]\\\\w*)\\\\b((?=\\\\s*[A-Za-z$_\\\\n])|(?=\\\\s*\\\\.\\\\.\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[A-Za-z_]\\\\w*\",\n                  \"name\": \"storage.type.java\"\n                },\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.period.java\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"object-types-inherited\": {\n      \"patterns\": [\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"match\": \"\\\\b(?:[A-Z]\\\\w*\\\\s*(\\\\.)\\\\s*)*[A-Z]\\\\w*\\\\b\",\n          \"name\": \"entity.other.inherited-class.java\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.period.java\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        }\n      ]\n    },\n    \"objects\": {\n      \"match\": \"(?<![\\\\w$])[a-zA-Z_$][\\\\w$]*(?=\\\\s*\\\\.\\\\s*[\\\\w$]+)\",\n      \"name\": \"variable.other.object.java\"\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bfinal\\\\b\",\n          \"name\": \"storage.modifier.java\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#all-types\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"match\": \"\\\\w+\",\n          \"name\": \"variable.parameter.java\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\\\\.\",\n          \"name\": \"punctuation.definition.parameters.varargs.java\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.round.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.round.java\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.square.java\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.square.java\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.curly.java\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.curly.java\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"primitive-arrays\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(void|boolean|byte|char|short|int|float|long|double)\\\\b\\\\s*(?=\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.primitive.array.java\"\n            }\n          },\n          \"end\": \"(?!\\\\s*\\\\[)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#parens\"\n            }\n          ]\n        }\n      ]\n    },\n    \"primitive-types\": {\n      \"match\": \"\\\\b(void|boolean|byte|char|short|int|float|long|double)\\\\b\",\n      \"name\": \"storage.type.primitive.java\"\n    },\n    \"properties\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\.)\\\\s*([a-zA-Z_$][\\\\w$]*)(?=\\\\s*\\\\.\\\\s*[a-zA-Z_$][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.period.java\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.property.java\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*([a-zA-Z_$][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.period.java\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.property.java\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*([0-9][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.period.java\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.identifier.java\"\n            }\n          }\n        }\n      ]\n    },\n    \"record\": {\n      \"begin\": \"(?=\\\\w?[\\\\w\\\\s]*\\\\b(?:record)\\\\s+[\\\\w$]+)\",\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.class.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.record.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(record)\\\\s+([\\\\w$]+)(<[\\\\w$]+>)?(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.java\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.record.java\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#generics\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n            }\n          },\n          \"name\": \"meta.record.identifier.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(implements)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.java\"\n            }\n          },\n          \"end\": \"(?=\\\\s*\\\\{)\",\n          \"name\": \"meta.definition.class.implemented.interfaces.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#record-body\"\n        }\n      ]\n    },\n    \"record-body\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.class.begin.bracket.curly.java\"\n        }\n      },\n      \"end\": \"(?=})\",\n      \"name\": \"meta.record.body.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#record-constructor\"\n        },\n        {\n          \"include\": \"#class-body\"\n        }\n      ]\n    },\n    \"record-constructor\": {\n      \"begin\": \"(?!new)(?=[\\\\w<].*\\\\s+)(?=([^\\\\(=/]|/(?!/))+(?={))\",\n      \"end\": \"(})|(?=;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.method.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.method.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"begin\": \"(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.java\"\n            }\n          },\n          \"end\": \"(?=\\\\s*{)\",\n          \"name\": \"meta.method.identifier.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.method.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"contentName\": \"meta.method.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"static-initializer\": {\n      \"patterns\": [\n        {\n          \"include\": \"#anonymous-block-and-instance-initializer\"\n        },\n        {\n          \"match\": \"static\",\n          \"name\": \"storage.modifier.java\"\n        }\n      ]\n    },\n    \"storage-modifiers\": {\n      \"match\": \"\\\\b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|volatile|default|strictfp|sealed|non-sealed)\\\\b\",\n      \"name\": \"storage.modifier.java\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.java\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.java\"\n            }\n          },\n          \"name\": \"string.quoted.double.java\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.java\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.java\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.java\"\n            }\n          },\n          \"name\": \"string.quoted.single.java\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.java\"\n            }\n          ]\n        }\n      ]\n    },\n    \"throws\": {\n      \"begin\": \"throws\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"storage.modifier.java\"\n        }\n      },\n      \"end\": \"(?={|;)\",\n      \"name\": \"meta.throwables.java\",\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        },\n        {\n          \"match\": \"[a-zA-Z$_][\\\\.a-zA-Z0-9$_]*\",\n          \"name\": \"storage.type.java\"\n        }\n      ]\n    },\n    \"try-catch-finally\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\btry\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.try.java\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.try.end.bracket.curly.java\"\n            }\n          },\n          \"name\": \"meta.try.java\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.try.resources.begin.bracket.round.java\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.try.resources.end.bracket.round.java\"\n                }\n              },\n              \"name\": \"meta.try.resources.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.try.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"(?=})\",\n              \"contentName\": \"meta.try.body.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(catch)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.catch.java\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.catch.end.bracket.curly.java\"\n            }\n          },\n          \"name\": \"meta.catch.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n                }\n              },\n              \"contentName\": \"meta.catch.parameters.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#storage-modifiers\"\n                },\n                {\n                  \"begin\": \"[a-zA-Z$_][\\\\.a-zA-Z0-9$_]*\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"storage.type.java\"\n                    }\n                  },\n                  \"end\": \"(\\\\|)|(?=\\\\))\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.catch.separator.java\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#comments\"\n                    },\n                    {\n                      \"match\": \"\\\\w+\",\n                      \"captures\": {\n                        \"0\": {\n                          \"name\": \"variable.parameter.java\"\n                        }\n                      }\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.catch.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"(?=})\",\n              \"contentName\": \"meta.catch.body.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\bfinally\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.finally.java\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.finally.end.bracket.curly.java\"\n            }\n          },\n          \"name\": \"meta.finally.java\",\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.finally.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"(?=})\",\n              \"contentName\": \"meta.finally.body.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"variables\": {\n      \"begin\": \"(?x)\\n(?=\\n  \\\\b\\n  (\\n    (void|boolean|byte|char|short|int|float|long|double)\\n    |\\n    (?>(\\\\w+\\\\.)*[A-Z_]+\\\\w*) # e.g. `javax.ws.rs.Response`, or `String`\\n  )\\n  \\\\b\\n  \\\\s*\\n  (\\n    <[\\\\w<>,\\\\.?\\\\s\\\\[\\\\]]*> # e.g. `HashMap<Integer, String>`, or `List<java.lang.String>`\\n  )?\\n  \\\\s*\\n  (\\n    (\\\\[\\\\])* # int[][]\\n  )?\\n  \\\\s+\\n  [A-Za-z_$][\\\\w$]* # At least one identifier after space\\n  ([\\\\w\\\\[\\\\],$][\\\\w\\\\[\\\\],\\\\s]*)? # possibly primitive array or additional identifiers\\n  \\\\s*(=|:|;)\\n)\",\n      \"end\": \"(?=\\\\=|:|;)\",\n      \"name\": \"meta.definition.variable.java\",\n      \"patterns\": [\n        {\n          \"match\": \"([A-Za-z$_][\\\\w$]*)(?=\\\\s*(\\\\[\\\\])*\\\\s*(;|:|=|,))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.definition.java\"\n            }\n          }\n        },\n        {\n          \"include\": \"#all-types\"\n        },\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"variables-local\": {\n      \"begin\": \"(?=\\\\b(var)\\\\b\\\\s+[A-Za-z_$][\\\\w$]*\\\\s*(=|:|;))\",\n      \"end\": \"(?=\\\\=|:|;)\",\n      \"name\": \"meta.definition.variable.local.java\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bvar\\\\b\",\n          \"name\": \"storage.type.local.java\"\n        },\n        {\n          \"match\": \"([A-Za-z$_][\\\\w$]*)(?=\\\\s*(\\\\[\\\\])*\\\\s*(=|:|;))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.definition.java\"\n            }\n          }\n        },\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/javadoc.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.html.javadoc\",\n  \"fileTypes\": [],\n  \"patterns\": [\n    {\n      \"end\": \"\\\\*/\",\n      \"begin\": \"(/\\\\*\\\\*)\\\\s*$\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.begin.javadoc\" }\n      },\n      \"contentName\": \"text.html\",\n      \"patterns\": [\n        { \"include\": \"#inline\" },\n        {\n          \"begin\": \"((\\\\@)param)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.param.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.param.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)return)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.return.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.return.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)throws)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.throws.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.throws.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)exception)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.exception.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.exception.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)author)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.author.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.author.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)version)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.version.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.version.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)see)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.see.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.see.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)since)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.since.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.since.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)serial)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.serial.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.serial.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)serialField)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.serialField.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.serialField.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)serialData)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.serialData.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.serialData.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\@)deprecated)\",\n          \"end\": \"(?=^\\\\s*\\\\*?\\\\s*@|\\\\*/)\",\n          \"patterns\": [{ \"include\": \"#inline\" }],\n          \"name\": \"meta.documentation.tag.deprecated.javadoc\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.deprecated.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        },\n        {\n          \"match\": \"((\\\\@)\\\\S+)\\\\s\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.other.documentation.custom.javadoc\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          }\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.comment.end.javadoc\" }\n      },\n      \"name\": \"comment.block.documentation.javadoc\"\n    }\n  ],\n  \"repository\": {\n    \"inline\": {\n      \"patterns\": [\n        { \"include\": \"#inline-formatting\" },\n        {\n          \"comment\": \"This prevents < characters in commented source from starting\\n\\t\\t\\t\\t\\t\\t\\t\\ta tag that will not end. List of allowed tags taken from\\n\\t\\t\\t\\t\\t\\t\\t\\tjava checkstyle.\",\n          \"match\": \"<(?!(a|abbr|acronym|address|area|b|bdo|big|blockquote|br|caption|cite|code|colgroup|dd|del|div|dfn|dl|dt|em|fieldset|font|h1toh6|hr|i|img|ins|kbd|li|ol|p|pre|q|samp|small|span|strong|sub|sup|table|tbody|td|tfoot|th|thread|tr|tt|u|ul)\\\\b[^>]*>)\"\n        },\n        { \"include\": \"text.html.basic\" },\n        {\n          \"match\": \"((https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt)://|mailto:)[-:@a-zA-Z0-9_.,~%+/?=&#;]+(?<![-.,?:#;])\",\n          \"name\": \"markup.underline.link\"\n        }\n      ]\n    },\n    \"inline-formatting\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\\}\",\n          \"begin\": \"(\\\\{)((\\\\@)code)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.javadoc\" },\n            \"2\": {\n              \"name\": \"keyword.other.documentation.directive.code.javadoc\"\n            },\n            \"3\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          },\n          \"contentName\": \"markup.raw.code.javadoc\",\n          \"patterns\": [],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.tag.end.javadoc\" }\n          },\n          \"name\": \"meta.tag.template.code.javadoc\"\n        },\n        {\n          \"end\": \"\\\\}\",\n          \"begin\": \"(\\\\{)((\\\\@)literal)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.javadoc\" },\n            \"2\": {\n              \"name\": \"keyword.other.documentation.directive.literal.javadoc\"\n            },\n            \"3\": { \"name\": \"punctuation.definition.keyword.javadoc\" }\n          },\n          \"contentName\": \"markup.raw.literal.javadoc\",\n          \"patterns\": [],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.tag.end.javadoc\" }\n          },\n          \"name\": \"meta.tag.template.literal.javadoc\"\n        },\n        {\n          \"match\": \"(\\\\{)((\\\\@)docRoot)(\\\\})\",\n          \"name\": \"meta.tag.template.docRoot.javadoc\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.definition.keyword.javadoc\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.javadoc\" },\n            \"4\": { \"name\": \"punctuation.definition.tag.end.javadoc\" },\n            \"2\": {\n              \"name\": \"keyword.other.documentation.directive.docRoot.javadoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\{)((\\\\@)inheritDoc)(\\\\})\",\n          \"name\": \"meta.tag.template.inheritDoc.javadoc\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.definition.keyword.javadoc\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.javadoc\" },\n            \"4\": { \"name\": \"punctuation.definition.tag.end.javadoc\" },\n            \"2\": {\n              \"name\": \"keyword.other.documentation.directive.inheritDoc.javadoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\{)((\\\\@)link)(?:\\\\s+(\\\\S+?))?(?:\\\\s+(.+?))?\\\\s*(\\\\})\",\n          \"name\": \"meta.tag.template.link.javadoc\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.definition.keyword.javadoc\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.javadoc\" },\n            \"6\": { \"name\": \"punctuation.definition.tag.end.javadoc\" },\n            \"4\": { \"name\": \"markup.underline.link.javadoc\" },\n            \"2\": {\n              \"name\": \"keyword.other.documentation.directive.link.javadoc\"\n            },\n            \"5\": { \"name\": \"string.other.link.title.javadoc\" }\n          }\n        },\n        {\n          \"match\": \"(\\\\{)((\\\\@)linkplain)(?:\\\\s+(\\\\S+?))?(?:\\\\s+(.+?))?\\\\s*(\\\\})\",\n          \"name\": \"meta.tag.template.linkplain.javadoc\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.definition.keyword.javadoc\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.javadoc\" },\n            \"6\": { \"name\": \"punctuation.definition.tag.end.javadoc\" },\n            \"4\": { \"name\": \"markup.underline.linkplain.javadoc\" },\n            \"2\": {\n              \"name\": \"keyword.other.documentation.directive.linkplain.javadoc\"\n            },\n            \"5\": { \"name\": \"string.other.link.title.javadoc\" }\n          }\n        },\n        {\n          \"match\": \"(\\\\{)((\\\\@)value)\\\\s*(\\\\S+?)?\\\\s*(\\\\})\",\n          \"name\": \"meta.tag.template.value.javadoc\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.definition.keyword.javadoc\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.javadoc\" },\n            \"4\": { \"name\": \"variable.other.javadoc\" },\n            \"2\": {\n              \"name\": \"keyword.other.documentation.directive.value.javadoc\"\n            },\n            \"5\": { \"name\": \"punctuation.definition.tag.end.javadoc\" }\n          }\n        }\n      ]\n    }\n  },\n  \"name\": \"JavaDoc\",\n  \"uuid\": \"64BB98A4-59D4-474E-9091-C1E1D04BDD03\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/javascript.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/Microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/Microsoft/TypeScript-TmLanguage/commit/77d21fd8d3f750fcf67bdf7436f4e46565cba350\",\n  \"name\": \"JavaScript (with React support)\",\n  \"scopeName\": \"source.js\",\n  \"patterns\": [\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#statements\"\n    },\n    {\n      \"name\": \"comment.line.shebang.ts\",\n      \"match\": \"\\\\A(#!).*(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.ts\"\n        }\n      }\n    }\n  ],\n  \"repository\": {\n    \"statements\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#template\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#control-statement\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#function-declaration\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#namespace-declaration\"\n        },\n        {\n          \"include\": \"#type-alias-declaration\"\n        },\n        {\n          \"include\": \"#import-equals-declaration\"\n        },\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#export-declaration\"\n        }\n      ]\n    },\n    \"control-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#for-loop\"\n        },\n        {\n          \"name\": \"keyword.control.trycatch.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.loop.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.flow.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.switch.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.conditional.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.with.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.other.debugger.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"storage.modifier.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"expressionWithoutIdentifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#template\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#function-expression\"\n        },\n        {\n          \"include\": \"#class-expression\"\n        },\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#cast\"\n        },\n        {\n          \"include\": \"#ternary-expression\"\n        },\n        {\n          \"include\": \"#new-expr\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#paren-expression\"\n        }\n      ]\n    },\n    \"expressionPunctuations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.decorator.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\@\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.decorator.js\"\n        }\n      },\n      \"end\": \"(?=\\\\s)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"var-expr\": {\n      \"name\": \"meta.var.expr.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(var|let|const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.js\"\n        }\n      },\n      \"end\": \"(?=$|^|;|}|(\\\\s+(of|in)\\\\s+))\",\n      \"patterns\": [\n        {\n          \"include\": \"#destructuring-variable\"\n        },\n        {\n          \"include\": \"#var-single-variable\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(,)\\\\s*(?!\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.comma.js\"\n            }\n          },\n          \"end\": \"(?<!,)((?==|;|}|(\\\\s+(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#destructuring-variable\"\n            },\n            {\n              \"include\": \"#var-single-variable\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"var-single-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.js\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(=>|(\\\\([^\\\\(\\\\)]*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js entity.name.function.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.js\",\n          \"begin\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js variable.other.constant.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.js\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js variable.other.readwrite.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable-type-annotation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"destructuring-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.js\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.js\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-propertyName\": {\n      \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.destructuring.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"name\": \"variable.object.property.js\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-variable-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.js variable.other.readwrite.js\"\n        }\n      }\n    },\n    \"object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element\"\n        }\n      ]\n    },\n    \"array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*\\\\b(public|protected|private|readonly)(?=\\\\s+(public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\\\s*\\\\b(public|private|protected|readonly)\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(=>|(\\\\([^\\\\(\\\\)]*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js variable.language.this.js\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\\\s*\\\\b(public|private|protected|readonly)\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js variable.language.this.js\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"destructuring-parameter\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.parameter.object-binding-pattern.js\",\n          \"begin\": \"(?<!=|:)\\\\s*(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.js\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-object-binding-element\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.paramter.array-binding-pattern.js\",\n          \"begin\": \"(?<!=|:)\\\\s*(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.js\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-binding-element\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#parameter-binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#parameter-array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-parameter-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.js\"\n        }\n      }\n    },\n    \"parameter-object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-object-binding-element\"\n        }\n      ]\n    },\n    \"parameter-array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"name\": \"meta.field.declaration.js\",\n      \"begin\": \"(?<!\\\\()(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\?\\\\s*)?(=|:))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|,|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\?\\\\s*)?(=|:))))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\?\\\\s*)?(=|:))\",\n          \"end\": \"(?=[};,=]|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\?\\\\s*)?(=|:))))|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#array-literal\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"name\": \"meta.definition.property.js entity.name.function.js\",\n              \"match\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\\\?\\\\s*)?\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(=>|(\\\\([^\\\\(\\\\)]*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\"\n            },\n            {\n              \"name\": \"meta.definition.property.js variable.object.property.js\",\n              \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n            },\n            {\n              \"name\": \"keyword.operator.optional.js\",\n              \"match\": \"\\\\?\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[,);}\\\\]])\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            }\n          },\n          \"end\": \"(?=[,);}\\\\]])|(?=^\\\\s*$)|(?<=\\\\S)(?<!=)(?=\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-declaration\": {\n      \"name\": \"meta.function.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(export)\\\\s+)?(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.async.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.function.js\"\n        },\n        \"4\": {\n          \"name\": \"keyword.generator.asterisk.js\"\n        },\n        \"5\": {\n          \"name\": \"meta.definition.function.js entity.name.function.js\"\n        }\n      },\n      \"end\": \"(?=$|^|;)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-expression\": {\n      \"name\": \"meta.function.expression.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.js\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.js\"\n        },\n        \"4\": {\n          \"name\": \"meta.definition.function.js entity.name.function.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#function-parameters\"\n        },\n        {\n          \"include\": \"#return-type\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.method.declaration.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)(?:(\\\\*)\\\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*[\\\\(\\\\<])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.async.js\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.property.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.generator.asterisk.js\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:(?:\\\\b(?:(new)|(constructor))\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(?:(\\\\*)\\\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))?\\\\s*[\\\\(\\\\<]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.async.js\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.new.js\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.js\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.js\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-literal-method-declaration\": {\n      \"name\": \"meta.method.declaration.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*[\\\\(\\\\<])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.property.js\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.js\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*[\\\\(\\\\<])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.property.js\"\n            },\n            \"3\": {\n              \"name\": \"keyword.generator.asterisk.js\"\n            }\n          },\n          \"end\": \"(?=\\\\(|\\\\<)\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method-declaration-name\": {\n      \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??)\\\\s*[\\\\(\\\\<])\",\n      \"end\": \"(?=\\\\(|\\\\<)\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"name\": \"meta.definition.method.js entity.name.function.js\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.js\",\n          \"match\": \"\\\\?\"\n        }\n      ]\n    },\n    \"arrow-function\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.arrow.js\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?==>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.arrow.js\",\n          \"begin\": \"(?x) (?:\\n  (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\n)? ((?<![})!\\\\]])\\\\s*\\n  (?=\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  )\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js\"\n            }\n          },\n          \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            },\n            {\n              \"include\": \"#function-parameters\"\n            },\n            {\n              \"include\": \"#arrow-return-type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.arrow.js\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.js\"\n            }\n          },\n          \"end\": \"(?<=\\\\}|\\\\S)(?<!=>)|((?!\\\\{)(?=\\\\S))\",\n          \"patterns\": [\n            {\n              \"include\": \"#decl-block\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"name\": \"meta.indexer.declaration.js\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.square.js\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.js\"\n        }\n      },\n      \"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.js\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.optional.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        }\n      ]\n    },\n    \"indexer-mapped-type-declaration\": {\n      \"name\": \"meta.indexer.mappedtype.declaration.js\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(in)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.square.js\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.js\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.expression.in.js\"\n        }\n      },\n      \"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.js\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.optional.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"name\": \"meta.parameters.js\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.begin.js\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.js\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"name\": \"meta.class.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(export)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.class.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-expression\": {\n      \"name\": \"meta.class.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(class)\\\\b(?=\\\\s+|[<{]|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-declaration-or-expression-patterns\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.class.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"name\": \"meta.interface.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(export)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.interface.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.interface.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"class-or-interface-heritage\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(extends|implements)\\\\b)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js\"\n        }\n      },\n      \"end\": \"(?=\\\\{)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\\\s*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.inherited-class.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"class-or-interface-body\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#property-accessor\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"access-modifier\": {\n      \"name\": \"storage.modifier.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"property-accessor\": {\n      \"name\": \"storage.type.property.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"enum-declaration\": {\n      \"name\": \"meta.enum.declaration.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.enum.js\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.js\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.enummember.js\"\n                }\n              },\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\])))\",\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#array-literal\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"namespace-declaration\": {\n      \"name\": \"meta.namespace.declaration.js\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[_$[:alpha:]\\\"'`]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.namespace.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;|\\\\babstract\\\\b|\\\\basync\\\\b|\\\\bclass\\\\b|\\\\bconst\\\\b|\\\\bdeclare\\\\b|\\\\benum\\\\b|\\\\bexport\\\\b|\\\\bfunction\\\\b|\\\\bimport\\\\b|\\\\binterface\\\\b|\\\\blet\\\\b|\\\\bmodule\\\\b|\\\\bnamespace\\\\b|\\\\btype\\\\b|\\\\bvar\\\\b)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"entity.name.type.module.js\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"type-alias-declaration\": {\n      \"name\": \"meta.type.declaration.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(type)\\\\b\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.type.js\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.alias.js\"\n        }\n      },\n      \"end\": \"(?=[};]|\\\\babstract\\\\b|\\\\basync\\\\b|\\\\bclass\\\\b|\\\\bconst\\\\b|\\\\bdeclare\\\\b|\\\\benum\\\\b|\\\\bexport\\\\b|\\\\bfunction\\\\b|\\\\bimport\\\\b|\\\\binterface\\\\b|\\\\blet\\\\b|\\\\bmodule\\\\b|\\\\bnamespace\\\\b|\\\\btype\\\\b|\\\\bvar\\\\b)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"match\": \"(=)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"import-equals-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.import-equals.external.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(import)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.readwrite.alias.js\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.require.js\"\n            },\n            \"6\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.import-equals.internal.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(import)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.readwrite.alias.js\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            }\n          },\n          \"end\": \"(?=;|$|^)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.module.js\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.accessor.js\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.accessor.optional.js\"\n                }\n              }\n            },\n            {\n              \"name\": \"variable.other.readwrite.js\",\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"name\": \"meta.import.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(import)(?!\\\\s*[:\\\\(])(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.js\"\n        }\n      },\n      \"end\": \"(?=;|$|^)\",\n      \"patterns\": [\n        {\n          \"include\": \"#import-export-declaration\"\n        }\n      ]\n    },\n    \"export-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.as.js\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.namespace.js\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.module.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.export.default.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:(?:\\\\s*(=))|(?:\\\\s+(default)(?=\\\\s+)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.default.js\"\n            }\n          },\n          \"end\": \"(?=;|$|\\\\babstract\\\\b|\\\\basync\\\\b|\\\\bclass\\\\b|\\\\bconst\\\\b|\\\\bdeclare\\\\b|\\\\benum\\\\b|\\\\bexport\\\\b|\\\\bfunction\\\\b|\\\\bimport\\\\b|\\\\binterface\\\\b|\\\\blet\\\\b|\\\\bmodule\\\\b|\\\\bnamespace\\\\b|\\\\btype\\\\b|\\\\bvar\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.export.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?!\\\\s*:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.export.js\"\n            }\n          },\n          \"end\": \"(?=;|$|\\\\babstract\\\\b|\\\\basync\\\\b|\\\\bclass\\\\b|\\\\bconst\\\\b|\\\\bdeclare\\\\b|\\\\benum\\\\b|\\\\bexport\\\\b|\\\\bfunction\\\\b|\\\\bimport\\\\b|\\\\binterface\\\\b|\\\\blet\\\\b|\\\\bmodule\\\\b|\\\\bnamespace\\\\b|\\\\btype\\\\b|\\\\bvar\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-export-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#import-export-block\"\n        },\n        {\n          \"name\": \"keyword.control.from.js\",\n          \"match\": \"\\\\bfrom\\\\b\"\n        },\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-block\": {\n      \"name\": \"meta.block.js\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-clause\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bdefault)|(\\\\*)|(\\\\b[_$[:alpha:]][_$[:alnum:]]*))\\\\s+(as)\\\\s+(?:(\\\\bdefault(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(\\\\b[_$[:alpha:]][_$[:alnum:]]*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.js\"\n            },\n            \"2\": {\n              \"name\": \"constant.language.import-export-all.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.readwrite.js\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.as.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.default.js\"\n            },\n            \"6\": {\n              \"name\": \"variable.other.readwrite.alias.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"constant.language.import-export-all.js\",\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"name\": \"keyword.control.default.js\",\n          \"match\": \"\\\\b(default)\\\\b\"\n        },\n        {\n          \"name\": \"variable.other.readwrite.alias.js\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"name\": \"switch-statement.expr.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"switch-expression.expr.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.js\"\n            },\n            \"2\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"switch-block.expr.js\",\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.js\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"name\": \"case-clause.expr.js\",\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.switch.js\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.section.case-statement.js\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"for-loop\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(for)(?:\\\\s+(await))?\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.js\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.loop.js\"\n        },\n        \"3\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"decl-block\": {\n      \"name\": \"meta.block.js\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statements\"\n        }\n      ]\n    },\n    \"after-operator-block-as-object-literal\": {\n      \"name\": \"meta.objectliteral.js\",\n      \"begin\": \"(?<=[=(,\\\\[?+!]|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^yield|[^\\\\._$[:alnum:]]yield|^throw|[^\\\\._$[:alnum:]]throw|^in|[^\\\\._$[:alnum:]]in|^of|[^\\\\._$[:alnum:]]of|^typeof|[^\\\\._$[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-literal\": {\n      \"name\": \"meta.objectliteral.js\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-literal-method-declaration\"\n        },\n        {\n          \"name\": \"meta.object.member.js meta.object-literal.key.js\",\n          \"begin\": \"(?=\\\\[)\",\n          \"end\": \"(?=:)\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js meta.object-literal.key.js\",\n          \"begin\": \"(?=[\\\\'\\\\\\\"])\",\n          \"end\": \"(?=:)\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"match\": \"(?![_$[:alpha:]])([[:digit:]]+)\\\\s*(?=:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js\"\n            },\n            \"1\": {\n              \"name\": \"constant.numeric.decimal.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"match\": \"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js\"\n            },\n            \"1\": {\n              \"name\": \"entity.name.function.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.js\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=,|\\\\}|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"begin\": \"(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*=)\",\n          \"end\": \"(?=,|\\\\}|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js punctuation.separator.key-value.js\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"ternary-expression\": {\n      \"begin\": \"(?!\\\\?\\\\.\\\\s*[^[:digit:]])(\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.js\"\n        }\n      },\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?\\\\.\\\\s*)?(<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>)*(?!=)\\\\>)*(?!=)>\\\\s*)?\\\\()\",\n      \"end\": \"(?<=\\\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?\\\\.\\\\s*)?(<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>)*(?!=)\\\\>)*(?!=)>\\\\s*)?\\\\()\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-call.js\",\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))\",\n          \"end\": \"(?=\\\\s*(\\\\?\\\\.\\\\s*)?(<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>)*(?!=)\\\\>)*(?!=)>\\\\s*)?\\\\()\",\n          \"patterns\": [\n            {\n              \"include\": \"#literal\"\n            },\n            {\n              \"include\": \"#support-objects\"\n            },\n            {\n              \"include\": \"#object-identifiers\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            },\n            {\n              \"name\": \"keyword.operator.expression.import.js\",\n              \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*[\\\\(]\\\\s*[\\\\\\\"\\\\'\\\\`]))\"\n            },\n            {\n              \"name\": \"entity.name.function.js\",\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"meta.function-call.js punctuation.accessor.optional.js\",\n          \"match\": \"\\\\?\\\\.\"\n        },\n        {\n          \"name\": \"meta.type.parameters.js\",\n          \"begin\": \"\\\\<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.typeparameters.begin.js\"\n            }\n          },\n          \"end\": \"\\\\>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.typeparameters.end.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#paren-expression\"\n        }\n      ]\n    },\n    \"new-expr\": {\n      \"name\": \"new.expr.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.new.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]]|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#paren-expression\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"paren-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"cast\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        }\n      ]\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.flow.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.generator.asterisk.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.expression.delete.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.in.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.of.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.instanceof.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.new.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.void.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,:})\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.operator.spread.js\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.js\",\n          \"match\": \"\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.js\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|>>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.js\",\n          \"match\": \"<<|>>>|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.js\",\n          \"match\": \"===|!==|==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.js\",\n          \"match\": \"<=|>=|<>|<|>\"\n        },\n        {\n          \"name\": \"keyword.operator.logical.js\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.js\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.js\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.js\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.js\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.js\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:])])\\\\s*(/)(?![/*])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.arithmetic.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"typeof-operator\": {\n      \"name\": \"keyword.operator.expression.typeof.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#undefined-literal\"\n        },\n        {\n          \"include\": \"#numericConstant-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#this-literal\"\n        },\n        {\n          \"include\": \"#super-literal\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"name\": \"meta.array.literal.js\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"numeric-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.hex.js\",\n          \"match\": \"\\\\b(?<!\\\\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"constant.numeric.binary.js\",\n          \"match\": \"\\\\b(?<!\\\\$)0(b|B)[01][01_]*\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"constant.numeric.octal.js\",\n          \"match\": \"\\\\b(?<!\\\\$)0(o|O)?[0-7][0-7_]*\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.js\"\n            },\n            \"1\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"2\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"3\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"4\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"5\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"6\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"this-literal\": {\n      \"name\": \"variable.language.this.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)\"\n    },\n    \"super-literal\": {\n      \"name\": \"variable.language.super.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)\"\n    },\n    \"undefined-literal\": {\n      \"name\": \"constant.language.undefined.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"numericConstant-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.nan.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.infinity.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"support-objects\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.language.arguments.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.class.builtin.js\",\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Array|ArrayBuffer|Atomics|Boolean|DataView|Date|Float32Array|Float64Array|Function|Generator\\n  |GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Promise|Proxy\\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.class.error.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.function.js\",\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\\\s*\\\\()\"\n        },\n        {\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Math)(?:\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\n  |\\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.constant.math.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"4\": {\n              \"name\": \"support.function.math.js\"\n            },\n            \"5\": {\n              \"name\": \"support.constant.property.math.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(console)(?:\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\n  assert|clear|count|debug|dir|error|group|groupCollapsed|groupEnd|info|log\\n  |profile|profileEnd|table|time|timeEnd|timeStamp|trace|warn))?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.class.console.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"4\": {\n              \"name\": \"support.function.console.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(JSON)(?:\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(parse|stringify))?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.constant.json.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"4\": {\n              \"name\": \"support.function.json.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (constructor|length|prototype|__proto__)\\n  |\\n  (EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY))\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.property.js\"\n            },\n            \"4\": {\n              \"name\": \"support.constant.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.)) \\\\b (?:\\n  (document|event|navigator|performance|screen|window)\\n  |\\n  (AnalyserNode|ArrayBufferView|Attr|AudioBuffer|AudioBufferSourceNode|AudioContext|AudioDestinationNode|AudioListener\\n  |AudioNode|AudioParam|BatteryManager|BeforeUnloadEvent|BiquadFilterNode|Blob|BufferSource|ByteString|CSS|CSSConditionRule\\n  |CSSCounterStyleRule|CSSGroupingRule|CSSMatrix|CSSMediaRule|CSSPageRule|CSSPrimitiveValue|CSSRule|CSSRuleList|CSSStyleDeclaration\\n  |CSSStyleRule|CSSStyleSheet|CSSSupportsRule|CSSValue|CSSValueList|CanvasGradient|CanvasImageSource|CanvasPattern\\n  |CanvasRenderingContext2D|ChannelMergerNode|ChannelSplitterNode|CharacterData|ChromeWorker|CloseEvent|Comment|CompositionEvent\\n  |Console|ConvolverNode|Coordinates|Credential|CredentialsContainer|Crypto|CryptoKey|CustomEvent|DOMError|DOMException\\n  |DOMHighResTimeStamp|DOMImplementation|DOMString|DOMStringList|DOMStringMap|DOMTimeStamp|DOMTokenList|DataTransfer\\n  |DataTransferItem|DataTransferItemList|DedicatedWorkerGlobalScope|DelayNode|DeviceProximityEvent|DirectoryEntry\\n  |DirectoryEntrySync|DirectoryReader|DirectoryReaderSync|Document|DocumentFragment|DocumentTouch|DocumentType|DragEvent\\n  |DynamicsCompressorNode|Element|Entry|EntrySync|ErrorEvent|Event|EventListener|EventSource|EventTarget|FederatedCredential\\n  |FetchEvent|File|FileEntry|FileEntrySync|FileException|FileList|FileReader|FileReaderSync|FileSystem|FileSystemSync\\n  |FontFace|FormData|GainNode|Gamepad|GamepadButton|GamepadEvent|Geolocation|GlobalEventHandlers|HTMLAnchorElement\\n  |HTMLAreaElement|HTMLAudioElement|HTMLBRElement|HTMLBaseElement|HTMLBodyElement|HTMLButtonElement|HTMLCanvasElement\\n  |HTMLCollection|HTMLContentElement|HTMLDListElement|HTMLDataElement|HTMLDataListElement|HTMLDialogElement|HTMLDivElement\\n  |HTMLDocument|HTMLElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFormControlsCollection|HTMLFormElement\\n  |HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLInputElement\\n  |HTMLKeygenElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMediaElement\\n  |HTMLMetaElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLOptionElement\\n  |HTMLOptionsCollection|HTMLOutputElement|HTMLParagraphElement|HTMLParamElement|HTMLPreElement|HTMLProgressElement\\n  |HTMLQuoteElement|HTMLScriptElement|HTMLSelectElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement\\n  |HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement\\n  |HTMLTableRowElement|HTMLTableSectionElement|HTMLTextAreaElement|HTMLTimeElement|HTMLTitleElement|HTMLTrackElement\\n  |HTMLUListElement|HTMLUnknownElement|HTMLVideoElement|HashChangeEvent|History|IDBCursor|IDBCursorWithValue|IDBDatabase\\n  |IDBEnvironment|IDBFactory|IDBIndex|IDBKeyRange|IDBMutableFile|IDBObjectStore|IDBOpenDBRequest|IDBRequest|IDBTransaction\\n  |IDBVersionChangeEvent|IIRFilterNode|IdentityManager|ImageBitmap|ImageBitmapFactories|ImageData|Index|InputDeviceCapabilities\\n  |InputEvent|InstallEvent|InstallTrigger|KeyboardEvent|LinkStyle|LocalFileSystem|LocalFileSystemSync|Location|MIDIAccess\\n  |MIDIConnectionEvent|MIDIInput|MIDIInputMap|MIDIOutputMap|MediaElementAudioSourceNode|MediaError|MediaKeyMessageEvent\\n  |MediaKeySession|MediaKeyStatusMap|MediaKeySystemAccess|MediaKeySystemConfiguration|MediaKeys|MediaRecorder|MediaStream\\n  |MediaStreamAudioDestinationNode|MediaStreamAudioSourceNode|MessageChannel|MessageEvent|MessagePort|MouseEvent\\n  |MutationObserver|MutationRecord|NamedNodeMap|Navigator|NavigatorConcurrentHardware|NavigatorGeolocation|NavigatorID\\n  |NavigatorLanguage|NavigatorOnLine|Node|NodeFilter|NodeIterator|NodeList|NonDocumentTypeChildNode|Notification\\n  |OfflineAudioCompletionEvent|OfflineAudioContext|OscillatorNode|PageTransitionEvent|PannerNode|ParentNode|PasswordCredential\\n  |Path2D|PaymentAddress|PaymentRequest|PaymentResponse|Performance|PerformanceEntry|PerformanceFrameTiming|PerformanceMark\\n  |PerformanceMeasure|PerformanceNavigation|PerformanceNavigationTiming|PerformanceObserver|PerformanceObserverEntryList\\n  |PerformanceResourceTiming|PerformanceTiming|PeriodicSyncEvent|PeriodicWave|Plugin|Point|PointerEvent|PopStateEvent\\n  |PortCollection|Position|PositionError|PositionOptions|PresentationConnectionClosedEvent|PresentationConnectionList\\n  |PresentationReceiver|ProcessingInstruction|ProgressEvent|PromiseRejectionEvent|PushEvent|PushRegistrationManager\\n  |RTCCertificate|RTCConfiguration|RTCPeerConnection|RTCSessionDescriptionCallback|RTCStatsReport|RadioNodeList|RandomSource\\n  |Range|ReadableByteStream|RenderingContext|SVGAElement|SVGAngle|SVGAnimateColorElement|SVGAnimateElement|SVGAnimateMotionElement\\n  |SVGAnimateTransformElement|SVGAnimatedAngle|SVGAnimatedBoolean|SVGAnimatedEnumeration|SVGAnimatedInteger|SVGAnimatedLength\\n  |SVGAnimatedLengthList|SVGAnimatedNumber|SVGAnimatedNumberList|SVGAnimatedPoints|SVGAnimatedPreserveAspectRatio\\n  |SVGAnimatedRect|SVGAnimatedString|SVGAnimatedTransformList|SVGAnimationElement|SVGCircleElement|SVGClipPathElement\\n  |SVGCursorElement|SVGDefsElement|SVGDescElement|SVGElement|SVGEllipseElement|SVGEvent|SVGFilterElement|SVGFontElement\\n  |SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement\\n  |SVGForeignObjectElement|SVGGElement|SVGGlyphElement|SVGGradientElement|SVGHKernElement|SVGImageElement|SVGLength\\n  |SVGLengthList|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMaskElement|SVGMatrix|SVGMissingGlyphElement\\n  |SVGNumber|SVGNumberList|SVGPathElement|SVGPatternElement|SVGPoint|SVGPolygonElement|SVGPolylineElement|SVGPreserveAspectRatio\\n  |SVGRadialGradientElement|SVGRect|SVGRectElement|SVGSVGElement|SVGScriptElement|SVGSetElement|SVGStopElement|SVGStringList\\n  |SVGStylable|SVGStyleElement|SVGSwitchElement|SVGSymbolElement|SVGTRefElement|SVGTSpanElement|SVGTests|SVGTextElement\\n  |SVGTextPositioningElement|SVGTitleElement|SVGTransform|SVGTransformList|SVGTransformable|SVGUseElement|SVGVKernElement\\n  |SVGViewElement|ServiceWorker|ServiceWorkerContainer|ServiceWorkerGlobalScope|ServiceWorkerRegistration|ServiceWorkerState\\n  |ShadowRoot|SharedWorker|SharedWorkerGlobalScope|SourceBufferList|StereoPannerNode|Storage|StorageEvent|StyleSheet\\n  |StyleSheetList|SubtleCrypto|SyncEvent|Text|TextMetrics|TimeEvent|TimeRanges|Touch|TouchEvent|TouchList|Transferable\\n  |TreeWalker|UIEvent|USVString|VRDisplayCapabilities|ValidityState|WaveShaperNode|WebGL|WebGLActiveInfo|WebGLBuffer\\n  |WebGLContextEvent|WebGLFramebuffer|WebGLProgram|WebGLRenderbuffer|WebGLRenderingContext|WebGLShader|WebGLShaderPrecisionFormat\\n  |WebGLTexture|WebGLTimerQueryEXT|WebGLTransformFeedback|WebGLUniformLocation|WebGLVertexArrayObject|WebGLVertexArrayObjectOES\\n  |WebSocket|WebSockets|WebVTT|WheelEvent|Window|WindowBase64|WindowEventHandlers|WindowTimers|Worker|WorkerGlobalScope\\n  |WorkerLocation|WorkerNavigator|XMLHttpRequest|XMLHttpRequestEventTarget|XMLSerializer|XPathExpression|XPathResult\\n  |XSLTProcessor))\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.variable.dom.js\"\n            },\n            \"2\": {\n              \"name\": \"support.class.dom.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE\\n  |DOMSTRING_SIZE_ERR|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|HIERARCHY_REQUEST_ERR|INDEX_SIZE_ERR\\n  |INUSE_ATTRIBUTE_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR\\n  |NOT_SUPPORTED_ERR|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|WRONG_DOCUMENT_ERR)\\n  |\\n  (_content|[xyz]|abbr|above|accept|acceptCharset|accessKey|action|align|[av]Link(?:color)?|all|alt|anchors|appCodeName\\n  |appCore|applets|appMinorVersion|appName|appVersion|archive|areas|arguments|attributes|availHeight|availLeft|availTop\\n  |availWidth|axis|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor\\n  |borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|borderWidth|bottom|bufferDepth|callee|caller|caption\\n  |cellPadding|cells|cellSpacing|ch|characterSet|charset|checked|childNodes|chOff|cite|classes|className|clear\\n  |clientInformation|clip|clipBoardData|closed|code|codeBase|codeType|color|colorDepth|cols|colSpan|compact|complete\\n  |components|content|controllers|cookie|cookieEnabled|cords|cpuClass|crypto|current|data|dateTime|declare|defaultCharset\\n  |defaultChecked|defaultSelected|defaultStatus|defaultValue|defaultView|defer|description|dialogArguments|dialogHeight\\n  |dialogLeft|dialogTop|dialogWidth|dir|directories|disabled|display|docmain|doctype|documentElement|elements|embeds\\n  |enabledPlugin|encoding|enctype|entities|event|expando|external|face|fgColor|filename|firstChild|fontFamily|fontSize\\n  |fontWeight|form|formName|forms|frame|frameBorder|frameElement|frames|hasFocus|hash|headers|height|history|host\\n  |hostname|href|hreflang|hspace|htmlFor|httpEquiv|id|ids|ignoreCase|images|implementation|index|innerHeight|innerWidth\\n  |input|isMap|label|lang|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layer[sXY]|left|leftContext\\n  |lineHeight|link|linkColor|links|listStyleType|localName|location|locationbar|longDesc|lowsrc|lowSrc|marginBottom\\n  |marginHeight|marginLeft|marginRight|marginTop|marginWidth|maxLength|media|menubar|method|mimeType|multiline|multiple\\n  |name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|noHref|noResize|noShade|notationName\\n  |notations|noWrap|object|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|options|oscpu|outerHeight\\n  |outerWidth|ownerDocument|paddingBottom|paddingLeft|paddingRight|paddingTop|page[XY]|page[XY]Offset|parent|parentLayer\\n  |parentNode|parentWindow|pathname|personalbar|pixelDepth|pkcs11|platform|plugins|port|prefix|previous|previousDibling\\n  |product|productSub|profile|profileend|prompt|prompter|protocol|publicId|readOnly|readyState|referrer|rel|responseText\\n  |responseXML|rev|right|rightContext|rowIndex|rows|rowSpan|rules|scheme|scope|screen[XY]|screenLeft|screenTop|scripts\\n  |scrollbars|scrolling|sectionRowIndex|security|securityPolicy|selected|selectedIndex|selection|self|shape|siblingAbove\\n  |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary\\n  |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead\\n  |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile\\n  |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\\\\b(?!\\\\$|\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"support.constant.dom.js\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.dom.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"support.class.node.js\",\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream\\n  |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(process)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?:\\n  (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions)\\n  |\\n  (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime)\\n))?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.variable.object.process.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.process.js\"\n            },\n            \"5\": {\n              \"name\": \"support.function.process.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.object.module.js\"\n            },\n            \"2\": {\n              \"name\": \"support.type.object.module.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"5\": {\n              \"name\": \"support.type.object.module.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"support.variable.object.node.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(global|GLOBAL|root|__dirname|__filename)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s*\\n(?:\\n (on(?:Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\\n   Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\\n   Before(?:cut|deactivate|unload|update|paste|print|editfocus|activate)|\\n   Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\\n   Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\\n   Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\\n   Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\\n   Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\n ) |\\n (shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\\n   scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\\n   sup|sub|substr|substring|splice|split|send|set(?:Milliseconds|Seconds|Minutes|Hours|\\n   Month|Year|FullYear|Date|UTC(?:Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\\n   Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\\n   savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\\n   contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\\n   createEventObject|to(?:GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\\n   test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\\n   untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\\n   print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\\n   fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\\n   forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\\n   abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\\n   releaseCapture|releaseEvents|go|get(?:Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\\n   Time|Date|TimezoneOffset|UTC(?:Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\\n   Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\\n   moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back\\n ) |\\n (acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\\n   appendChild|appendData|before|blur|canPlayType|captureStream|\\n   caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\\n   cloneContents|cloneNode|cloneRange|close|closest|collapse|\\n   compareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\\n   convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\\n   createAttributeNS|createCaption|createCDATASection|createComment|\\n   createContextualFragment|createDocument|createDocumentFragment|\\n   createDocumentType|createElement|createElementNS|createEntityReference|\\n   createEvent|createExpression|createHTMLDocument|createNodeIterator|\\n   createNSResolver|createProcessingInstruction|createRange|createShadowRoot|\\n   createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\\n   deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\\n   deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\\n   enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\\n   exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\\n   getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\\n   getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\\n   getClientRects|getContext|getDestinationInsertionPoints|getElementById|\\n   getElementsByClassName|getElementsByName|getElementsByTagName|\\n   getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\\n   getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\\n   hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\\n   insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\\n   insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\\n   isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\\n   lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\\n   moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\\n   parentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\\n   previousSibling|probablySupportsContext|queryCommandEnabled|\\n   queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\\n   querySelector|querySelectorAll|registerContentHandler|registerElement|\\n   registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\\n   removeAttributeNode|removeAttributeNS|removeChild|removeEventListener|\\n   removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\\n   requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\\n   scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\\n   setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\\n   setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\\n   setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\\n   slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\\n   submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\\n   toDataURL|toggle|toString|values|write|writeln\\n )\\n)(?=\\\\s*\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"support.function.event-handler.js\"\n            },\n            \"4\": {\n              \"name\": \"support.function.js\"\n            },\n            \"5\": {\n              \"name\": \"support.function.dom.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"match\": \"(?x)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.property.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"variable.other.constant.js\",\n          \"match\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\"\n        },\n        {\n          \"name\": \"variable.other.readwrite.js\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"object-identifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.class.js\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))\"\n        },\n        {\n          \"match\": \"(?x)(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.object.property.js\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.object.property.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.constant.object.js\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.js\",\n          \"begin\": \"(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=$|^|[,);\\\\}\\\\]]|//)|(?==[^>])|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.annotation.js\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[,);\\\\}\\\\]]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$))|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.return.type.js\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js\"\n            }\n          },\n          \"end\": \"(?<![:|&])(?=$|^|[{};,]|//)\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.return.type.js\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[{};,]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<=[:|&])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"arrow-return-type\": {\n      \"name\": \"meta.return.type.arrow.js\",\n      \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.annotation.js\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[:])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-parameters\": {\n      \"name\": \"meta.type.parameters.js\",\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.js\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"storage.modifier.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.js\",\n          \"match\": \"\\\\=(?!>)\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-builtin-literals\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#type-tuple\"\n        },\n        {\n          \"include\": \"#type-object\"\n        },\n        {\n          \"include\": \"#type-conditional\"\n        },\n        {\n          \"include\": \"#type-operators\"\n        },\n        {\n          \"include\": \"#type-fn-type-parameters\"\n        },\n        {\n          \"include\": \"#type-paren-or-function-parameters\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"include\": \"#type-name\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"name\": \"support.type.primitive.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|boolean|symbol|any|void|never)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-builtin-literals\": {\n      \"name\": \"support.type.builtin.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-tuple\": {\n      \"name\": \"meta.type.tuple.js\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-object\": {\n      \"name\": \"meta.object.type.js\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#indexer-mapped-type-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.js\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-conditional\": {\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(extends)\\\\s+\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        }\n      }\n    },\n    \"type-paren-or-function-parameters\": {\n      \"name\": \"meta.type.paren.cover.js\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#function-parameters\"\n        }\n      ]\n    },\n    \"type-fn-type-parameters\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.constructor.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\b(?=\\\\s*\\\\<)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.new.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.type.constructor.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\b\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.new.js\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.js\",\n          \"begin\": \"(?x)(\\n  (?=\\n    [(]\\\\s*(\\n      ([)]) |\\n      (\\\\.\\\\.\\\\.) |\\n      ([_$[:alnum:]]+\\\\s*(\\n        ([:,?=])|\\n        ([)]\\\\s*=>)\\n      ))\\n    )\\n  )\\n)\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.function.return.js\",\n          \"begin\": \"(=>)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.arrow.js\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])(?=[,\\\\]\\\\)\\\\{\\\\}=;>]|//|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.return.js\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.js\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])((?=[,\\\\]\\\\)\\\\{\\\\}=;>]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<==>)(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"begin\": \"([&|])(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.js\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[&|]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.js\"\n            }\n          },\n          \"end\": \"(?=\\\\S)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.keyof.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.ternary.js\",\n          \"match\": \"(\\\\?|\\\\:)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.infer.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))infer(?=\\\\s+[_$[:alpha:]])\"\n        }\n      ]\n    },\n    \"type-predicate-operator\": {\n      \"name\": \"keyword.operator.expression.is.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.js\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.js\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.js\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.optional.js\"\n        }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        }\n      ]\n    },\n    \"qstring-double\": {\n      \"name\": \"string.quoted.double.js\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.js\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"qstring-single\": {\n      \"name\": \"string.quoted.single.js\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.js\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.js\",\n      \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n    },\n    \"template\": {\n      \"name\": \"string.template.js\",\n      \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.tagged-template.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.template.begin.js\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.template.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#template-substitution-element\"\n        },\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"template-substitution-element\": {\n      \"name\": \"meta.template.expression.js\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.js\"\n    },\n    \"regex\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.js\",\n          \"begin\": \"(?<=[=(:,\\\\[?+!]|^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*\\\\/)\\\\s*(\\\\/)(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\])+\\\\/(?![\\\\/*])[gimuy]*(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.js\"\n            }\n          },\n          \"end\": \"(/)([gimuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.regexp.js\",\n          \"begin\": \"(?<![_$[:alnum:])])\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\])+\\\\/(?![\\\\/*])[gimuy]*(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.js\"\n            }\n          },\n          \"end\": \"(/)([gimuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.anchor.regexp\",\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\"\n        },\n        {\n          \"name\": \"keyword.other.back-reference.regexp\",\n          \"match\": \"\\\\\\\\[1-9]\\\\d*\"\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.or.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"name\": \"meta.group.assertion.regexp\",\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.assertion.regexp\"\n            },\n            \"3\": {\n              \"name\": \"meta.assertion.look-ahead.regexp\"\n            },\n            \"4\": {\n              \"name\": \"meta.assertion.negative-look-ahead.regexp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\((\\\\?:)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.group.no-capture.regexp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.other.character-class.range.regexp\",\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#regex-character-class\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regex-character-class\"\n        }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.character-class.regexp\",\n          \"match\": \"\\\\\\\\[wWsSdDtrnvf]|\\\\.\"\n        },\n        {\n          \"name\": \"constant.character.numeric.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\"\n        },\n        {\n          \"name\": \"constant.character.control.regexp\",\n          \"match\": \"\\\\\\\\c[A-Z]\"\n        },\n        {\n          \"name\": \"constant.character.escape.backslash.regexp\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.js\",\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docblock\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.js\",\n          \"begin\": \"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.internaldeclaration.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.js\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.js\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.double-slash.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.internaldeclaration.js\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.js\"\n            }\n          },\n          \"end\": \"(?=^)\",\n          \"contentName\": \"comment.line.double-slash.js\"\n        }\n      ]\n    },\n    \"directives\": {\n      \"name\": \"comment.line.triple-slash.directive.js\",\n      \"begin\": \"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|name)\\\\s*=\\\\s*((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")))+\\\\s*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.js\"\n        }\n      },\n      \"end\": \"(?=^)\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.js\",\n          \"begin\": \"(<)(reference|amd-dependency|amd-module)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.directive.js\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.directive.js\"\n            }\n          },\n          \"end\": \"/>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.directive.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.other.attribute-name.directive.js\",\n              \"match\": \"path|types|no-default-lib|name\"\n            },\n            {\n              \"name\": \"keyword.operator.assignment.js\",\n              \"match\": \"=\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docblock\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n((@)(?:access|api))\\n\\\\s+\\n(private|protected|public)\\n\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.access-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)author)\\n\\\\s+\\n(\\n  [^@\\\\s<>*/]\\n  (?:[^@<>*/]|\\\\*[^/])*\\n)\\n(?:\\n  \\\\s*\\n  (<)\\n  ([^>\\\\s]+)\\n  (>)\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.email.link.underline.jsdoc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)borrows) \\\\s+\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <that namepath>\\n\\\\s+ (as) \\\\s+              # as\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <this namepath>\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.control.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.example.jsdoc\",\n          \"begin\": \"((@)example)\\\\s+\",\n          \"end\": \"(?=@|\\\\*/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"^\\\\s\\\\*\\\\s+\"\n            },\n            {\n              \"contentName\": \"constant.other.description.jsdoc\",\n              \"begin\": \"\\\\G(<)caption(>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              },\n              \"end\": \"(</)caption(>)|(?=\\\\*/)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"source.embedded.js\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x) ((@)kind) \\\\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.symbol-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)see)\\n\\\\s+\\n(?:\\n  # URL\\n  (\\n    (?=https?://)\\n    (?:[^\\\\s*]|\\\\*[^/])+\\n  )\\n  |\\n  # JSDoc namepath\\n  (\\n    (?!\\n      # Avoid matching bare URIs (also acceptable as links)\\n      https?://\\n      |\\n      # Avoid matching {@inline tags}; we match those below\\n      (?:\\\\[[^\\\\[\\\\]]*\\\\])? # Possible description [preceding]{@tag}\\n      {@(?:link|linkcode|linkplain|tutorial)\\\\b\\n    )\\n    # Matched namepath\\n    (?:[^@\\\\s*/]|\\\\*[^/])+\\n  )\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.link.underline.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)template)\\n\\\\s+\\n# One or more valid identifiers\\n(\\n  [A-Za-z_$]         # First character: non-numeric word character\\n  [\\\\w$.\\\\[\\\\]]*        # Rest of identifier\\n  (?:                # Possible list of additional identifiers\\n    \\\\s* , \\\\s*\\n    [A-Za-z_$]\\n    [\\\\w$.\\\\[\\\\]]*\\n  )*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:arg|argument|const|constant|member|namespace|param|var)\\n)\\n\\\\s+\\n(\\n  [A-Za-z_$]\\n  [\\\\w$.\\\\[\\\\]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((@)typedef)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"entity.name.type.instance.jsdoc\",\n              \"match\": \"(?:[^@\\\\s*/]|\\\\*[^/])+\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"(?x)\\n(\\\\[)\\\\s*\\n[\\\\w$]+\\n(?:\\n  (?:\\\\[\\\\])?                                        # Foo[ ].bar properties within an array\\n  \\\\.                                                # Foo.Bar namespaced parameter\\n  [\\\\w$]+\\n)*\\n(?:\\n  \\\\s*\\n  (=)                                                # [foo=bar] Default parameter value\\n  \\\\s*\\n  (\\n    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\\n    (?>\\n      \\\"(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!\\\"))|[^*\\\\\\\\])*?\\\" |                      # [foo=\\\"bar\\\"] Double-quoted\\n      '(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!'))|[^*\\\\\\\\])*?' |                      # [foo='bar'] Single-quoted\\n      \\\\[ (?:(?:\\\\*(?!/))|[^*])*? \\\\] |                                # [foo=[1,2]] Array literal\\n      (?:(?:\\\\*(?!/))|\\\\s(?!\\\\s*\\\\])|\\\\[.*?(?:\\\\]|(?=\\\\*/))|[^*\\\\s\\\\[\\\\]])*   # Everything else\\n    )*\\n  )\\n)?\\n\\\\s*(?:(\\\\])((?:[^*\\\\s]|\\\\*[^\\\\s/])+)?|(?=\\\\*/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.optional-value.begin.bracket.square.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.jsdoc\"\n                },\n                \"3\": {\n                  \"name\": \"source.embedded.js\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.optional-value.end.bracket.square.jsdoc\"\n                },\n                \"5\": {\n                  \"name\": \"invalid.illegal.syntax.jsdoc\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(\\n  (@)\\n  (?:define|enum|exception|export|extends|lends|implements|modifies\\n  |namespace|private|protected|returns?|suppress|this|throws|type\\n  |yields?)\\n)\\n\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [^{}@\\\\s*] | \\\\*[^/]\\n  )+\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"contentName\": \"variable.other.jsdoc\",\n          \"begin\": \"((@)(?:default(?:value)?|license|version))\\\\s+(([''\\\"]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.string.begin.jsdoc\"\n            }\n          },\n          \"end\": \"(\\\\3)|(?=$|\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^\\\\s*]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"storage.type.class.jsdoc\",\n          \"match\": \"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        },\n        {\n          \"include\": \"#inline-tags\"\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"inline-tags\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.description.jsdoc\",\n          \"match\": \"(\\\\[)[^\\\\]]+(\\\\])(?={@(?:link|linkcode|linkplain|tutorial))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.square.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.square.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"({)((@)(?:link(?:code|plain)?|tutorial))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.inline.tag.jsdoc\"\n            }\n          },\n          \"end\": \"}|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G((?=https?://)(?:[^|}\\\\s*]|\\\\*[/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.link.underline.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\G((?:[^{}@\\\\s|*]|\\\\*[^/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.description.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"jsdoctype\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.illegal.type.jsdoc\",\n          \"match\": \"\\\\G{(?:[^}*]|\\\\*[^/}])+$\"\n        },\n        {\n          \"contentName\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"\\\\G({)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            }\n          },\n          \"end\": \"((}))\\\\s*|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes-in-expression\"\n        },\n        {\n          \"include\": \"#jsx-tag-in-expression\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes-in-expression\": {\n      \"begin\": \"(?x)\\n  (?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^)\\\\s*\\n  (?=(<)\\\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\\\w.]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"end\": \"(?!\\\\s*(<)\\\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\\\w.]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes\": {\n      \"name\": \"meta.tag.without-attributes.js\",\n      \"begin\": \"(<)\\\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\\\w.]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"end\": \"(</)\\\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\\\w.]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.js\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.js\"\n        },\n        \"3\": {\n          \"name\": \"support.class.component.js\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.js\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.js\"\n        },\n        \"3\": {\n          \"name\": \"support.class.component.js\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        }\n      },\n      \"contentName\": \"meta.jsx.children.js\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-children\"\n        }\n      ]\n    },\n    \"jsx-tag-in-expression\": {\n      \"begin\": \"(?x)\\n  (?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^)\\\\s*\\n  (?!<\\\\s*[_$[:alpha:]][_$[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,)) # look ahead is not type parameter of arrow\\n  (?=(<)\\\\s*\\n  ([_$a-zA-Z][-$\\\\w.]*(?<!\\\\.|-))\\n  (?=\\\\s+(?!\\\\?)|/?>))\",\n      \"end\": \"(/>)|(?:(</)\\\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\\\w.]*))(?<!\\\\.|-))\\\\s*(>))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.tag.js\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.js\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.js\"\n        },\n        \"4\": {\n          \"name\": \"support.class.component.js\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag\"\n        }\n      ]\n    },\n    \"jsx-child-tag\": {\n      \"begin\": \"(?x)\\n  (?=(<)\\\\s*\\n  ([_$a-zA-Z][-$\\\\w.]*(?<!\\\\.|-))\\n  (?=\\\\s+(?!\\\\?)|/?>))\",\n      \"end\": \"(/>)|(?:(</)\\\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\\\w.]*))(?<!\\\\.|-))\\\\s*(>))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.tag.js\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.js\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.js\"\n        },\n        \"4\": {\n          \"name\": \"support.class.component.js\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag\"\n        }\n      ]\n    },\n    \"jsx-tag\": {\n      \"name\": \"meta.tag.js\",\n      \"begin\": \"(?x)\\n  (?=(<)\\\\s*\\n  ([_$a-zA-Z][-$\\\\w.]*(?<!\\\\.|-))\\n  (?=\\\\s+(?!\\\\?)|/?>))\",\n      \"end\": \"(?=(/>)|(?:(</)\\\\s*([_$a-zA-Z][-$\\\\w.]*(?<!\\\\.|-))\\\\s*(>)))\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n  (<)\\\\s*\\n  ((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\\\w.]*))(?<!\\\\.|-))\\n  (?=\\\\s+(?!\\\\?)|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.js\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.js\"\n            },\n            \"3\": {\n              \"name\": \"support.class.component.js\"\n            }\n          },\n          \"end\": \"(?=[/]?>)\",\n          \"contentName\": \"meta.tag.attributes.js\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#jsx-tag-attributes\"\n            },\n            {\n              \"include\": \"#jsx-tag-attributes-illegal\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.js\"\n            }\n          },\n          \"end\": \"(?=</)\",\n          \"contentName\": \"meta.jsx.children.js\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsx-children\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx-children\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        },\n        {\n          \"include\": \"#jsx-child-tag\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        },\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-evaluated-code\": {\n      \"name\": \"meta.embedded.expression.js\",\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.js\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"jsx-entities\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.js\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.js\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-attribute-name\"\n        },\n        {\n          \"include\": \"#jsx-tag-attribute-assignment\"\n        },\n        {\n          \"include\": \"#jsx-string-double-quoted\"\n        },\n        {\n          \"include\": \"#jsx-string-single-quoted\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        }\n      ]\n    },\n    \"jsx-tag-attribute-name\": {\n      \"match\": \"(?x)\\n  \\\\s*\\n  ([_$a-zA-Z][-$\\\\w]*)\\n  (?=\\\\s|=|/?>|/\\\\*|//)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.js\"\n        }\n      }\n    },\n    \"jsx-tag-attribute-assignment\": {\n      \"name\": \"keyword.operator.assignment.js\",\n      \"match\": \"=(?=\\\\s*(?:'|\\\"|{|/\\\\*|//|\\\\n))\"\n    },\n    \"jsx-string-double-quoted\": {\n      \"name\": \"string.quoted.double.js\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-string-single-quoted\": {\n      \"name\": \"string.quoted.single.js\",\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes-illegal\": {\n      \"name\": \"invalid.illegal.attribute.js\",\n      \"match\": \"\\\\S+\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/jquery.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"(^.*\\\\{[^}]*$|^.*\\\\([^\\\\)]*$|^.*/\\\\*(?!.*\\\\*/).*$)\",\n  \"foldingStopMarker\": \"(^\\\\s*\\\\}|^\\\\s*\\\\)|^(?!.*/\\\\*).*\\\\*/)\",\n  \"keyEquivalent\": \"^~J\",\n  \"fileTypes\": [\"js\"],\n  \"repository\": {\n    \"html-markup-single\": {\n      \"name\": \"meta.markup.html\",\n      \"patterns\": [\n        { \"include\": \"text.html.basic\" },\n        { \"match\": \"\\\\\\\\(')\", \"name\": \"constant.character.escape.js\" }\n      ]\n    },\n    \"css-selector\": {\n      \"begin\": \"(?=\\\\s*[.*#a-zA-Z])\",\n      \"end\": \"(?=[\\\"'])\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|command|code|col|colgroup|datalist|dd|del|details|device|dfn|div|dl|dt|em|embed|fieldset|fig(ure|caption)|footer|form|frame|frameset|(h[1-6])|head(er)?|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|menu|meta|meter|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|summary|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b\",\n          \"name\": \"entity.name.tag.css\"\n        },\n        {\n          \"match\": \"(\\\\.)[a-zA-Z0-9_-]+\",\n          \"name\": \"entity.other.attribute-name.class.css\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.attribute-name.css\" }\n          }\n        },\n        {\n          \"match\": \"(#)[a-zA-Z0-9_-]+\",\n          \"name\": \"entity.other.attribute-name.id.css\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.attribute-name.css\" }\n          }\n        },\n        { \"match\": \"\\\\*\", \"name\": \"entity.name.tag.wildcard.css\" },\n        {\n          \"match\": \"(:)\\\\b(active|after|before|first-letter|first-line|hover|link|target|visited)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-class.css\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.attribute-name.css\" }\n          }\n        }\n      ],\n      \"name\": \"meta.selector.css\"\n    },\n    \"html-markup-double\": {\n      \"name\": \"meta.markup.html\",\n      \"patterns\": [\n        { \"include\": \"text.html.basic\" },\n        { \"match\": \"\\\\\\\\(\\\")\", \"name\": \"constant.character.escape.js\" }\n      ]\n    },\n    \"nested-parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#nested-parens\" }, { \"include\": \"source.js\" }],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.js\" } }\n    }\n  },\n  \"uuid\": \"1AD8EB10-62BE-417C-BC4B-29B5C6F0B36A\",\n  \"patterns\": [\n    { \"include\": \"source\" },\n    {\n      \"begin\": \"(\\\\$|jQuery)(\\\\((?!('|\\\")<))\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.section.class.js\" } },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [\n        { \"include\": \"#nested-parens\" },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.selector.end.js\" }\n          },\n          \"end\": \"'\",\n          \"patterns\": [{ \"include\": \"#css-selector\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.selector.begin.js\" }\n          }\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.selector.end.js\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [{ \"include\": \"#css-selector\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.selector.begin.js\" }\n          }\n        },\n        { \"include\": \"source.js\" }\n      ],\n      \"contentName\": \"meta.selector.jquery\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.class.js.jquery\" },\n        \"2\": { \"name\": \"punctuation.section.class.js\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\b(add|appendTo|children|closest|detach|filter|find|has|index|insertAfter|insertBefore|is|next|nextAll|nextUntil|not|parent|parents|parentsUntil|prependTo|prev|prevAll|prevUntil|remove|replaceAll|siblings)\\\\s*(\\\\((?!('|\\\")<))\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.section.function.js\" } },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [\n        { \"include\": \"#nested-parens\" },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.selector.end.js\" }\n          },\n          \"end\": \"'\",\n          \"patterns\": [{ \"include\": \"#css-selector\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.selector.begin.js\" }\n          }\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.selector.end.js\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [{ \"include\": \"#css-selector\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.selector.begin.js\" }\n          }\n        },\n        { \"include\": \"source.js\" }\n      ],\n      \"contentName\": \"meta.selector.jquery\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.function.js.jquery\" },\n        \"2\": { \"name\": \"punctuation.section.function.js\" }\n      }\n    },\n    {\n      \"begin\": \"(\\\\$|jQuery)(\\\\((?=('|\\\")<))\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.section.class.js\" } },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.markup.end.js\" }\n          },\n          \"end\": \"'\",\n          \"patterns\": [{ \"include\": \"#html-markup-single\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.markup.begin.js\" }\n          }\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.markup.end.js\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [{ \"include\": \"#html-markup-double\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.markup.begin.js\" }\n          }\n        },\n        { \"include\": \"source.js\" }\n      ],\n      \"contentName\": \"meta.markup.jquery\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.class.js.jquery\" },\n        \"2\": { \"name\": \"punctuation.section.class.js\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\b(add|after|append|before|html|prepend|replaceWith|wrap|wrapAll|wrapInner)\\\\s*(\\\\((?=('|\\\")<))\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.section.class.js\" } },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.markup.end.js\" }\n          },\n          \"end\": \"'\",\n          \"patterns\": [{ \"include\": \"#html-markup-single\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.markup.begin.js\" }\n          }\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.markup.end.js\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [{ \"include\": \"#html-markup-double\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.markup.begin.js\" }\n          }\n        },\n        { \"include\": \"source.js\" }\n      ],\n      \"contentName\": \"meta.markup.jquery\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.function.js.jquery\" },\n        \"2\": { \"name\": \"punctuation.section.class.js\" }\n      }\n    },\n    {\n      \"match\": \"(\\\\$|jQuery)\\\\.(ajaxSettings|boxModel|browser|fx|isReady|support|fn)\",\n      \"name\": \"meta.property.jquery\",\n      \"captures\": {\n        \"1\": { \"name\": \"support.class.js\" },\n        \"2\": { \"name\": \"support.constant.js\" }\n      }\n    },\n    {\n      \"match\": \"(?<=\\\\.)(length|selector|context)\\\\b\",\n      \"name\": \"support.constant.js.jquery\"\n    },\n    {\n      \"match\": \"(?<=\\\\.)(add|addClass|after|ajaxComplete|ajaxError|ajaxSend|ajaxStart|ajaxStop|ajaxSuccess|always|andSelf|animate|append|appendTo|attr|before|bind|blur|change|children|clearQueue|click|clone|closest|contents|css|data|dblclick|delay|delegate|dequeue|detach|disable|disabled|die|domManip|done|each|empty|end|eq|error|fadeIn|fadeOut|fadeTo|fadeToggle|fail|filter|find|first|fire|fired|fireWith|focus|focusin|focusout|get|has|hasClass|height|hide|hover|html|index|innerHeight|innerWidth|insertAfter|insertBefore|is|isRejected|isResolved|keydown|keypress|keyup|last|live|load|lock|locked|map|mousedown|mouseenter|mouseleave|mousemove|mouseout|mouseover|mouseup|next|nextAll|nextUntil|not|notify|notifyWith|off|offset|offsetParent|on|one|outerHeight|outerWidth|parent|parents|parentsUntil|pipe|position|prepend|prependTo|prev|prevAll|prevUntil|progress|promise|prop|pushStack|queue|ready|reject|rejectWith|remove|removeAttr|removeClass|removeData|replaceAll|replaceWith|resize|resolve|resolveWith|scroll|scrollLeft|scrollTop|select|serialize|serializeArray|show|siblings|size|slice|slideDown|slideToggle|slideUp|state|stop|submit|text|then|toArray|toggle|toggleClass|trigger|triggerHandler|unbind|undelegate|unload|unwrap|val|width|wrap|wrapAll|wrapInner)\\\\b\",\n      \"name\": \"support.function.js.jquery\"\n    },\n    {\n      \"match\": \"(\\\\$|jQuery)(\\\\.)(Callbacks|Deferred|Event|ajax|ajaxPrefilter|ajaxSetup|ajaxTransport|bindReady|clean|cleanData|contains|css|data|dequeue|each|error|extend|Event|get|getJSON|getScript|globalEval|grep|inArray|isArray|isEmptyObject|isFunction|isNumeric|isPlainObject|isWindow|isXMLDoc|makeArray|map|merge|noConflict|noop|param|parseJSON|parseXML|post|proxy|queue|ready|removeData|sibling|sub|text|triggerGlobal|trim|type|unique|when)\\\\b\",\n      \"name\": \"support.function.js.jquery\",\n      \"captures\": {\n        \"1\": { \"name\": \"support.class.js\" },\n        \"3\": { \"name\": \"support.function.js\" }\n      }\n    },\n    { \"include\": \"source.js\" }\n  ],\n  \"comment\": \"jQuery Javascript Library. Sublime Text 2 package forked by Zander Martineau from original Textmate bundle by Jonathan Chaffer & Karl Swedberg. Dual licensed under MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.gnu.org/licenses/gpl.html) licenses.\",\n  \"name\": \"jQuery (JavaScript)\",\n  \"scopeName\": \"source.js.jquery\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/json.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70\",\n  \"name\": \"JSON (Javascript Next)\",\n  \"scopeName\": \"source.json\",\n  \"patterns\": [\n    {\n      \"include\": \"#value\"\n    }\n  ],\n  \"repository\": {\n    \"array\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.json\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.json\"\n        }\n      },\n      \"name\": \"meta.structure.array.json\",\n      \"patterns\": [\n        {\n          \"include\": \"#value\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.json\"\n        },\n        {\n          \"match\": \"[^\\\\s\\\\]]\",\n          \"name\": \"invalid.illegal.expected-array-separator.json\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.json\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation.json\"\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.json\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.json\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.json\"\n            }\n          },\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.js\"\n        }\n      ]\n    },\n    \"constant\": {\n      \"match\": \"\\\\b(?:true|false|null)\\\\b\",\n      \"name\": \"constant.language.json\"\n    },\n    \"number\": {\n      \"match\": \"(?x)        # turn on extended mode\\n  -?        # an optional minus\\n  (?:\\n    0       # a zero\\n    |       # ...or...\\n    [1-9]   # a 1-9 character\\n    \\\\d*     # followed by zero or more digits\\n  )\\n  (?:\\n    (?:\\n      \\\\.    # a period\\n      \\\\d+   # followed by one or more digits\\n    )?\\n    (?:\\n      [eE]  # an e character\\n      [+-]? # followed by an option +/-\\n      \\\\d+   # followed by one or more digits\\n    )?      # make exponent optional\\n  )?        # make decimal portion optional\",\n      \"name\": \"constant.numeric.json\"\n    },\n    \"object\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.begin.json\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.end.json\"\n        }\n      },\n      \"name\": \"meta.structure.dictionary.json\",\n      \"patterns\": [\n        {\n          \"comment\": \"the JSON object key\",\n          \"include\": \"#objectkey\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.dictionary.key-value.json\"\n            }\n          },\n          \"end\": \"(,)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.dictionary.pair.json\"\n            }\n          },\n          \"name\": \"meta.structure.dictionary.value.json\",\n          \"patterns\": [\n            {\n              \"comment\": \"the JSON object value\",\n              \"include\": \"#value\"\n            },\n            {\n              \"match\": \"[^\\\\s,]\",\n              \"name\": \"invalid.illegal.expected-dictionary-separator.json\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^\\\\s\\\\}]\",\n          \"name\": \"invalid.illegal.expected-dictionary-separator.json\"\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.json\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.json\"\n        }\n      },\n      \"name\": \"string.quoted.double.json\",\n      \"patterns\": [\n        {\n          \"include\": \"#stringcontent\"\n        }\n      ]\n    },\n    \"objectkey\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.support.type.property-name.begin.json\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.support.type.property-name.end.json\"\n        }\n      },\n      \"name\": \"string.json support.type.property-name.json\",\n      \"patterns\": [\n        {\n          \"include\": \"#stringcontent\"\n        }\n      ]\n    },\n    \"stringcontent\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)                # turn on extended mode\\n  \\\\\\\\                # a literal backslash\\n  (?:               # ...followed by...\\n    [\\\"\\\\\\\\/bfnrt]     # one of these characters\\n    |               # ...or...\\n    u               # a u\\n    [0-9a-fA-F]{4}) # and four hex digits\",\n          \"name\": \"constant.character.escape.json\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-string-escape.json\"\n        }\n      ]\n    },\n    \"value\": {\n      \"patterns\": [\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array\"\n        },\n        {\n          \"include\": \"#object\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/json5.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.json5\",\n  \"fileTypes\": [\"json5\"],\n  \"name\": \"JSON5\",\n  \"patterns\": [{ \"include\": \"#comments\" }, { \"include\": \"#value\" }],\n  \"repository\": {\n    \"array\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.array.begin.json5\" }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.array.end.json5\" }\n      },\n      \"name\": \"meta.structure.array.json5\",\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#value\" },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.json5\"\n        },\n        {\n          \"match\": \"[^\\\\s\\\\]]\",\n          \"name\": \"invalid.illegal.expected-array-separator.json5\"\n        }\n      ]\n    },\n    \"constant\": {\n      \"match\": \"\\\\b(?:true|false|null|Infinity|NaN)\\\\b\",\n      \"name\": \"constant.language.json5\"\n    },\n    \"infinity\": {\n      \"match\": \"(-)*\\\\b(?:Infinity|NaN)\\\\b\",\n      \"name\": \"constant.language.json5\"\n    },\n    \"number\": {\n      \"patterns\": [\n        {\n          \"comment\": \"handles hexadecimal numbers\",\n          \"match\": \"(0x)[0-9a-fA-f]*\",\n          \"name\": \"constant.hex.numeric.json5\"\n        },\n        {\n          \"comment\": \"handles integer and decimal numbers\",\n          \"match\": \"[+-.]?(?=[1-9]|0(?!\\\\d))\\\\d+(\\\\.\\\\d+)?([eE][+-]?\\\\d+)?\",\n          \"name\": \"constant.dec.numeric.json5\"\n        }\n      ]\n    },\n    \"object\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.dictionary.begin.json5\" }\n      },\n      \"comment\": \"a json5 object\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.dictionary.end.json5\" }\n      },\n      \"name\": \"meta.structure.dictionary.json5\",\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        {\n          \"comment\": \"the json5 object key\",\n          \"include\": \"#key\"\n        },\n        {\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.separator.dictionary.key-value.json5\" }\n          },\n          \"end\": \"(,)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.separator.dictionary.pair.json5\" }\n          },\n          \"name\": \"meta.structure.dictionary.value.json5\",\n          \"patterns\": [\n            {\n              \"comment\": \"the json5 object value\",\n              \"include\": \"#value\"\n            },\n            {\n              \"match\": \"[^\\\\s,]\",\n              \"name\": \"invalid.illegal.expected-dictionary-separator.json5\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^\\\\s\\\\}]\",\n          \"name\": \"invalid.illegal.expected-dictionary-separator.json5\"\n        }\n      ]\n    },\n    \"stringSingle\": {\n      \"begin\": \"[']\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.json5\" }\n      },\n      \"end\": \"[']\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.json5\" }\n      },\n      \"name\": \"string.quoted.json5\",\n      \"patterns\": [\n        {\n          \"match\": \"(?x:                # turn on extended mode\\n                     \\\\\\\\                # a literal backslash\\n                     (?:               # ...followed by...\\n                       [\\\"\\\\\\\\/bfnrt]     # one of these characters\\n                       |               # ...or...\\n                       u               # a u\\n                       [0-9a-fA-F]{4}  # and four hex digits\\n                     )\\n                   )\",\n          \"name\": \"constant.character.escape.json5\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-string-escape.json5\"\n        }\n      ]\n    },\n    \"stringDouble\": {\n      \"begin\": \"[\\\"]\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.json5\" }\n      },\n      \"end\": \"[\\\"]\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.json5\" }\n      },\n      \"name\": \"string.quoted.json5\",\n      \"patterns\": [\n        {\n          \"match\": \"(?x:                # turn on extended mode\\n                     \\\\\\\\                # a literal backslash\\n                     (?:               # ...followed by...\\n                       [\\\"\\\\\\\\/bfnrt]     # one of these characters\\n                       |               # ...or...\\n                       u               # a u\\n                       [0-9a-fA-F]{4}  # and four hex digits\\n                     )\\n                   )\",\n          \"name\": \"constant.character.escape.json5\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-string-escape.json5\"\n        }\n      ]\n    },\n    \"key\": {\n      \"name\": \"string.key.json5\",\n      \"patterns\": [\n        { \"include\": \"#stringSingle\" },\n        { \"include\": \"#stringDouble\" },\n        {\n          \"match\": \"[a-zA-Z0-9_-]\",\n          \"name\": \"string.key.json5\"\n        }\n      ]\n    },\n    \"value\": {\n      \"comment\": \"the 'value' diagram at http://json.org\",\n      \"patterns\": [\n        { \"include\": \"#constant\" },\n        { \"include\": \"#infinity\" },\n        { \"include\": \"#number\" },\n        { \"include\": \"#stringSingle\" },\n        { \"include\": \"#stringDouble\" },\n        { \"include\": \"#array\" },\n        { \"include\": \"#object\" }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"/{2}.*\",\n          \"name\": \"comment.single.json5\"\n        },\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.json5\" }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation.json5\"\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.json5\" }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.json5\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/jsonc.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70\",\n  \"name\": \"jsonc\",\n  \"scopeName\": \"source.json.comments\",\n  \"patterns\": [\n    {\n      \"include\": \"#value\"\n    }\n  ],\n  \"repository\": {\n    \"array\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.json.comments\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.json.comments\"\n        }\n      },\n      \"name\": \"meta.structure.array.json.comments\",\n      \"patterns\": [\n        {\n          \"include\": \"#value\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.json.comments\"\n        },\n        {\n          \"match\": \"[^\\\\s\\\\]]\",\n          \"name\": \"invalid.illegal.expected-array-separator.json.comments\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.json.comments\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation.json.comments\"\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.json.comments\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.json.comments\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.json.comments\"\n            }\n          },\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.js\"\n        }\n      ]\n    },\n    \"constant\": {\n      \"match\": \"\\\\b(?:true|false|null)\\\\b\",\n      \"name\": \"constant.language.json.comments\"\n    },\n    \"number\": {\n      \"match\": \"(?x)        # turn on extended mode\\n  -?        # an optional minus\\n  (?:\\n    0       # a zero\\n    |       # ...or...\\n    [1-9]   # a 1-9 character\\n    \\\\d*     # followed by zero or more digits\\n  )\\n  (?:\\n    (?:\\n      \\\\.    # a period\\n      \\\\d+   # followed by one or more digits\\n    )?\\n    (?:\\n      [eE]  # an e character\\n      [+-]? # followed by an option +/-\\n      \\\\d+   # followed by one or more digits\\n    )?      # make exponent optional\\n  )?        # make decimal portion optional\",\n      \"name\": \"constant.numeric.json.comments\"\n    },\n    \"object\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.begin.json.comments\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.end.json.comments\"\n        }\n      },\n      \"name\": \"meta.structure.dictionary.json.comments\",\n      \"patterns\": [\n        {\n          \"comment\": \"the JSON object key\",\n          \"include\": \"#objectkey\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.dictionary.key-value.json.comments\"\n            }\n          },\n          \"end\": \"(,)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.dictionary.pair.json.comments\"\n            }\n          },\n          \"name\": \"meta.structure.dictionary.value.json.comments\",\n          \"patterns\": [\n            {\n              \"comment\": \"the JSON object value\",\n              \"include\": \"#value\"\n            },\n            {\n              \"match\": \"[^\\\\s,]\",\n              \"name\": \"invalid.illegal.expected-dictionary-separator.json.comments\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^\\\\s\\\\}]\",\n          \"name\": \"invalid.illegal.expected-dictionary-separator.json.comments\"\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.json.comments\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.json.comments\"\n        }\n      },\n      \"name\": \"string.quoted.double.json.comments\",\n      \"patterns\": [\n        {\n          \"include\": \"#stringcontent\"\n        }\n      ]\n    },\n    \"objectkey\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.support.type.property-name.begin.json.comments\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.support.type.property-name.end.json.comments\"\n        }\n      },\n      \"name\": \"string.json.comments support.type.property-name.json.comments\",\n      \"patterns\": [\n        {\n          \"include\": \"#stringcontent\"\n        }\n      ]\n    },\n    \"stringcontent\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)                # turn on extended mode\\n  \\\\\\\\                # a literal backslash\\n  (?:               # ...followed by...\\n    [\\\"\\\\\\\\/bfnrt]     # one of these characters\\n    |               # ...or...\\n    u               # a u\\n    [0-9a-fA-F]{4}) # and four hex digits\",\n          \"name\": \"constant.character.escape.json.comments\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-string-escape.json.comments\"\n        }\n      ]\n    },\n    \"value\": {\n      \"patterns\": [\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array\"\n        },\n        {\n          \"include\": \"#object\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/jsoniq.tmLanguage.json",
    "content": "{\n  \"name\": \"JSONiq\",\n  \"scopeName\": \"source.jsoniq\",\n  \"fileTypes\": [\"jq\"],\n  \"firstLineMatch\": \"^\\\\bjsoniq\\\\s+version\\\\b.*\",\n  \"foldingStartMarker\": \"^\\\\s*(<[^!?%/](?!.+?(/>|</.+?>))|<[!%]--(?!.+?--%?>)|<%[!]?(?!.+?%>))|(declare|.*\\\\{\\\\s*(//.*)?$)\",\n  \"foldingStopMarker\": \"^\\\\s*(</[^>]+>|[/%]>|-->)\\\\s*$|(.*\\\\}\\\\s*;?\\\\s*|.*;)\",\n  \"patterns\": [\n    {\n      \"include\": \"#main\"\n    }\n  ],\n  \"repository\": {\n    \"main\": {\n      \"patterns\": [\n        {\n          \"include\": \"#EmbeddedXQuery\"\n        },\n        {\n          \"include\": \"#Pragma\"\n        },\n        {\n          \"include\": \"#XMLComment\"\n        },\n        {\n          \"include\": \"#CDATA\"\n        },\n        {\n          \"include\": \"#PredefinedEntityRef\"\n        },\n        {\n          \"include\": \"#CharRef\"\n        },\n        {\n          \"include\": \"#Comments\"\n        },\n        {\n          \"include\": \"#String\"\n        },\n        {\n          \"include\": \"#Annotation\"\n        },\n        {\n          \"include\": \"#AbbrevForwardStep\"\n        },\n        {\n          \"include\": \"#Variable\"\n        },\n        {\n          \"include\": \"#Numbers\"\n        },\n        {\n          \"include\": \"#Keywords\"\n        },\n        {\n          \"include\": \"#EQName\"\n        },\n        {\n          \"include\": \"#Symbols\"\n        },\n        {\n          \"include\": \"#OpenTag\"\n        },\n        {\n          \"include\": \"#CloseTag\"\n        }\n      ]\n    },\n    \"AbbrevForwardStep\": {\n      \"name\": \"support.type.jsoniq\",\n      \"match\": \"(@)(?:\\\\*\\\\s|(?:[-_a-zA-Z0-9][-._a-zA-Z0-9]*:)?[-_a-zA-Z0-9][-._a-zA-Z0-9]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.type.jsoniq\"\n        }\n      }\n    },\n    \"Annotation\": {\n      \"name\": \"meta.declaration.annotation.jsoniq\",\n      \"match\": \"(%+)((?:[-_a-zA-Z0-9][-._a-zA-Z0-9]*:)?[-_a-zA-Z0-9][-._a-zA-Z0-9]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.annotation.jsoniq\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.annotation.jsoniq\"\n        }\n      }\n    },\n    \"CDATA\": {\n      \"name\": \"string.unquoted.cdata.jsoniq\",\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"end\": \"\\\\]\\\\]>\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.jsoniq\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.jsoniq\"\n        }\n      }\n    },\n    \"CharRef\": {\n      \"name\": \"constant.character.entity.jsoniq\",\n      \"match\": \"(&#)([0-9]+|x[0-9A-Fa-f]+)(;)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.begin.jsoniq\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.entity.other.jsoniq\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.entity.end.jsoniq\"\n        }\n      }\n    },\n    \"CloseTag\": {\n      \"name\": \"meta.tag.closetag.jsoniq\",\n      \"match\": \"(<\\\\/)((?:[-_a-zA-Z0-9][-._a-zA-Z0-9]*:)?[-_a-zA-Z0-9][-_a-zA-Z0-9]*)\\\\s*(>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.jsoniq\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.localname.jsoniq\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.jsoniq\"\n        }\n      }\n    },\n    \"Comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.doc.jsoniq\",\n          \"begin\": \"\\\\(:~\",\n          \"end\": \":\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.jsoniq\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.jsoniq\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.language.jsoniq\",\n              \"match\": \"(@)[a-zA-Z0-9_\\\\.\\\\-]+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.jsoniq\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.jsoniq\",\n          \"begin\": \"<\\\\?\",\n          \"end\": \"\\\\?>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.jsoniq\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.jsoniq\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.block.jsoniq\",\n          \"begin\": \"\\\\(:\",\n          \"end\": \":\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.jsoniq\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.jsoniq\"\n            }\n          }\n        }\n      ]\n    },\n    \"EmbeddedXQuery\": {\n      \"begin\": \"^(?=xquery\\\\s+version\\\\s+)\",\n      \"end\": \"\\\\z\",\n      \"contentName\": \"source.embedded.xq\",\n      \"patterns\": [\n        {\n          \"include\": \"source.xq\"\n        }\n      ]\n    },\n    \"EQName\": {\n      \"name\": \"support.function.eqname.jsoniq\",\n      \"match\": \"(?:[-_a-zA-Z0-9][-._a-zA-Z0-9]*:)?[-_a-zA-Z0-9][-_a-zA-Z0-9]*(?=\\\\s*\\\\()\"\n    },\n    \"Keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.${1:/downcase}.jsoniq\",\n          \"match\": \"\\\\b(NaN|null)\\\\b\"\n        },\n        {\n          \"name\": \"constant.language.boolean.logical.$1.jsoniq\",\n          \"match\": \"\\\\b(true|false)\\\\b\"\n        },\n        {\n          \"name\": \"storage.type.$1.jsoniq\",\n          \"match\": \"\\\\b(function|let)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control.flow.$1.jsoniq\",\n          \"match\": \"(?x) \\\\b\\n( break\\n| case\\n| catch\\n| continue\\n| end\\n| exit\\n| for\\n| from\\n| if\\n| import\\n| in\\n| loop\\n| return\\n| switch\\n| then\\n| try\\n| when\\n| where\\n| while\\n| with\\n) \\\\b\"\n        },\n        {\n          \"name\": \"keyword.operator.$1.jsoniq\",\n          \"match\": \"(?x) \\\\b\\n( after\\n| allowing\\n| ancestor-or-self\\n| ancestor\\n| and\\n| append\\n| array\\n| ascending\\n| as\\n| attribute\\n| at\\n| base-uri\\n| before\\n| boundary-space\\n| by\\n| castable\\n| cast\\n| child\\n| collation\\n| comment\\n| constraint\\n| construction\\n| contains\\n| context\\n| copy-namespaces\\n| copy\\n| count\\n| decimal-format\\n| decimal-separator\\n| declare\\n| default\\n| delete\\n| descendant-or-self\\n| descendant\\n| descending\\n| digit\\n| div\\n| document-node\\n| document\\n| element\\n| else\\n| empty-sequence\\n| empty\\n| encoding\\n| eq\\n| every\\n| except\\n| external\\n| first\\n| following-sibling\\n| following\\n| ft-option\\n| ge\\n| greatest\\n| grouping-separator\\n| group\\n| gt\\n| idiv\\n| index\\n| infinity\\n| insert\\n| instance\\n| integrity\\n| intersect\\n| into\\n| is\\n| item\\n| json-item\\n| jsoniq\\n| json\\n| last\\n| lax\\n| least\\n| le\\n| lt\\n| minus-sign\\n| modify\\n| module\\n| mod\\n| namespace-node\\n| namespace\\n| next\\n| ne\\n| nodes\\n| node\\n| not\\n| object\\n| of\\n| only\\n| option\\n| ordered\\n| ordering\\n| order\\n| or\\n| paragraphs\\n| parent\\n| pattern-separator\\n| per-mille\\n| percent\\n| preceding-sibling\\n| preceding\\n| previous\\n| processing-instruction\\n| rename\\n| replace\\n| returning\\n| revalidation\\n| satisfies\\n| schema-attribute\\n| schema-element\\n| schema\\n| score\\n| select\\n| self\\n| sentences\\n| sliding\\n| some\\n| stable\\n| start\\n| strict\\n| text\\n| times\\n| to\\n| treat\\n| tumbling\\n| typeswitch\\n| type\\n| union\\n| unordered\\n| updating\\n| validate\\n| value\\n| variable\\n| version\\n| window\\n| words\\n| xquery\\n| zero-digit\\n) (?!:|-)\\\\b\"\n        }\n      ]\n    },\n    \"EnclosedExpr\": {\n      \"name\": \"meta.enclosed.expression.jsoniq\",\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.begin.jsoniq\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.jsoniq\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#main\"\n        }\n      ]\n    },\n    \"Numbers\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.exponential.jsoniq\",\n          \"match\": \"(?:\\\\.[0-9]+|\\\\b[0-9]+(?:\\\\.[0-9]*)?)[Ee][+#x002D]?[0-9]+\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.float.jsoniq\",\n          \"match\": \"(?:\\\\.[0-9]+|\\\\b[0-9]+\\\\.[0-9]*)\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.integer.jsoniq\",\n          \"match\": \"\\\\b[0-9]+\\\\b\"\n        }\n      ]\n    },\n    \"OpenTag\": {\n      \"name\": \"meta.tag.opentag.jsoniq\",\n      \"begin\": \"(<)((?:[-_a-zA-Z0-9][-._a-zA-Z0-9]*:)?[-_a-zA-Z0-9][-_a-zA-Z0-9]*)\",\n      \"end\": \"/?>\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.jsoniq\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.localname.jsoniq\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.jsoniq\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"entity.other.attribute-name.jsoniq\",\n          \"match\": \"([-_a-zA-Z0-9][-._a-zA-Z0-9]*:)?([-_a-zA-Z0-9][-_a-zA-Z0-9]*)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.jsoniq\",\n          \"match\": \"=\"\n        },\n        {\n          \"name\": \"string.quoted.single.jsoniq\",\n          \"begin\": \"'\",\n          \"end\": \"'(?!')\",\n          \"patterns\": [\n            {\n              \"match\": \"''\",\n              \"name\": \"constant.character.escape.quote.jsoniq\"\n            },\n            {\n              \"include\": \"#PredefinedEntityRef\"\n            },\n            {\n              \"include\": \"#CharRef\"\n            },\n            {\n              \"match\": \"({{|}})\",\n              \"name\": \"constant.jsoniq\"\n            },\n            {\n              \"include\": \"#EnclosedExpr\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.jsoniq\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"(?!\\\")\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"\\\"\",\n              \"name\": \"constant.character.escape.quote.jsoniq\"\n            },\n            {\n              \"include\": \"#PredefinedEntityRef\"\n            },\n            {\n              \"include\": \"#CharRef\"\n            },\n            {\n              \"match\": \"({{|}})\",\n              \"name\": \"string.jsoniq\"\n            },\n            {\n              \"include\": \"#EnclosedExpr\"\n            }\n          ]\n        }\n      ]\n    },\n    \"Pragma\": {\n      \"name\": \"meta.pragma.jsoniq\",\n      \"begin\": \"\\\\(#\",\n      \"end\": \"#\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.pragma.begin.jsoniq\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.pragma.end.jsoniq\"\n        }\n      },\n      \"contentName\": \"constant.other.pragma.jsoniq\"\n    },\n    \"PredefinedEntityRef\": {\n      \"name\": \"constant.language.entity.predefined.jsoniq\",\n      \"match\": \"(&)(lt|gt|amp|quot|apos)(;)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.begin.jsoniq\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.entity.other.jsoniq\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.entity.end.jsoniq\"\n        }\n      }\n    },\n    \"String\": {\n      \"name\": \"string.quoted.double.jsoniq\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.jsoniq\",\n          \"match\": \"\\\\\\\\(?:[\\\"\\\\\\\\/bfnrt]|u[0-9a-fA-F]{4})\"\n        },\n        {\n          \"name\": \"invalid.illegal.unrecognized-string-escape.jsoniq\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"Symbols\": {\n      \"patterns\": [\n        {\n          \"match\": \":=?\",\n          \"name\": \"keyword.operator.assignment.definition.jsoniq\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.comma.jsoniq\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.delimiter.dot.jsoniq\"\n        },\n        {\n          \"match\": \"\\\\[\",\n          \"name\": \"punctuation.definition.bracket.square.begin.jsoniq\"\n        },\n        {\n          \"match\": \"\\\\]\",\n          \"name\": \"punctuation.definition.bracket.square.end.jsoniq\"\n        },\n        {\n          \"match\": \"\\\\{\",\n          \"name\": \"punctuation.definition.bracket.curly.begin.jsoniq\"\n        },\n        {\n          \"match\": \"\\\\}\",\n          \"name\": \"punctuation.definition.bracket.curly.end.jsoniq\"\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.definition.bracket.round.begin.jsoniq\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"punctuation.definition.bracket.round.end.jsoniq\"\n        }\n      ]\n    },\n    \"Variable\": {\n      \"name\": \"meta.definition.variable.name.jsoniq\",\n      \"match\": \"(\\\\$)(?:[-_a-zA-Z0-9][-._a-zA-Z0-9]*:)?[-_a-zA-Z0-9][-_a-zA-Z0-9]*\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"variable.other.jsoniq\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.jsoniq\"\n        }\n      }\n    },\n    \"XMLComment\": {\n      \"name\": \"comment.block.jsoniq\",\n      \"begin\": \"<!--\",\n      \"end\": \"-->\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.begin.jsoniq\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.jsoniq\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/jsp.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"jsp\", \"jspf\", \"tag\"],\n  \"repository\": {\n    \"expression\": {\n      \"end\": \"(%)>\",\n      \"begin\": \"<%=\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.begin.jsp\" }\n      },\n      \"contentName\": \"source.java\",\n      \"patterns\": [{ \"include\": \"source.java\" }],\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.end.jsp\" },\n        \"1\": { \"name\": \"source.java\" }\n      },\n      \"name\": \"meta.embedded.line.expression.jsp\"\n    },\n    \"el_expression\": {\n      \"end\": \"(\\\\})\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.begin.jsp\" }\n      },\n      \"contentName\": \"source.java\",\n      \"patterns\": [{ \"include\": \"source.java\" }],\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.end.jsp\" },\n        \"1\": { \"name\": \"source.java\" }\n      },\n      \"name\": \"meta.embedded.line.el_expression.jsp\"\n    },\n    \"xml_tags\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^\\\\s*)(?=<jsp:(declaration|expression|scriptlet)>)\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.whitespace.embedded.trailing.erb\" }\n          },\n          \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n          \"patterns\": [{ \"include\": \"#embedded\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.whitespace.embedded.leading.erb\" }\n          }\n        },\n        { \"include\": \"#embedded\" },\n        { \"include\": \"#directive\" },\n        { \"include\": \"#actions\" }\n      ],\n      \"repository\": {\n        \"actions\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(</?)(jsp:attribute)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \">\",\n              \"patterns\": [\n                {\n                  \"match\": \"(name|trim)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.attribute.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"match\": \"(</?)(jsp:body)(>)\",\n              \"name\": \"meta.tag.template.body.jsp\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" },\n                \"3\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(</?)(jsp:element)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \">\",\n              \"patterns\": [\n                {\n                  \"match\": \"(name)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.element.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(<)(jsp:doBody)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \"/>\",\n              \"patterns\": [\n                {\n                  \"match\": \"(var|varReader|scope)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.dobody.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(</?)(jsp:forward)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \"/?>\",\n              \"patterns\": [\n                {\n                  \"match\": \"(page)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.forward.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(<)(jsp:param)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \"/>\",\n              \"patterns\": [\n                {\n                  \"match\": \"(name|value)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.param.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(<)(jsp:getProperty)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \"/>\",\n              \"patterns\": [\n                {\n                  \"match\": \"(name|property)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.getproperty.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(</?)(jsp:include)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \"/?>\",\n              \"patterns\": [\n                {\n                  \"match\": \"(page|flush)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.include.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(<)(jsp:invoke)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \"/>\",\n              \"patterns\": [\n                {\n                  \"match\": \"(fragment|var|varReader|scope)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.invoke.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(<)(jsp:output)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \"/>\",\n              \"patterns\": [\n                {\n                  \"match\": \"(omit-xml-declaration|doctype-root-element|doctype-system|doctype-public)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.output.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(</?)(jsp:plugin)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \">\",\n              \"patterns\": [\n                {\n                  \"match\": \"(type|code|codebase|name|archive|align|height|hspace|jreversion|nspluginurl|iepluginurl)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.plugin.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"match\": \"(</?)(jsp:fallback)(>)\",\n              \"end\": \">\",\n              \"name\": \"meta.tag.template.fallback.jsp\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" },\n                \"3\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(</?)(jsp:root)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \">\",\n              \"patterns\": [\n                {\n                  \"match\": \"(xmlns|version|xmlns:taglibPrefix)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.root.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(<)(jsp:setProperty)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \"/>\",\n              \"patterns\": [\n                {\n                  \"match\": \"(name|property|value)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.setproperty.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            },\n            {\n              \"match\": \"(</?)(jsp:text)(>)\",\n              \"end\": \">\",\n              \"name\": \"meta.tag.template.text.jsp\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" },\n                \"3\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              }\n            },\n            {\n              \"begin\": \"(</?)(jsp:useBean)\\\\b\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n              },\n              \"end\": \"/?>\",\n              \"patterns\": [\n                {\n                  \"match\": \"(id|scope|class|type|beanName)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"name\": \"meta.tag.template.usebean.jsp\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n                \"2\": { \"name\": \"entity.name.tag.jsp\" }\n              }\n            }\n          ]\n        },\n        \"directive\": {\n          \"begin\": \"(<)(jsp:directive\\\\.(?=(attribute|include|page|tag|variable)\\\\s))\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" }\n          },\n          \"end\": \"/>\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(attribute)(?=\\\\s)\",\n              \"end\": \"(?=/>)\",\n              \"patterns\": [\n                {\n                  \"match\": \"(name|required|fragment|rtexprvalue|type|description)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"captures\": { \"1\": { \"name\": \"entity.name.tag.jsp\" } }\n            },\n            {\n              \"begin\": \"\\\\G(include)(?=\\\\s)\",\n              \"end\": \"(?=/>)\",\n              \"patterns\": [\n                {\n                  \"match\": \"(file)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"captures\": { \"1\": { \"name\": \"entity.name.tag.jsp\" } }\n            },\n            {\n              \"begin\": \"\\\\G(page)(?=\\\\s)\",\n              \"end\": \"(?=/>)\",\n              \"patterns\": [\n                {\n                  \"match\": \"(language|extends|import|session|buffer|autoFlush|isThreadSafe|info|errorPage|isErrorPage|contentType|pageEncoding|isElIgnored)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"captures\": { \"1\": { \"name\": \"entity.name.tag.jsp\" } }\n            },\n            {\n              \"begin\": \"\\\\G(tag)(?=\\\\s)\",\n              \"end\": \"(?=/>)\",\n              \"patterns\": [\n                {\n                  \"match\": \"(display-name|body-content|dynamic-attributes|small-icon|large-icon|description|example|language|import|pageEncoding|isELIgnored)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"captures\": { \"1\": { \"name\": \"entity.name.tag.jsp\" } }\n            },\n            {\n              \"begin\": \"\\\\G(variable)(?=\\\\s)\",\n              \"end\": \"(?=/>)\",\n              \"patterns\": [\n                {\n                  \"match\": \"(name-given|alias|variable-class|declare|scope|description)(=)((\\\")[^\\\"]*(\\\"))\",\n                  \"captures\": {\n                    \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                    \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                    \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                    \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                    \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n                  }\n                }\n              ],\n              \"captures\": { \"1\": { \"name\": \"entity.name.tag.jsp\" } }\n            }\n          ],\n          \"name\": \"meta.tag.template.$3.jsp\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n            \"2\": { \"name\": \"entity.name.tag.jsp\" }\n          }\n        },\n        \"embedded\": {\n          \"end\": \"((<)/)(jsp:\\\\3)(>)\",\n          \"begin\": \"(<)(jsp:(declaration|expression|scriptlet))(>)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n            \"4\": { \"name\": \"punctuation.definition.tag.end.jsp\" },\n            \"2\": { \"name\": \"entity.name.tag.jsp\" },\n            \"0\": { \"name\": \"meta.tag.template.$3.jsp\" }\n          },\n          \"contentName\": \"source.java\",\n          \"patterns\": [{ \"include\": \"source.java\" }],\n          \"endCaptures\": {\n            \"3\": { \"name\": \"entity.name.tag.jsp\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" },\n            \"4\": { \"name\": \"punctuation.definition.tag.end.jsp\" },\n            \"2\": { \"name\": \"source.java\" },\n            \"0\": { \"name\": \"meta.tag.template.$4.jsp\" }\n          },\n          \"name\": \"meta.embedded.block.jsp\"\n        }\n      }\n    },\n    \"scriptlet\": {\n      \"end\": \"(%)>\",\n      \"begin\": \"<%\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.begin.jsp\" }\n      },\n      \"contentName\": \"source.java\",\n      \"patterns\": [\n        { \"match\": \"\\\\{\", \"name\": \"punctuation.section.scope.begin.java\" },\n        { \"match\": \"\\\\}\", \"name\": \"punctuation.section.scope.end.java\" },\n        { \"include\": \"source.java\" }\n      ],\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.end.jsp\" },\n        \"1\": { \"name\": \"source.java\" }\n      },\n      \"name\": \"meta.embedded.block.scriptlet.jsp\"\n    },\n    \"comment\": {\n      \"begin\": \"<%--\",\n      \"end\": \"--%>\",\n      \"name\": \"comment.block.jsp\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.jsp\" } }\n    },\n    \"declaration\": {\n      \"end\": \"(%)>\",\n      \"begin\": \"<%!\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.begin.jsp\" }\n      },\n      \"contentName\": \"source.java\",\n      \"patterns\": [{ \"include\": \"source.java\" }],\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.end.jsp\" },\n        \"1\": { \"name\": \"source.java\" }\n      },\n      \"name\": \"meta.embedded.line.declaration.jsp\"\n    },\n    \"tags\": {\n      \"begin\": \"(<%@)\\\\s*(?=(attribute|include|page|tag|taglib|variable)\\\\s)\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.tag.end.jsp\" } },\n      \"end\": \"%>\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(attribute)(?=\\\\s)\",\n          \"end\": \"(?=%>)\",\n          \"patterns\": [\n            {\n              \"match\": \"(name|required|fragment|rtexprvalue|type|description)(=)((\\\")[^\\\"]*(\\\"))\",\n              \"captures\": {\n                \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n              }\n            }\n          ],\n          \"captures\": { \"1\": { \"name\": \"keyword.control.attribute.jsp\" } }\n        },\n        {\n          \"begin\": \"\\\\G(include)(?=\\\\s)\",\n          \"end\": \"(?=%>)\",\n          \"patterns\": [\n            {\n              \"match\": \"(file)(=)((\\\")[^\\\"]*(\\\"))\",\n              \"captures\": {\n                \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n              }\n            }\n          ],\n          \"captures\": { \"1\": { \"name\": \"keyword.control.include.jsp\" } }\n        },\n        {\n          \"begin\": \"\\\\G(page)(?=\\\\s)\",\n          \"end\": \"(?=%>)\",\n          \"patterns\": [\n            {\n              \"match\": \"(language|extends|import|session|buffer|autoFlush|isThreadSafe|info|errorPage|isErrorPage|contentType|pageEncoding|isElIgnored)(=)((\\\")[^\\\"]*(\\\"))\",\n              \"captures\": {\n                \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n              }\n            }\n          ],\n          \"captures\": { \"1\": { \"name\": \"keyword.control.page.jsp\" } }\n        },\n        {\n          \"begin\": \"\\\\G(tag)(?=\\\\s)\",\n          \"end\": \"(?=%>)\",\n          \"patterns\": [\n            {\n              \"match\": \"(display-name|body-content|dynamic-attributes|small-icon|large-icon|description|example|language|import|pageEncoding|isELIgnored)(=)((\\\")[^\\\"]*(\\\"))\",\n              \"captures\": {\n                \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n              }\n            }\n          ],\n          \"captures\": { \"1\": { \"name\": \"keyword.control.tag.jsp\" } }\n        },\n        {\n          \"begin\": \"\\\\G(taglib)(?=\\\\s)\",\n          \"end\": \"(?=%>)\",\n          \"patterns\": [\n            {\n              \"match\": \"(uri|tagdir|prefix)(=)((\\\")[^\\\"]*(\\\"))\",\n              \"captures\": {\n                \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n              }\n            }\n          ],\n          \"captures\": { \"1\": { \"name\": \"keyword.control.taglib.jsp\" } }\n        },\n        {\n          \"begin\": \"\\\\G(variable)(?=\\\\s)\",\n          \"end\": \"(?=%>)\",\n          \"patterns\": [\n            {\n              \"match\": \"(name-given|alias|variable-class|declare|scope|description)(=)((\\\")[^\\\"]*(\\\"))\",\n              \"captures\": {\n                \"3\": { \"name\": \"string.quoted.double.jsp\" },\n                \"1\": { \"name\": \"entity.other.attribute-name.jsp\" },\n                \"4\": { \"name\": \"punctuation.definition.string.begin.jsp\" },\n                \"2\": { \"name\": \"punctuation.separator.key-value.jsp\" },\n                \"5\": { \"name\": \"punctuation.definition.string.end.jsp\" }\n              }\n            }\n          ],\n          \"captures\": { \"1\": { \"name\": \"keyword.control.variable.jsp\" } }\n        }\n      ],\n      \"name\": \"meta.tag.template.include.jsp\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.jsp\" }\n      }\n    }\n  },\n  \"keyEquivalent\": \"^~J\",\n  \"uuid\": \"ACB58B55-9437-4AE6-AF42-854995CF51DF\",\n  \"injections\": {\n    \"text.html.jsp - (meta.embedded.block.jsp | meta.embedded.line.jsp | meta.tag | comment), meta.tag string.quoted\": {\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#declaration\" },\n        { \"include\": \"#expression\" },\n        { \"include\": \"#el_expression\" },\n        { \"include\": \"#tags\" },\n        {\n          \"begin\": \"(^\\\\s*)(?=<%(?=\\\\s))\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.whitespace.embedded.trailing.erb\" }\n          },\n          \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n          \"patterns\": [{ \"include\": \"#scriptlet\" }],\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.whitespace.embedded.leading.erb\" }\n          }\n        },\n        { \"include\": \"#scriptlet\" }\n      ]\n    }\n  },\n  \"patterns\": [{ \"include\": \"#xml_tags\" }, { \"include\": \"text.html.basic\" }],\n  \"name\": \"JavaServer Pages\",\n  \"scopeName\": \"text.html.jsp\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/jsx-styled.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"js\", \"jsx\", \"ts\", \"tsx\"],\n  \"injectionSelector\": \"L:source -comment -string\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\s*(<)(style) (jsx|global jsx|jsx global)(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.ts.tsx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.ts.tsx\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.ts.tsx\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.end.ts.tsx\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.tag.begin.ts.tsx\"\n        },\n        \"6\": {\n          \"name\": \"entity.name.tag.ts.tsx\"\n        },\n        \"7\": {\n          \"name\": \"entity.other.attribute-name.ts.tsx\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.tag.end.ts.tsx\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.tag.begin.ts.tsx\"\n        },\n        \"10\": {\n          \"name\": \"entity.name.tag.ts.tsx\"\n        },\n        \"12\": {\n          \"name\": \"entity.other.attribute-name.ts.tsx\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.tag.end.ts.tsx\"\n        }\n      },\n      \"end\": \"(</)(style)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.ts.tsx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.ts.tsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.ts.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"({)(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.block.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.js string.template.js\"\n            }\n          },\n          \"end\": \"(`)(})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.template.begin.js string.template.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.js\"\n            }\n          },\n          \"patterns\": [{ \"include\": \"source.css.jsx.styled\" }]\n        }\n      ]\n    },\n    {\n      \"contentName\": \"source.css.scss\",\n      \"begin\": \"(?:(?:(\\\\bcss\\\\.)(resolve|global))|(\\\\bcss))(`)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.js\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.tagged-template.js\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.tagged-template.js\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.string.template.begin.js string.template.js\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.template.end.js string.template.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.css.jsx.styled\"\n        }\n      ]\n    }\n  ],\n  \"scopeName\": \"styled-jsx\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/jsx.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.jsx\",\n  \"fileTypes\": [\"js\", \"htc\", \"jsx\"],\n  \"patterns\": [{ \"include\": \"#shebang\" }, { \"include\": \"#expression\" }],\n  \"repository\": {\n    \"meta-class-member\": {\n      \"begin\": \"\\\\b(?:(get|set)\\\\s+)?([a-zA-Z_$]\\\\w*)\\\\b\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-function-parameters\" },\n        { \"include\": \"#meta-function-body\" }\n      ],\n      \"name\": \"meta.class.member.js\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.type.property.js\" },\n        \"2\": { \"name\": \"entity.name.function.js\" }\n      }\n    },\n    \"misc-higlighting\": {\n      \"comment\": \"This patterns are not affecting scope rules and are usefull for higlighting purposes only\",\n      \"name\": \"misc.js\",\n      \"patterns\": [\n        {\n          \"match\": \"(new)\\\\s+(\\\\w+(?:\\\\.\\\\w*)*)\",\n          \"name\": \"meta.class.instance.constructor\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.operator.new.js\" },\n            \"2\": { \"name\": \"entity.name.type.instance.js\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b(console)\\\\.(warn|info|log|error|time|timeEnd|assert)\\\\b\",\n          \"name\": \"meta.object.js.firebug\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.name.type.object.js.firebug\" },\n            \"2\": { \"name\": \"support.function.js.firebug\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b(console)\\\\b\",\n          \"name\": \"entity.name.type.object.js.firebug\"\n        },\n        {\n          \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\\\\.[0-9]+)?))\\\\b\",\n          \"name\": \"constant.numeric.js\"\n        },\n        {\n          \"match\": \"\\\\b(boolean|byte|char|class|double|enum|float|function|int|interface|long|short|var|void)\\\\b\",\n          \"name\": \"storage.type.js\"\n        },\n        {\n          \"match\": \"\\\\b(const|export|extends|final|implements|native|private|protected|public|static|synchronized|throws|transient|volatile)\\\\b\",\n          \"name\": \"storage.modifier.js\"\n        },\n        {\n          \"match\": \"\\\\b(break|case|catch|continue|default|do|else|finally|for|goto|if|import|package|return|switch|throw|try|while)\\\\b\",\n          \"name\": \"keyword.control.js\"\n        },\n        {\n          \"match\": \"\\\\b(delete|in|instanceof|new|typeof|with)\\\\b\",\n          \"name\": \"keyword.operator.js\"\n        },\n        { \"match\": \"\\\\btrue\\\\b\", \"name\": \"constant.language.boolean.true.js\" },\n        {\n          \"match\": \"\\\\bfalse\\\\b\",\n          \"name\": \"constant.language.boolean.false.js\"\n        },\n        { \"match\": \"\\\\bnull\\\\b\", \"name\": \"constant.language.null.js\" },\n        { \"match\": \"\\\\b(super|this)\\\\b\", \"name\": \"variable.language.js\" },\n        {\n          \"match\": \"(\\\\.)(prototype|__proto__)\\\\b\",\n          \"name\": \"meta.prototype.js\",\n          \"captures\": {\n            \"1\": { \"name\": \"meta.delimiter.method.period.js\" },\n            \"2\": { \"name\": \"support.constant.js\" }\n          }\n        },\n        { \"match\": \"\\\\b(debugger)\\\\b\", \"name\": \"keyword.other.js\" },\n        {\n          \"match\": \"\\\\b(Anchor|Applet|Area|Array|Boolean|Button|Checkbox|Date|document|event|FileUpload|Form|Frame|Function|Hidden|History|Image|JavaArray|JavaClass|JavaObject|JavaPackage|java|Layer|Link|Location|Math|MimeType|Number|navigator|netscape|Object|Option|Packages|Password|Plugin|Radio|RegExp|Reset|Select|String|Style|Submit|screen|sun|Text|Textarea|window|XMLHttpRequest)\\\\b\",\n          \"name\": \"support.class.js\"\n        },\n        {\n          \"match\": \"\\\\b(require|module\\\\.exports|module\\\\.id|exports)\\\\b\",\n          \"name\": \"support.function.js\"\n        },\n        {\n          \"match\": \"\\\\b(s(h(ift|ow(Mod(elessDialog|alDialog)|Help))|croll(X|By(Pages|Lines)?|Y|To)?|t(op|rike)|i(n|zeToContent|debar|gnText)|ort|u(p|b(str(ing)?)?)|pli(ce|t)|e(nd|t(Re(sizable|questHeader)|M(i(nutes|lliseconds)|onth)|Seconds|Ho(tKeys|urs)|Year|Cursor|Time(out)?|Interval|ZOptions|Date|UTC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(ome|andleEvent)|navigate|c(har(CodeAt|At)|o(s|n(cat|textual|firm)|mpile)|eil|lear(Timeout|Interval)?|a(ptureEvents|ll)|reate(StyleSheet|Popup|EventObject))|t(o(GMTString|S(tring|ource)|U(TCString|pperCase)|Lo(caleString|werCase))|est|a(n|int(Enabled)?))|i(s(NaN|Finite)|ndexOf|talics)|d(isableExternalCapture|ump|etachEvent)|u(n(shift|taint|escape|watch)|pdateCommands)|j(oin|avaEnabled)|p(o(p|w)|ush|lugins.refresh|a(ddings|rse(Int|Float)?)|r(int|ompt|eference))|e(scape|nableExternalCapture|val|lementFromPoint|x(p|ec(Script|Command)?))|valueOf|UTC|queryCommand(State|Indeterm|Enabled|Value)|f(i(nd|le(ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(nt(size|color)|rward)|loor|romCharCode)|watch|l(ink|o(ad|g)|astIndexOf)|a(sin|nchor|cos|t(tachEvent|ob|an(2)?)|pply|lert|b(s|ort))|r(ou(nd|teEvents)|e(size(By|To)|calc|turnValue|place|verse|l(oad|ease(Capture|Events)))|andom)|g(o|et(ResponseHeader|M(i(nutes|lliseconds)|onth)|Se(conds|lection)|Hours|Year|Time(zoneOffset)?|Da(y|te)|UTC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Da(y|te)|FullYear)|FullYear|A(ttention|llResponseHeaders)))|m(in|ove(B(y|elow)|To(Absolute)?|Above)|ergeAttributes|a(tch|rgins|x))|b(toa|ig|o(ld|rderWidths)|link|ack))\\\\b(?=\\\\()\",\n          \"name\": \"support.function.js\"\n        },\n        {\n          \"match\": \"\\\\b(s(ub(stringData|mit)|plitText|e(t(NamedItem|Attribute(Node)?)|lect))|has(ChildNodes|Feature)|namedItem|c(l(ick|o(se|neNode))|reate(C(omment|DATASection|aption)|T(Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(ntityReference|lement)|Attribute))|tabIndex|i(nsert(Row|Before|Cell|Data)|tem)|open|delete(Row|C(ell|aption)|T(Head|Foot)|Data)|focus|write(ln)?|a(dd|ppend(Child|Data))|re(set|place(Child|Data)|move(NamedItem|Child|Attribute(Node)?)?)|get(NamedItem|Element(sBy(Name|TagName)|ById)|Attribute(Node)?)|blur)\\\\b(?=\\\\()\",\n          \"name\": \"support.function.dom.js\"\n        },\n        {\n          \"match\": \"(?<=\\\\.)(s(ystemLanguage|cr(ipts|ollbars|een(X|Y|Top|Left))|t(yle(Sheets)?|atus(Text|bar)?)|ibling(Below|Above)|ource|uffixes|e(curity(Policy)?|l(ection|f)))|h(istory|ost(name)?|as(h|Focus))|y|X(MLDocument|SLDocument)|n(ext|ame(space(s|URI)|Prop))|M(IN_VALUE|AX_VALUE)|c(haracterSet|o(n(structor|trollers)|okieEnabled|lorDepth|mp(onents|lete))|urrent|puClass|l(i(p(boardData)?|entInformation)|osed|asses)|alle(e|r)|rypto)|t(o(olbar|p)|ext(Transform|Indent|Decoration|Align)|ags)|SQRT(1_2|2)|i(n(ner(Height|Width)|put)|ds|gnoreCase)|zIndex|o(scpu|n(readystatechange|Line)|uter(Height|Width)|p(sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(i(splay|alog(Height|Top|Width|Left|Arguments)|rectories)|e(scription|fault(Status|Ch(ecked|arset)|View)))|u(ser(Profile|Language|Agent)|n(iqueID|defined)|pdateInterval)|_content|p(ixelDepth|ort|ersonalbar|kcs11|l(ugins|atform)|a(thname|dding(Right|Bottom|Top|Left)|rent(Window|Layer)?|ge(X(Offset)?|Y(Offset)?))|r(o(to(col|type)|duct(Sub)?|mpter)|e(vious|fix)))|e(n(coding|abledPlugin)|x(ternal|pando)|mbeds)|v(isibility|endor(Sub)?|Linkcolor)|URLUnencoded|P(I|OSITIVE_INFINITY)|f(ilename|o(nt(Size|Family|Weight)|rmName)|rame(s|Element)|gColor)|E|whiteSpace|l(i(stStyleType|n(eHeight|kColor))|o(ca(tion(bar)?|lName)|wsrc)|e(ngth|ft(Context)?)|a(st(M(odified|atch)|Index|Paren)|yer(s|X)|nguage))|a(pp(MinorVersion|Name|Co(deName|re)|Version)|vail(Height|Top|Width|Left)|ll|r(ity|guments)|Linkcolor|bove)|r(ight(Context)?|e(sponse(XML|Text)|adyState))|global|x|m(imeTypes|ultiline|enubar|argin(Right|Bottom|Top|Left))|L(N(10|2)|OG(10E|2E))|b(o(ttom|rder(Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(Color|Image)))\\\\b\",\n          \"name\": \"support.constant.js\"\n        },\n        {\n          \"match\": \"(?<=\\\\.)(s(hape|ystemId|c(heme|ope|rolling)|ta(ndby|rt)|ize|ummary|pecified|e(ctionRowIndex|lected(Index)?)|rc)|h(space|t(tpEquiv|mlFor)|e(ight|aders)|ref(lang)?)|n(o(Resize|tation(s|Name)|Shade|Href|de(Name|Type|Value)|Wrap)|extSibling|ame)|c(h(ildNodes|Off|ecked|arset)?|ite|o(ntent|o(kie|rds)|de(Base|Type)?|l(s|Span|or)|mpact)|ell(s|Spacing|Padding)|l(ear|assName)|aption)|t(ype|Bodies|itle|Head|ext|a(rget|gName)|Foot)|i(sMap|ndex|d|m(plementation|ages))|o(ptions|wnerDocument|bject)|d(i(sabled|r)|o(c(type|umentElement)|main)|e(clare|f(er|ault(Selected|Checked|Value)))|at(eTime|a))|useMap|p(ublicId|arentNode|r(o(file|mpt)|eviousSibling))|e(n(ctype|tities)|vent|lements)|v(space|ersion|alue(Type)?|Link|Align)|URL|f(irstChild|orm(s)?|ace|rame(Border)?)|width|l(ink(s)?|o(ngDesc|wSrc)|a(stChild|ng|bel))|a(nchors|c(ce(ssKey|pt(Charset)?)|tion)|ttributes|pplets|l(t|ign)|r(chive|eas)|xis|Link|bbr)|r(ow(s|Span|Index)|ules|e(v|ferrer|l|adOnly))|m(ultiple|e(thod|dia)|a(rgin(Height|Width)|xLength))|b(o(dy|rder)|ackground|gColor))\\\\b\",\n          \"name\": \"support.constant.dom.js\"\n        },\n        {\n          \"match\": \"\\\\b(ELEMENT_NODE|ATTRIBUTE_NODE|TEXT_NODE|CDATA_SECTION_NODE|ENTITY_REFERENCE_NODE|ENTITY_NODE|PROCESSING_INSTRUCTION_NODE|COMMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE|DOCUMENT_FRAGMENT_NODE|NOTATION_NODE|INDEX_SIZE_ERR|DOMSTRING_SIZE_ERR|HIERARCHY_REQUEST_ERR|WRONG_DOCUMENT_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR|NOT_SUPPORTED_ERR|INUSE_ATTRIBUTE_ERR)\\\\b\",\n          \"name\": \"support.constant.dom.js\"\n        },\n        {\n          \"match\": \"\\\\bon(R(ow(s(inserted|delete)|e(nter|xit))|e(s(ize(start|end)?|et)|adystatechange))|Mouse(o(ut|ver)|down|up|move)|B(efore(cut|deactivate|u(nload|pdate)|p(aste|rint)|editfocus|activate)|lur)|S(croll|top|ubmit|elect(start|ionchange)?)|H(over|elp)|C(hange|ont(extmenu|rolselect)|ut|ellchange|l(ick|ose))|D(eactivate|ata(setc(hanged|omplete)|available)|r(op|ag(start|over|drop|en(ter|d)|leave)?)|blclick)|Unload|P(aste|ropertychange)|Error(update)?|Key(down|up|press)|Focus|Load|A(ctivate|fter(update|print)|bort))\\\\b\",\n          \"name\": \"support.function.event-handler.js\"\n        },\n        {\n          \"match\": \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(in|instanceof|new|delete|typeof|void)\\\\b\",\n          \"name\": \"keyword.operator.js\"\n        },\n        {\n          \"match\": \"\\\\b(Infinity|NaN|undefined)\\\\b\",\n          \"name\": \"constant.language.js\"\n        },\n        { \"match\": \"\\\\;\", \"name\": \"punctuation.terminator.statement.js\" },\n        { \"match\": \",[ |\\\\t]*\", \"name\": \"meta.delimiter.object.comma.js\" },\n        { \"match\": \"\\\\.\", \"name\": \"meta.delimiter.method.period.js\" },\n        { \"match\": \"\\\\[|\\\\]\", \"name\": \"meta.brace.square.js\" }\n      ]\n    },\n    \"meta-function-body\": {\n      \"begin\": \"\\\\{\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"end\": \"(?=\\\\})\",\n      \"patterns\": [{ \"include\": \"#expression\" }],\n      \"name\": \"meta.expression.body.function\",\n      \"beginCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } }\n    },\n    \"jsx-evaluated-code\": {\n      \"begin\": \"{\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.brace.curly.end.js\" }\n      },\n      \"end\": \"}\",\n      \"patterns\": [{ \"include\": \"#expression\" }],\n      \"name\": \"meta.brace.curly.js\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.brace.curly.start.js\" }\n      }\n    },\n    \"jsx-string-single-quoted\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.js\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [{ \"include\": \"#jsx-entities\" }],\n      \"name\": \"string.quoted.single.js\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.js\" }\n      }\n    },\n    \"block-braces-curly\": {\n      \"begin\": \"\\\\{\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"end\": \"\\\\}\",\n      \"patterns\": [{ \"include\": \"#expression\" }],\n      \"name\": \"meta.expression.braces.curly\",\n      \"beginCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } }\n    },\n    \"jsx-tag-close\": {\n      \"match\": \"(</)([^>]+)(>)\",\n      \"name\": \"tag.close.js\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.js\" },\n        \"2\": { \"name\": \"entity.name.tag.js\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.end.js\" }\n      }\n    },\n    \"class-expression\": {\n      \"begin\": \"\\\\b(class)\\\\b(?:\\\\s+([a-zA-Z_$]\\\\w*))?\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"end\": \"(?=\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-class-body\" },\n        { \"include\": \"#expression\" }\n      ],\n      \"name\": \"meta.class.js\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.type.class.js\" },\n        \"2\": { \"name\": \"entity.name.type.class.js\" }\n      }\n    },\n    \"function\": {\n      \"comment\": \"Function aggregate\",\n      \"name\": \"string.js\",\n      \"patterns\": [\n        { \"include\": \"#function-on-prototype\" },\n        { \"include\": \"#function-on-prototype-named\" },\n        { \"include\": \"#function-on-object\" },\n        { \"include\": \"#function-as-var\" },\n        { \"include\": \"#function-json\" },\n        { \"include\": \"#function-json-quoted\" },\n        { \"include\": \"#function-property\" },\n        { \"include\": \"#function-named-expression\" },\n        { \"include\": \"#function-expression\" }\n      ]\n    },\n    \"comment\": {\n      \"name\": \"comment.js\",\n      \"patterns\": [\n        { \"include\": \"#comment-block-doc\" },\n        { \"include\": \"#comment-block\" },\n        { \"include\": \"#comment-block-html\" },\n        { \"include\": \"#comment-line\" }\n      ]\n    },\n    \"string\": {\n      \"name\": \"string.js\",\n      \"patterns\": [\n        { \"include\": \"#string-quoted-single\" },\n        { \"include\": \"#string-quoted-double\" }\n      ]\n    },\n    \"expression\": {\n      \"comment\": \"The main building block\",\n      \"name\": \"meta.expression.js\",\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#class-expression\" },\n        { \"include\": \"#function\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#string\" },\n        { \"include\": \"#regexp\" },\n        { \"include\": \"#jsx\" },\n        { \"include\": \"#misc-higlighting\" }\n      ]\n    },\n    \"meta-class-body\": {\n      \"begin\": \"\\\\{\",\n      \"endCaptures\": {},\n      \"end\": \"(?=\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-class-member\" }\n      ],\n      \"name\": \"meta.expression.body.class\",\n      \"beginCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } }\n    },\n    \"comment-line\": {\n      \"match\": \"(//).*$\\n?\",\n      \"name\": \"comment.line.double-slash.js\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.comment.js\" } }\n    },\n    \"comment-block-doc\": {\n      \"begin\": \"/\\\\*\\\\*(?!/)\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.documentation.js\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.js\" } }\n    },\n    \"function-on-prototype-named\": {\n      \"match\": \"([a-zA-Z_?.$][\\\\w?.$]*)\\\\.(prototype)\\\\.([a-zA-Z_?.$][\\\\w?.$]*)\\\\s*(=)\\\\s*\",\n      \"comment\": \"match stuff like: Sound.prototype.play = myfunc\",\n      \"name\": \"meta.scope.function.js\",\n      \"captures\": {\n        \"3\": { \"name\": \"entity.name.function.js\" },\n        \"1\": { \"name\": \"support.class.js\" },\n        \"4\": { \"name\": \"keyword.operator.js\" },\n        \"2\": { \"name\": \"support.constant.js\" },\n        \"0\": { \"name\": \"meta.function.js\" }\n      }\n    },\n    \"jsx-tag-attribute-name\": {\n      \"match\": \"\\\\b([a-zA-Z\\\\-:]+)\",\n      \"name\": \"meta.tag.attribute-name.js\",\n      \"captures\": { \"1\": { \"name\": \"entity.other.attribute-name.js\" } }\n    },\n    \"function-on-object\": {\n      \"end\": \"\\\\}\",\n      \"begin\": \"([a-zA-Z_?.$][\\\\w?.$]*)\\\\.([a-zA-Z_?.$][\\\\w?.$]*)\\\\s*(=)\\\\s*(function)\\\\b\",\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"keyword.operator.js\" },\n        \"1\": { \"name\": \"support.class.js\" },\n        \"4\": { \"name\": \"storage.type.function.js\" },\n        \"2\": { \"name\": \"entity.name.function.js\" },\n        \"0\": { \"name\": \"meta.function.js\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-function-parameters\" },\n        { \"include\": \"#meta-function-body\" }\n      ],\n      \"comment\": \"match stuff like: Sound.play = function() { … }\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"name\": \"meta.scope.function.js\"\n    },\n    \"function-as-var\": {\n      \"end\": \"\\\\}\",\n      \"begin\": \"([a-zA-Z_?$][\\\\w?$]*)\\\\s*(=)\\\\s*(function)\\\\s*\",\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"storage.type.function.js\" },\n        \"1\": { \"name\": \"entity.name.function.js\" },\n        \"2\": { \"name\": \"keyword.operator.js\" },\n        \"0\": { \"name\": \"meta.function.js\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-function-parameters\" },\n        { \"include\": \"#meta-function-body\" }\n      ],\n      \"comment\": \"match stuff like: play = function() { … }\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"name\": \"meta.scope.function.js\"\n    },\n    \"comment-block\": {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.js\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.js\" } }\n    },\n    \"function-named-expression\": {\n      \"end\": \"\\\\}\",\n      \"begin\": \"\\\\b(function)\\\\b(?:\\\\s+([a-zA-Z_$]\\\\w*))\\\\s*\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.function.js\" },\n        \"1\": { \"name\": \"storage.type.function.js\" },\n        \"2\": { \"name\": \"entity.name.function.js\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-function-parameters\" },\n        { \"include\": \"#meta-function-body\" }\n      ],\n      \"comment\": \"match regular function like: function myFunc(arg) { … }\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"name\": \"meta.scope.function.js\"\n    },\n    \"function-on-prototype\": {\n      \"end\": \"\\\\}\",\n      \"begin\": \"([a-zA-Z_?.$][\\\\w?.$]*)\\\\.(prototype)\\\\.([a-zA-Z_?.$][\\\\w?.$]*)\\\\s*(=)\\\\s*(function)\\\\b\",\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"entity.name.function.js\" },\n        \"1\": { \"name\": \"support.class.js\" },\n        \"4\": { \"name\": \"keyword.operator.js\" },\n        \"2\": { \"name\": \"support.constant.js\" },\n        \"0\": { \"name\": \"meta.function.js\" },\n        \"5\": { \"name\": \"storage.type.function.js\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-function-parameters\" },\n        { \"include\": \"#meta-function-body\" }\n      ],\n      \"comment\": \"match stuff like: Sound.prototype.play = function() { … }\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"name\": \"meta.function.prototype.js\"\n    },\n    \"shebang\": {\n      \"comment\": \"node.js shebang\",\n      \"match\": \"^#![\\\\S]+ node\",\n      \"name\": \"comment.line.js\"\n    },\n    \"jsx-tag-attributes\": {\n      \"patterns\": [\n        { \"include\": \"#jsx-tag-attribute-name\" },\n        { \"include\": \"#jsx-string-double-quoted\" },\n        { \"include\": \"#jsx-string-single-quoted\" },\n        { \"include\": \"#jsx-evaluated-code\" }\n      ]\n    },\n    \"jsx-entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.js\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.entity.js\" },\n            \"3\": { \"name\": \"punctuation.definition.entity.js\" }\n          }\n        },\n        { \"match\": \"&\", \"name\": \"invalid.illegal.bad-ampersand.js\" }\n      ]\n    },\n    \"function-property\": {\n      \"begin\": \"\\\\b(get|set)\\\\s+([a-zA-Z_$]\\\\w*)\\\\b\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-function-parameters\" },\n        { \"include\": \"#meta-function-body\" }\n      ],\n      \"name\": \"meta.property.json.js\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.function.js\" },\n        \"1\": { \"name\": \"storage.type.property.js\" },\n        \"2\": { \"name\": \"entity.name.function.js\" }\n      }\n    },\n    \"jsx-tag-open\": {\n      \"begin\": \"(<)([a-zA-Z0-9:]+)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.js\" } },\n      \"end\": \"(/?>)\",\n      \"patterns\": [{ \"include\": \"#jsx-tag-attributes\" }],\n      \"name\": \"tag.open.js\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.js\" },\n        \"2\": { \"name\": \"entity.name.tag.js\" }\n      }\n    },\n    \"meta-function-parameters\": {\n      \"begin\": \"\\\\(\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.parameters.end.js\" }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"match\": \"[a-zA-Z_$]\\\\w*\", \"name\": \"variable.parameter.function.js\" }\n      ],\n      \"name\": \"meta.expression.body.class\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.parameters.begin.js\" }\n      }\n    },\n    \"comment-block-html\": {\n      \"match\": \"(<!--|-->)\",\n      \"name\": \"comment.block.html.js\",\n      \"captures\": {\n        \"0\": { \"name\": \"punctuation.definition.comment.html.js\" },\n        \"2\": { \"name\": \"punctuation.definition.comment.html.js\" }\n      }\n    },\n    \"function-json\": {\n      \"end\": \"\\\\}\",\n      \"begin\": \"\\\\b([a-zA-Z_?.$][\\\\w?.$]*)\\\\s*:\\\\s*\\\\b(function)\\\\s*\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.function.js\" },\n        \"1\": { \"name\": \"entity.name.function.js\" },\n        \"2\": { \"name\": \"storage.type.function.js\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-function-parameters\" },\n        { \"include\": \"#meta-function-body\" }\n      ],\n      \"comment\": \"match stuff like: foobar: function() { … }\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"name\": \"meta.scope.function.js\"\n    },\n    \"string-quoted-single\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.js\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(x\\\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\",\n          \"name\": \"constant.character.escape.js\"\n        }\n      ],\n      \"name\": \"string.quoted.single.js\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.js\" }\n      }\n    },\n    \"regexp\": {\n      \"begin\": \"(?<=[=(:]|^|return|&&|\\\\|\\\\||!)\\\\s*(/)(?![/*+{}?])\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.end.js\" }\n      },\n      \"end\": \"(/)[igm]*\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.js\" }\n      ],\n      \"name\": \"string.regexp.js\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.begin.js\" }\n      }\n    },\n    \"jsx\": {\n      \"name\": \"meta.jsx.js\",\n      \"patterns\": [\n        { \"include\": \"#jsx-tag-open\" },\n        { \"include\": \"#jsx-tag-close\" },\n        { \"include\": \"#jsx-tag-invalid\" }\n      ]\n    },\n    \"jsx-string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.js\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [{ \"include\": \"#jsx-entities\" }],\n      \"name\": \"string.quoted.double.js\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.js\" }\n      }\n    },\n    \"block-braces-round\": {\n      \"begin\": \"\\\\(\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.round.js\" } },\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#expression\" }],\n      \"name\": \"meta.expression.braces.round\",\n      \"beginCaptures\": { \"0\": { \"name\": \"meta.brace.round.js\" } }\n    },\n    \"jsx-tag-invalid\": {\n      \"match\": \"<\\\\s*>\",\n      \"name\": \"invalid.illegal.tag.incomplete.js\"\n    },\n    \"function-json-quoted\": {\n      \"end\": \"\\\\}\",\n      \"begin\": \"(?:((')([^']*)('))|((\\\")([^\\\"]+)(\\\")))\\\\s*:\\\\s*\\\\b(function)\\\\b\",\n      \"beginCaptures\": {\n        \"7\": { \"name\": \"entity.name.function.js\" },\n        \"3\": { \"name\": \"entity.name.function.js\" },\n        \"8\": { \"name\": \"punctuation.definition.string.end.js\" },\n        \"4\": { \"name\": \"punctuation.definition.string.end.js\" },\n        \"0\": { \"name\": \"meta.function.js\" },\n        \"9\": { \"name\": \"storage.type.function.js\" },\n        \"5\": { \"name\": \"string.quoted.double.js\" },\n        \"1\": { \"name\": \"string.quoted.single.js\" },\n        \"6\": { \"name\": \"punctuation.definition.string.begin.js\" },\n        \"2\": { \"name\": \"punctuation.definition.string.begin.js\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-function-parameters\" },\n        { \"include\": \"#meta-function-body\" }\n      ],\n      \"comment\": \"Attempt to match 'foo': function\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"name\": \"meta.scope.function.js\"\n    },\n    \"function-expression\": {\n      \"end\": \"\\\\}\",\n      \"begin\": \"\\\\b(function)\\\\b\\\\s*\",\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.type.function.js\" } },\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#meta-function-parameters\" },\n        { \"include\": \"#meta-function-body\" }\n      ],\n      \"comment\": \"match regular function like: function myFunc(arg) { … }\",\n      \"endCaptures\": { \"0\": { \"name\": \"meta.brace.curly.js\" } },\n      \"name\": \"meta.scope.function.js\"\n    },\n    \"string-quoted-double\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.js\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(x\\\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\",\n          \"name\": \"constant.character.escape.js\"\n        }\n      ],\n      \"name\": \"string.quoted.double.js\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.js\" }\n      }\n    },\n    \"block\": {\n      \"name\": \"block.js\",\n      \"patterns\": [\n        { \"include\": \"#block-braces-curly\" },\n        { \"include\": \"#block-braces-round\" }\n      ]\n    }\n  },\n  \"name\": \"JavaScript (FB)\",\n  \"uuid\": \"4b3f11ef-3e1f-4311-a911-b7fd497b3ff4\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/julia.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/JuliaEditorSupport/atom-language-julia/blob/master/grammars/julia_vscode.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/JuliaEditorSupport/atom-language-julia/commit/7b7801f41ce4ac1303bd17e057dbe677e24f597f\",\n  \"name\": \"julia\",\n  \"scopeName\": \"source.julia\",\n  \"comment\": \"This grammar is used by Atom (Oniguruma), GitHub (PCRE), and VSCode (Oniguruma),\\nso all regexps must be compatible with both engines.\\n\\nSpecs:\\n- https://github.com/kkos/oniguruma/blob/master/doc/RE\\n- https://www.pcre.org/current/doc/html/\",\n  \"patterns\": [\n    {\n      \"include\": \"#operator\"\n    },\n    {\n      \"include\": \"#array\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#parentheses\"\n    },\n    {\n      \"include\": \"#bracket\"\n    },\n    {\n      \"include\": \"#function_decl\"\n    },\n    {\n      \"include\": \"#function_call\"\n    },\n    {\n      \"include\": \"#keyword\"\n    },\n    {\n      \"include\": \"#number\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#type_decl\"\n    },\n    {\n      \"include\": \"#symbol\"\n    }\n  ],\n  \"repository\": {\n    \"array\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.julia\"\n            }\n          },\n          \"end\": \"(\\\\])((?:\\\\.)?'*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.bracket.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.transpose.julia\"\n            }\n          },\n          \"name\": \"meta.array.julia\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\bbegin\\\\b\",\n              \"name\": \"constant.numeric.julia\"\n            },\n            {\n              \"match\": \"\\\\bend\\\\b\",\n              \"name\": \"constant.numeric.julia\"\n            },\n            {\n              \"match\": \"\\\\bfor\\\\b\",\n              \"name\": \"keyword.control.julia\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.julia\"\n            }\n          },\n          \"end\": \"(\\\\))((?:\\\\.)?'*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.bracket.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.transpose.julia\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bracket\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:\\\\(|\\\\)|\\\\[|\\\\]|\\\\{|\\\\}|,|;)(?!('|(?:\\\\.'))*\\\\.?')\",\n          \"name\": \"meta.bracket.julia\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.julia\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.julia\"\n        }\n      ]\n    },\n    \"comment_block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"#=\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.julia\"\n            }\n          },\n          \"end\": \"=#\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.julia\"\n            }\n          },\n          \"name\": \"comment.block.number-sign-equals.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_block\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\\\.?(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.type.julia\"\n            },\n            \"3\": {\n              \"name\": \"meta.bracket.julia\"\n            }\n          },\n          \"end\": \"\\\\)(('|(\\\\.'))*\\\\.?')?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.julia\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.transposed-func.julia\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\bfor\\\\b\",\n              \"name\": \"keyword.control.julia\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_decl\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.type.julia\"\n            }\n          },\n          \"match\": \"((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?(?=\\\\([^#]*\\\\)(::[^\\\\s]+)?(\\\\s*\\\\bwhere\\\\b\\\\s+.+?)?\\\\s*?=(?![=>]))\",\n          \"comment\": \"first group is function name\\nSecond group is type parameters (e.g. {T<:Number, S})\\nThen open parens\\nThen a lookahead ensures that we are followed by:\\n  - anything (function argumnets)\\n  - 0 or more spaces\\n  - Finally an equal sign\\nNegative lookahead ensures we don't have another equal sign (not `==`)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.dots.julia\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.julia\"\n            },\n            \"4\": {\n              \"name\": \"support.type.julia\"\n            }\n          },\n          \"match\": \"\\\\b(function|macro)(?:\\\\s+(?:(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*(\\\\.))?((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?|\\\\s*)(?=\\\\()\",\n          \"comment\": \"similar regex to previous, but with keyword not 1-line syntax\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?<![:_\\\\.])(?:function|mutable\\\\s+struct|struct|macro|quote|abstract\\\\s+type|primitive\\\\s+type|module|baremodule|where)\\\\b\",\n          \"name\": \"keyword.other.julia\"\n        },\n        {\n          \"comment\": \"special case for blocks to support tokenizing outer properly\",\n          \"begin\": \"\\\\b(for)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.julia\"\n            }\n          },\n          \"end\": \"(?<!,|\\\\s)(\\\\s*\\\\n)\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\bouter\\\\b\",\n              \"name\": \"keyword.other.julia\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:if|else|elseif|while|begin|let|do|try|catch|finally|return|break|continue)\\\\b\",\n          \"name\": \"keyword.control.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])end\\\\b\",\n          \"name\": \"keyword.control.end.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:global|local|const)\\\\b\",\n          \"name\": \"keyword.storage.modifier.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:export)\\\\b\",\n          \"name\": \"keyword.control.export.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:import)\\\\b\",\n          \"name\": \"keyword.control.import.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:using)\\\\b\",\n          \"name\": \"keyword.control.using.julia\"\n        },\n        {\n          \"match\": \"(?<=\\\\w\\\\s)\\\\b(as)\\\\b(?=\\\\s\\\\w)\",\n          \"name\": \"keyword.control.as.julia\"\n        },\n        {\n          \"match\": \"(@(\\\\.|(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*))\",\n          \"name\": \"support.function.macro.julia\"\n        }\n      ]\n    },\n    \"number\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?<!(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿]))(?:(?:\\\\b0(?:x|X)[0-9a-fA-F](?:_?[0-9a-fA-F])*)|(?:\\\\b0o[0-7](?:_?[0-7])*)|(?:\\\\b0b[0-1](?:_?[0-1])*)|(?:(?:\\\\b[0-9](?:_?[0-9])*\\\\.?(?!\\\\.)(?:[_0-9]*))|(?:\\\\b\\\\.[0-9](?:_?[0-9])*))(?:[efE][+-]?[0-9](?:_?[0-9])*)?(?:im\\\\b|Inf(?:16|32|64)?\\\\b|NaN(?:16|32|64)?\\\\b|π\\\\b|pi\\\\b|ℯ\\\\b)?|\\\\b[0-9]+|\\\\bInf(?:16|32|64)?\\\\b|\\\\bNaN(?:16|32|64)?\\\\b|\\\\bπ\\\\b|\\\\bpi\\\\b|\\\\bℯ\\\\b))('*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.conjugate-number.julia\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\bARGS\\\\b|\\\\bC_NULL\\\\b|\\\\bDEPOT_PATH\\\\b|\\\\bENDIAN_BOM\\\\b|\\\\bENV\\\\b|\\\\bLOAD_PATH\\\\b|\\\\bPROGRAM_FILE\\\\b|\\\\bstdin\\\\b|\\\\bstdout\\\\b|\\\\bstderr\\\\b|\\\\bVERSION\\\\b|\\\\bdevnull\\\\b\",\n          \"name\": \"constant.global.julia\"\n        },\n        {\n          \"match\": \"\\\\btrue\\\\b|\\\\bfalse\\\\b|\\\\bnothing\\\\b|\\\\bmissing\\\\b\",\n          \"name\": \"constant.language.julia\"\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:->|<-|-->|=>)\",\n          \"name\": \"keyword.operator.arrow.julia\"\n        },\n        {\n          \"match\": \"(?::=|\\\\+=|-=|\\\\*=|//=|/=|\\\\.//=|\\\\./=|\\\\.\\\\*=|\\\\\\\\=|\\\\.\\\\\\\\=|\\\\^=|\\\\.\\\\^=|%=|\\\\.%=|÷=|\\\\.÷=|\\\\|=|&=|\\\\.&=|⊻=|\\\\.⊻=|\\\\$=|<<=|>>=|>>>=|=(?!=))\",\n          \"name\": \"keyword.operator.update.julia\"\n        },\n        {\n          \"match\": \"(?:<<|>>>|>>|\\\\.>>>|\\\\.>>|\\\\.<<)\",\n          \"name\": \"keyword.operator.shift.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\s*(::|>:|<:)\\\\s*((?:(?:Union)?\\\\([^)]*\\\\)|[[:alpha:]_$∇][[:word:]⁺-ₜ!′\\\\.]*(?:(?:{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})|(?:\\\".+?(?<!\\\\\\\\)\\\"))?)))(?:\\\\.\\\\.\\\\.)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.relation.types.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.type.julia\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:===|∈|\\\\.∈|∉|\\\\.∉|∋|\\\\.∋|∌|\\\\.∌|≈|\\\\.≈|≉|\\\\.≉|≠|\\\\.≠|≡|\\\\.≡|≢|\\\\.≢|⊆|\\\\.⊆|⊇|\\\\.⊇|⊈|\\\\.⊈|⊉|\\\\.⊉|⊊|\\\\.⊊|⊋|\\\\.⊋|\\\\.==|!==|!=|\\\\.>=|\\\\.>|\\\\.<=|\\\\.<|\\\\.≤|\\\\.≥|==|\\\\.!=|\\\\.=|\\\\.!|<:|>:|:>|(?<!>)>=|(?<!<)<=|>|<|≥|≤)\",\n          \"name\": \"keyword.operator.relation.julia\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)(?:\\\\?)(?=\\\\s)\",\n          \"name\": \"keyword.operator.ternary.julia\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)(?:\\\\:)(?=\\\\s)\",\n          \"name\": \"keyword.operator.ternary.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\|\\\\||&&|(?<!(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿]))!)\",\n          \"name\": \"keyword.operator.boolean.julia\"\n        },\n        {\n          \"match\": \"(?<=[[:word:]⁺-ₜ!′∇\\\\)\\\\]\\\\}])(?::)\",\n          \"name\": \"keyword.operator.range.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\|>)\",\n          \"name\": \"keyword.operator.applies.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\||\\\\.\\\\||\\\\&|\\\\.\\\\&|~|\\\\.~|⊻|\\\\.⊻)\",\n          \"name\": \"keyword.operator.bitwise.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\+\\\\+|--|\\\\+|\\\\.\\\\+|-|\\\\.\\\\-|\\\\*|\\\\.\\\\*|//(?!=)|\\\\.//(?!=)|/|\\\\./|%|\\\\.%|\\\\\\\\|\\\\.\\\\\\\\|\\\\^|\\\\.\\\\^|÷|\\\\.÷|⋅|\\\\.⋅|∩|\\\\.∩|∪|\\\\.∪|×|√|∛)\",\n          \"name\": \"keyword.operator.arithmetic.julia\"\n        },\n        {\n          \"match\": \"(?:∘)\",\n          \"name\": \"keyword.operator.compose.julia\"\n        },\n        {\n          \"match\": \"(?:::|(?<=\\\\s)isa(?=\\\\s))\",\n          \"name\": \"keyword.operator.isa.julia\"\n        },\n        {\n          \"match\": \"(?:(?<=\\\\s)in(?=\\\\s))\",\n          \"name\": \"keyword.operator.relation.in.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\.(?=(?:@|_|\\\\p{L}))|\\\\.\\\\.+)\",\n          \"name\": \"keyword.operator.dots.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\$)(?=.+)\",\n          \"name\": \"keyword.operator.interpolation.julia\"\n        },\n        {\n          \"captures\": {\n            \"2\": {\n              \"name\": \"keyword.operator.transposed-variable.julia\"\n            }\n          },\n          \"match\": \"((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)(('|(\\\\.'))*\\\\.?')\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"bracket.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.transposed-matrix.julia\"\n            }\n          },\n          \"match\": \"(\\\\])((?:'|(?:\\\\.'))*\\\\.?')\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"bracket.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.transposed-parens.julia\"\n            }\n          },\n          \"match\": \"(\\\\))((?:'|(?:\\\\.'))*\\\\.?')\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(@doc)\\\\s((?:doc)?\\\"\\\"\\\")|(doc\\\"\\\"\\\"))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"(\\\"\\\"\\\") ?(->)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arrow.julia\"\n            }\n          },\n          \"name\": \"string.docstring.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(i?cxx)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.cxx.julia\",\n          \"contentName\": \"meta.embedded.inline.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#root_context\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(py)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"([\\\\s\\\\w]*)(\\\"\\\"\\\")\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.python.julia\",\n          \"contentName\": \"meta.embedded.inline.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(js)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.js.julia\",\n          \"contentName\": \"meta.embedded.inline.javascript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(R)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.R.julia\",\n          \"contentName\": \"meta.embedded.inline.r\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(raw)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"name\": \"string.quoted.other.julia\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(raw)(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.other.julia\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(sql)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.sql.julia\",\n          \"contentName\": \"meta.embedded.inline.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"var\\\"\\\"\\\"\",\n          \"end\": \"\\\"\\\"\\\"\",\n          \"name\": \"constant.other.symbol.julia\"\n        },\n        {\n          \"begin\": \"var\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"constant.other.symbol.julia\"\n        },\n        {\n          \"begin\": \"^\\\\s?(doc)?(\\\"\\\"\\\")\\\\s?$\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"(\\\"\\\"\\\")\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"string.docstring.julia\",\n          \"comment\": \"This only matches docstrings that start and end with triple quotes on\\ntheir own line in the void\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"'(?!')\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"string.quoted.single.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.multiline.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.multiline.end.julia\"\n            }\n          },\n          \"name\": \"string.quoted.triple.double.julia\",\n          \"comment\": \"multi-line string with triple double quotes\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.julia\",\n          \"begin\": \"\\\"(?!\\\"\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"comment\": \"String with single pair of double quotes. Regex matches isolated double quote\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"r\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.begin.julia\"\n            }\n          },\n          \"end\": \"(\\\"\\\"\\\")([imsx]{0,4})?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.regexp.end.julia\"\n            },\n            \"2\": {\n              \"comment\": \"I took this scope name from python regex grammar\",\n              \"name\": \"keyword.other.option-toggle.regexp.julia\"\n            }\n          },\n          \"name\": \"string.regexp.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"r\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.begin.julia\"\n            }\n          },\n          \"end\": \"(\\\")([imsx]{0,4})?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.regexp.end.julia\"\n            },\n            \"2\": {\n              \"comment\": \"I took this scope name from python regex grammar\",\n              \"name\": \"keyword.other.option-toggle.regexp.julia\"\n            }\n          },\n          \"name\": \"string.regexp.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!\\\")((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            },\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"end\": \"(\\\"\\\"\\\")((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"name\": \"string.quoted.other.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!\\\")((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            },\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"end\": \"(?<![^\\\\\\\\]\\\\\\\\)(\\\")((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"name\": \"string.quoted.other.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!`)((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?```\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            },\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"end\": \"(```)((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"name\": \"string.interpolated.backtick.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!`)((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            },\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"end\": \"(?<![^\\\\\\\\]\\\\\\\\)(`)((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"name\": \"string.interpolated.backtick.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(\\\\\\\\|[0-3]\\\\d{,2}|[4-7]\\\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)\",\n          \"name\": \"constant.character.escape.julia\"\n        }\n      ]\n    },\n    \"string_dollar_sign_interpolate\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\$(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*\",\n          \"name\": \"variable.interpolation.julia\"\n        },\n        {\n          \"begin\": \"\\\\$\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"variable.interpolation.julia\",\n          \"comment\": \"`punctuation.section.embedded`, `constant.escape`,\\n& `meta.embedded.line` were considered but appear to have even spottier\\nsupport among popular syntaxes.\",\n          \"patterns\": [\n            {\n              \"include\": \"#parentheses\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"symbol\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![[:word:]⁺-ₜ!′∇\\\\)\\\\]\\\\}]):(?:(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)(?!(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿]))(?![\\\"`])\",\n          \"name\": \"constant.other.symbol.julia\",\n          \"comment\": \"This is string.quoted.symbol.julia in tpoisot's package\"\n        }\n      ]\n    },\n    \"type_decl\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.julia\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.inherited-class.julia\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.inheritance.julia\"\n            }\n          },\n          \"match\": \"(?>!:_)(?:struct|mutable\\\\s+struct|abstract\\\\s+type|primitive\\\\s+type)\\\\s+((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)(\\\\s*(<:)\\\\s*(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*(?:{.*})?)?\",\n          \"name\": \"meta.type.julia\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/kotlin.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"kt\", \"kts\"],\n  \"foldingStartMarker\": \"(\\\\{\\\\s*(//.*)?$|^\\\\s*// \\\\{\\\\{\\\\{)\",\n  \"foldingStopMarker\": \"^\\\\s*(\\\\}|// \\\\}\\\\}\\\\}$)\",\n  \"name\": \"kotlin\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.kotlin\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.package.kotlin\"\n        }\n      },\n      \"match\": \"^\\\\s*(package)\\\\b(?:\\\\s*([^ ;$]+)\\\\s*)?\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.kotlin\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.java\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.kotlin\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type\"\n        }\n      },\n      \"match\": \"^\\\\s*(import)\\\\s+([^ $.]+(?:\\\\.(?:[`][^$`]+[`]|[^` $.]+))+)(?:\\\\s+(as)\\\\s+([`][^$`]+[`]|[^` $.]+))?\",\n      \"name\": \"meta.import.kotlin\"\n    },\n    {\n      \"include\": \"#code\"\n    }\n  ],\n  \"repository\": {\n    \"annotations\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(@[^ (]+)(\\\\()?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.annotation.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.annotation-arguments.begin.kotlin\"\n            }\n          },\n          \"end\": \"(\\\\)|\\\\s|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation-arguments.end.kotlin\"\n            }\n          },\n          \"name\": \"meta.declaration.annotation.kotlin\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.other.key.kotlin\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.kotlin\"\n                }\n              },\n              \"match\": \"(\\\\w*)\\\\s*(=)\"\n            },\n            {\n              \"include\": \"#code\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.seperator.property.kotlin\"\n            }\n          ]\n        },\n        {\n          \"match\": \"@\\\\w*\",\n          \"name\": \"storage.type.annotation.kotlin\"\n        }\n      ]\n    },\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(apply|also|let|takeIf|run|takeUnless|with|print|println)\\\\b\\\\s*(?={|\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.kotlin\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(mutableListOf|listOf|mutableMapOf|mapOf|mutableSetOf|setOf)\\\\b\\\\s*(?={|\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.kotlin\"\n            }\n          }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.kotlin\"\n            }\n          },\n          \"match\": \"/\\\\*\\\\*/\",\n          \"name\": \"comment.block.empty.kotlin\"\n        },\n        {\n          \"include\": \"#comments-inline\"\n        }\n      ]\n    },\n    \"comments-inline\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.kotlin\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.kotlin\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.double-slash.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.comment.kotlin\"\n            }\n          },\n          \"match\": \"\\\\s*((//).*$\\\\n?)\"\n        }\n      ]\n    },\n    \"class-literal\": {\n      \"begin\": \"(?=\\\\b(?:class|interface|object)\\\\s+\\\\w+)\\\\b\",\n      \"end\": \"(?=\\\\}|$)\",\n      \"name\": \"meta.class.kotlin\",\n      \"patterns\": [\n        {\n          \"include\": \"#keyword-literal\"\n        },\n        {\n          \"begin\": \"\\\\b(class|object|interface)\\\\b\\\\s+(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.class.kotlin\"\n            }\n          },\n          \"end\": \"(?=\\\\{|\\\\(|:|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#keyword-literal\"\n            },\n            {\n              \"include\": \"#annotations\"\n            },\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.declaration.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.inherited-class.kotlin\"\n            }\n          },\n          \"end\": \"(?={|=|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#braces\"\n        },\n        {\n          \"include\": \"#parens\"\n        }\n      ]\n    },\n    \"literal-functions\": {\n      \"begin\": \"(?=\\\\b(?:fun)\\\\b)\",\n      \"end\": \"(?=$|=|\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(fun)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.kotlin\"\n            }\n          },\n          \"end\": \"(?=\\\\()\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"entity.name.function.kotlin\"\n                }\n              },\n              \"match\": \"([\\\\.<\\\\?>\\\\w]+\\\\.)?(\\\\w+|(`[^`]*`))\"\n            },\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.declaration.kotlin\"\n            }\n          },\n          \"end\": \"(?={|=|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#braces\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.declaration.kotlin\"\n            }\n          },\n          \"end\": \"(?=,|=|\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\w+(?=:)\",\n          \"name\": \"variable.parameter.function.kotlin\"\n        },\n        {\n          \"include\": \"#keyword-literal\"\n        }\n      ]\n    },\n    \"keyword-literal\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\!in|\\\\!is|as\\\\?)\",\n          \"name\": \"keyword.operator.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(in|is|as|assert)\\\\b\",\n          \"name\": \"keyword.operator.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(const)\\\\b\",\n          \"name\": \"storage.modifier.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(val|var)\\\\b\",\n          \"name\": \"storage.type.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\_)\\\\b\",\n          \"name\": \"punctuation.definition.variable.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(data|inline|tailrec|operator|infix|typealias|reified)\\\\b\",\n          \"name\": \"storage.type.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(external|public|private|protected|internal|abstract|final|sealed|enum|open|annotation|override|vararg|typealias|expect|actual|suspend|yield|out|in)\\\\b\",\n          \"name\": \"storage.modifier.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(try|catch|finally|throw)\\\\b\",\n          \"name\": \"keyword.control.catch-exception.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(if|else|when)\\\\b\",\n          \"name\": \"keyword.control.conditional.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(while|for|do|return|break|continue)\\\\b\",\n          \"name\": \"keyword.control.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(constructor|init)\\\\b\",\n          \"name\": \"entity.name.function.constructor\"\n        },\n        {\n          \"match\": \"\\\\b(companion|object)\\\\b\",\n          \"name\": \"storage.type.kotlin\"\n        }\n      ]\n    },\n    \"keyword-operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(and|or|not|inv)\\\\b\",\n          \"name\": \"keyword.operator.bitwise.kotlin\"\n        },\n        {\n          \"match\": \"(==|!=|===|!==|<=|>=|<|>)\",\n          \"name\": \"keyword.operator.comparison.kotlin\"\n        },\n        {\n          \"match\": \"(=)\",\n          \"name\": \"keyword.operator.assignment.kotlin\"\n        },\n        {\n          \"match\": \"(:(?!:))\",\n          \"name\": \"keyword.operator.declaration.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\?:)\",\n          \"name\": \"keyword.operator.elvis.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\+\\\\=|\\\\-\\\\=|\\\\*\\\\=|\\\\/\\\\=)\",\n          \"name\": \"keyword.operator.arithmetic.assign.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\!|\\\\&\\\\&|\\\\|\\\\|)\",\n          \"name\": \"keyword.operator.logical.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\.\\\\.)\",\n          \"name\": \"keyword.operator.range.kotlin\"\n        }\n      ]\n    },\n    \"keyword-punctuation\": {\n      \"patterns\": [\n        {\n          \"match\": \"(::)\",\n          \"name\": \"punctuation.accessor.reference.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\?\\\\.)\",\n          \"name\": \"punctuation.accessor.dot.safe.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\.)\",\n          \"name\": \"punctuation.accessor.dot.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\,)\",\n          \"name\": \"punctuation.seperator.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\;)\",\n          \"name\": \"punctuation.terminator.kotlin\"\n        }\n      ]\n    },\n    \"keyword-constant\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(true|false|null|class)\\\\b\",\n          \"name\": \"constant.language.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(this|super)\\\\b\",\n          \"name\": \"variable.language.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(0(x|X)[0-9A-Fa-f_]*)[L]?\\\\b\",\n          \"name\": \"constant.numeric.hex.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(0(b|B)[0-1_]*)[L]?\\\\b\",\n          \"name\": \"constant.numeric.binary.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b([0-9][0-9_]*\\\\.[0-9][0-9_]*[fFL]?)\\\\b\",\n          \"name\": \"constant.numeric.float.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b([0-9][0-9_]*[fFL]?)\\\\b\",\n          \"name\": \"constant.numeric.integer.kotlin\"\n        }\n      ]\n    },\n    \"literal-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.kotlin\"\n            }\n          },\n          \"name\": \"string.quoted.double.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-content\"\n            }\n          ]\n        }\n      ]\n    },\n    \"literal-raw-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.kotlin\"\n            }\n          },\n          \"name\": \"string.quoted.triple.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-content\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-content\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.newline.kotlin\",\n          \"match\": \"\\\\\\\\\\\\s*\\\\n\"\n        },\n        {\n          \"name\": \"constant.character.escape.kotlin\",\n          \"match\": \"\\\\\\\\(x[\\\\da-fA-F]{2}|u[\\\\da-fA-F]{4}|.)\"\n        },\n        {\n          \"begin\": \"(\\\\$)(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.keyword.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.block.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.kotlin\"\n            }\n          },\n          \"name\": \"entity.string.template.element.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(Nothing|Any|Unit|String|CharSequence|Int|Boolean|Char|Long|Double|Float|Short|Byte|Array|List|Map|Set|dynamic)\\\\b(\\\\?)?\",\n          \"name\": \"support.class.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\\\\b(\\\\?)?\",\n          \"name\": \"support.class.kotlin\"\n        },\n        {\n          \"match\": \"((?:[a-zA-Z]\\\\w*\\\\.)*[A-Z]+\\\\w*[a-z]+\\\\w*)(\\\\?)\",\n          \"name\": \"entity.name.type.class.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#keyword-punctuation\"\n            },\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?:[a-z]\\\\w*(\\\\.))*[A-Z]+\\\\w*\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.dereference.kotlin\"\n            }\n          },\n          \"name\": \"entity.name.type.class.kotlin\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.kotlin\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#keyword-punctuation\"\n        },\n        {\n          \"include\": \"#keyword-operator\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.kotlin\"\n            }\n          },\n          \"name\": \"meta.group.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#keyword-punctuation\"\n            },\n            {\n              \"include\": \"#parameters\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.kotlin\"\n            }\n          },\n          \"name\": \"meta.block.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.end.kotlin\"\n            }\n          },\n          \"name\": \"meta.brackets.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#comments-inline\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#class-literal\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#braces\"\n        },\n        {\n          \"include\": \"#brackets\"\n        },\n        {\n          \"include\": \"#keyword-literal\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#keyword-operator\"\n        },\n        {\n          \"include\": \"#keyword-constant\"\n        },\n        {\n          \"include\": \"#keyword-punctuation\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#literal-functions\"\n        },\n        {\n          \"include\": \"#builtin-classes\"\n        },\n        {\n          \"include\": \"#literal-raw-string\"\n        },\n        {\n          \"include\": \"#literal-string\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.kotlin\",\n  \"uuid\": \"d9380650-5edc-447d-8dbd-98838c7d0adf\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/kusto.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"scopeName\": \"source.kusto\",\n  \"fileTypes\": [\"csl\", \"kusto\", \"kql\"],\n  \"name\": \"Kusto\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(by|from|of|to|step|with)\\\\b\",\n      \"name\": \"keyword.other.operator.kusto\",\n      \"comment\": \"Tabular operators: common helper operators\"\n    },\n    {\n      \"match\": \"\\\\b(let|set|alias|declare|pattern|query_parameters|restrict|access|set)\\\\b\",\n      \"name\": \"keyword.control.kusto\",\n      \"comment\": \"Query statements: https://docs.microsoft.com/en-us/azure/kusto/query/statements\"\n    },\n    {\n      \"match\": \"\\\\b(and|or|has_all|has_any|matches|regex)\\\\b\",\n      \"name\": \"keyword.other.operator.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/datatypes-string-operators\"\n    },\n    {\n      \"match\": \"\\\\b(cluster|database)(?:\\\\s*\\\\(\\\\s*(.+?)\\\\s*\\\\))?(?!\\\\w)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Strings\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.special.database.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/clusterfunction\"\n    },\n    {\n      \"match\": \"\\\\b(external_table|materialized_view|materialize|table|toscalar)\\\\b\",\n      \"name\": \"support.function.kusto\",\n      \"comment\": \"Special functions: https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/tablefunction\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)(!?between)\\\\b\",\n      \"name\": \"keyword.other.operator.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/betweenoperator\"\n    },\n    {\n      \"match\": \"\\\\b(binary_and|binary_or|binary_shift_left|binary_shift_right|binary_xor)(?:\\\\s*\\\\(\\\\s*(\\\\w+)\\\\s*,\\\\s*(\\\\w+)\\\\s*\\\\))?(?!\\\\w)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.scalar.bitwise.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/binoperators\"\n    },\n    {\n      \"match\": \"\\\\b(binary_not|bitset_count_ones)(?:\\\\s*\\\\(\\\\s*(\\\\w+)\\\\s*\\\\))?(?!\\\\w)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.scalar.bitwise.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/binary-notfunction\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)(!?in~?)(?!\\\\w)\",\n      \"name\": \"keyword.other.operator.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/in-cs-operator\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)(!?(?:contains|endswith|hasprefix|hassuffix|has|startswith)(?:_cs)?)(?!\\\\w)\",\n      \"name\": \"keyword.other.operator.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/datatypes-string-operators\"\n    },\n    {\n      \"match\": \"\\\\b(range)\\\\s*\\\\((?:\\\\s*(\\\\w+(?:\\\\(.*?\\\\))?)\\\\s*,\\\\s*(\\\\w+(?:\\\\(.*?\\\\))?)\\\\s*,?(?:\\\\s*)?(\\\\w+(?:\\\\(.*?\\\\))?)?\\\\s*\\\\))?(?!\\\\w)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#DateTimeTimeSpanDataTypes\"\n            },\n            {\n              \"include\": \"#TimeSpanLiterals\"\n            },\n            {\n              \"include\": \"#DateTimeTimeSpanFunctions\"\n            },\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#DateTimeTimeSpanDataTypes\"\n            },\n            {\n              \"include\": \"#TimeSpanLiterals\"\n            },\n            {\n              \"include\": \"#DateTimeTimeSpanFunctions\"\n            },\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#DateTimeTimeSpanDataTypes\"\n            },\n            {\n              \"include\": \"#TimeSpanLiterals\"\n            },\n            {\n              \"include\": \"#DateTimeTimeSpanFunctions\"\n            },\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.scalar.function.range.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/rangefunction\"\n    },\n    {\n      \"match\": \"\\\\b(abs|acos|around|array_concat|array_iff|array_index_of|array_length|array_reverse|array_rotate_left|array_rotate_right|array_shift_left|array_shift_right|array_slice|array_sort_asc|array_sort_desc|array_split|array_sum|asin|assert|atan2|atan|bag_has_key|bag_keys|bag_merge|bag_remove_keys|base64_decode_toarray|base64_decode_tostring|base64_decode_toguid|base64_encode_fromarray|base64_encode_tostring|base64_encode_fromguid|beta_cdf|beta_inv|beta_pdf|bin_at|bin_auto|case|ceiling|coalesce|column_ifexists|convert_angle|convert_energy|convert_force|convert_length|convert_mass|convert_speed|convert_temperature|convert_volume|cos|cot|countof|current_cluster_endpoint|current_database|current_principal_details|current_principal_is_member_of|current_principal|cursor_after|cursor_before_or_at|cursor_current|current_cursor|dcount_hll|degrees|dynamic_to_json|estimate_data_size|exp10|exp2|exp|extent_id|extent_tags|extract_all|extract_json|extractjson|extract|floor|format_bytes|format_ipv4_mask|format_ipv4|gamma|gettype|gzip_compress_to_base64_string|gzip_decompress_from_base64_string|has_any_index|has_any_ipv4_prefix|has_any_ipv4|has_ipv4_prefix|has_ipv4|hash_combine|hash_many|hash_md5|hash_sha1|hash_sha256|hash_xxhash64|hash|iff|iif|indexof_regex|indexof|ingestion_time|ipv4_compare|ipv4_is_in_range|ipv4_is_in_any_range|ipv4_is_match|ipv4_is_private|ipv4_netmask_suffix|ipv6_compare|ipv6_is_match|isascii|isempty|isfinite|isinf|isnan|isnotempty|notempty|isnotnull|notnull|isnull|isutf8|jaccard_index|log10|log2|loggamma|log|make_string|max_of|min_of|new_guid|not|bag_pack|pack_all|pack_array|pack_dictionary|pack|parse_command_line|parse_csv|parse_ipv4_mask|parse_ipv4|parse_ipv6_mask|parse_ipv6|parse_path|parse_urlquery|parse_url|parse_user_agent|parse_version|parse_xml|percentile_tdigest|percentile_array_tdigest|percentrank_tdigest|pi|pow|radians|rand|rank_tdigest|regex_quote|repeat|replace_regex|replace_string|reverse|round|set_difference|set_has_element|set_intersect|set_union|sign|sin|split|sqrt|strcat_array|strcat_delim|strcmp|strcat|string_size|strlen|strrep|substring|tan|to_utf8|tobool|todecimal|todouble|toreal|toguid|tohex|toint|tolong|tolower|tostring|toupper|translate|treepath|trim_end|trim_start|trim|unixtime_microseconds_todatetime|unixtime_milliseconds_todatetime|unixtime_nanoseconds_todatetime|unixtime_seconds_todatetime|url_decode|url_encode_component|url_encode|welch_test|zip|zlib_compress_to_base64_string|zlib_decompress_from_base64_string)\\\\b\",\n      \"name\": \"support.function.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions\"\n    },\n    {\n      \"match\": \"\\\\b(bin)(?:\\\\s*\\\\(\\\\s*(.+?)\\\\s*,\\\\s*(.+?)\\\\s*\\\\))?(?!\\\\w)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#DateTimeTimeSpanDataTypes\"\n            },\n            {\n              \"include\": \"#TimeSpanLiterals\"\n            },\n            {\n              \"include\": \"#DateTimeTimeSpanFunctions\"\n            },\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#TimeSpanLiterals\"\n            },\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.scalar.function.bin.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/binfunction\"\n    },\n    {\n      \"match\": \"\\\\b(count)\\\\s*\\\\(\\\\s*\\\\)(?!\\\\w)\",\n      \"name\": \"support.function.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/count-aggfunction\"\n    },\n    {\n      \"match\": \"\\\\b(arg_max|arg_min|avgif|avg|binary_all_and|binary_all_or|binary_all_xor|buildschema|countif|dcount|dcountif|hll|hll_merge|make_bag_if|make_bag|make_list_with_nulls|make_list_if|make_list|make_set_if|make_set|maxif|max|minif|min|percentilesw_array|percentiles_array|percentilesw|percentilew|percentiles|percentile|stdevif|stdevp|stdev|sumif|sum|take_anyif|take_any|tdigest_merge|merge_tdigest|tdigest|varianceif|variancep|variance)\\\\b\",\n      \"name\": \"support.function.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/aggregation-functions\"\n    },\n    {\n      \"match\": \"\\\\b(geo_distance_2points|geo_distance_point_to_line|geo_distance_point_to_polygon|geo_intersects_2lines|geo_intersects_2polygons|geo_intersects_line_with_polygon|geo_intersection_2lines|geo_intersection_2polygons|geo_intersection_line_with_polygon|geo_line_centroid|geo_line_densify|geo_line_length|geo_line_simplify|geo_polygon_area|geo_polygon_centroid|geo_polygon_densify|geo_polygon_perimeter|geo_polygon_simplify|geo_polygon_to_s2cells|geo_point_in_circle|geo_point_in_polygon|geo_point_to_geohash|geo_point_to_h3cell|geo_point_to_s2cell|geo_geohash_to_central_point|geo_geohash_neighbors|geo_geohash_to_polygon|geo_s2cell_to_central_point|geo_s2cell_neighbors|geo_s2cell_to_polygon|geo_h3cell_to_central_point|geo_h3cell_neighbors|geo_h3cell_to_polygon|geo_h3cell_parent|geo_h3cell_children|geo_h3cell_level|geo_h3cell_rings|geo_simplify_polygons_array|geo_union_lines_array|geo_union_polygons_array)\\\\b\",\n      \"name\": \"support.function.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/geospatial-grid-systems\"\n    },\n    {\n      \"match\": \"\\\\b(next|prev|row_cumsum|row_number|row_rank|row_window_session)\\\\b\",\n      \"name\": \"support.function.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/windowsfunctions\"\n    },\n    {\n      \"match\": \"\\\\.(create-or-alter|replace)\",\n      \"name\": \"keyword.control.kusto\",\n      \"comment\": \"User-defined functions: https://docs.microsoft.com/en-us/azure/kusto/query/functions/user-defined-functions\"\n    },\n    {\n      \"match\": \"(?<=let ).+(?=\\\\W*=)\",\n      \"name\": \"entity.function.name.lambda.kusto\",\n      \"comment\": \"User-defined functions: https://docs.microsoft.com/en-us/azure/kusto/query/functions/user-defined-functions\"\n    },\n    {\n      \"match\": \"\\\\b(folder|docstring|skipvalidation)\\\\b\",\n      \"name\": \"keyword.other.operator.kusto\",\n      \"comment\": \"User-defined functions: https://docs.microsoft.com/en-us/azure/kusto/query/functions/user-defined-functions\"\n    },\n    {\n      \"match\": \"\\\\b(function)\\\\b\",\n      \"name\": \"storage.type.kusto\"\n    },\n    {\n      \"match\": \"\\\\b(bool|decimal|dynamic|guid|int|long|real|string)\\\\b\",\n      \"name\": \"storage.type.kusto\",\n      \"comment\": \"Data types: https://docs.microsoft.com/en-us/azure/kusto/query/scalar-data-types\"\n    },\n    {\n      \"match\": \"\\\\b(as)\\\\s+(\\\\w+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.kusto\"\n        }\n      },\n      \"name\": \"meta.query.as.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/asoperator\"\n    },\n    {\n      \"match\": \"\\\\b(datatable)(?=\\\\W*\\\\()\",\n      \"name\": \"keyword.other.query.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/datatableoperator\"\n    },\n    {\n      \"match\": \"\\\\b(facet)(?:\\\\s+(by))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        }\n      },\n      \"name\": \"meta.query.facet.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/facetoperator\"\n    },\n    {\n      \"match\": \"\\\\b(invoke)(?:\\\\s+(\\\\w+))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.kusto\"\n        }\n      },\n      \"name\": \"meta.query.invoke.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/invokeoperator\"\n    },\n    {\n      \"match\": \"\\\\b(order)(?:\\\\s+(by)\\\\s+(\\\\w+))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.column.kusto\"\n        }\n      },\n      \"name\": \"meta.query.order.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/orderoperator\"\n    },\n    {\n      \"match\": \"\\\\b(range)\\\\s+(\\\\w+)\\\\s+(from)\\\\s+(\\\\w+(?:\\\\(\\\\w*\\\\))?)\\\\s+(to)\\\\s+(\\\\w+(?:\\\\(\\\\w*\\\\))?)\\\\s+(step)\\\\s+(\\\\w+(?:\\\\(\\\\w*\\\\))?)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.column.kusto\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#TimeSpanLiterals\"\n            },\n            {\n              \"include\": \"#DateTimeTimeSpanFunctions\"\n            },\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#TimeSpanLiterals\"\n            },\n            {\n              \"include\": \"#DateTimeTimeSpanFunctions\"\n            },\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#TimeSpanLiterals\"\n            },\n            {\n              \"include\": \"#DateTimeTimeSpanFunctions\"\n            },\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.query.range.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/rangeoperator\"\n    },\n    {\n      \"match\": \"\\\\b(sample)(?:\\\\s+(\\\\d+))?(?![\\\\w-])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.query.sample.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/sampleoperator\"\n    },\n    {\n      \"match\": \"\\\\b(sample-distinct)(?:\\\\s+(\\\\d+)\\\\s+(of)\\\\s+(\\\\w+))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.column.kusto\"\n        }\n      },\n      \"name\": \"meta.query.sample-distinct.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/sampledistinctoperator\"\n    },\n    {\n      \"match\": \"\\\\b(sort)(?:\\\\s+(by))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        }\n      },\n      \"name\": \"meta.query.sort.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/sortoperator\"\n    },\n    {\n      \"match\": \"\\\\b(take|limit)(?:\\\\s+(\\\\d+))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.query.take.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/takeoperator\"\n    },\n    {\n      \"match\": \"\\\\b(top)(?:\\\\s+(\\\\d+)\\\\s+(by)\\\\s+(\\\\w+))?(?![\\\\w-])\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.column.kusto\"\n        }\n      },\n      \"name\": \"meta.query.top.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/topoperator\"\n    },\n    {\n      \"match\": \"\\\\b(top-hitters)(?:\\\\s+(\\\\d+)\\\\s+(of)\\\\s+(\\\\w+)(?:\\\\s+(by)\\\\s+(\\\\w+))?)?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.query.kusto\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Numeric\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.column.kusto\"\n        },\n        \"5\": {\n          \"name\": \"keyword.other.operator.kusto\"\n        },\n        \"6\": {\n          \"name\": \"variable.other.column.kusto\"\n        }\n      },\n      \"name\": \"meta.query.top-hitters.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/tophittersoperator\"\n    },\n    {\n      \"match\": \"\\\\b(consume|count|distinct|evaluate|extend|externaldata|find|fork|getschema|join|lookup|make-series|mv-apply|mv-expand|project-away|project-keep|project-rename|project-reorder|project|parse|parse-where|parse-kv|partition|print|reduce|render|scan|search|serialize|shuffle|summarize|top-nested|union|where)\\\\b\",\n      \"name\": \"keyword.other.query.kusto\",\n      \"comment\": \"Tabular operators: https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/queries\"\n    },\n    {\n      \"match\": \"\\\\b(active_users_count|activity_counts_metrics|activity_engagement|new_activity_metrics|activity_metrics|autocluster|azure_digital_twins_query_request|bag_unpack|basket|cosmosdb_sql_request|dcount_intersect|diffpatterns|funnel_sequence_completion|funnel_sequence|http_request_post|http_request|infer_storage_schema|ipv4_lookup|mysql_request|narrow|pivot|preview|rolling_percentile|rows_near|schema_merge|session_count|sequence_detect|sliding_window_counts|sql_request)\\\\b\",\n      \"name\": \"support.function.kusto\",\n      \"comment\": \"Tabular operators: evalute (plugins): https://docs.microsoft.com/en-us/azure/kusto/query/evaluateoperator\"\n    },\n    {\n      \"match\": \"\\\\b(on|kind|hint\\\\.remote|hint\\\\.strategy)\\\\b\",\n      \"name\": \"keyword.other.operator.kusto\",\n      \"comment\": \"Tabular operators: join: https://docs.microsoft.com/en-us/azure/kusto/query/joinoperator\"\n    },\n    {\n      \"match\": \"(\\\\$left|\\\\$right)\\\\b\",\n      \"name\": \"keyword.other.kusto\",\n      \"comment\": \"Tabular operators: join ($left, $right): https://docs.microsoft.com/en-us/azure/kusto/query/joinoperator\"\n    },\n    {\n      \"match\": \"\\\\b(innerunique|inner|leftouter|rightouter|fullouter|leftanti|anti|leftantisemi|rightanti|rightantisemi|leftsemi|rightsemi|broadcast)\\\\b\",\n      \"name\": \"keyword.other.kusto\",\n      \"comment\": \"Tabular operators: join (kinds, strategies): https://docs.microsoft.com/en-us/azure/kusto/query/joinoperator\"\n    },\n    {\n      \"match\": \"\\\\b(series_abs|series_acos|series_add|series_asin|series_atan|series_cos|series_decompose|series_decompose_anomalies|series_decompose_forecast|series_divide|series_equals|series_exp|series_fft|series_fill_backward|series_fill_const|series_fill_forward|series_fill_linear|series_fir|series_fit_2lines_dynamic|series_fit_2lines|series_fit_line_dynamic|series_fit_line|series_fit_poly|series_greater_equals|series_greater|series_ifft|series_iir|series_less_equals|series_less|series_multiply|series_not_equals|series_outliers|series_pearson_correlation|series_periods_detect|series_periods_validate|series_pow|series_seasonal|series_sign|series_sin|series_stats|series_stats_dynamic|series_subtract|series_tan)\\\\b\",\n      \"name\": \"support.function.kusto\",\n      \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/machine-learning-and-tsa\"\n    },\n    {\n      \"match\": \"\\\\b(bag|array)\\\\b\",\n      \"name\": \"keyword.other.operator.kusto\",\n      \"comment\": \"Tabular operators: mv-expand (bagexpand options): https://docs.microsoft.com/en-us/azure/kusto/query/mvexpandoperator\"\n    },\n    {\n      \"match\": \"\\\\b(asc|desc|nulls first|nulls last)\\\\b\",\n      \"name\": \"keyword.other.kusto\",\n      \"comment\": \"Tabular operators: order: https://docs.microsoft.com/en-us/azure/kusto/query/orderoperator\"\n    },\n    {\n      \"match\": \"\\\\b(regex|simple|relaxed)\\\\b\",\n      \"name\": \"keyword.other.kusto\",\n      \"comment\": \"Tabular operators: parse: https://docs.microsoft.com/en-us/azure/kusto/query/parseoperator\"\n    },\n    {\n      \"match\": \"\\\\b(anomalychart|areachart|barchart|card|columnchart|ladderchart|linechart|piechart|pivotchart|scatterchart|stackedareachart|timechart|timepivot)\\\\b\",\n      \"name\": \"support.function.kusto\"\n    },\n    {\n      \"include\": \"#Strings\"\n    },\n    {\n      \"match\": \"\\\\{.*?\\\\}\",\n      \"name\": \"string.other.kusto\"\n    },\n    {\n      \"match\": \"//.*\",\n      \"name\": \"comment.line.kusto\",\n      \"comment\": \"Comments\"\n    },\n    {\n      \"include\": \"#TimeSpanLiterals\"\n    },\n    {\n      \"include\": \"#DateTimeTimeSpanFunctions\"\n    },\n    {\n      \"include\": \"#DateTimeTimeSpanDataTypes\"\n    },\n    {\n      \"include\": \"#Numeric\"\n    },\n    {\n      \"match\": \"\\\\b(true|false|null)\\\\b\",\n      \"name\": \"constant.language.kusto\"\n    },\n    {\n      \"match\": \"\\\\b(anyif|any|array_strcat|base64_decodestring|base64_encodestring|make_dictionary|makelist|makeset|mvexpand|todynamic|parse_json|replace|weekofyear)(?=\\\\W*\\\\(|\\\\b)\",\n      \"name\": \"invalid.deprecated.kusto\",\n      \"comment\": \"Deprecated functions\"\n    }\n  ],\n  \"repository\": {\n    \"Strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([@h]?\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.kusto\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.kusto\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#Escapes\"\n            }\n          ],\n          \"name\": \"string.quoted.double.kusto\",\n          \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/scalar-data-types/string\"\n        },\n        {\n          \"begin\": \"([@h]?')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.kusto\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.kusto\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#Escapes\"\n            }\n          ],\n          \"name\": \"string.quoted.single.kusto\",\n          \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/scalar-data-types/string\"\n        }\n      ]\n    },\n    \"Escapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\['\\\"]\",\n          \"name\": \"constant.character.escape.kusto\"\n        }\n      ]\n    },\n    \"Numeric\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*+)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?(?=\\\\b|\\\\w)\",\n          \"name\": \"constant.numeric.kusto\"\n        }\n      ]\n    },\n    \"TimeSpanLiterals\": {\n      \"patterns\": [\n        {\n          \"match\": \"[+-]?(?:\\\\d*\\\\.)?\\\\d+(?:microseconds?|ticks?|seconds?|ms|d|h|m|s)\\\\b\",\n          \"name\": \"constant.numeric.kusto\",\n          \"comment\": \"timespan literals: https://docs.microsoft.com/en-us/azure/kusto/query/scalar-data-types/timespan#timespan-literals\"\n        }\n      ]\n    },\n    \"DateTimeTimeSpanFunctions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(format_datetime)(?:\\\\s*\\\\(\\\\s*(.+?)\\\\s*,\\\\s*(['\\\"].*?['\\\"])\\\\s*\\\\))?(?!\\\\w)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.kusto\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#DateTimeTimeSpanDataTypes\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#Strings\"\n                }\n              ]\n            }\n          },\n          \"name\": \"meta.scalar.function.format_datetime.kusto\",\n          \"comment\": \"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/format-datetimefunction\"\n        },\n        {\n          \"match\": \"\\\\b(ago|datetime_add|datetime_diff|datetime_local_to_utc|datetime_part|datetime_utc_to_local|dayofmonth|dayofweek|dayofyear|endofday|endofmonth|endofweek|endofyear|format_timespan|getmonth|getyear|hourofday|make_datetime|make_timespan|monthofyear|now|startofday|startofmonth|startofweek|startofyear|todatetime|totimespan|week_of_year)(?=\\\\W*\\\\()\",\n          \"name\": \"support.function.kusto\",\n          \"comment\": \"Scalar function: DateTime/Timespan Functions: https://docs.microsoft.com/en-us/azure/kusto/query/scalarfunctions#datetimetimespan-functions\"\n        }\n      ]\n    },\n    \"DateTimeTimeSpanDataTypes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(datetime|timespan|time)\\\\b\",\n          \"name\": \"storage.type.kusto\"\n        }\n      ]\n    }\n  },\n  \"uuid\": \"FF0550E0-3A29-11E3-AA6E-0800200C9B77\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/latex.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/LaTeX.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jlelong/vscode-latex-basics/commit/7b08daed22963695616ef432c9d027427da5f450\",\n  \"name\": \"latex\",\n  \"scopeName\": \"text.tex.latex\",\n  \"patterns\": [\n    {\n      \"comment\": \"This scope identifies partially typed commands such as `\\\\tab`. We use this to trigger “Command Completion” only when it makes sense.\",\n      \"match\": \"(?<=\\\\\\\\[\\\\w@]|\\\\\\\\[\\\\w@]{2}|\\\\\\\\[\\\\w@]{3}|\\\\\\\\[\\\\w@]{4}|\\\\\\\\[\\\\w@]{5}|\\\\\\\\[\\\\w@]{6})\\\\s\",\n      \"name\": \"meta.space-after-command.latex\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:usepackage|documentclass))((?:\\\\[[^\\\\[]*?\\\\])*)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.preamble.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"contentName\": \"support.class.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.preamble.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:include|input))(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.include.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.include.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)((?:sub){0,2}section|(?:sub)?paragraph|chapter|part|addpart|addchap|addsec|minisec|frametitle)(?:\\\\*)?)((?:\\\\[[^\\\\[]*?\\\\]){0,2})(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.section.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"comment\": \"this works OK with all kinds of crazy stuff as long as section is one line\",\n      \"contentName\": \"entity.name.section.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.section.$3.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.function.environment.songs.latex\",\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{songs\\\\}\\\\{.*\\\\})\",\n      \"end\": \"(\\\\\\\\end\\\\{songs\\\\}(?:\\\\s*\\\\n)?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#env-mandatory-arg\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"meta.data.environment.songs.latex\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.chord.block.latex support.class.chord.block.environment.latex\",\n          \"begin\": \"\\\\\\\\\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.chord.block.latex support.class.chord.block.environment.latex\",\n          \"match\": \"\\\\^\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=\\\\\\\\begin\\\\{(lstlisting|minted|pyglist)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.latex\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.latex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:cpp|c)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.cpp.embedded.latex\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp.embedded.latex\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{css\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{html\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{java\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.java\",\n          \"patterns\": [\n            {\n              \"include\": \"source.java\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:js|javascript)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:ts|typescript)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.ts\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{lua\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"source.lua\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:python|py)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(julia)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(ruby)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{xml\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{yaml\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.yaml\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{(?:lstlisting|minted|pyglist)\\\\}(?:\\\\[.*\\\\])?)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#env-mandatory-arg\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"meta.function.embedded.latex\",\n          \"end\": \"(\\\\\\\\end\\\\{(?:lstlisting|minted|pyglist)\\\\})\",\n          \"name\": \"meta.embedded.block.generic.latex\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{(cppcode(?:\\\\*)?)\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#code-env\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.cpp.embedded.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp.embedded.latex\"\n        },\n        {\n          \"include\": \"source.cpp\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{(hscode(?:\\\\*)?)\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#code-env\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"source.haskell\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{(luacode(?:\\\\*)?)\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#code-env\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.lua\",\n      \"patterns\": [\n        {\n          \"include\": \"source.lua\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{((?:julia|jl)(?:code|verbatim|block|concode|console|converbatim)(?:\\\\*)?)\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#code-env\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.julia\",\n      \"patterns\": [\n        {\n          \"include\": \"source.julia\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{((?:(?:(?:py|pylab|sympy)(?:code|verbatim|block|concode|console|converbatim))|sageblock|sagesilent|sageverbatim|sageexample|sagecommandline)(?:\\\\*)?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#env-mandatory-arg\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.python\",\n      \"patterns\": [\n        {\n          \"include\": \"source.python\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{(scalacode(?:\\\\*)?)\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#code-env\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.scala\",\n      \"patterns\": [\n        {\n          \"include\": \"source.scala\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{([a-z]*code(?:\\\\*)?)\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#code-env\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{asy\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#code-env\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.asymptote\",\n      \"patterns\": [\n        {\n          \"include\": \"source.asymptote\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{asy\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{dot2tex\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#code-env\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.dot\",\n      \"patterns\": [\n        {\n          \"include\": \"source.dot\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{dot2tex\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{gnuplot\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#code-env\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.gnuplot\",\n      \"patterns\": [\n        {\n          \"include\": \"source.gnuplot\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{gnuplot\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)addplot)(?:\\\\+?)((?:\\\\[[^\\\\[]*\\\\]))*\\\\s*(gnuplot)\\\\s*((?:\\\\[[^\\\\[]*\\\\]))*\\\\s*(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"%\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.latex\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.percentage.latex\"\n        },\n        {\n          \"include\": \"source.gnuplot\"\n        }\n      ],\n      \"end\": \"\\\\s*(\\\\};)\"\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)((?:fboxv|boxedv|V|v|spv)erbatim\\\\*?)(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"contentName\": \"markup.raw.verbatim.latex\",\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(\\\\4)(\\\\})\",\n      \"name\": \"meta.function.verbatim.latex\"\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)(VerbatimOut)(\\\\})(\\\\{)([^\\\\}]*)(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"7\": {\n          \"name\": \"support.class.latex\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"contentName\": \"markup.raw.verbatim.latex\",\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(\\\\VerbatimOut)(\\\\})\",\n      \"name\": \"meta.function.verbatim.latex\"\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)(alltt)(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"contentName\": \"markup.raw.verbatim.latex\",\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(alltt)(\\\\})\",\n      \"name\": \"meta.function.alltt.latex\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.function.latex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)[A-Za-z]+\",\n          \"name\": \"support.function.general.latex\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)((?:C|c)omment)(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"contentName\": \"punctuation.definition.comment.latex\",\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(\\\\4)(\\\\})\",\n      \"name\": \"meta.function.verbatim.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.url.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"markup.underline.link.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"match\": \"(?:\\\\s*)((\\\\\\\\)(?:url|href))(\\\\{)([^}]*)(\\\\})\",\n      \"name\": \"meta.function.link.url.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"comment\": \"These two patterns match the \\\\begin{document} and \\\\end{document} commands, so that the environment matching pattern following them will ignore those commands.\",\n      \"match\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)(document)(\\\\})\",\n      \"name\": \"meta.function.begin-document.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"match\": \"(?:\\\\s*)((\\\\\\\\)end)(\\\\{)(document)(\\\\})\",\n      \"name\": \"meta.function.end-document.latex\"\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)((?:array|equation|(?:IEEE)?eqnarray|multline|align|aligned|alignat|alignedat|flalign|flaligned|flalignat|split|gather|gathered|cases|(?:display)?math|[a-zA-Z]*matrix|[pbBvV]?NiceMatrix|[pbBvV]?NiceArray|(?:(?:arg)?(?:mini|maxi)))(?:\\\\*|!)?)(\\\\})(\\\\s*\\\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"contentName\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"end\": \"(?:\\\\s*)((\\\\\\\\)end)(\\\\{)(\\\\4)(\\\\})(?:\\\\s*\\\\n)?\",\n      \"name\": \"meta.function.environment.math.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\\\\\)&\",\n          \"name\": \"keyword.control.equation.align.latex\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\\\",\n          \"name\": \"keyword.control.equation.newline.latex\"\n        },\n        {\n          \"include\": \"#definition-label\"\n        },\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:\\\\s*)(\\\\\\\\begin\\\\{empheq\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#env-mandatory-arg\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"end\": \"(?:\\\\s*)(\\\\\\\\end\\\\{empheq\\\\})\",\n      \"name\": \"meta.function.environment.math.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\\\\\)&\",\n          \"name\": \"keyword.control.equation.align.latex\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\\\",\n          \"name\": \"keyword.control.equation.newline.latex\"\n        },\n        {\n          \"include\": \"#definition-label\"\n        },\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)(tabular[xy*]?|xltabular|longtable|(?:long)?tabu|(?:long|tall)?tblr|NiceTabular[X*]?)(\\\\})(\\\\s*\\\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"contentName\": \"meta.data.environment.tabular.latex\",\n      \"end\": \"(?:\\\\s*)((\\\\\\\\)end)(\\\\{)(\\\\4)(\\\\})(?:\\\\s*\\\\n)?\",\n      \"name\": \"meta.function.environment.tabular.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\\\\\)&\",\n          \"name\": \"keyword.control.table.cell.latex\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\\\",\n          \"name\": \"keyword.control.table.newline.latex\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)(itemize|enumerate|description|list)(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(\\\\4)(\\\\})(?:\\\\s*\\\\n)?\",\n      \"name\": \"meta.function.environment.list.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)(tikzpicture)(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(tikzpicture)(\\\\})(?:\\\\s*\\\\n)?\",\n      \"name\": \"meta.function.environment.latex.tikz\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)(frame)(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(frame)(\\\\})\",\n      \"name\": \"meta.function.environment.frame.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)(mpost[*]?)(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(\\\\4)(\\\\})(?:\\\\s*\\\\n)?\",\n      \"name\": \"meta.function.environment.latex.mpost\"\n    },\n    {\n      \"begin\": \"(?:\\\\s*)?((\\\\\\\\)begin(\\\\{)(markdown)\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(markdown)(\\\\})\",\n      \"contentName\": \"meta.embedded.markdown_latex_combined\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex.markdown_latex_combined\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)(\\\\w+[*]?)(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"end\": \"((\\\\\\\\)end)(\\\\{)(\\\\4)(\\\\})(?:\\\\s*\\\\n)?\",\n      \"name\": \"meta.function.environment.general.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"support.function.general.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.end.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:newcommand|renewcommand|(?:re)?newrobustcmd|DeclareRobustCommand))\\\\*?({)((\\\\\\\\)[^}]*)(})\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)marginpar)((?:\\\\[[^\\\\[]*?\\\\])*)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.marginpar.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.marginpar.begin.latex\"\n        }\n      },\n      \"contentName\": \"meta.paragraph.margin.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.marginpar.end.latex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)footnote)((?:\\\\[[^\\\\[]*?\\\\])*)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.footnote.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.footnote.begin.latex\"\n        }\n      },\n      \"contentName\": \"entity.name.footnote.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.footnote.end.latex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)emph)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.emph.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.emph.begin.latex\"\n        }\n      },\n      \"contentName\": \"markup.italic.emph.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.emph.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.emph.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)textit)(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.textit.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.textit.begin.latex\"\n        }\n      },\n      \"comment\": \"We put the keyword in a capture and name this capture, so that disabling spell checking for “keyword” won't be inherited by the argument to \\\\textit{...}.\\n\\nPut specific matches for particular LaTeX keyword.functions before the last two more general functions\",\n      \"contentName\": \"markup.italic.textit.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.textit.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.textit.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)textbf)(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.textbf.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.textbf.begin.latex\"\n        }\n      },\n      \"contentName\": \"markup.bold.textbf.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.textbf.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.textbf.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)texttt)(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.texttt.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.texttt.begin.latex\"\n        }\n      },\n      \"contentName\": \"markup.raw.texttt.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.texttt.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.texttt.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.other.item.latex\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)item\\\\b\",\n      \"name\": \"meta.scope.item.latex\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:[aA]uto|foot|full|no|short|[tT]ext|[pP]aren|[sS]mart)?[cC]ite(?:al)?(?:p|s|t|author|year(?:par)?|title)?[ANP]*\\\\*?)((?:(?:\\\\([^\\\\)]*\\\\)){0,2}(?:\\\\[[^\\\\]]*\\\\]){0,2}\\\\{[\\\\w:.]*\\\\})*)(?:([<\\\\[])[^\\\\]<>]*([>\\\\]]))?(?:(\\\\[)[^\\\\]]*(\\\\]))?(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.cite.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#autocites-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.citation.latex\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.percentage.tex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.comment.tex\"\n            }\n          },\n          \"match\": \"((%).*)$\"\n        },\n        {\n          \"match\": \"[\\\\w:.-]+\",\n          \"name\": \"constant.other.reference.citation.latex\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)bibentry)(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.cite.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.citation.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"[\\\\w:.]+\",\n          \"name\": \"constant.other.reference.citation.latex\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:\\\\w*[r|R]ef\\\\*?))(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ref.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.reference.label.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"[a-zA-Z0-9\\\\.,:/*!^_-]\",\n          \"name\": \"constant.other.reference.label.latex\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#definition-label\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:verb|Verb|spverb)\\\\*?)\\\\s*((\\\\\\\\)scantokens)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.begin.latex\"\n        }\n      },\n      \"contentName\": \"markup.raw.verb.latex\",\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.verb.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"4\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:verb|Verb|spverb)\\\\*?)\\\\s*((?<=\\\\s)\\\\S|[^a-zA-Z])(.*?)(\\\\3|$)\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"7\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"10\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:mint|mintinline))((?:\\\\[[^\\\\[]*?\\\\])?)(\\\\{)[a-zA-Z]*(\\\\})(?:(?:([^a-zA-Z\\\\{])(.*?)(\\\\6))|(?:(\\\\{)(.*?)(\\\\})))\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"8\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)[a-z]+inline)((?:\\\\[[^\\\\[]*?\\\\])?)(?:(?:([^a-zA-Z\\\\{])(.*?)(\\\\4))|(?:(\\\\{)(.*?)(\\\\})))\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"source.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"8\": {\n          \"name\": \"source.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:py|pycon|pylab|pylabcon|sympy|sympycon)[cv]?)((?:\\\\[[^\\\\[]*?\\\\])?)(?:(?:([^a-zA-Z\\\\{])(.*?)(\\\\4))|(?:(\\\\{)(.*?)(\\\\})))\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"source.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"8\": {\n          \"name\": \"source.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:jl|julia)[cv]?)((?:\\\\[[^\\\\[]*?\\\\])?)(?:(?:([^a-zA-Z\\\\{])(.*?)(\\\\4))|(?:(\\\\{)(.*?)(\\\\})))\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"match\": \"\\\\\\\\(?:newline|pagebreak|clearpage|linebreak|pause)(?:\\\\b)\",\n      \"name\": \"keyword.control.layout.latex\"\n    },\n    {\n      \"begin\": \"\\\\\\\\\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\\\\\\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.latex\"\n        }\n      },\n      \"name\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\$\\\\$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\$\\\\$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.latex\"\n        }\n      },\n      \"name\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\$\",\n          \"name\": \"constant.character.escape.latex\"\n        },\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tex\"\n        }\n      },\n      \"end\": \"\\\\$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.tex\"\n        }\n      },\n      \"name\": \"meta.math.block.tex support.class.math.block.tex\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\$\",\n          \"name\": \"constant.character.escape.latex\"\n        },\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\\\\\\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\\\\\\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.latex\"\n        }\n      },\n      \"name\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.latex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)(text(s(terling|ixoldstyle|urd|e(ction|venoldstyle|rvicemark))|yen|n(ineoldstyle|umero|aira)|c(ircledP|o(py(left|right)|lonmonetary)|urrency|e(nt(oldstyle)?|lsius))|t(hree(superior|oldstyle|quarters(emdash)?)|i(ldelow|mes)|w(o(superior|oldstyle)|elveudash)|rademark)|interrobang(down)?|zerooldstyle|o(hm|ne(superior|half|oldstyle|quarter)|penbullet|rd(feminine|masculine))|d(i(scount|ed|v(orced)?)|o(ng|wnarrow|llar(oldstyle)?)|egree|agger(dbl)?|blhyphen(char)?)|uparrow|p(ilcrow|e(so|r(t(housand|enthousand)|iodcentered))|aragraph|m)|e(stimated|ightoldstyle|uro)|quotes(traight(dblbase|base)|ingle)|f(iveoldstyle|ouroldstyle|lorin|ractionsolidus)|won|l(not|ira|e(ftarrow|af)|quill|angle|brackdbl)|a(s(cii(caron|dieresis|acute|grave|macron|breve)|teriskcentered)|cutedbl)|r(ightarrow|e(cipe|ferencemark|gistered)|quill|angle|brackdbl)|g(uarani|ravedbl)|m(ho|inus|u(sicalnote)?|arried)|b(igcircle|orn|ullet|lank|a(ht|rdbl)|rokenbar)))\\\\b\",\n      \"name\": \"constant.character.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.column-specials.begin.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.column-specials.end.latex\"\n        }\n      },\n      \"match\": \"(?:<|>)(\\\\{)\\\\$(\\\\})\",\n      \"name\": \"meta.column-specials.latex\"\n    },\n    {\n      \"include\": \"text.tex\"\n    }\n  ],\n  \"repository\": {\n    \"optional-arg\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.optional.arguments.begin.latex\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.function.latex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.optional.arguments.end.latex\"\n            }\n          },\n          \"match\": \"(\\\\[)([^\\\\[]*?)(\\\\])\",\n          \"name\": \"meta.parameter.optional.latex\"\n        }\n      ]\n    },\n    \"autocites-arg\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.arguments.begin.latex\"\n            },\n            \"6\": {\n              \"name\": \"constant.other.reference.citation.latex\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.arguments.end.latex\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#autocites-arg\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(?:(\\\\()[^\\\\)]*(\\\\))){0,2}(?:(\\\\[)[^\\\\]]*(\\\\])){0,2}(\\\\{)([\\\\w:.]+)(\\\\})(.*)\"\n        }\n      ]\n    },\n    \"env-mandatory-arg\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"10\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:begin|end))(\\\\{)([a-z]*)(\\\\})(?:(\\\\[)(.*)(\\\\]))?(?:(\\\\{)([^{}]*)(\\\\}))?\"\n    },\n    \"code-env\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n        }\n      },\n      \"match\": \"(?:\\\\s*)((\\\\\\\\)(?:begin|end))(\\\\{)([a-z]+(?:\\\\*)?)(\\\\})(?:(\\\\[).*(\\\\]))?\"\n    },\n    \"definition-label\": {\n      \"begin\": \"((\\\\\\\\)label)((?:\\\\[[^\\\\[]*?\\\\])*)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.label.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.definition.label.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"[a-zA-Z0-9\\\\.,:/*!^_-]\",\n          \"name\": \"variable.parameter.definition.label.latex\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/latte.tmLanguage.json",
    "content": "{\n  \"name\": \"Latte\",\n  \"scopeName\": \"source.latte\",\n  \"fileTypes\": [\"latte\"],\n  \"patterns\": [\n    {\n      \"name\": \"comment.block.latte\",\n      \"begin\": \"\\\\{\\\\*\",\n      \"end\": \"\\\\*\\\\}\"\n    },\n    {\n      \"name\": \"source.latte\",\n      \"begin\": \"\\\\{\\\\{?(?!\\\\s)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"tag.begin.latte\"\n        }\n      },\n      \"end\": \"\\\\}?\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"tag.end.latte\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.latte\",\n          \"match\": \"(?<=\\\\{)(\\\\![^}]*)\"\n        },\n        {\n          \"name\": \"constant.numeric.latte\",\n          \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)\\\\b\"\n        },\n        {\n          \"name\": \"variable.other.latte\",\n          \"match\": \"\\\\$\\\\$?[a-zA-Z_0-9]+\\\\s*\"\n        },\n        {\n          \"name\": \"constant.language.latte\",\n          \"match\": \"true|TRUE|True|false|FALSE|False|null|NULL|Null\"\n        },\n        {\n          \"name\": \"keyword.control.single.latte\",\n          \"match\": \"(?<=\\\\{)(_|breakIf|continueIf|contentType|control|debugbreak|default|dump|elseifset|elseif|else|extends|includeblock|include|inputError|input|layout|link|php|plink|r|status|use|var)\\\\s*\"\n        },\n        {\n          \"name\": \"keyword.control.pair.latte\",\n          \"match\": \"(?<=\\\\{)/?(block|cache|capture|define|first|foreach|form|for|ifset|ifCurrent|if|label|last|l|sep|snippet|syntax|while)\\\\s*\"\n        },\n        {\n          \"name\": \"keyword.operator.latte\",\n          \"match\": \"(?<=\\\\s)(\\\\!|/|===|as|and|AND|And|&&|or|OR|Or|\\\\|\\\\||\\\\+\\\\+|\\\\-\\\\-|==|<=>|>=|<=)\\\\s?\"\n        },\n        {\n          \"name\": \"keyword.operator.latte\",\n          \"match\": \"->\"\n        },\n        {\n          \"match\": \".*?(\\\\|)(\\\\w+)(?:\\\\:([^\\\\|\\\\}]+))*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.latte\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.latte\"\n            }\n          }\n        },\n        {\n          \"include\": \"#strings\"\n        }\n      ]\n    },\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.latte\",\n          \"match\": \"(')(.*)(')\"\n        },\n        {\n          \"name\": \"string.quoted.double.latte\",\n          \"match\": \"(\\\")(.*)(\\\")\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/less.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-less/blob/master/grammars/less.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-less/commit/87d4d59e8de6796b506b81a16e1dc1fafc99d30f\",\n  \"name\": \"less\",\n  \"scopeName\": \"source.css.less\",\n  \"patterns\": [\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.class.mixin.css\"\n        }\n      },\n      \"match\": \"(\\\\.[_a-zA-Z][a-zA-Z0-9_-]*(?=\\\\())\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.class.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.interpolation.less\"\n        }\n      },\n      \"match\": \"((\\\\.)([_a-zA-Z]|(@{[a-zA-Z0-9_-]+}))[a-zA-Z0-9_-]*)\"\n    },\n    {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"entity.other.attribute-name.parent-selector.css\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        }\n      },\n      \"match\": \"(&)[a-zA-Z0-9_-]*\"\n    },\n    {\n      \"begin\": \"(format|local|url|attr|counter|counters)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.misc.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.function.css\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.function.css\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.single.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.double.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(\\\\d{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^'\\\") \\\\t]+\",\n          \"name\": \"variable.parameter.misc.css\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\\\b(?!.*?(?<!@){)\",\n      \"name\": \"constant.other.rgb-value.css\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.interpolation.less\"\n        }\n      },\n      \"match\": \"((#)([_a-zA-Z]|(@{[a-zA-Z0-9_-]+}))[a-zA-Z0-9_-]*)\",\n      \"name\": \"meta.selector.css\"\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.begin.css\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.css\"\n        }\n      },\n      \"name\": \"comment.block.css\"\n    },\n    {\n      \"include\": \"source.css#numeric-values\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.begin.entity.css\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.attribute-name.attribute.css\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.operator.css\"\n        },\n        \"4\": {\n          \"name\": \"string.unquoted.attribute-value.css\"\n        },\n        \"5\": {\n          \"name\": \"string.quoted.double.attribute-value.css\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.css\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.string.end.css\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.end.entity.css\"\n        }\n      },\n      \"match\": \"(?i)(\\\\[)\\\\s*(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)(?:\\\\s*([~|^$*]?=)\\\\s*(?:(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)|((?>(['\\\"])(?:[^\\\\\\\\]|\\\\\\\\.)*?(\\\\6)))))?\\\\s*(\\\\])\",\n      \"name\": \"meta.attribute-selector.css\"\n    },\n    {\n      \"begin\": \"((@)import\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.import.less\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.less\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"name\": \"meta.at-rule.import.css\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\(|,|\\\\s)\\\\b(reference|optional|once|multiple|less|inline)\\\\b(?=\\\\)|,)\",\n          \"name\": \"keyword.control.import.option.less\"\n        },\n        {\n          \"include\": \"#brace_round\"\n        },\n        {\n          \"include\": \"source.css#commas\"\n        },\n        {\n          \"include\": \"#strings\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.fontface.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.css\"\n        }\n      },\n      \"match\": \"^\\\\s*((@)font-face\\\\b)\",\n      \"name\": \"meta.at-rule.fontface.css\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.media.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.css\"\n        }\n      },\n      \"match\": \"^\\\\s*((@)media\\\\b)\",\n      \"name\": \"meta.at-rule.media.css\"\n    },\n    {\n      \"include\": \"source.css#media-features\"\n    },\n    {\n      \"match\": \"\\\\b(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)\\\\b\",\n      \"name\": \"support.constant.media-type.media.css\"\n    },\n    {\n      \"match\": \"\\\\b(portrait|landscape)\\\\b\",\n      \"name\": \"support.constant.property-value.media-property.media.css\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.less\"\n        }\n      },\n      \"match\": \"(\\\\.[a-zA-Z0-9_-]+)\\\\s*(;|\\\\()\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.less\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"//\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.less\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.double-slash.less\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(@|\\\\-\\\\-)[\\\\w-]+(?=\\\\s*)\",\n      \"name\": \"variable.other.less\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.less\"\n        }\n      }\n    },\n    {\n      \"include\": \"#variable_interpolation\"\n    },\n    {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.begin.bracket.curly.css\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.end.bracket.curly.css\"\n        }\n      },\n      \"name\": \"meta.property-list.css\",\n      \"patterns\": [\n        {\n          \"include\": \"source.css#pseudo-elements\"\n        },\n        {\n          \"include\": \"source.css#pseudo-classes\"\n        },\n        {\n          \"include\": \"source.css#tag-names\"\n        },\n        {\n          \"include\": \"source.css#commas\"\n        },\n        {\n          \"include\": \"#variable_interpolation\"\n        },\n        {\n          \"include\": \"source.css#property-names\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\!\\\\s*important\",\n      \"name\": \"keyword.other.important.css\"\n    },\n    {\n      \"match\": \"\\\\*|\\\\/|\\\\-|\\\\+|~|=|<=|>=|<|>\",\n      \"name\": \"keyword.operator.less\"\n    },\n    {\n      \"match\": \"\\\\b(not|and|when)\\\\b\",\n      \"name\": \"keyword.control.logical.operator.less\"\n    },\n    {\n      \"include\": \"source.css#tag-names\"\n    },\n    {\n      \"match\": \"(?<![\\\\w-])[a-z][\\\\w&&[^A-Z]]*+-[\\\\w-&&[^A-Z]]+\",\n      \"name\": \"entity.name.tag.custom.css\"\n    },\n    {\n      \"include\": \"source.css#pseudo-elements\"\n    },\n    {\n      \"include\": \"source.css#pseudo-classes\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.property-list.begin.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.property-list.end.css\"\n        }\n      },\n      \"match\": \"(\\\\{)(\\\\})\",\n      \"name\": \"meta.brace.curly.css\"\n    },\n    {\n      \"match\": \"\\\\{|\\\\}\",\n      \"name\": \"meta.brace.curly.css\"\n    },\n    {\n      \"include\": \"#brace_round\"\n    },\n    {\n      \"match\": \"\\\\[|\\\\]\",\n      \"name\": \"meta.brace.square.less\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.rule.css\"\n    },\n    {\n      \"match\": \":\",\n      \"name\": \"punctuation.separator.key-value.css\"\n    },\n    {\n      \"match\": \"\\\\btrue\\\\b\",\n      \"name\": \"constant.language.boolean.less\"\n    },\n    {\n      \"match\": \"\\\\bdefault\\\\b\",\n      \"name\": \"support.function.default.less\"\n    },\n    {\n      \"match\": \"\\\\b(isurl|isstring|isnumber|iskeyword|iscolor)\\\\b\",\n      \"name\": \"support.function.type-checking.less\"\n    },\n    {\n      \"match\": \"\\\\b(isunit|ispixel|ispercentage|isem)\\\\b\",\n      \"name\": \"support.function.unit-checking.less\"\n    },\n    {\n      \"include\": \"source.css#property-keywords\"\n    },\n    {\n      \"include\": \"source.css#color-keywords\"\n    },\n    {\n      \"include\": \"source.css#commas\"\n    },\n    {\n      \"include\": \"#less_builtin_functions\"\n    },\n    {\n      \"include\": \"source.css#functions\"\n    }\n  ],\n  \"repository\": {\n    \"variable_interpolation\": {\n      \"match\": \"@{[a-zA-Z0-9_-]+}\",\n      \"name\": \"variable.other.interpolation.less\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.double.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([0-9A-Fa-f]{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            },\n            {\n              \"include\": \"#variable_interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.single.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([0-9A-Fa-f]{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            },\n            {\n              \"include\": \"#variable_interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"brace_round\": {\n      \"match\": \"\\\\(|\\\\)\",\n      \"name\": \"meta.brace.round.css\"\n    },\n    \"property_values\": {\n      \"begin\": \"(?<!&)(:)\\\\s*(?!(\\\\s*{))(?!.*(?<!@){)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.key-value.css\"\n        }\n      },\n      \"end\": \"\\\\s*(;)|\\\\s*(?=})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"contentName\": \"meta.property-value.css\",\n      \"patterns\": [\n        {\n          \"begin\": \"url(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.css\"\n            }\n          },\n          \"name\": \"support.function.any-method.builtin.url.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"match\": \"(\\\\b|\\\\.{0,2}/)[^)]*\\\\b\",\n              \"name\": \"string.url.css\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.css#property-keywords\"\n        },\n        {\n          \"include\": \"source.css#color-keywords\"\n        },\n        {\n          \"include\": \"source.css#commas\"\n        },\n        {\n          \"include\": \"#less_builtin_functions\"\n        },\n        {\n          \"include\": \"source.css#functions\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"less_builtin_functions\": {\n      \"match\": \"\\\\b(abs|acos|alpha|argb|asin|atan|average|blue|calc|ceil|color|contrast|convert|convert|cos|darken|data-uri|desaturate|difference|e|escape|exclusion|extract|fade|fadein|fadeout|floor|format|green|greyscale|hardlight|hsl|hsla|hsv|hsva|hsvhue|hsvsaturation|hsvvalue|hue|length|lighten|lightness|luma|max|min|mix|mod|multiply|negation|overlay|percentage|pi|pow|red|replace|round|saturate|saturation|screen|sin|softlight|spin|sqrt|tan|unit)\\\\b\",\n      \"name\": \"support.function.any-method.builtin.less\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/liquid.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"Liquid\",\n  \"scopeName\": \"source.liquid\",\n  \"injectionSelector\": \"L:text.html -meta.embedded -comment, L:source.css -comment -string -meta.embedded, L:source.js -string.quoted.*.js -comment -string, L:source.jsx -comment -string -string.quoted.*.jsx, L:source.js.jsx -comment -string, L:source.ts -string -comment -string.quoted.*.ts, L:source.json -string.quoted.*.json, text.html.markdown -comment\",\n  \"fileTypes\": [\n    \"html\",\n    \"liquid\",\n    \"jekyll\",\n    \"js\",\n    \"jsx\",\n    \"json\",\n    \"ts\",\n    \"tsx\",\n    \"md\",\n    \"css\",\n    \"scss\",\n    \"sass\"\n  ],\n  \"foldingStartMarker\": \"(?x){%-?\\\\s*(if|unless|for|paginate|capture|form|case|tablerow|raw|comment|block|paginate|schema|stylesheet|javascript)[^(%})]+-?%}\",\n  \"foldingStopMarker\": \"(?x){%-?\\\\s*(endif|endunless|endfor|endpaginate|endcapture|endform|endcase|endtablerow|endraw|endcomment|endblock|endpaginate|endschema|endstylesheet|endjavascript)[^(%})]+-?%}\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#frontmatter\"\n    },\n    {\n      \"include\": \"#schema\"\n    },\n    {\n      \"include\": \"#javascript\"\n    },\n    {\n      \"include\": \"#style\"\n    },\n    {\n      \"include\": \"#stylesheet\"\n    },\n    {\n      \"include\": \"#stylesheet-scss\"\n    },\n    {\n      \"include\": \"#template-tags\"\n    },\n    {\n      \"include\": \"#template-vars\"\n    }\n  ],\n  \"repository\": {\n    \"template-tags\": {\n      \"name\": \"punctuation.tag.liquid\",\n      \"begin\": \"({%)(-)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.whitespace.liquid\"\n        }\n      },\n      \"end\": \"(-)?(%})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.whitespace.liquid\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#constant-characters\"\n        },\n        {\n          \"include\": \"#constant-boolean\"\n        },\n        {\n          \"include\": \"#constant-numeric\"\n        },\n        {\n          \"include\": \"#constant-boolean\"\n        },\n        {\n          \"include\": \"#entity-name-tag\"\n        },\n        {\n          \"include\": \"#entity-other-attribute-name\"\n        },\n        {\n          \"include\": \"#include-tag\"\n        },\n        {\n          \"include\": \"#invalid-ampersand\"\n        },\n        {\n          \"include\": \"#invalid-array\"\n        },\n        {\n          \"include\": \"#invalid-conditions\"\n        },\n        {\n          \"include\": \"#invalid-operators\"\n        },\n        {\n          \"include\": \"#keyword-control\"\n        },\n        {\n          \"include\": \"#keyword-operators\"\n        },\n        {\n          \"include\": \"#keyword-operator-assignment\"\n        },\n        {\n          \"include\": \"#string-quoted-double\"\n        },\n        {\n          \"include\": \"#string-quoted-single\"\n        },\n        {\n          \"include\": \"#support-class\"\n        },\n        {\n          \"include\": \"#support-function\"\n        },\n        {\n          \"include\": \"#support-variable\"\n        },\n        {\n          \"include\": \"#support-constant\"\n        },\n        {\n          \"include\": \"#variable-parameter\"\n        },\n        {\n          \"include\": \"#variable-other\"\n        }\n      ]\n    },\n    \"template-vars\": {\n      \"name\": \"punctuation.output.liquid\",\n      \"begin\": \"({{)(-)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.whitespace.liquid\"\n        }\n      },\n      \"end\": \"(-)?(}})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.whitespace.liquid\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#constant-characters\"\n        },\n        {\n          \"include\": \"#object-properties\"\n        },\n        {\n          \"include\": \"#string-quoted-double\"\n        },\n        {\n          \"include\": \"#string-quoted-single\"\n        },\n        {\n          \"include\": \"#support-class\"\n        },\n        {\n          \"include\": \"#support-function\"\n        },\n        {\n          \"include\": \"#support-variable\"\n        },\n        {\n          \"include\": \"#support-function-with-args\"\n        },\n        {\n          \"include\": \"#support-function-without-args\"\n        },\n        {\n          \"include\": \"#var-support-variable\"\n        },\n        {\n          \"include\": \"#variable-parameter\"\n        },\n        {\n          \"include\": \"#variable-other\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"name\": \"comment.block.liquid\",\n      \"begin\": \"{%-?\\\\s*comment\\\\s*-?%}\",\n      \"end\": \"{%-?\\\\s*endcomment\\\\s*-?%}\"\n    },\n    \"constant-characters\": {\n      \"name\": \"constant.character.entity.liquid\",\n      \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.entity.html\"\n        }\n      }\n    },\n    \"constant-boolean\": {\n      \"name\": \"constant.language.liquid\",\n      \"match\": \"(false|true|nil|null|empty|blank)\"\n    },\n    \"constant-numeric\": {\n      \"name\": \"constant.numeric.liquid\",\n      \"match\": \"(-|\\\\+)?\\\\s*[0-9]+(\\\\.[0-9]+)?\"\n    },\n    \"entity-name-tag\": {\n      \"match\": \"(((?<={%)|(?<={%-))\\\\s*(\\\\w+))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.liquid\"\n        }\n      }\n    },\n    \"frontmatter\": {\n      \"contentName\": \"source.yaml\",\n      \"name\": \"meta.embedded.block.frontmatter.liquid\",\n      \"begin\": \"---(?=\\\\s*\\\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        }\n      },\n      \"end\": \"---(?=\\\\s*\\\\n)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.yaml\"\n        }\n      ]\n    },\n    \"include-tag\": {\n      \"name\": \"string.quoted.liquid\",\n      \"match\": \"((?<=include)|(?<=include_relative))\\\\s[^{,'\\\"]+?\\\\s+\"\n    },\n    \"invalid-ampersand\": {\n      \"match\": \"&\",\n      \"name\": \"invalid.illegal.bad-ampersand.liquid\"\n    },\n    \"invalid-array\": {\n      \"match\": \"(\\\\[)(\\\\|)(?=[^\\\\]]*)(?=\\\\])\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"invalid.illegal.filter.liquid\"\n        },\n        \"3\": {\n          \"name\": \"invalid.illegal.filter.liquid\"\n        }\n      }\n    },\n    \"invalid-conditions\": {\n      \"match\": \"(?=if|unless|elsif)\\\\s*[^%}]+\\\\s(in)\\\\s\",\n      \"captures\": {\n        \"3\": {\n          \"name\": \"invalid.illegal.operator.liquid\"\n        }\n      }\n    },\n    \"invalid-operators\": {\n      \"name\": \"invalid.illegal.filter.liquid\",\n      \"match\": \"(?<=\\\\s)(\\\\+|\\\\-|\\\\/|\\\\*)(?=\\\\s)\"\n    },\n    \"keyword-control\": {\n      \"name\": \"keyword.control.liquid\",\n      \"match\": \"(?<=\\\\s)(with|offset\\\\:|limit\\\\:)(?=\\\\s)\"\n    },\n    \"keyword-control-conditional\": {\n      \"name\": \"keyword.control.conditional.liquid\"\n    },\n    \"keyword-operators\": {\n      \"name\": \"keyword.operator.liquid\",\n      \"match\": \"\\\\s+(and|or|not|contains|in|by||((\\\\!|\\\\=|\\\\<|\\\\>)\\\\=))\\\\s+\"\n    },\n    \"keyword-operator-assignment\": {\n      \"match\": \"/=\",\n      \"name\": \"keyword.operator.assignment.augmented.liquid\"\n    },\n\n    \"object-properties\": {\n      \"match\": \"(?<=\\\\w.)(?<=\\\\w.)\\\\b\\\\w+?\\\\b\\\\s+?\",\n      \"name\": \"variable.parameter.liquid\"\n    },\n\n    \"string-quoted-single\": {\n      \"name\": \"string.quoted.single.liquid\",\n      \"begin\": \"'\",\n      \"end\": \"'\"\n    },\n    \"string-quoted-double\": {\n      \"name\": \"string.quoted.double.liquid\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\"\n    },\n    \"support-class\": {\n      \"name\": \"support.class.liquid\",\n      \"match\": \"\\\\b(all_products|article|assets|block|blog|blogs|body_raw|canonical_url|cart|checkout|collection|collections|comment|current|customer|customer_address|date|discount|excerpt_raw|forloop|form|fulfillment|image|item|items|javascript|jekyll|line_item|link|linklist|linklists|meta|next|order|order|page|page_title|pages|paginate|parent|posts|previous|product|products|request|scripts|search|settings|shipping_method|schema|shop|site|style|stylesheet|tablerow|tags|tax_line|taxonomy|template|theme|themes|transaction|url|variant)\\\\b\"\n    },\n    \"support-function\": {\n      \"name\": \"support.function.liquid\",\n      \"match\": \"\\\\b(break|content_for_header|content_for_index|content_for_layout|continue|cycle|assign|increment|decrement|include|form|layout|highlight|highlight_active|json|join|sort|ceil|divided_by|floor|minus|plus|round|times|modulo|money|money_with_currency|money_without_trailing_zeros|money_without_currency|append|camelcase|capitalize|downcase|escape|handleize|md5|newline_to_br|pluralize|prepend|remove|remove_first|replace|replace_first|slice|split|strip|lstrip|rstrip|strip_html|strip_newlines|truncate|truncatewords|uniq|upcase|url_escape|url_param_escape)\\\\b\"\n    },\n    \"support-variable\": {\n      \"name\": \"support.variable.liquid\",\n      \"match\": \"\\\\b(date|weight_with_unit|index|size|asset_img_url|asset_url|file_img_url|file_url|img_url|product_img_url|url_for_type|url_for_vendor|link_to|link_to_vendor|link_to_type|link_to_tag|link_to_add_tag|link_to_remove_tag)\\\\b\"\n    },\n    \"support-constant\": {\n      \"name\": \"support.constant.liquid\",\n      \"match\": \"\\\\b(default|default_errors|default_pagination|first|last|script_tag|stylesheet_tag|img_tag|customer_login_link|global_asset_url|payment_type_img_url|shopify_asset_url)\\\\b\"\n    },\n    \"support-function-with-args\": {\n      \"name\": \"support.function.with-args.liquid\",\n      \"match\": \"\\\\|\\\\s+(?![\\\\.0-9])[a-zA-Z0-9_-]+\\\\:\\\\s+\"\n    },\n    \"support-function-without-args\": {\n      \"name\": \"support.function.without-args.liquid\",\n      \"match\": \"\\\\|\\\\s+(?![\\\\.0-9])[a-zA-Z0-9_-]+\\\\s+\"\n    },\n    \"var-support-variable\": {\n      \"name\": \"support.variable.liquid\",\n      \"match\": \"(?<=\\\\.)\\\\w+\\\\b\"\n    },\n    \"variable-parameter\": {\n      \"name\": \"variable.parameter.liquid\",\n      \"match\": \"((?<=\\\\w\\\\:\\\\s)\\\\w+)\"\n    },\n    \"variable-other\": {\n      \"name\": \"variable.other.liquid\",\n      \"match\": \"\\\\w+\"\n    },\n    \"schema\": {\n      \"name\": \"meta.embedded.block.liquid\",\n      \"contentName\": \"meta.embedded.block.schema.liquid\",\n      \"begin\": \"({%)\\\\s+(schema)\\\\s+(%})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"end\": \"({%)\\\\s+(endschema)\\\\s+(%})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.json\"\n        }\n      ]\n    },\n    \"style\": {\n      \"name\": \"meta.embedded.block.liquid\",\n      \"contentName\": \"meta.embedded.block.style.liquid\",\n      \"begin\": \"({%)\\\\s+(style)\\\\s+(%})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"end\": \"({%)\\\\s+(endstyle)\\\\s+(%})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.css\"\n        }\n      ]\n    },\n    \"stylesheet\": {\n      \"name\": \"meta.embedded.block.liquid\",\n      \"contentName\": \"meta.embedded.block.stylesheet.liquid\",\n      \"begin\": \"({%)\\\\s+(stylesheet)\\\\s+(%})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"end\": \"({%)\\\\s+(endstylesheet)\\\\s+(%})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.css\"\n        }\n      ]\n    },\n    \"stylesheet-scss\": {\n      \"name\": \"meta.embedded.block.liquid\",\n      \"contentName\": \"meta.embedded.block.stylesheet.scss.liquid\",\n      \"begin\": \"({%)\\\\s+(stylesheet)\\\\s+('(scss)')\\\\s+(%})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"string.quoted.single.liquid\"\n        },\n        \"4\": {\n          \"name\": \"meta.attribute.type.liquid\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"end\": \"({%)\\\\s+(endstylesheet)\\\\s+(%})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.css.scss\"\n        }\n      ]\n    },\n    \"javascript\": {\n      \"name\": \"meta.embedded.block.liquid\",\n      \"contentName\": \"meta.embedded.block.javascript.liquid\",\n      \"begin\": \"({%)\\\\s+(javascript)\\\\s+(%})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"end\": \"({%)\\\\s+(endjavascript)\\\\s+(%})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/lisp.tmLanguage.json",
    "content": "{\n  \"comment\": \"\",\n  \"fileTypes\": [\"lisp\", \"cl\", \"l\", \"mud\", \"el\"],\n  \"foldingStartMarker\": \"\\\\(\",\n  \"foldingStopMarker\": \"\\\\)\",\n  \"keyEquivalent\": \"^~L\",\n  \"name\": \"Lisp\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.lisp\"\n        }\n      },\n      \"match\": \"(;).*$\\\\n?\",\n      \"name\": \"comment.line.semicolon.lisp\"\n    },\n    {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"storage.type.function-type.lisp\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.function.lisp\"\n        }\n      },\n      \"match\": \"(\\\\b(?i:(defun|defmethod|defmacro))\\\\b)(\\\\s+)((\\\\w|\\\\-|\\\\!|\\\\?)*)\",\n      \"name\": \"meta.function.lisp\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.lisp\"\n        }\n      },\n      \"match\": \"(#)(\\\\w|[\\\\\\\\+-=<>'\\\"&#])+\",\n      \"name\": \"constant.character.lisp\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.lisp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.variable.lisp\"\n        }\n      },\n      \"match\": \"(\\\\*)(\\\\S*)(\\\\*)\",\n      \"name\": \"variable.other.global.lisp\"\n    },\n    {\n      \"match\": \"\\\\b(?i:case|do|let|loop|if|else|when)\\\\b\",\n      \"name\": \"keyword.control.lisp\"\n    },\n    {\n      \"match\": \"\\\\b(?i:eq|neq|and|or)\\\\b\",\n      \"name\": \"keyword.operator.lisp\"\n    },\n    {\n      \"match\": \"\\\\b(?i:null|nil)\\\\b\",\n      \"name\": \"constant.language.lisp\"\n    },\n    {\n      \"match\": \"\\\\b(?i:cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn)\\\\b\",\n      \"name\": \"support.function.lisp\"\n    },\n    {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\",\n      \"name\": \"constant.numeric.lisp\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.lisp\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.lisp\"\n        }\n      },\n      \"name\": \"string.quoted.double.lisp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.lisp\"\n        }\n      ]\n    }\n  ],\n  \"scopeName\": \"source.lisp\",\n  \"uuid\": \"00D451C9-6B1D-11D9-8DFA-000D93589AF6\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/livescript.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"^\\\\s*class\\\\s+\\\\S.*$|.*(->|=>)\\\\s*$|.*[\\\\[{]\\\\s*$\",\n  \"firstLineMatch\": \"^#!.*\\\\bls\",\n  \"foldingStopMarker\": \"^\\\\s*$|^\\\\s*[}\\\\]]\\\\s*$\",\n  \"keyEquivalent\": \"^~C\",\n  \"fileTypes\": [\"ls\", \"Slakefile\", \"ls.erb\"],\n  \"repository\": {\n    \"embedded_spaced_comment\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\\\\\)(#\\\\s).*$\\\\n\",\n          \"name\": \"comment.line.number-sign.livescript\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.livescript\" }\n          }\n        }\n      ]\n    },\n    \"constructor_variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"([a-zA-Z$_][\\\\w$-]*)(@{2})([a-zA-Z$_][\\\\w$-]*)?\",\n          \"name\": \"variable.other.readwrite.constructor.livescript\"\n        }\n      ]\n    },\n    \"backslash_string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\\\\\([\\\\\\\\)\\\\s,\\\\};\\\\]])?\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.livescript\" }\n          },\n          \"end\": \"(?=[\\\\\\\\)\\\\s,\\\\};\\\\]])\",\n          \"contentName\": \"string.quoted.single.livescript\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"string.quoted.single.livescript\" }\n          }\n        }\n      ]\n    },\n    \"instance_variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![$\\\\w\\\\-])(@)\",\n          \"name\": \"variable.other.readwrite.instance.livescript\"\n        }\n      ]\n    },\n    \"variable_name\": {\n      \"patterns\": [\n        {\n          \"match\": \"([a-zA-Z\\\\$_][\\\\w$-]*(\\\\.\\\\w+)*)(?!\\\\-)\",\n          \"name\": \"variable.assignment.livescript\",\n          \"captures\": { \"1\": { \"name\": \"variable.assignment.livescript\" } }\n        }\n      ]\n    },\n    \"single_quoted_string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.livescript\" }\n          },\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\",\n              \"name\": \"constant.character.escape.livescript\"\n            }\n          ],\n          \"name\": \"string.quoted.single.livescript\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.livescript\" }\n          }\n        }\n      ]\n    },\n    \"numeric\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![\\\\$@a-zA-Z_])(([0-9]+r[0-9_]+)|((16r|0[xX])[0-9a-fA-F_]+)|([0-9]+(\\\\.[0-9]+[0-9_]*)?(e[+\\\\-]?[0-9_]+)?)[_a-zA-Z0-9]*)\",\n          \"name\": \"constant.numeric.livescript\"\n        }\n      ]\n    },\n    \"double_quoted_string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.livescript\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)\",\n              \"name\": \"constant.character.escape.livescript\"\n            },\n            { \"include\": \"#interpolated_livescript\" }\n          ],\n          \"name\": \"string.quoted.double.livescript\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.livescript\" }\n          }\n        }\n      ]\n    },\n    \"embedded_comment\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\\\\\)(#).*$\\\\n\",\n          \"name\": \"comment.line.number-sign.livescript\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.livescript\" }\n          }\n        }\n      ]\n    },\n    \"interpolated_livescript\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\#\\\\{\",\n          \"end\": \"\\\\}\",\n          \"patterns\": [{ \"include\": \"$self\" }],\n          \"name\": \"source.livescript.embedded.source\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.section.embedded.livescript\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\#\",\n          \"match\": \"#([a-zA-Z$_-]+|@)\",\n          \"end\": \"\",\n          \"patterns\": [{ \"include\": \"$self\" }],\n          \"name\": \"source.livescript.embedded.source.simple\"\n        }\n      ]\n    }\n  },\n  \"uuid\": \"2D4A1111-BBA9-4FB3-B27C-57D50F40C27E\",\n  \"patterns\": [\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\t!?[~-]{1,2}>\\\\*?\\n\\t\\t\\t\\t|<[~-]{1,2}!?\\n\\t\\t\\t\\t|\\\\(\\\\s* (?=    instanceof[\\\\s)]|and[\\\\s)]|or[\\\\s)]|is[\\\\s)]|isnt[\\\\s)]|in[\\\\s)]|import[\\\\s)]|import\\\\ all[\\\\s)]     |\\\\.|[-+/*%^&<>=|][\\\\b\\\\s)\\\\w$]|\\\\*\\\\*|\\\\%\\\\%)\\n\\t\\t\\t\\t|      (?<=[\\\\s(]instanceof|[\\\\s(]and|[\\\\s(]or|[\\\\s(]is|[\\\\s(]isnt|[\\\\s(]in|[\\\\s(]import|[\\\\s(]import\\\\ all|[\\\\s(]do|\\\\.|\\\\*\\\\*|\\\\%\\\\%|[\\\\b\\\\s(\\\\w$][-+/*%^&<>=|]) \\\\s*\\\\)\\n\\t\\t\\t\",\n      \"name\": \"storage.type.function.livescript\"\n    },\n    {\n      \"begin\": \"\\\\/\\\\*\",\n      \"end\": \"\\\\*\\\\/\",\n      \"patterns\": [\n        { \"match\": \"@\\\\w*\", \"name\": \"storage.type.annotation.livescriptscript\" }\n      ],\n      \"name\": \"comment.block.livescript\",\n      \"captures\": {\n        \"0\": { \"name\": \"punctuation.definition.comment.livescript\" }\n      }\n    },\n    {\n      \"match\": \"(#)(?!\\\\{).*$\\\\n?\",\n      \"name\": \"comment.line.number-sign.livescript\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.livescript\" }\n      }\n    },\n    {\n      \"match\": \"((?:!|~|!~|~!)?function\\\\*?)\\\\s+([$\\\\w\\\\-]*[$\\\\w]+)\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.function.livescript\" },\n        \"2\": { \"name\": \"entity.name.function.livescript\" }\n      }\n    },\n    {\n      \"match\": \"(new)\\\\s+(\\\\w+(?:\\\\.\\\\w*)*)\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.operator.new.livescript\" },\n        \"2\": { \"name\": \"entity.name.type.instance.livescript\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(package|private|protected|public|interface|enum|static)(?!-)\\\\b\",\n      \"name\": \"keyword.illegal.livescript\"\n    },\n    {\n      \"begin\": \"'''\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.livescript\" }\n      },\n      \"end\": \"'''\",\n      \"name\": \"string.quoted.heredoc.livescript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.livescript\" }\n      }\n    },\n    {\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.livescript\" }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.livescript\" },\n        { \"include\": \"#interpolated_livescript\" }\n      ],\n      \"name\": \"string.quoted.double.heredoc.livescript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.livescript\" }\n      }\n    },\n    {\n      \"begin\": \"``\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.livescript\" }\n      },\n      \"end\": \"``\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)\",\n          \"name\": \"constant.character.escape.livescript\"\n        }\n      ],\n      \"name\": \"string.quoted.script.livescript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.livescript\" }\n      }\n    },\n    {\n      \"begin\": \"<\\\\[\",\n      \"end\": \"\\\\]>\",\n      \"name\": \"string.array-literal.livescript\"\n    },\n    {\n      \"match\": \"/{2}(?![\\\\s=/*+{}?]).*?[^\\\\\\\\]/[igmy]{0,4}(?![a-zA-Z0-9])/{2}\",\n      \"name\": \"string.regexp.livescript\"\n    },\n    {\n      \"begin\": \"/{2}\\\\n\",\n      \"end\": \"/{2}[imgy]{0,4}\",\n      \"patterns\": [\n        { \"include\": \"#embedded_spaced_comment\" },\n        { \"include\": \"#interpolated_livescript\" }\n      ],\n      \"name\": \"string.regexp.livescript\"\n    },\n    {\n      \"begin\": \"/{2}\",\n      \"end\": \"/{2}[imgy]{0,4}\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)\",\n          \"name\": \"constant.character.escape.livescript\"\n        },\n        { \"include\": \"#interpolated_livescript\" }\n      ],\n      \"name\": \"string.regexp.livescript\"\n    },\n    {\n      \"match\": \"/(?![\\\\s=/*+{}?]).*?[^\\\\\\\\]/[igmy]{0,4}(?![a-zA-Z0-9])\",\n      \"name\": \"string.regexp.livescript\"\n    },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(?<![\\\\.\\\\$\\\\-@])(\\n\\t\\t\\t\\t\\tinstanceof|new|delete|typeof|and|or|is|isnt|not\\n\\t\\t\\t\\t)(?!\\\\-|\\\\s*:)\\\\b\\n\\t\\t\\t\",\n      \"name\": \"keyword.operator.livescript\"\n    },\n    { \"match\": \"<\\\\||\\\\|>\", \"name\": \"keyword.operator.livescript\" },\n    { \"match\": \"=>\", \"name\": \"keyword.control.livescript\" },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(?<![\\\\.\\\\$\\\\-@])(?:\\n\\t\\t\\t\\treturn|break|continue|throw\\n\\t\\t\\t\\t|try|if|while|for|for\\\\s+own|switch|unless|until\\n\\t\\t\\t\\t|catch|finally|else|nobreak|case|default|fallthrough|when|otherwise|then\\n\\t\\t\\t\\t|yield\\n\\t\\t\\t\\t)(?!\\\\-|\\\\s*:)\\\\b\\n\\t\\t\\t\",\n      \"name\": \"keyword.control.livescript\"\n    },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\tand=|or=|%|&|\\\\^|\\\\*|\\\\/|(?<![a-zA-Z$_])(\\\\-)?\\\\-(?!\\\\-?>)|\\\\+\\\\+|\\\\+|\\n\\t\\t\\t\\t~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|\\n\\t\\t\\t\\t>>>=|<>|<(?!\\\\[)|(?<!\\\\])>|(?<!\\\\w)!(?!([~\\\\-]+)?>)|&&|\\\\.\\\\.(\\\\.)?|\\\\s\\\\.\\\\s|\\\\?|\\\\|\\\\||\\\\:|\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=|\\\\.=|&=\\n\\t\\t\\t\\t|\\\\^=\\n\\t\\t\\t\",\n      \"name\": \"keyword.operator.livescript\"\n    },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(?<![\\\\.\\\\$\\\\-@])(?:\\n\\t\\t\\t\\tfunction\\n\\t\\t\\t\\t)(?!\\\\-|\\\\s*:)\\\\b\\n\\t\\t\\t\",\n      \"name\": \"storage.type.function.livescript\"\n    },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(?<![\\\\.\\\\$\\\\-@])(?:\\n\\t\\t\\t\\tthis|throw|then|try|typeof!?|til|to\\n\\t\\t\\t\\t|continue|const|case|catch|class\\n\\t\\t\\t\\t|in|instanceof|import|import\\\\s+all|implements|if|is\\n\\t\\t\\t\\t|default|delete|debugger|do\\n\\t\\t\\t\\t|for|for\\\\s+own|finally|function|from|fallthrough\\n\\t\\t\\t\\t|super|switch\\n\\t\\t\\t\\t|else|nobreak|extends|export|eval\\n\\t\\t\\t\\t|and|arguments\\n\\t\\t\\t\\t|new|not\\n\\t\\t\\t\\t|unless|until\\n\\t\\t\\t\\t|while|with|when\\n\\t\\t\\t\\t|of|or|otherwise\\n\\t\\t\\t\\t|let|var|loop\\n\\t\\t\\t\\t|match\\n\\t\\t\\t\\t|by|yield\\n\\t\\t\\t\\t)(?!\\\\-|\\\\s*:)\\\\b\\n\\t\\t\\t\",\n      \"name\": \"keyword.other.livescript\"\n    },\n    {\n      \"match\": \"([a-zA-Z\\\\$_](?:[\\\\w$.-])*)\\\\s*(?!\\\\::)((:)|(=(?!>)))\\\\s*(?!(\\\\s*!?\\\\s*\\\\(.*\\\\))?\\\\s*(!?[~-]{1,2}>\\\\*?))\",\n      \"captures\": {\n        \"1\": { \"name\": \"variable.assignment.livescript\" },\n        \"3\": {\n          \"name\": \"punctuation.separator.key-value, keyword.operator.livescript\"\n        },\n        \"4\": { \"name\": \"keyword.operator.livescript\" }\n      }\n    },\n    {\n      \"begin\": \"(?<=\\\\s|^)([\\\\[\\\\{])(?=.*?[\\\\]\\\\}]\\\\s+[:=])\",\n      \"endCaptures\": { \"0\": { \"name\": \"keyword.operator.livescript\" } },\n      \"end\": \"([\\\\]\\\\}]\\\\s*[:=])\",\n      \"patterns\": [\n        { \"include\": \"#variable_name\" },\n        { \"include\": \"#instance_variable\" },\n        { \"include\": \"#single_quoted_string\" },\n        { \"include\": \"#double_quoted_string\" },\n        { \"include\": \"#numeric\" }\n      ],\n      \"name\": \"meta.variable.assignment.destructured.livescript\",\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.operator.livescript\" } }\n    },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\t(\\\\s*)\\n\\t\\t\\t\\t(?=[a-zA-Z\\\\$_])\\n\\t\\t\\t\\t([a-zA-Z\\\\$_]([\\\\w$.:-])*)\\\\s*\\n\\t\\t\\t\\t(?=[:=](\\\\s*!?\\\\s*\\\\(.*\\\\))?\\\\s*(!?[~-]{1,2}>\\\\*?))\\n\\t\\t\\t\",\n      \"name\": \"meta.function.livescript\",\n      \"captures\": {\n        \"3\": { \"name\": \"entity.name.function.livescript\" },\n        \"4\": { \"name\": \"variable.parameter.function.livescript\" },\n        \"2\": { \"name\": \"entity.name.function.livescript\" },\n        \"5\": { \"name\": \"storage.type.function.livescript\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.)(true|on|yes)(?!\\\\s*:)\\\\b\",\n      \"name\": \"constant.language.boolean.true.livescript\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.)(false|off|no)(?!\\\\s*:)\\\\b\",\n      \"name\": \"constant.language.boolean.false.livescript\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.)(null|void)(?!\\\\s*:)\\\\b\",\n      \"name\": \"constant.language.null.livescript\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.)(super|this|extends)(?!\\\\s*:)\\\\b\",\n      \"name\": \"variable.language.livescript\"\n    },\n    {\n      \"match\": \"(class\\\\b)\\\\s+(@?[a-zA-Z$_][\\\\w$.-]*)?(?:\\\\s+(extends)\\\\s+(@?[a-zA-Z$_][\\\\w$.-]*))?\",\n      \"name\": \"meta.class.livescript\",\n      \"captures\": {\n        \"3\": { \"name\": \"keyword.control.inheritance.livescript\" },\n        \"1\": { \"name\": \"storage.type.class.livescript\" },\n        \"4\": { \"name\": \"entity.other.inherited-class.livescript\" },\n        \"2\": { \"name\": \"entity.name.type.class.livescript\" }\n      }\n    },\n    { \"match\": \"\\\\b(debugger|\\\\\\\\)\\\\b\", \"name\": \"keyword.other.livescript\" },\n    {\n      \"match\": \"(?x)\\\\b(\\n\\t\\t\\t\\tArray|ArrayBuffer|Blob|Boolean|Date|document|event|Function|\\n\\t\\t\\t\\tInt(8|16|32|64)Array|Math|Map|Number|\\n\\t\\t\\t\\tObject|Proxy|RegExp|Set|String|WeakMap|\\n\\t\\t\\t\\twindow|Uint(8|16|32|64)Array|XMLHttpRequest\\n\\t\\t\\t)\\\\b\",\n      \"name\": \"support.class.livescript\"\n    },\n    {\n      \"match\": \"\\\\b(console)\\\\b\",\n      \"name\": \"entity.name.type.object.livescript\"\n    },\n    {\n      \"match\": \"\\\\b(Infinity|NaN|undefined)\\\\b\",\n      \"name\": \"constant.language.livescript\"\n    },\n    { \"match\": \"\\\\;\", \"name\": \"punctuation.terminator.statement.livescript\" },\n    { \"match\": \",[ |\\\\t]*\", \"name\": \"meta.delimiter.object.comma.livescript\" },\n    { \"match\": \"\\\\.\", \"name\": \"meta.delimiter.method.period.livescript\" },\n    { \"match\": \"\\\\{|\\\\}\", \"name\": \"meta.brace.curly.livescript\" },\n    { \"match\": \"\\\\(|\\\\)\", \"name\": \"meta.brace.round.livescript\" },\n    { \"match\": \"\\\\[|\\\\]\\\\s*\", \"name\": \"meta.brace.square.livescript\" },\n    { \"include\": \"#instance_variable\" },\n    { \"include\": \"#backslash_string\" },\n    { \"include\": \"#single_quoted_string\" },\n    { \"include\": \"#double_quoted_string\" },\n    { \"include\": \"#numeric\" },\n    {\n      \"match\": \"()(@|@@|[$\\\\w\\\\-]*[$\\\\w]+)\\\\s*(`)\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.operator.livescript\" },\n        \"2\": { \"name\": \"meta.function-call.livescript\" },\n        \"3\": { \"name\": \"keyword.operator.livescript\" }\n      }\n    },\n    { \"name\": \"keyword.operator.livescript\", \"match\": \"`\" },\n    {\n      \"match\": \"()(@|@@|[$\\\\w\\\\-]*[$\\\\w]+)(?:(\\\\??\\\\!)|[(])\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.operator.livescript\" },\n        \"2\": { \"name\": \"meta.function-call.livescript\" },\n        \"3\": { \"name\": \"keyword.operator.livescript\" }\n      }\n    },\n    {\n      \"match\": \"(@|@@|[$\\\\w\\\\-]*[$\\\\w]+)(\\\\?)? (?!\\\\s*(((by|of|and|or|with|when|unless|if|is|isnt|else|nobreak|for|from|not in|in|catch|til|to|then|import|extends|implements|instanceof)\\\\b)|[=:.*\\\\/+\\\\-%\\\\^<>][ =)]|[`}%*)]|/(?!.*?/)|&&|[.][^.]|=>|\\\\/ +|\\\\||\\\\|\\\\||\\\\-\\\\-|\\\\+\\\\+|\\\\|>|<|\\\\||$|\\\\n|\\\\#|/\\\\*))\",\n      \"captures\": {\n        \"1\": { \"name\": \"meta.function-call.livescript\" },\n        \"2\": { \"name\": \"keyword.operator.livescript\" }\n      }\n    },\n    { \"match\": \"\\\\| _\", \"name\": \"keyword.control.livescript\" },\n    { \"match\": \"\\\\|(?![.])\", \"name\": \"keyword.control.livescript\" },\n    { \"match\": \"\\\\|\", \"name\": \"keyword.operator.livescript\" },\n    {\n      \"match\": \"((?<=console\\\\.)(debug|warn|info|log|error|time(End|-end)|assert))\\\\b\",\n      \"name\": \"support.function.console.livescript\"\n    },\n    {\n      \"match\": \"(?x)\\\\b(\\n\\t\\t\\t\\tdecodeURI(Component)?|encodeURI(Component)?|eval|parse(Float|Int)|require\\n\\t\\t\\t)\\\\b\",\n      \"name\": \"support.function.livescript\"\n    },\n    {\n      \"comment\": \"Generated by DOM query from http://gkz.github.com/prelude-ls/:\\n\\t\\t\\t[].slice\\n\\t\\t\\t.call(document.querySelectorAll(\\\".nav-pills li a\\\"))\\n\\t\\t\\t.map(function(_) {return _.innerText})\\n\\t\\t\\t.filter(function(_) {return _.trim() !== '})\\n\\t\\t\\t.slice(2)\\n\\t\\t\\t.join(\\\"|\\\")\\n\\t\\t\\t\",\n      \"match\": \"(?x)(?<![.-])\\\\b(\\n\\t\\t\\t\\tmap|filter|reject|partition|find|each|head|tail|last|initial|empty|\\n\\t\\t\\t\\tvalues|keys|length|cons|append|join|reverse|fold(l|r)?1?|unfoldr|\\n\\t\\t\\t\\tand(List|-list)|or(List|-list)|any|all|unique|sum|product|mean|compact|\\n\\t\\t\\t\\tconcat(Map|-map)?|maximum|minimum|scan(l|r)?1?|replicate|slice|apply|\\n\\t\\t\\t\\tsplit(At|-at)?|take(While|-while)?|drop(While|-while)?|span|first|\\n\\t\\t\\t\\tbreak(It|-it)|list(ToObj|-to-obj)|obj(ToFunc|-to-func)|\\n\\t\\t\\t\\tpairs(ToObj|-to-obj)|obj(ToPairs|-to-pairs|ToLists|-to-lists)|\\n\\t\\t\\t\\tzip(All|-all)?(With|-with)?|compose|curry|partial|flip|fix|\\n\\t\\t\\t\\tsort(With|-with|By|-by)?|group(By|-by)|break(List|-list|Str|-str)|\\n\\t\\t\\t\\tdifference|intersection|union|average|flatten|chars|unchars|repeat|\\n\\t\\t\\t\\tlines|unlines|words|unwords|max|min|negate|abs|signum|quot|rem|div|mod|\\n\\t\\t\\t\\trecip|pi|tau|exp|sqrt|ln|pow|sin|cos|tan|asin|acos|atan|atan2|truncate|\\n\\t\\t\\t\\tround|ceiling|floor|is(It|-it)NaN|even|odd|gcd|lcm|disabled__id\\n\\t\\t\\t)\\\\b(?![.-])\",\n      \"name\": \"support.function.prelude.livescript\"\n    },\n    {\n      \"match\": \"(?x)(?<![.-])\\\\b(that|it|e|_)\\\\b\",\n      \"name\": \"support.function.semireserved.livescript\"\n    },\n    {\n      \"match\": \"(?x)((?<=(\\\\.|\\\\]|\\\\)))(\\n\\t\\t\\t\\tapply|call|concat|every|filter|for(Each|-each)|\\n\\t\\t\\t\\tfrom|has(Own|-own)(Property|-property)|index(Of|-of)|\\n\\t\\t\\t\\tis(Prototype|-prototype)(Of|-of)|join|last(Index|-index)(Of|-of)|\\n\\t\\t\\t\\tmap|of|pop|property(Is|-is)(Enumerable|-enumerable)|push|\\n\\t\\t\\t\\treduce(Right|-right)?|reverse|shift|slice|some|sort|\\n\\t\\t\\t\\tsplice|to(Locale|-locale)?(String|-string)|unshift|valueOf\\n\\t\\t\\t))\\\\b(?!-) \",\n      \"name\": \"support.function.method.array.livescript\"\n    },\n    {\n      \"match\": \"(?x)((?<=Array\\\\.)(\\n\\t\\t\\t\\tisArray\\n\\t\\t\\t))\\\\b\",\n      \"name\": \"support.function.static.array.livescript\"\n    },\n    {\n      \"match\": \"(?x)((?<=Object\\\\.)(\\n\\t\\t\\t\\tcreate|define(Propert|-propert)(ies|y)|freeze|\\n\\t\\t\\t\\tget(Own|-own)(Property|-property)(Descriptors?|Names)|\\n\\t\\t\\t\\tget(Property|-property)(Descriptor|Names)|getPrototypeOf|\\n\\t\\t\\t\\tis((Extensible|-extensible)|(Frozen|-frozen)|(Sealed|-sealed))?|\\n\\t\\t\\t\\tkeys|prevent(Extensions|-extensions)|seal\\n\\t\\t\\t))\\\\b\",\n      \"name\": \"support.function.static.object.livescript\"\n    },\n    {\n      \"match\": \"(?x)((?<=Math\\\\.)(\\n\\t\\t\\t\\tabs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|\\n\\t\\t\\t\\thypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|\\n\\t\\t\\t\\ttan|tanh|trunc\\n\\t\\t\\t))\\\\b\",\n      \"name\": \"support.function.static.math.livescript\"\n    },\n    {\n      \"match\": \"(?x)((?<=Number\\\\.)(\\n\\t\\t\\t\\tis(Finite|Integer|NaN)|to(Integer|-integer)\\n\\t\\t\\t))\\\\b\",\n      \"name\": \"support.function.static.number.livescript\"\n    },\n    { \"match\": \"[\\\\$\\\\w][\\\\w-]*\", \"name\": \"variable.other.livescript\" }\n  ],\n  \"comment\": \"LiveScript Syntax: version 1\",\n  \"name\": \"LiveScript\",\n  \"scopeName\": \"source.livescript\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/log.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/emilast/vscode-logfile-highlighter/blob/master/syntaxes/log.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/emilast/vscode-logfile-highlighter/commit/8acba9307254d1887ac770057767698c82d926c6\",\n  \"name\": \"Log file\",\n  \"scopeName\": \"text.log\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(Trace)\\\\b:\",\n      \"name\": \"comment log.verbose\"\n    },\n    {\n      \"match\": \"(?i)\\\\[(verbose|verb|vrb|vb|v)\\\\]\",\n      \"name\": \"comment log.verbose\"\n    },\n    {\n      \"match\": \"(?<=^[\\\\s\\\\d\\\\p]*)\\\\bV\\\\b\",\n      \"name\": \"comment log.verbose\"\n    },\n    {\n      \"match\": \"\\\\b(DEBUG|Debug)\\\\b|(?i)\\\\b(debug)\\\\:\",\n      \"name\": \"markup.changed log.debug\"\n    },\n    {\n      \"match\": \"(?i)\\\\[(debug|dbug|dbg|de|d)\\\\]\",\n      \"name\": \"markup.changed log.debug\"\n    },\n    {\n      \"match\": \"(?<=^[\\\\s\\\\d\\\\p]*)\\\\bD\\\\b\",\n      \"name\": \"markup.changed log.debug\"\n    },\n    {\n      \"match\": \"\\\\b(HINT|INFO|INFORMATION|Info|NOTICE|II)\\\\b|(?i)\\\\b(info|information)\\\\:\",\n      \"name\": \"markup.inserted log.info\"\n    },\n    {\n      \"match\": \"(?i)\\\\[(information|info|inf|in|i)\\\\]\",\n      \"name\": \"markup.inserted log.info\"\n    },\n    {\n      \"match\": \"(?<=^[\\\\s\\\\d\\\\p]*)\\\\bI\\\\b\",\n      \"name\": \"markup.inserted log.info\"\n    },\n    {\n      \"match\": \"\\\\b(WARNING|WARN|Warn|WW)\\\\b|(?i)\\\\b(warning)\\\\:\",\n      \"name\": \"markup.deleted log.warning\"\n    },\n    {\n      \"match\": \"(?i)\\\\[(warning|warn|wrn|wn|w)\\\\]\",\n      \"name\": \"markup.deleted log.warning\"\n    },\n    {\n      \"match\": \"(?<=^[\\\\s\\\\d\\\\p]*)\\\\bW\\\\b\",\n      \"name\": \"markup.deleted log.warning\"\n    },\n    {\n      \"match\": \"\\\\b(ALERT|CRITICAL|EMERGENCY|ERROR|FAILURE|FAIL|Fatal|FATAL|Error|EE)\\\\b|(?i)\\\\b(error)\\\\:\",\n      \"name\": \"string.regexp, strong log.error\"\n    },\n    {\n      \"match\": \"(?i)\\\\[(error|eror|err|er|e|fatal|fatl|ftl|fa|f)\\\\]\",\n      \"name\": \"string.regexp, strong log.error\"\n    },\n    {\n      \"match\": \"(?<=^[\\\\s\\\\d\\\\p]*)\\\\bE\\\\b\",\n      \"name\": \"string.regexp, strong log.error\"\n    },\n    {\n      \"match\": \"\\\\b\\\\d{4}-\\\\d{2}-\\\\d{2}(T|\\\\b)\",\n      \"name\": \"comment log.date\"\n    },\n    {\n      \"match\": \"(?<=(^|\\\\s))\\\\d{2}[^\\\\w\\\\s]\\\\d{2}[^\\\\w\\\\s]\\\\d{4}\\\\b\",\n      \"name\": \"comment log.date\"\n    },\n    {\n      \"match\": \"\\\\d{1,2}:\\\\d{2}(:\\\\d{2}([.,]\\\\d{1,})?)?(Z| ?[+-]\\\\d{1,2}:\\\\d{2})?\\\\b\",\n      \"name\": \"comment log.date\"\n    },\n    {\n      \"match\": \"\\\\b([0-9a-fA-F]{40}|[0-9a-fA-F]{10}|[0-9a-fA-F]{7})\\\\b\",\n      \"name\": \"constant.language\"\n    },\n    {\n      \"match\": \"\\\\b[0-9a-fA-F]{8}[-]?([0-9a-fA-F]{4}[-]?){3}[0-9a-fA-F]{12}\\\\b\",\n      \"name\": \"constant.language log.constant\"\n    },\n    {\n      \"match\": \"\\\\b([0-9a-fA-F]{2,}[:-])+[0-9a-fA-F]{2,}+\\\\b\",\n      \"name\": \"constant.language log.constant\"\n    },\n    {\n      \"match\": \"\\\\b([0-9]+|true|false|null)\\\\b\",\n      \"name\": \"constant.language log.constant\"\n    },\n    {\n      \"match\": \"\\\\b(0x[a-fA-F0-9]+)\\\\b\",\n      \"name\": \"constant.language log.constant\"\n    },\n    {\n      \"match\": \"\\\"[^\\\"]*\\\"\",\n      \"name\": \"string log.string\"\n    },\n    {\n      \"match\": \"(?<![\\\\w])'[^']*'\",\n      \"name\": \"string log.string\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z.]*Exception)\\\\b\",\n      \"name\": \"string.regexp, emphasis log.exceptiontype\"\n    },\n    {\n      \"begin\": \"^[\\\\t ]*at\",\n      \"end\": \"$\",\n      \"name\": \"string.key, emphasis log.exception\"\n    },\n    {\n      \"match\": \"\\\\b[a-z]+://\\\\S+\\\\b/?\",\n      \"name\": \"constant.language log.constant\"\n    },\n    {\n      \"match\": \"(?<![\\\\w/\\\\\\\\])([\\\\w-]+\\\\.)+([\\\\w-])+(?![\\\\w/\\\\\\\\])\",\n      \"name\": \"constant.language log.constant\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/lsl.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"lsl\", \"lslp\", \"lslm\", \"lslo\", \"esl\"],\n  \"repository\": {\n    \"numeric\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b0(x|X)[0-9a-fA-F]+\\\\b\",\n          \"name\": \"constant.numeric.integer.hexadecimal.lsl\"\n        },\n        {\n          \"match\": \"\\\\b[0-9]+([Ee][-+]?[0-9]+)\\\\b\",\n          \"name\": \"constant.numeric.float.lsl\"\n        },\n        {\n          \"match\": \"\\\\b([0-9]+\\\\.[0-9]*|[0-9]*\\\\.[0-9]+)([Ee][-+]?[0-9]+)?[fF]?\\\\b\",\n          \"name\": \"constant.numeric.float.lsl\"\n        },\n        { \"match\": \"\\\\b[0-9]+\\\\b\", \"name\": \"constant.numeric.integer.lsl\" }\n      ]\n    },\n    \"round-brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.scope.end.lsl\" }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [{ \"include\": \"$base\" }],\n          \"name\": \"meta.block.lsl\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.scope.begin.lsl\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.group.end.lsl\" }\n          },\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"$base\" }],\n          \"name\": \"meta.group.parenthesis.lsl\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.group.begin.lsl\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.array.end.lsl\" }\n          },\n          \"end\": \"\\\\]\",\n          \"patterns\": [{ \"include\": \"$base\" }],\n          \"name\": \"meta.array.lsl\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.array.begin.lsl\" }\n          }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.end.lsl\" }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.lsl\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.begin.lsl\" }\n          }\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-slash.lsl\",\n              \"beginCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.comment.lsl\" }\n              }\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.whitespace.comment.leading.lsl\" }\n          }\n        }\n      ]\n    }\n  },\n  \"keyEquivalent\": \"^~L\",\n  \"uuid\": \"21B2E01B-B911-4B99-975E-4787BEAE6697\",\n  \"patterns\": [\n    { \"include\": \"#round-brackets\" },\n    { \"include\": \"#comments\" },\n    { \"match\": \"==|!=\", \"name\": \"keyword.operator.comparison.lsl\" },\n    { \"match\": \"[-+*/%]?=\", \"name\": \"keyword.operator.assignment.lsl\" },\n    { \"match\": \"\\\\|\\\\|?|\\\\^|&&?|!|~\", \"name\": \"keyword.operator.logical.lsl\" },\n    {\n      \"match\": \"\\\\+\\\\+?|\\\\-\\\\-?|<<|>>|<=|>=|<|>|\\\\*|/|%\",\n      \"name\": \"keyword.operator.arithmetic.lsl\"\n    },\n    { \"include\": \"#numeric\" },\n    {\n      \"match\": \"\\\\b(jump)\\\\s+([a-zA-Z_][a-zA-Z_0-9]*\\\\b)\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.jump.lsl\" },\n        \"2\": { \"name\": \"constant.other.reference.label.lsl\" }\n      }\n    },\n    {\n      \"comment\": \"LSL Flow-control keywords\",\n      \"match\": \"\\\\b(default|state|for|do|while|if|else|jump|return|event|print)\\\\b\",\n      \"name\": \"keyword.control.lsl\"\n    },\n    {\n      \"comment\": \"LSL Types\",\n      \"match\": \"\\\\b(integer|float|string|key|vector|rotation|quaternion|list)\\\\b\",\n      \"name\": \"storage.type.lsl\"\n    },\n    {\n      \"comment\": \"LSL Constants\",\n      \"match\": \"\\\\b(TRUE|FALSE)\\\\b\",\n      \"name\": \"constant.language.boolean.lsl\"\n    },\n    {\n      \"comment\": \"LSL Events\",\n      \"match\": \"\\\\b(l(?:and_collision(?:_(?:start|end))?|i(?:nk_message|sten))|t(?:ouch(?:_(?:start|end))?|ransaction_result|imer)|c(?:o(?:llision(?:_(?:start|end))?|ntrol)|hanged)|e(?:xperience_permissions(?:_denied)?|mail)|r(?:un_time_permissions|emote_data)|no(?:t_a(?:t_ro)?t_target|_sensor)|s(?:tate_e(?:ntry|xit)|ensor)|mo(?:ving_(?:start|end)|ney)|at(?:(?:_rot)?_target|tach)|http_re(?:sponse|quest)|o(?:bject|n)_rez|path_update|dataserver)\\\\b\",\n      \"name\": \"constant.language.events.lsl\"\n    },\n    {\n      \"comment\": \"LSL Functions ll*\",\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(ll(?:\\n\\t\\t\\t\\t\\tG(?:e(?:t(?:P(?:arcel(?:M(?:axPrims|usicURL)|Prim(?:Owners|Count)|(?:Detail|Flag)s)|(?:rim(?:Media|itive)Param|o)s|ermissions(?:Key)?|hysicsMaterial)|S(?:ta(?:t(?:icPath|us)|rtParameter)|im(?:ulatorHostname|Stats)|c(?:ript(?:Stat|Nam)|al)e|u(?:nDirection|bString)|PMaxMemory)|L(?:i(?:nk(?:N(?:umber(?:OfSides)?|ame)|PrimitiveParams|Media|Key)|st(?:EntryType|Length))|ocal(?:Pos|Rot)|andOwnerAt)|A(?:n(?:imation(?:Override|List)?|dResetTime)|gent(?:L(?:anguage|ist)|Info|Size)|ttached(?:List)?|ccel|lpha)|R(?:egion(?:F(?:lags|PS)|TimeDilation|AgentCount|Corner|Name)|o(?:ot(?:Posi|Rota)tion|t))|O(?:bject(?:P(?:rimCount|ermMask)|De(?:tails|sc)|Mass|Name)|wner(?:Key)?|mega)|N(?:umberOf(?:(?:NotecardLin|Sid)e|Prim)s|otecardLine|extEmail)|C(?:amera(?:Pos|Rot)|losestNavPoint|(?:reat|ol)or|enterOfMass)|T(?:exture(?:(?:Offse|Ro)t|Scale)?|ime(?:OfDay|stamp)?|orque)|M(?:a(?:xScaleFactor|ss(?:MKS)?)|inScaleFactor|emoryLimit)|Inventory(?:N(?:umber|ame)|PermMask|Creator|Type|Key)|E(?:xperience(?:ErrorMessage|Details)|n(?:ergy|v))|U(?:se(?:dMemory|rname)|nixTime)|F(?:ree(?:Memory|URLs)|orce)|G(?:eometricCenter|MTclock)|D(?:isplayNam|at)e|BoundingBox|HTTPHeader|Wallclock|Key|Vel)|nerateKey)|round(?:(?:Norma|Repe)l|Contour|Slope)?|ive(?:Inventory(?:List)?|Money))\\n\\t\\t\\t\\t  | S(?:e(?:t(?:L(?:ink(?:PrimitiveParams(?:Fast)?|Texture(?:Anim)?|C(?:amera|olor)|(?:Alph|Medi)a)|ocalRot)|P(?:(?:rim(?:Media|itive)Param|o)s|a(?:rcelMusicURL|yPrice)|hysicsMaterial)|Ve(?:hicle(?:(?:Rotation|Vector)Param|Fl(?:oatParam|ags)|Type)|locity)|C(?:amera(?:(?:Eye|At)Offset|Params)|o(?:ntentType|lor)|lickAction)|S(?:ound(?:Queueing|Radius)|c(?:riptStat|al)e|itText|tatus)|T(?:ext(?:ure(?:Anim)?)?|o(?:uchText|rque)|imerEvent)|A(?:n(?:imationOverride|gularVelocity)|lpha)|R(?:e(?:moteScriptAccessPin|gionPos)|ot)|(?:Forc(?:eAndTorqu)?|Damag)e|(?:HoverHeigh|MemoryLimi)t|Object(?:Desc|Name)|KeyframedMotion|Buoyancy)|n(?:sor(?:Re(?:move|peat))?|dRemoteData))|t(?:op(?:(?:MoveToTarge|LookA)t|Animation|Hover|Sound)|ring(?:T(?:oBase64|rim)|Length)|artAnimation)|c(?:ale(?:ByFactor|Texture)|ript(?:Profil|Dang)er)|i(?:t(?:OnLink|Target)|n)|a(?:meGroup|y)|ubStringIndex|(?:hou|qr)t|HA1String|leep)\\n\\t\\t\\t\\t  | R(?:e(?:quest(?:(?:Experience)?Permissions|S(?:imulatorData|ecureURL)|(?:Inventory|Agent)Data|U(?:sername|RL)|DisplayName)|mo(?:ve(?:FromLand(?:Pass|Ban)List|VehicleFlags|Inventory)|te(?:LoadScriptPin|DataReply))|set(?:(?:Land(?:Pass|Ban)Lis|(?:Other)?Scrip)t|(?:AnimationOverrid|Tim)e)|turnObjectsBy(?:Owner|ID)|lease(?:Controls|URL)|z(?:AtRoo|Objec)t|gionSay(?:To)?|adKeyValue)|o(?:t(?:2(?:A(?:ngle|xis)|Euler|Left|Fwd|Up)|Target(?:Remove)?|ateTexture|Between|LookAt)|und))\\n\\t\\t\\t\\t  | L(?:i(?:st(?:2(?:(?:Intege|Vecto)r|List(?:Strided)?|(?:Floa|Ro)t|String|Json|CSV|Key)|R(?:eplaceList|andomize)|en(?:Control|Remove)?|(?:Insert|Find)List|S(?:tatistics|ort))|nk(?:ParticleSystem|SitTarget))|o(?:o(?:pSound(?:Master|Slave)?|kAt)|g(?:10)?|adURL))\\n\\t\\t\\t\\t  | D(?:e(?:t(?:ected(?:T(?:ouch(?:(?:Bin|N)ormal|Face|Pos|ST|UV)|ype)|(?:LinkNumb|Own)er|Gr(?:oup|ab)|Name|Key|Pos|Rot|Vel)|achFromAvatar)|lete(?:Sub(?:String|List)|Character|KeyValue))|ataSizeKeyValue|umpList2String|i(?:alog|e))\\n\\t\\t\\t\\t  | A(?:(?:vatarOn(?:Link)?SitTarge|x(?:isAngle|es)2Ro)t|(?:pply(?:Rotational)?Impuls|gentInExperienc)e|d(?:dToLand(?:Pass|Ban)List|justSoundVolume)|t(?:tachToAvatar(?:Temp)?|an2)|(?:ngleBetwee|si)n|llowInventoryDrop|(?:co|b)s)\\n\\t\\t\\t\\t  | P(?:a(?:r(?:celMedia(?:CommandList|Query)|seString(?:KeepNulls|2List)|ticleSystem)|(?:ss(?:Collision|Touche)|trolPoint)s)|laySound(?:Slave)?|u(?:shObject|rsue)|reloadSound|ow)\\n\\t\\t\\t\\t  | C(?:l(?:ear(?:(?:Link|Prim)Media|CameraParams)|oseRemoteDataChannel)|reate(?:Character|KeyValue|Link)|o(?:llision(?:Filter|Sound)|s)|SV2List|astRay|eil)\\n\\t\\t\\t\\t  | T(?:r(?:iggerSoun(?:dLimite)?d|ansferLindenDollars)|e(?:leportAgent(?:GlobalCoords|Home)?|xtBox)|a(?:rget(?:Remove|Omega)?|keControls|n)|o(?:Low|Upp)er)\\n\\t\\t\\t\\t  | M(?:a(?:nageEstateAccess|pDestination)|o(?:d(?:ifyLand|Pow)|veToTarget)|essageLinked|inEventDelay|D5String)\\n\\t\\t\\t\\t  | E(?:(?:xecCharacterCm|jectFromLan|dgeOfWorl)d|scapeURL|uler2Rot|mail|vade)\\n\\t\\t\\t\\t  | O(?:penRemoteDataChannel|ffsetTexture|verMyLand|wnerSay)\\n\\t\\t\\t\\t  | B(?:ase64To(?:Integer|String)|reak(?:AllLinks|Link))\\n\\t\\t\\t\\t  | U(?:pdate(?:Character|KeyValue)|n(?:escapeURL|Sit))\\n\\t\\t\\t\\t  | In(?:s(?:tantMessage|ertString)|tegerToBase64)\\n\\t\\t\\t\\t  | F(?:l(?:eeFrom|oor)|orceMouselook|rand|abs)\\n\\t\\t\\t\\t  | Json(?:(?:[GS]etValu|ValueTyp)e|2List)\\n\\t\\t\\t\\t  | V(?:ec(?:Dist|Norm|Mag)|olumeDetect)\\n\\t\\t\\t\\t  | W(?:a(?:nderWithin|ter)|hisper|ind)\\n\\t\\t\\t\\t  | Key(?:(?:Count|s)KeyValu|2Nam)e\\n\\t\\t\\t\\t  | HTTPRe(?:sponse|quest)\\n\\t\\t\\t\\t  | NavigateTo\\n\\t\\t\\t\\t  | XorBase64\\n\\t\\t\\t\\t))\\\\b\\n\\t\\t\\t\",\n      \"name\": \"support.function.lsl\"\n    },\n    {\n      \"comment\": \"LSL Functions only available to certain Linden Lab employees\",\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(ll(?:\\n\\t\\t\\t\\t\\tSet(?:Inventory|Object)PermMask\\n\\t\\t\\t\\t  | GodLikeRezObject\\n\\t\\t\\t\\t))\\\\b\\n\\t\\t\\t\",\n      \"name\": \"support.function.god-mode.lsl\"\n    },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(ll(?:\\n\\t\\t\\t\\t\\tMake(?:Explosion|Fire|Fountain|Smoke)\\n\\t\\t\\t\\t  | XorBase64Strings(?:Correct)?\\n\\t\\t\\t\\t  | Sound(?:Preload)?\\n\\t\\t\\t\\t  | RemoteDataSetRegion\\n\\t\\t\\t\\t))\\\\b\\n\\t\\t\\t\",\n      \"name\": \"invalid.deprecated.support.function.lsl\"\n    },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(ll(?:\\n\\t\\t\\t\\t\\tC(?:l(?:earExperiencePermissions|oud)|ollisionSprite)\\n\\t\\t\\t\\t  | Re(?:freshPrimURL|leaseCamera|moteLoadScript)\\n\\t\\t\\t\\t  | S(?:etPrimURL|topPointAt)\\n\\t\\t\\t\\t  | GetExperienceList\\n\\t\\t\\t\\t  | TakeCamera\\n\\t\\t\\t\\t  | PointAt\\n\\t\\t\\t\\t))\\\\b\\n\\t\\t\\t\",\n      \"name\": \"invalid.illegal.reserved-function.lsl\"\n    },\n    {\n      \"comment\": \"LSL Function Constants\",\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(\\n\\t\\t\\t\\t\\tP(?:R(?:IM_(?:M(?:EDIA_(?:MAX_(?:W(?:HITELIST_(?:COUNT|SIZE)|IDTH_PIXELS)|HEIGHT_PIXELS|URL_LENGTH)|P(?:ERM(?:_(?:(?:ANY|N)ONE|GROUP|OWNER)|S_(?:INTERACT|CONTROL))|ARAM_MAX)|A(?:UTO_(?:SCALE|LOOP|PLAY|ZOOM)|LT_IMAGE_ENABLE)|C(?:ONTROLS(?:_(?:STANDARD|MINI))?|URRENT_URL)|W(?:HITELIST(?:_ENABLE)?|IDTH_PIXELS)|H(?:EIGHT_PIXELS|OME_URL)|FIRST_CLICK_INTERACT)|ATERIAL(?:_(?:PLASTIC|RUBBER|FLESH|GLASS|METAL|STONE|WOOD))?)|S(?:C(?:ULPT_(?:TYPE_(?:(?:SPHER|PLAN)E|CYLINDER|TORUS|MASK)|FLAG_(?:INVERT|MIRROR))|RIPTED_SIT_ONLY)|HINY_(?:MEDIUM|HIGH|NONE|LOW)|I(?:T_TARGET|ZE)|PECULAR|LICE)|BUMP_(?:S(?:T(?:UCCO|ONE)|UCTION|IDING|HINY)|B(?:RI(?:CKS|GHT)|LOBS|ARK)|(?:(?:LARGE)?TIL|NON)E|C(?:ONCRETE|HECKER)|D(?:ISKS|ARK)|W(?:EAVE|OOD)|GRAVEL)|T(?:YPE(?:_(?:S(?:CULPT|PHERE)|T(?:ORUS|UBE)|CYLINDER|PRISM|RING|BOX))?|E(?:X(?:GEN(?:_(?:DEFAULT|PLANAR))?|T(?:URE)?)|MP_ON_REZ))|P(?:H(?:YSICS(?:_SHAPE_(?:(?:NON|TYP)E|CONVEX|PRIM))?|ANTOM)|O(?:S(?:_LOCAL|ITION)|INT_LIGHT))|AL(?:PHA_MODE(?:_(?:(?:EMISSIV|NON)E|BLEND|MASK))?|LOW_UNSIT)|HOLE_(?:(?:(?:TRIANG|CIRC)L|SQUAR)E|DEFAULT)|F(?:ULLBRIGHT|LEXIBLE)|ROT(?:_LOCAL|ATION)|N(?:ORMAL|AME)|LINK_TARGET|COLOR|OMEGA|DESC|GLOW)|OFILE_(?:SCRIPT_MEMORY|NONE))|A(?:RCEL_(?:FLAG_(?:ALLOW_(?:(?:CREATE(?:_GROUP)?_OBJEC|SCRIP)TS|GROUP_(?:OBJECT_ENTRY|SCRIPTS)|(?:ALL_OBJECT_ENTR|FL)Y|TERRAFORM|LANDMARK|DAMAGE)|USE_(?:(?:LAND_PASS|BAN)_LIST|ACCESS_(?:GROUP|LIST))|RESTRICT_PUSHOBJECT|LOCAL_SOUND_ONLY)|MEDIA_COMMAND_(?:A(?:UTO_ALIGN|GENT)|T(?:EXTUR|IM|YP)E|LOOP(?:_SET)?|P(?:AUSE|LAY)|U(?:NLOAD|RL)|S(?:IZE|TOP)|DESC)|DETAILS_(?:SEE_AVATARS|GROUP|OWNER|AREA|DESC|NAME|ID)|COUNT_(?:T(?:OTAL|EMP)|O(?:TH|WN)ER|SELECTED|GROUP))|Y(?:MENT_INFO_(?:ON_FILE|USED)|_(?:DEFAULT|HIDE))|SS(?:_(?:IF_NOT_HANDLED|ALWAYS|NEVER)|IVE)|TROL_PAUSE_AT_WAYPOINTS)|SYS_(?:PART_(?:B(?:F_(?:ONE(?:_MINUS_(?:SOURCE_(?:ALPHA|COLOR)|DEST_COLOR))?|SOURCE_(?:ALPHA|COLOR)|DEST_COLOR|ZERO)|LEND_FUNC_(?:SOURCE|DEST)|OUNCE_MASK)|(?:INTERP_(?:COLOR|SCALE)|TARGET_(?:LINEAR|POS)|RIBBON|WIND)_MASK|E(?:ND_(?:ALPHA|COLOR|SCALE|GLOW)|MISSIVE_MASK)|F(?:OLLOW_(?:VELOCITY|SRC)_MASK|LAGS)|START_(?:ALPHA|COLOR|SCALE|GLOW)|MAX_AGE)|SRC_(?:PATTERN(?:_(?:ANGLE(?:_CONE(?:_EMPTY)?)?|EXPLODE|DROP))?|BURST_(?:SPEED_M(?:AX|IN)|RA(?:DIUS|TE)|PART_COUNT)|A(?:NGLE_(?:BEGIN|END)|CCEL)|T(?:ARGET_KEY|EXTURE)|MAX_AGE|OMEGA))|U(?:_(?:FAILURE_(?:(?:(?:PARCEL_)?UNREACHABL|TARGET_GON)E|NO_(?:VALID_DESTINATION|NAVMESH)|DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:START|GOAL)|OTHER)|(?:SLOWDOWN_DISTANCE|GOAL)_REACHED|EVADE_(?:SPOTTED|HIDDEN))|RSUIT_(?:(?:INTERCEP|OFFSE)T|GOAL_TOLERANCE|FUZZ_FACTOR)|BLIC_CHANNEL)|ERM(?:ISSION_(?:T(?:R(?:IGGER_ANIMATION|ACK_CAMERA)|AKE_CONTROLS|ELEPORT)|(?:OVERRIDE_ANIMATION|RETURN_OBJECT)S|(?:SILENT_ESTATE_MANAGEMEN|DEBI)T|C(?:ONTROL_CAMERA|HANGE_LINKS)|ATTACH)|_(?:MO(?:DIFY|VE)|TRANSFER|COPY|ALL))|I(?:NG_PONG|_BY_TWO)?)\\n\\t\\t\\t\\t  | C(?:HA(?:RACTER_(?:A(?:CCOUNT_FOR_SKIPPED_FRAMES|VOIDANCE_MODE)|MAX_(?:(?:AC|DE)CEL|TURN_RADIUS|SPEED)|CMD_(?:(?:SMOOTH_)?STO|JUM)P|TYPE(?:_(?:[ABCD]|NONE))?|DESIRED(?:_TURN)?_SPEED|STAY_WITHIN_PARCEL|ORIENTATION|LENGTH|RADIUS)|NGED_(?:TE(?:LEPORT|XTURE)|REGION(?:_START)?|(?:COLO|OWNE)R|S(?:CAL|HAP)E|ALLOWED_DROP|INVENTORY|MEDIA|LINK))|AMERA_(?:P(?:OSITION(?:_(?:L(?:OCKED|AG)|THRESHOLD))?|ITCH)|FOCUS(?:_(?:L(?:OCKED|AG)|THRESHOLD|OFFSET))?|BEHINDNESS_(?:ANGLE|LAG)|(?:DISTANC|ACTIV)E)|ONT(?:ROL_(?:R(?:OT_(?:RIGH|LEF)|IGH)T|(?:ML_LBUTTO|DOW)N|L(?:BUTTON|EFT)|BACK|FWD|UP)|ENT_TYPE_(?:(?:X(?:HT)?|HT)ML|(?:ATO|FOR)M|JSON|LLSD|TEXT|RSS))|LICK_ACTION_(?:OPEN(?:_MEDIA)?|(?:PL?A|BU)Y|TOUCH|NONE|SIT))\\n\\t\\t\\t\\t  | A(?:TTACH_(?:H(?:UD_(?:TOP_(?:(?:RIGH|LEF)T|CENTER)|BOTTOM(?:_(?:RIGH|LEF)T)?|CENTER_[12])|IND_[LR]FOOT|EAD)|R(?:H(?:AND(?:_RING1)?|IP)|L(?:ARM|LEG)|U(?:ARM|LEG)|E(?:AR|YE)|IGHT_PEC|SHOULDER|FOOT|WING)|L(?:H(?:AND(?:_RING1)?|IP)|E(?:FT_PEC|AR|YE)|L(?:ARM|LEG)|U(?:ARM|LEG)|SHOULDER|FOOT|WING)|FACE_(?:LE(?:AR|YE)|RE(?:AR|YE)|TONGUE|JAW)|TAIL_(?:BASE|TIP)|AVATAR_CENTER|B(?:ELLY|ACK)|CH(?:EST|IN)|N(?:ECK|OSE)|PELVIS|GROIN|MOUTH)|GENT(?:_(?:A(?:TTACHMENTS|LWAYS_RUN|UTOPILOT|WAY)|LIST_(?:PARCEL(?:_OWNER)?|REGION)|B(?:Y_(?:LEGACY_|USER)NAME|USY)|(?:CROUCH|WALK|FLY|TYP)ING|S(?:CRIPTED|ITTING)|MOUSELOOK|ON_OBJECT|IN_AIR))?|VOID_(?:(?:DYNAMIC_OBSTACLE|CHARACTER)S|NONE)|LL_SIDES|NIM_ON|CTIVE)\\n\\t\\t\\t\\t  | O(?:BJECT_(?:R(?:E(?:TURN_(?:PARCEL(?:_OWNER)?|REGION)|NDER_WEIGHT|ZZER_KEY)|(?:UNNING_SCRIPT_COUN|O?O)T)|P(?:H(?:YSICS(?:_COST)?|ANTOM)|RIM_(?:EQUIVALENCE|COUNT)|ATHFINDING_TYPE|OS)|S(?:(?:E(?:LECT_COUN|RVER_COS)|TREAMING_COS|IT_COUN)T|CRIPT_(?:MEMORY|TIME))|T(?:OTAL_(?:INVENTORY|SCRIPT)_COUNT|EMP_(?:ATTACHED|ON_REZ))|C(?:REAT(?:ION_TIME|OR)|HARACTER_TIME|LICK_ACTION)|ATTACHED_(?:SLOTS_AVAILABLE|POINT)|(?:BODY_SHAPE_TYP|NAM)E|GROUP(?:_TAG)?|O(?:MEGA|WNER)|UNKNOWN_DETAIL|LAST_OWNER_ID|HOVER_HEIGHT|VELOCITY|DESC)|PT_(?:(?:(?:EXCLUSION|MATERIAL)_VOLUM|(?:STATIC_OBSTAC|WALKAB)L)E|(?:(?:CHARACT|OTH)E|AVATA)R|LEGACY_LINKSET))\\n\\t\\t\\t\\t  | VE(?:HICLE_(?:FLAG_(?:HOVER_(?:(?:TERRAIN|WATER|UP)_ONLY|GLOBAL_HEIGHT)|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED|NO_DEFLECTION_UP)|LINEAR_(?:MOTOR_(?:D(?:ECAY_TIMESCALE|IRECTION)|TIMESCALE|OFFSET)|DEFLECTION_(?:EFFICIENCY|TIMESCALE)|FRICTION_TIMESCALE)|ANGULAR_(?:MOTOR_(?:D(?:ECAY_TIMESCALE|IRECTION)|TIMESCALE)|DEFLECTION_(?:EFFICIENCY|TIMESCALE)|FRICTION_TIMESCALE)|TYPE_(?:(?:AIRPLA|NO)NE|B(?:ALLOON|OAT)|SLED|CAR)|B(?:ANKING_(?:EFFICIENCY|TIMESCALE|MIX)|UOYANCY)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|HOVER_(?:EFFICIENCY|TIMESCALE|HEIGHT)|REFERENCE_FRAME)|RTICAL)\\n\\t\\t\\t\\t  | R(?:E(?:GION_FLAG_(?:BLOCK_(?:FLY(?:OVER)?|TERRAFORM)|ALLOW_D(?:IRECT_TELEPORT|AMAGE)|DISABLE_(?:COLLISION|PHYSIC)S|RESTRICT_PUSHOBJECT|FIXED_SUN|SANDBOX)|MOTE_DATA_(?:RE(?:QUEST|PLY)|CHANNEL)|QUIRE_LINE_OF_SIGHT|STITUTION|VERSE)|C(?:_(?:REJECT_(?:(?:NON)?PHYSICAL|(?:AGENT|TYPE)S|LAND)|GET_(?:LINK_NUM|ROOT_KEY|NORMAL)|D(?:ETECT_PHANTOM|ATA_FLAGS)|MAX_HITS)|ERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN))|AD_TO_DEG|OTATE)\\n\\t\\t\\t\\t  | S(?:T(?:ATUS_(?:(?:NOT_(?:SUPPORTE|FOUN)|WHITELIST_FAILE)D|B(?:LOCK_GRAB(?:_OBJECT)?|OUNDS_ERROR)|(?:MALFORMED_PARAM|CAST_SHADOW)S|R(?:ETURN_AT_EDGE|OTATE_[XYZ])|PH(?:ANTOM|YSICS)|INTERNAL_ERROR|TYPE_MISMATCH|DIE_AT_EDGE|SANDBOX|OK)|RING_TRIM(?:_(?:HEAD|TAIL))?)|I(?:T_(?:NO(?:_(?:EXPERIENCE_PERMISSION|SIT_TARGET|ACCESS)|T_EXPERIENCE)|INVALID_(?:(?:OBJEC|AGEN)T|LINK))|M_STAT_PCT_CHARS_STEPPED)|C(?:RIPTED|ALE)|MOOTH|QRT2)\\n\\t\\t\\t\\t  | XP_ERROR_(?:(?:(?:EXPERIENCE(?:_(?:SUSPEND|DISABL)|S_DISABL)|(?:MATURITY|QUOTA)_EXCEED|THROTTL)E|KEY_NOT_FOUN)D|NO(?:T_(?:PERMITTE(?:D_LAN)?|FOUN)D|(?:_EXPERIENC|N)E)|RE(?:QUEST_PERM_TIMEOUT|TRY_UPDATE)|INVALID_(?:EXPERIENCE|PARAMETERS)|STOR(?:AGE_EXCEPTION|E_DISABLED)|UNKNOWN_ERROR)\\n\\t\\t\\t\\t  | L(?:I(?:ST_STAT_(?:S(?:UM(?:_SQUARES)?|TD_DEV)|M(?:(?:E(?:DI)?A|I)N|AX)|GEOMETRIC_MEAN|NUM_COUNT|RANGE)|NK_(?:ALL_(?:CHILDREN|OTHERS)|(?:ROO|SE)T|THIS))|AND_(?:R(?:EVERT|AISE)|L(?:EVEL|OWER)|SMOOTH|NOISE)|OOP)\\n\\t\\t\\t\\t  | T(?:YPE_(?:IN(?:TEGER|VALID)|ROTATION|STRING|VECTOR|FLOAT|KEY)|EXTURE_(?:(?:TRANSPAREN|DEFAUL)T|PLYWOOD|BLANK|MEDIA)|OUCH_INVALID_(?:TEXCOORD|VECTOR|FACE)|RAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|WO_PI)\\n\\t\\t\\t\\t  | E(?:STATE_ACCESS_(?:ALLOWED_(?:AGENT_(?:REMOVE|ADD)|GROUP_(?:REMOVE|ADD))|BANNED_AGENT_(?:REMOVE|ADD))|RR_(?:(?:(?:RUNTIME|PARCEL)_PERMISSION|MALFORMED_PARAM)S|THROTTLED|GENERIC)|OF)\\n\\t\\t\\t\\t  | H(?:TTP_(?:VER(?:BOSE_THROTTLE|IFY_CERT)|BODY_(?:MAXLENGTH|TRUNCATED)|(?:USER_AGEN|ACCEP)T|M(?:IMETYPE|ETHOD)|PRAGMA_NO_CACHE|CUSTOM_HEADER)|ORIZONTAL)\\n\\t\\t\\t\\t  | INVENTORY_(?:(?:BODYPAR|OBJEC)T|A(?:NIMATION|LL)|(?:GES|TEX)TURE|NO(?:TECARD|NE)|S(?:CRIPT|OUND)|CLOTHING|LANDMARK)\\n\\t\\t\\t\\t  | KFM_(?:C(?:MD_(?:P(?:AUSE|LAY)|STOP)|OMMAND)|R(?:OTATION|EVERSE)|TRANSLATION|PING_PONG|FORWARD|DATA|LOOP|MODE)\\n\\t\\t\\t\\t  | D(?:ATA_(?:SIM_(?:(?:STATU|PO)S|RATING)|(?:ONLIN|NAM)E|PAYINFO|BORN)|E(?:BUG_CHANNEL|G_TO_RAD|NSITY))\\n\\t\\t\\t\\t  | JSON_(?:(?:DELET|FALS|TRU)E|A(?:PPEND|RRAY)|NU(?:MBER|LL)|INVALID|OBJECT|STRING)\\n\\t\\t\\t\\t  | G(?:CNP_(?:RADIUS|STATIC)|RAVITY_MULTIPLIER)\\n\\t\\t\\t\\t  | MASK_(?:(?:EVERYON|BAS)E|GROUP|OWNER|NEXT)\\n\\t\\t\\t\\t  | F(?:ORCE_DIRECT_PATH|RICTION)\\n\\t\\t\\t\\t  | URL_REQUEST_(?:GRANT|DENI)ED\\n\\t\\t\\t\\t  | WANDER_PAUSE_AT_WAYPOINTS\\n\\t\\t\\t\\t  | ZERO_(?:ROTATION|VECTOR)\\n\\t\\t\\t\\t  | NULL_KEY\\n\\t\\t\\t\\t)\\\\b\\n\\t\\t\\t\",\n      \"name\": \"support.constant.lsl\"\n    },\n    {\n      \"match\": \"(?x)\\n\\t\\t\\t\\t\\\\b(\\n\\t\\t\\t\\t\\tPERMISSION_(?:CHANGE_(?:JOINT|PERMISSION)S|RE(?:MAP_CONTROLS|LEASE_OWNERSHIP))\\n\\t\\t\\t\\t  | LAND_(?:SMALL|MEDIUM|LARGE)_BRUSH\\n\\t\\t\\t\\t  | PRIM_(?:CAST_SHADOWS|MATERIAL_LIGHT)\\n\\t\\t\\t\\t  | PSYS_SRC_(?:(?:INN|OUT)ERANGLE|OBJ_REL_MASK)\\n\\t\\t\\t\\t  | ATTACH_[LR]PEC\\n\\t\\t\\t\\t  | VEHICLE_FLAG_NO_FLY_UP\\n\\t\\t\\t\\t  | DATA_RATING\\n\\t\\t\\t\\t)\\\\b\\n\\t\\t\\t\",\n      \"name\": \"invalid.deprecated.constant.lsl\"\n    },\n    {\n      \"match\": \"\\\\b[a-zA-Z_][a-zA-Z_0-9]*(?=\\\\s*\\\\()\",\n      \"name\": \"entity.name.function.lsl\"\n    },\n    { \"match\": \"\\\\b[a-zA-Z_][a-zA-Z_0-9]*\\\\b\", \"name\": \"variable.other.lsl\" },\n    {\n      \"match\": \"\\\\B@[a-zA-Z_][a-zA-Z_0-9]*\\\\b\",\n      \"name\": \"constant.other.reference.label.lsl\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.lsl\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\[\\\\\\\\\\\"nt]\", \"name\": \"constant.character.escape.lsl\" }\n      ],\n      \"name\": \"string.quoted.double.lsl\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.lsl\" }\n      }\n    }\n  ],\n  \"name\": \"Second Life LSL\",\n  \"scopeName\": \"source.lsl\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/lua.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/sumneko/lua.tmbundle/blob/master/Syntaxes/Lua.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/sumneko/lua.tmbundle/commit/bc74f9230c3f07c0ecc1bc1727ad98d9e70aff5b\",\n  \"name\": \"lua\",\n  \"scopeName\": \"source.lua\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\b(?:(local)\\\\s+)?(function)\\\\b(?![,:])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.local.lua\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.lua\"\n        }\n      },\n      \"end\": \"(?<=[\\\\)\\\\-{}\\\\[\\\\]\\\"'])\",\n      \"name\": \"meta.function.lua\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.lua\"\n            }\n          },\n          \"end\": \"(\\\\))|(?=[\\\\-\\\\.{}\\\\[\\\\]\\\"'])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.finish.lua\"\n            }\n          },\n          \"name\": \"meta.parameter.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"[a-zA-Z_][a-zA-Z0-9_]*\",\n              \"name\": \"variable.parameter.function.lua\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.arguments.lua\"\n            },\n            {\n              \"begin\": \":\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.arguments.lua\"\n                }\n              },\n              \"end\": \"(?=[\\\\),])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#luadoc.type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\\\\s*(?=:)\",\n          \"name\": \"entity.name.class.lua\"\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n          \"name\": \"entity.name.function.lua\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?<![\\\\w\\\\d.])0[xX][0-9A-Fa-f]+(\\\\.[0-9A-Fa-f]+)?([eE]-?\\\\d*)?([pP][-+]\\\\d+)?\",\n      \"name\": \"constant.numeric.float.hexadecimal.lua\"\n    },\n    {\n      \"match\": \"(?<![\\\\w\\\\d.])0[xX][0-9A-Fa-f]+(?![pPeE.0-9])\",\n      \"name\": \"constant.numeric.integer.hexadecimal.lua\"\n    },\n    {\n      \"match\": \"(?<![\\\\w\\\\d.])\\\\d+(\\\\.\\\\d+)?([eE]-?\\\\d*)?\",\n      \"name\": \"constant.numeric.float.lua\"\n    },\n    {\n      \"match\": \"(?<![\\\\w\\\\d.])\\\\d+(?![pPeE.0-9])\",\n      \"name\": \"constant.numeric.integer.lua\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.lua\"\n        }\n      },\n      \"match\": \"\\\\A(#!).*$\\\\n?\",\n      \"name\": \"comment.line.shebang.lua\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.goto.lua\"\n        },\n        \"2\": {\n          \"name\": \"string.tag.lua\"\n        }\n      },\n      \"match\": \"\\\\b(goto)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.begin.lua\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.embedded.end.lua\"\n        }\n      },\n      \"match\": \"(::)\\\\s*[a-zA-Z_][a-zA-Z0-9_]*\\\\s*(::)\",\n      \"name\": \"string.tag.lua\"\n    },\n    {\n      \"match\": \"<\\\\s*(const|close)\\\\s*>\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.tag.lua\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\<[a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*\\\\>\",\n      \"name\": \"storage.type.generic.lua\"\n    },\n    {\n      \"match\": \"\\\\b(break|do|else|for|if|elseif|goto|return|then|repeat|while|until|end|in)\\\\b\",\n      \"name\": \"keyword.control.lua\"\n    },\n    {\n      \"match\": \"\\\\b(local|global)\\\\b\",\n      \"name\": \"keyword.local.lua\"\n    },\n    {\n      \"match\": \"\\\\b(function)\\\\b(?![,:])\",\n      \"name\": \"keyword.control.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(false|nil(?!:)|true|_ENV|_G|_VERSION|math\\\\.(pi|huge|maxinteger|mininteger)|utf8\\\\.charpattern|io\\\\.(stdin|stdout|stderr)|package\\\\.(config|cpath|loaded|loaders|path|preload|searchers))\\\\b|(?<![.])\\\\.{3}(?!\\\\.)\",\n      \"name\": \"constant.language.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(self)\\\\b\",\n      \"name\": \"variable.language.self.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(assert|collectgarbage|dofile|error|getfenv|getmetatable|ipairs|load|loadfile|loadstring|module|next|pairs|pcall|print|rawequal|rawget|rawlen|rawset|require|select|setfenv|setmetatable|tonumber|tostring|type|unpack|xpcall)\\\\b(?!\\\\s*=(?!=))\",\n      \"name\": \"support.function.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(async)\\\\b(?!\\\\s*=(?!=))\",\n      \"name\": \"entity.name.tag.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(coroutine\\\\.(create|isyieldable|close|resume|running|status|wrap|yield)|string\\\\.(byte|char|dump|find|format|gmatch|gsub|len|lower|match|pack|packsize|rep|reverse|sub|unpack|upper)|table\\\\.(concat|insert|maxn|move|pack|remove|sort|unpack)|math\\\\.(abs|acos|asin|atan2?|ceil|cosh?|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pow|rad|random|randomseed|sinh?|sqrt|tanh?|tointeger|type)|io\\\\.(close|flush|input|lines|open|output|popen|read|tmpfile|type|write)|os\\\\.(clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\\\\.(loadlib|seeall|searchpath)|debug\\\\.(debug|[gs]etfenv|[gs]ethook|getinfo|[gs]etlocal|[gs]etmetatable|getregistry|[gs]etupvalue|[gs]etuservalue|set[Cc]stacklimit|traceback|upvalueid|upvaluejoin)|bit32\\\\.(arshift|band|bnot|bor|btest|bxor|extract|replace|lrotate|lshift|rrotate|rshift)|utf8\\\\.(char|codes|codepoint|len|offset))\\\\b(?!\\\\s*=(?!=))\",\n      \"name\": \"support.function.library.lua\"\n    },\n    {\n      \"match\": \"\\\\b(and|or|not|\\\\|\\\\||\\\\&\\\\&|\\\\!)\\\\b\",\n      \"name\": \"keyword.operator.lua\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b(?=\\\\s*(?:[({\\\"']|\\\\[\\\\[))\",\n      \"name\": \"support.function.any-method.lua\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b(?=\\\\s*\\\\??:)\",\n      \"name\": \"entity.name.class.lua\"\n    },\n    {\n      \"match\": \"(?<=[^.]\\\\.|:)\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\",\n      \"name\": \"entity.other.attribute.lua\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"variable.other.lua\"\n    },\n    {\n      \"match\": \"\\\\+|-|%|#|\\\\*|\\\\/|\\\\^|==?|~=|!=|<=?|>=?|(?<!\\\\.)\\\\.{2}(?!\\\\.)\",\n      \"name\": \"keyword.operator.lua\"\n    }\n  ],\n  \"repository\": {\n    \"escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[abfnrtv\\\\\\\\\\\"'\\\\n]\",\n          \"name\": \"constant.character.escape.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\z[\\\\n\\\\t ]*\",\n          \"name\": \"constant.character.escape.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\d{1,3}\",\n          \"name\": \"constant.character.escape.byte.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\x[0-9A-Fa-f][0-9A-Fa-f]\",\n          \"name\": \"constant.character.escape.byte.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\u\\\\{[0-9A-Fa-f]+\\\\}\",\n          \"name\": \"constant.character.escape.unicode.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.character.escape.lua\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"end\": \"'[ \\\\t]*|(?=\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"name\": \"string.quoted.single.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"end\": \"\\\"[ \\\\t]*|(?=\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"name\": \"string.quoted.double.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"end\": \"`[ \\\\t]*|(?=\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"name\": \"string.quoted.double.lua\"\n        },\n        {\n          \"begin\": \"(?<=\\\\.cdef)\\\\s*(\\\\[(=*)\\\\[)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.other.multiline.lua\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"contentName\": \"meta.embedded.lua\",\n          \"end\": \"(\\\\]\\\\2\\\\])[ \\\\t]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.other.multiline.lua\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!--)\\\\[(=*)\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"end\": \"\\\\]\\\\1\\\\][ \\\\t]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"name\": \"string.quoted.other.multiline.lua\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.lua\"\n            }\n          },\n          \"end\": \"(?!\\\\G)((?!^)[ \\\\t]+\\\\n)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.trailing.lua\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"--\\\\[(=*)\\\\[\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.begin.lua\"\n                }\n              },\n              \"end\": \"\\\\]\\\\1\\\\]\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.end.lua\"\n                }\n              },\n              \"name\": \"comment.block.lua\"\n            },\n            {\n              \"begin\": \"----\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.lua\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.lua\"\n            },\n            {\n              \"begin\": \"---\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.lua\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.doc.lua\",\n              \"patterns\": [\n                {\n                  \"include\": \"#luadoc\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"--\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.lua\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.lua\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.lua\"\n            }\n          },\n          \"end\": \"\\\\*\\\\/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.lua\"\n            }\n          },\n          \"name\": \"comment.block.lua\"\n        }\n      ]\n    },\n    \"luadoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=---\\\\s*)@class\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b([a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*)\",\n              \"name\": \"support.class.lua\"\n            },\n            {\n              \"match\": \":|,\",\n              \"name\": \"keyword.operator.lua\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@type\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#luadoc.type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@alias\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b([a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.lua\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#luadoc.type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@param\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b(\\\\??)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.variable.lua\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.lua\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#luadoc.type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@return\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\?\",\n              \"name\": \"keyword.operator.lua\"\n            },\n            {\n              \"include\": \"#luadoc.type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@field\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b|(\\\\[))(\\\\??)\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"entity.name.variable.lua\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.operator.lua\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#luadoc.type\"\n                },\n                {\n                  \"match\": \"\\\\]\",\n                  \"name\": \"keyword.operator.lua\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@generic\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"storage.type.generic.lua\"\n                }\n              },\n              \"end\": \"(?=\\\\n)|(,)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.lua\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \":\",\n                  \"name\": \"keyword.operator.lua\"\n                },\n                {\n                  \"include\": \"#luadoc.type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@vararg\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#luadoc.type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@overload\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#luadoc.type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@deprecated\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\"\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@meta\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\"\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@version\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(5\\\\.1|5\\\\.2|5\\\\.3|5\\\\.4|JIT)\\\\b\",\n              \"name\": \"support.class.lua\"\n            },\n            {\n              \"match\": \",|\\\\>|\\\\<\",\n              \"name\": \"keyword.operator.lua\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@see\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b([a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*)\",\n              \"name\": \"support.class.lua\"\n            },\n            {\n              \"match\": \"#\",\n              \"name\": \"keyword.operator.lua\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@diagnostic\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"([a-zA-Z_\\\\-0-9]+)[ \\\\t]*(:)?\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.unit\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b([a-zA-Z_\\\\*][a-zA-Z0-9_\\\\-]*)\",\n                  \"name\": \"support.class.lua\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"keyword.operator.lua\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@module\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=---\\\\s*)@(async|nodiscard)\",\n          \"name\": \"storage.type.annotation.lua\"\n        },\n        {\n          \"begin\": \"(?<=---)\\\\|\\\\s*[\\\\>\\\\+]?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"luadoc.type\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfun\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.lua\"\n            }\n          },\n          \"end\": \"(?=\\\\s)\",\n          \"patterns\": [\n            {\n              \"match\": \"[\\\\(\\\\),:\\\\?][ \\\\t]*\",\n              \"name\": \"keyword.operator.lua\"\n            },\n            {\n              \"match\": \"([a-zA-Z_][a-zA-Z0-9_\\\\.\\\\*\\\\[\\\\]\\\\<\\\\>\\\\,\\\\-]*)(?<!,)[ \\\\t]*(?=\\\\??:)\",\n              \"name\": \"entity.name.variable.lua\"\n            },\n            {\n              \"include\": \"#luadoc.type\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\<[a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*\\\\>\",\n          \"name\": \"storage.type.generic.lua\"\n        },\n        {\n          \"match\": \"\\\\basync\\\\b\",\n          \"name\": \"entity.name.tag.lua\"\n        },\n        {\n          \"match\": \"[\\\\{\\\\}\\\\:\\\\,\\\\?\\\\|\\\\`][ \\\\t]*\",\n          \"name\": \"keyword.operator.lua\"\n        },\n        {\n          \"begin\": \"(?=[a-zA-Z_\\\\.\\\\*\\\"'\\\\[])\",\n          \"end\": \"(?=[\\\\s\\\\)\\\\,\\\\?\\\\:\\\\}\\\\|])\",\n          \"patterns\": [\n            {\n              \"match\": \"([a-zA-Z0-9_\\\\.\\\\*\\\\[\\\\]\\\\<\\\\>\\\\,\\\\-]+)(?<!,)[ \\\\t]*\",\n              \"name\": \"support.type.lua\"\n            },\n            {\n              \"match\": \"(\\\\.\\\\.\\\\.)[ \\\\t]*\",\n              \"name\": \"constant.language.lua\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/make.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/fadeevab/make.tmbundle/blob/master/Syntaxes/Makefile.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/fadeevab/make.tmbundle/commit/ef0c485afc66445a6cf184dc34f7744306304f1f\",\n  \"name\": \"make\",\n  \"scopeName\": \"source.makefile\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#variables\"\n    },\n    {\n      \"include\": \"#variable-assignment\"\n    },\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#recipe\"\n    },\n    {\n      \"include\": \"#target\"\n    }\n  ],\n  \"repository\": {\n    \"comma\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimeter.comma.makefile\"\n    },\n    \"comment\": {\n      \"begin\": \"(^[ ]+)?((?<!\\\\\\\\)(\\\\\\\\\\\\\\\\)*)(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.makefile\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.makefile\"\n            }\n          },\n          \"end\": \"(?=[^\\\\\\\\])$\",\n          \"name\": \"comment.line.number-sign.makefile\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^[ ]*([s\\\\-]?include)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.include.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"match\": \"%\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^[ ]*(vpath)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.vpath.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"match\": \"%\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:(override)\\\\s*)?(define)\\\\s*([^\\\\s]+)\\\\s*(=|\\\\?=|:=|\\\\+=)?(?=\\\\s)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.override.makefile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.define.makefile\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.makefile\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.key-value.makefile\"\n            }\n          },\n          \"end\": \"^\\\\s*(endef)\\\\b\",\n          \"name\": \"meta.scope.conditional.makefile\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!\\\\n)\",\n              \"end\": \"^\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#directives\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^[ ]*(export)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.$1.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variable-assignment\"\n            },\n            {\n              \"match\": \"[^\\\\s]+\",\n              \"name\": \"variable.other.makefile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^[ ]*(override|private)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.$1.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variable-assignment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^[ ]*(unexport|undefine)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.$1.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"[^\\\\s]+\",\n              \"name\": \"variable.other.makefile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(ifeq|ifneq|ifdef|ifndef)(?=\\\\s)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.$1.makefile\"\n            }\n          },\n          \"end\": \"^\\\\s*(endif)\\\\b\",\n          \"name\": \"meta.scope.conditional.makefile\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\",\n              \"end\": \"^\",\n              \"name\": \"meta.scope.condition.makefile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#variables\"\n                },\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*else(?=\\\\s)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.else.makefile\"\n                }\n              },\n              \"end\": \"^\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#variables\"\n                },\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"target\": {\n      \"begin\": \"^(?!\\\\t)([^:]*)(:)(?!\\\\=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.function.target.$1.makefile\"\n                }\n              },\n              \"match\": \"^\\\\s*(\\\\.(PHONY|SUFFIXES|DEFAULT|PRECIOUS|INTERMEDIATE|SECONDARY|SECONDEXPANSION|DELETE_ON_ERROR|IGNORE|LOW_RESOLUTION_TIME|SILENT|EXPORT_ALL_VARIABLES|NOTPARALLEL|ONESHELL|POSIX))\\\\s*$\"\n            },\n            {\n              \"begin\": \"(?=\\\\S)\",\n              \"end\": \"(?=\\\\s|$)\",\n              \"name\": \"entity.name.function.target.makefile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#variables\"\n                },\n                {\n                  \"match\": \"%\",\n                  \"name\": \"constant.other.placeholder.makefile\"\n                }\n              ]\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.makefile\"\n        }\n      },\n      \"end\": \"[^\\\\\\\\]$\",\n      \"name\": \"meta.scope.target.makefile\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G\",\n          \"end\": \"(?=[^\\\\\\\\])$\",\n          \"name\": \"meta.scope.prerequisites.makefile\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            },\n            {\n              \"match\": \"%|\\\\*\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"recipe\": {\n      \"begin\": \"^\\\\t([+\\\\-@]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.$1.makefile\"\n        }\n      },\n      \"end\": \"[^\\\\\\\\]$\",\n      \"name\": \"meta.scope.recipe.makefile\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\n\",\n          \"name\": \"constant.character.escape.continuation.makefile\"\n        },\n        {\n          \"include\": \"#variables\"\n        }\n      ]\n    },\n    \"variable-assignment\": {\n      \"begin\": \"(^[ ]*|\\\\G\\\\s*)([^\\\\s:#=]+)\\\\s*((?<![?:+!])=|\\\\?=|:=|\\\\+=|!=)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"variable.other.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.key-value.makefile\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\n\",\n          \"name\": \"constant.character.escape.continuation.makefile\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variables\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#parentheses-interpolation\"\n        },\n        {\n          \"include\": \"#braces-interpolation\"\n        }\n      ]\n    },\n    \"parentheses-interpolation\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"braces-interpolation\": {\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#simple-variable\"\n        },\n        {\n          \"include\": \"#variable-parentheses\"\n        },\n        {\n          \"include\": \"#variable-braces\"\n        }\n      ]\n    },\n    \"simple-variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\$[^(){}]\",\n          \"name\": \"variable.language.makefile\"\n        }\n      ]\n    },\n    \"variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\$\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.makefile\"\n            }\n          },\n          \"end\": \"\\\\)|((?<!\\\\\\\\)\\\\n)\",\n          \"name\": \"string.interpolated.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#builtin-variable-parentheses\"\n            },\n            {\n              \"include\": \"#function-variable-parentheses\"\n            },\n            {\n              \"include\": \"#flavor-variable-parentheses\"\n            },\n            {\n              \"include\": \"#another-variable-parentheses\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\${\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.makefile\"\n            }\n          },\n          \"end\": \"}|((?<!\\\\\\\\)\\\\n)\",\n          \"name\": \"string.interpolated.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#builtin-variable-braces\"\n            },\n            {\n              \"include\": \"#function-variable-braces\"\n            },\n            {\n              \"include\": \"#flavor-variable-braces\"\n            },\n            {\n              \"include\": \"#another-variable-braces\"\n            }\n          ]\n        }\n      ]\n    },\n    \"builtin-variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\()(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\\\.LIBPATTERNS)(?=\\\\s*\\\\))\",\n          \"name\": \"variable.language.makefile\"\n        }\n      ]\n    },\n    \"builtin-variable-braces\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<={)(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\\\.LIBPATTERNS)(?=\\\\s*})\",\n          \"name\": \"variable.language.makefile\"\n        }\n      ]\n    },\n    \"function-variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\()(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.$1.makefile\"\n            }\n          },\n          \"end\": \"(?=\\\\)|((?<!\\\\\\\\)\\\\n))\",\n          \"name\": \"meta.scope.function-call.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"%|\\\\*\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-variable-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<={)(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.$1.makefile\"\n            }\n          },\n          \"end\": \"(?=}|((?<!\\\\\\\\)\\\\n))\",\n          \"name\": \"meta.scope.function-call.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"%|\\\\*\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"flavor-variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\()(origin|flavor)\\\\s(?=[^\\\\s)]+\\\\s*\\\\))\",\n          \"contentName\": \"variable.other.makefile\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.$1.makefile\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.scope.function-call.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"flavor-variable-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<={)(origin|flavor)\\\\s(?=[^\\\\s}]+\\\\s*})\",\n          \"contentName\": \"variable.other.makefile\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.$1.makefile\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"name\": \"meta.scope.function-call.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"another-variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\()(?!\\\\))\",\n          \"end\": \"(?=\\\\)|((?<!\\\\\\\\)\\\\n))\",\n          \"name\": \"variable.other.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"another-variable-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<={)(?!})\",\n          \"end\": \"(?=}|((?<!\\\\\\\\)\\\\n))\",\n          \"name\": \"variable.other.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/markdown-gf.tmLanguage.json",
    "content": "{\n  \"name\": \"GitHub Markdown\",\n  \"scopeName\": \"source.gfm\",\n  \"limitLineLength\": false,\n  \"fileTypes\": [\n    \"markdown\",\n    \"md\",\n    \"mdown\",\n    \"mdwn\",\n    \"mkd\",\n    \"mkdn\",\n    \"mkdown\",\n    \"rmd\",\n    \"ron\",\n    \"workbook\"\n  ],\n  \"patterns\": [\n    {\n      \"include\": \"#blocks\"\n    },\n    {\n      \"include\": \"#inlines\"\n    },\n    {\n      \"include\": \"#flavors\"\n    }\n  ],\n  \"repository\": {\n    \"blocks\": {\n      \"patterns\": [\n        {\n          \"include\": \"#headings\"\n        },\n        {\n          \"include\": \"#fenced-code-blocks\"\n        },\n        {\n          \"include\": \"#fenced-code\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#front-matter\"\n        },\n        {\n          \"include\": \"#hr\"\n        },\n        {\n          \"include\": \"#lists\"\n        },\n        {\n          \"include\": \"#quotes\"\n        },\n        {\n          \"include\": \"#github-blocks\"\n        }\n      ]\n    },\n    \"inlines\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#code\"\n        },\n        {\n          \"include\": \"#links\"\n        },\n        {\n          \"include\": \"#emphasis\"\n        },\n        {\n          \"include\": \"#line-breaks\"\n        },\n        {\n          \"include\": \"#entities\"\n        },\n        {\n          \"include\": \"#github-inlines\"\n        }\n      ]\n    },\n    \"flavors\": {\n      \"patterns\": [\n        {\n          \"include\": \"#criticmark\"\n        },\n        {\n          \"include\": \"#github-inlines\"\n        }\n      ]\n    },\n    \"inlines-in-blocks\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#code\"\n        },\n        {\n          \"include\": \"#entities\"\n        },\n        {\n          \"include\": \"#links\"\n        },\n        {\n          \"include\": \"#emphasis\"\n        },\n        {\n          \"include\": \"#flavors\"\n        }\n      ]\n    },\n    \"inlines-in-inlines\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#code\"\n        },\n        {\n          \"include\": \"#entities\"\n        },\n        {\n          \"include\": \"#links\"\n        },\n        {\n          \"include\": \"#emphasis\"\n        },\n        {\n          \"include\": \"#github-inlines\"\n        },\n        {\n          \"include\": \"#criticmark\"\n        }\n      ]\n    },\n    \"headings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(#{6})(\\\\s*)\",\n          \"end\": \"$\",\n          \"name\": \"markup.heading.heading-6.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.heading.marker.gfm\"\n            },\n            \"2\": {\n              \"name\": \"markup.heading.space.gfm\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(#{5})(\\\\s*)\",\n          \"end\": \"$\",\n          \"name\": \"markup.heading.heading-5.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.heading.marker.gfm\"\n            },\n            \"2\": {\n              \"name\": \"markup.heading.space.gfm\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(#{4})(\\\\s*)\",\n          \"end\": \"$\",\n          \"name\": \"markup.heading.heading-4.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.heading.marker.gfm\"\n            },\n            \"2\": {\n              \"name\": \"markup.heading.space.gfm\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(#{3})(\\\\s*)\",\n          \"end\": \"$\",\n          \"name\": \"markup.heading.heading-3.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.heading.marker.gfm\"\n            },\n            \"2\": {\n              \"name\": \"markup.heading.space.gfm\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(#{2})(\\\\s*)\",\n          \"end\": \"$\",\n          \"name\": \"markup.heading.heading-2.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.heading.marker.gfm\"\n            },\n            \"2\": {\n              \"name\": \"markup.heading.space.gfm\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(#{1})(\\\\s*)\",\n          \"end\": \"$\",\n          \"name\": \"markup.heading.heading-1.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.heading.marker.gfm\"\n            },\n            \"2\": {\n              \"name\": \"markup.heading.space.gfm\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<!--\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.gfm\"\n            }\n          },\n          \"end\": \"--\\\\s*>\",\n          \"name\": \"comment.block.gfm\"\n        }\n      ]\n    },\n    \"fenced-code-blocks\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(apib|apiblueprint))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.gfm\",\n          \"contentName\": \"text.embedded.html.markdown.source.gfm.apib\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown.source.gfm.apib\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(mson))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.gfm\",\n          \"contentName\": \"text.embedded.html.markdown.source.gfm.mson\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown.source.gfm.mson\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(sql))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.sql.gfm\",\n          \"contentName\": \"source.embedded.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(graphql))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.graphql.gfm\",\n          \"contentName\": \"source.embedded.graphql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.graphql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(clj|clojure))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.clojure.gfm\",\n          \"contentName\": \"source.embedded.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"source.clojure\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(coffee-?(script)?|cson))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.coffee.gfm\",\n          \"contentName\": \"source.embedded.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"source.coffee\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(javascript|js))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.js.gfm\",\n          \"contentName\": \"source.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(typescript|ts))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.ts.gfm\",\n          \"contentName\": \"source.embedded.ts\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(markdown|md|mdo?wn|mkdn?|mkdown))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.gfm\",\n          \"contentName\": \"text.embedded.md\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(json))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.json.gfm\",\n          \"contentName\": \"source.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(css))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.css.gfm\",\n          \"contentName\": \"source.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(less))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.less.gfm\",\n          \"contentName\": \"source.embedded.css.less\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.less\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(xml))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.xml.gfm\",\n          \"contentName\": \"text.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(ruby|rb))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.ruby.gfm\",\n          \"contentName\": \"source.embedded.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(rust|rs))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.rust.gfm\",\n          \"contentName\": \"source.embedded.rust\",\n          \"patterns\": [\n            {\n              \"include\": \"source.rust\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(java))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.java.gfm\",\n          \"contentName\": \"source.embedded.java\",\n          \"patterns\": [\n            {\n              \"include\": \"source.java\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(kotlin))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.kotlin.gfm\",\n          \"contentName\": \"source.embedded.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"source.kotlin\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(scala|sbt))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.scala.gfm\",\n          \"contentName\": \"source.embedded.scala\",\n          \"patterns\": [\n            {\n              \"include\": \"source.scala\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(erlang))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.erlang.gfm\",\n          \"contentName\": \"source.embedded.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"source.erlang\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(go(lang)?))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.go.gfm\",\n          \"contentName\": \"source.embedded.go\",\n          \"patterns\": [\n            {\n              \"include\": \"source.go\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(cs(harp)?))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.cs.gfm\",\n          \"contentName\": \"source.embedded.cs\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cs\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(php))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.php.gfm\",\n          \"contentName\": \"source.embedded.php\",\n          \"patterns\": [\n            {\n              \"include\": \"source.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(sh|bash|shell))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.shell.gfm\",\n          \"contentName\": \"source.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*([`~]{3,})\\\\s*(?i:(properties))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.git-config.gfm\",\n          \"contentName\": \"source.embedded.git-config\",\n          \"patterns\": [\n            {\n              \"include\": \"source.git-config\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(shellsession|console))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.shell-session.gfm\",\n          \"contentName\": \"text.embedded.shell-session\",\n          \"patterns\": [\n            {\n              \"include\": \"text.shell-session\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(py(thon)?))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.python.gfm\",\n          \"contentName\": \"source.embedded.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(pycon))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.python.console.gfm\",\n          \"contentName\": \"source.embedded.python.console\",\n          \"patterns\": [\n            {\n              \"include\": \"text.python.console\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(c))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.c.gfm\",\n          \"contentName\": \"source.embedded.c\",\n          \"patterns\": [\n            {\n              \"include\": \"source.c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(c(pp|\\\\+\\\\+)))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.cpp.gfm\",\n          \"contentName\": \"source.embedded.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(objc|objective-c))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.objc.gfm\",\n          \"contentName\": \"source.embedded.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"source.objc\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(adoc|asciidoc|asciidoctor|asc))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.asciidoc.gfm\",\n          \"contentName\": \"source.embedded.asciidoc\",\n          \"patterns\": [\n            {\n              \"include\": \"source.asciidoc\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(swift))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.swift.gfm\",\n          \"contentName\": \"source.embedded.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"source.swift\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(dockerfile|docker))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.dockerfile.gfm\",\n          \"contentName\": \"source.embedded.dockerfile\",\n          \"patterns\": [\n            {\n              \"include\": \"source.dockerfile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(makefile|make))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.makefile.gfm\",\n          \"contentName\": \"source.embedded.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"source.makefile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(perl))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.perl.gfm\",\n          \"contentName\": \"source.embedded.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"source.perl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(perl6))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.perl6.gfm\",\n          \"contentName\": \"source.embedded.perl6\",\n          \"patterns\": [\n            {\n              \"include\": \"source.perl6\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(toml))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.toml.gfm\",\n          \"contentName\": \"source.embedded.toml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.toml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(html))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.html.gfm\",\n          \"contentName\": \"text.embedded.html.basic\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(ya?ml))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.yaml.gfm\",\n          \"contentName\": \"source.embedded.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.yaml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(elixir))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.elixir.gfm\",\n          \"contentName\": \"source.embedded.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"source.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(diff|patch|rej))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.diff.gfm\",\n          \"contentName\": \"source.embedded.diff\",\n          \"patterns\": [\n            {\n              \"include\": \"source.diff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(julia|jl))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.julia.gfm\",\n          \"contentName\": \"source.embedded.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*([\\\\{]{0,1})(?i:(r))([^\\\\}]*)([\\\\}]{0,1})\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.r.gfm\",\n          \"contentName\": \"source.embedded.r\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(haskell))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.haskell.gfm\",\n          \"contentName\": \"source.embedded.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.haskell\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*(?i:(elm))\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.elm.gfm\",\n          \"contentName\": \"source.embedded.elm\",\n          \"patterns\": [\n            {\n              \"include\": \"source.elm\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced-code\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,})\\\\s*([-\\\\w]+)\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.code.other.gfm\",\n          \"contentName\": \"source.embedded.${2:/downcase}\"\n        },\n        {\n          \"begin\": \"^\\\\s*(`{3,}|~{3,}).*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1((?<=`)`+|(?<=~)~+)?\\\\s*$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.gfm\"\n            }\n          },\n          \"name\": \"markup.raw.gfm\"\n        }\n      ]\n    },\n    \"front-matter\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\A---$\",\n          \"end\": \"^(---|\\\\.\\\\.\\\\.)$\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"comment.hr.gfm\"\n            }\n          },\n          \"name\": \"front-matter.yaml.gfm\",\n          \"patterns\": [\n            {\n              \"include\": \"source.yaml\"\n            }\n          ]\n        }\n      ]\n    },\n    \"hr\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*[*]{3,}\\\\s*$\",\n          \"name\": \"comment.hr.gfm\"\n        },\n        {\n          \"match\": \"^\\\\s*[-]{3,}\\\\s*$\",\n          \"name\": \"comment.hr.gfm\"\n        },\n        {\n          \"match\": \"^\\\\s*[_]{3,}\\\\s*$\",\n          \"name\": \"comment.hr.gfm\"\n        }\n      ]\n    },\n    \"lists\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*([*+-])[ \\\\t]+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.unordered.list.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"^\\\\s*(\\\\d+\\\\.)[ \\\\t]+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.ordered.list.gfm\"\n            }\n          }\n        }\n      ]\n    },\n    \"quotes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(>)\",\n          \"end\": \"^\\\\s*?$\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.quote.gfm\"\n            }\n          },\n          \"name\": \"comment.quote.gfm\",\n          \"patterns\": [\n            {\n              \"include\": \"#blocks\"\n            }\n          ]\n        }\n      ]\n    },\n    \"github-blocks\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\|\",\n          \"end\": \"(\\\\|)?\\\\s*$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"border.pipe.outer\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"border.pipe.outer\"\n            }\n          },\n          \"name\": \"table.gfm\",\n          \"patterns\": [\n            {\n              \"match\": \"(:?)(-+)(:?)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"border.alignment\"\n                },\n                \"2\": {\n                  \"name\": \"border.header\"\n                },\n                \"3\": {\n                  \"name\": \"border.alignment\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\|\",\n              \"name\": \"border.pipe.inner\"\n            }\n          ]\n        }\n      ]\n    },\n    \"github-inlines\": {\n      \"patterns\": [\n        {\n          \"match\": \"(:)(\\\\+1|\\\\-1|100|1234|8ball|a|ab|abc|abcd|accept|aerial_tramway|airplane|alarm_clock|alien|ambulance|anchor|angel|anger|angry|anguished|ant|apple|aquarius|aries|arrow_backward|arrow_double_down|arrow_double_up|arrow_down|arrow_down_small|arrow_forward|arrow_heading_down|arrow_heading_up|arrow_left|arrow_lower_left|arrow_lower_right|arrow_right|arrow_right_hook|arrow_up|arrow_up_down|arrow_up_small|arrow_upper_left|arrow_upper_right|arrows_clockwise|arrows_counterclockwise|art|articulated_lorry|astonished|atm|b|baby|baby_bottle|baby_chick|baby_symbol|back|baggage_claim|balloon|ballot_box_with_check|bamboo|banana|bangbang|bank|bar_chart|barber|baseball|basketball|bath|bathtub|battery|bear|bee|beer|beers|beetle|beginner|bell|bento|bicyclist|bike|bikini|bird|birthday|black_circle|black_joker|black_medium_small_square|black_medium_square|black_nib|black_small_square|black_square|black_square_button|blossom|blowfish|blue_book|blue_car|blue_heart|blush|boar|boat|bomb|book|bookmark|bookmark_tabs|books|boom|boot|bouquet|bow|bowling|bowtie|boy|bread|bride_with_veil|bridge_at_night|briefcase|broken_heart|bug|bulb|bullettrain_front|bullettrain_side|bus|busstop|bust_in_silhouette|busts_in_silhouette|cactus|cake|calendar|calling|camel|camera|cancer|candy|capital_abcd|capricorn|car|card_index|carousel_horse|cat|cat2|cd|chart|chart_with_downwards_trend|chart_with_upwards_trend|checkered_flag|cherries|cherry_blossom|chestnut|chicken|children_crossing|chocolate_bar|christmas_tree|church|cinema|circus_tent|city_sunrise|city_sunset|cl|clap|clapper|clipboard|clock1|clock10|clock1030|clock11|clock1130|clock12|clock1230|clock130|clock2|clock230|clock3|clock330|clock4|clock430|clock5|clock530|clock6|clock630|clock7|clock730|clock8|clock830|clock9|clock930|closed_book|closed_lock_with_key|closed_umbrella|cloud|clubs|cn|cocktail|coffee|cold_sweat|collision|computer|confetti_ball|confounded|confused|congratulations|construction|construction_worker|convenience_store|cookie|cool|cop|copyright|corn|couple|couple_with_heart|couplekiss|cow|cow2|credit_card|crocodile|crossed_flags|crown|cry|crying_cat_face|crystal_ball|cupid|curly_loop|currency_exchange|curry|custard|customs|cyclone|dancer|dancers|dango|dart|dash|date|de|deciduous_tree|department_store|diamond_shape_with_a_dot_inside|diamonds|disappointed|disappointed_relieved|dizzy|dizzy_face|do_not_litter|dog|dog2|dollar|dolls|dolphin|donut|door|doughnut|dragon|dragon_face|dress|dromedary_camel|droplet|dvd|e\\\\-mail|ear|ear_of_rice|earth_africa|earth_americas|earth_asia|egg|eggplant|eight|eight_pointed_black_star|eight_spoked_asterisk|electric_plug|elephant|email|end|envelope|es|euro|european_castle|european_post_office|evergreen_tree|exclamation|expressionless|eyeglasses|eyes|facepunch|factory|fallen_leaf|family|fast_forward|fax|fearful|feelsgood|feet|ferris_wheel|file_folder|finnadie|fire|fire_engine|fireworks|first_quarter_moon|first_quarter_moon_with_face|fish|fish_cake|fishing_pole_and_fish|fist|five|flags|flashlight|floppy_disk|flower_playing_cards|flushed|foggy|football|fork_and_knife|fountain|four|four_leaf_clover|fr|free|fried_shrimp|fries|frog|frowning|fu|fuelpump|full_moon|full_moon_with_face|game_die|gb|gem|gemini|ghost|gift|gift_heart|girl|globe_with_meridians|goat|goberserk|godmode|golf|grapes|green_apple|green_book|green_heart|grey_exclamation|grey_question|grimacing|grin|grinning|guardsman|guitar|gun|haircut|hamburger|hammer|hamster|hand|handbag|hankey|hash|hatched_chick|hatching_chick|headphones|hear_no_evil|heart|heart_decoration|heart_eyes|heart_eyes_cat|heartbeat|heartpulse|hearts|heavy_check_mark|heavy_division_sign|heavy_dollar_sign|heavy_exclamation_mark|heavy_minus_sign|heavy_multiplication_x|heavy_plus_sign|helicopter|herb|hibiscus|high_brightness|high_heel|hocho|honey_pot|honeybee|horse|horse_racing|hospital|hotel|hotsprings|hourglass|hourglass_flowing_sand|house|house_with_garden|hurtrealbad|hushed|ice_cream|icecream|id|ideograph_advantage|imp|inbox_tray|incoming_envelope|information_desk_person|information_source|innocent|interrobang|iphone|it|izakaya_lantern|jack_o_lantern|japan|japanese_castle|japanese_goblin|japanese_ogre|jeans|joy|joy_cat|jp|key|keycap_ten|kimono|kiss|kissing|kissing_cat|kissing_closed_eyes|kissing_face|kissing_heart|kissing_smiling_eyes|koala|koko|kr|large_blue_circle|large_blue_diamond|large_orange_diamond|last_quarter_moon|last_quarter_moon_with_face|laughing|leaves|ledger|left_luggage|left_right_arrow|leftwards_arrow_with_hook|lemon|leo|leopard|libra|light_rail|link|lips|lipstick|lock|lock_with_ink_pen|lollipop|loop|loudspeaker|love_hotel|love_letter|low_brightness|m|mag|mag_right|mahjong|mailbox|mailbox_closed|mailbox_with_mail|mailbox_with_no_mail|man|man_with_gua_pi_mao|man_with_turban|mans_shoe|maple_leaf|mask|massage|meat_on_bone|mega|melon|memo|mens|metal|metro|microphone|microscope|milky_way|minibus|minidisc|mobile_phone_off|money_with_wings|moneybag|monkey|monkey_face|monorail|moon|mortar_board|mount_fuji|mountain_bicyclist|mountain_cableway|mountain_railway|mouse|mouse2|movie_camera|moyai|muscle|mushroom|musical_keyboard|musical_note|musical_score|mute|nail_care|name_badge|neckbeard|necktie|negative_squared_cross_mark|neutral_face|new|new_moon|new_moon_with_face|newspaper|ng|nine|no_bell|no_bicycles|no_entry|no_entry_sign|no_good|no_mobile_phones|no_mouth|no_pedestrians|no_smoking|non\\\\-potable_water|nose|notebook|notebook_with_decorative_cover|notes|nut_and_bolt|o|o2|ocean|octocat|octopus|oden|office|ok|ok_hand|ok_woman|older_man|older_woman|on|oncoming_automobile|oncoming_bus|oncoming_police_car|oncoming_taxi|one|open_file_folder|open_hands|open_mouth|ophiuchus|orange_book|outbox_tray|ox|package|page_facing_up|page_with_curl|pager|palm_tree|panda_face|paperclip|parking|part_alternation_mark|partly_sunny|passport_control|paw_prints|peach|pear|pencil|pencil2|penguin|pensive|performing_arts|persevere|person_frowning|person_with_blond_hair|person_with_pouting_face|phone|pig|pig2|pig_nose|pill|pineapple|pisces|pizza|plus1|point_down|point_left|point_right|point_up|point_up_2|police_car|poodle|poop|post_office|postal_horn|postbox|potable_water|pouch|poultry_leg|pound|pouting_cat|pray|princess|punch|purple_heart|purse|pushpin|put_litter_in_its_place|question|rabbit|rabbit2|racehorse|radio|radio_button|rage|rage1|rage2|rage3|rage4|railway_car|rainbow|raised_hand|raised_hands|raising_hand|ram|ramen|rat|recycle|red_car|red_circle|registered|relaxed|relieved|repeat|repeat_one|restroom|revolving_hearts|rewind|ribbon|rice|rice_ball|rice_cracker|rice_scene|ring|rocket|roller_coaster|rooster|rose|rotating_light|round_pushpin|rowboat|ru|rugby_football|runner|running|running_shirt_with_sash|sa|sagittarius|sailboat|sake|sandal|santa|satellite|satisfied|saxophone|school|school_satchel|scissors|scorpius|scream|scream_cat|scroll|seat|secret|see_no_evil|seedling|seven|shaved_ice|sheep|shell|ship|shipit|shirt|shit|shoe|shower|signal_strength|six|six_pointed_star|ski|skull|sleeping|sleepy|slot_machine|small_blue_diamond|small_orange_diamond|small_red_triangle|small_red_triangle_down|smile|smile_cat|smiley|smiley_cat|smiling_imp|smirk|smirk_cat|smoking|snail|snake|snowboarder|snowflake|snowman|sob|soccer|soon|sos|sound|space_invader|spades|spaghetti|sparkle|sparkler|sparkles|sparkling_heart|speak_no_evil|speaker|speech_balloon|speedboat|squirrel|star|star2|stars|station|statue_of_liberty|steam_locomotive|stew|straight_ruler|strawberry|stuck_out_tongue|stuck_out_tongue_closed_eyes|stuck_out_tongue_winking_eye|sun_with_face|sunflower|sunglasses|sunny|sunrise|sunrise_over_mountains|surfer|sushi|suspect|suspension_railway|sweat|sweat_drops|sweat_smile|sweet_potato|swimmer|symbols|syringe|tada|tanabata_tree|tangerine|taurus|taxi|tea|telephone|telephone_receiver|telescope|tennis|tent|thought_balloon|three|thumbsdown|thumbsup|ticket|tiger|tiger2|tired_face|tm|toilet|tokyo_tower|tomato|tongue|top|tophat|tractor|traffic_light|train|train2|tram|triangular_flag_on_post|triangular_ruler|trident|triumph|trolleybus|trollface|trophy|tropical_drink|tropical_fish|truck|trumpet|tshirt|tulip|turtle|tv|twisted_rightwards_arrows|two|two_hearts|two_men_holding_hands|two_women_holding_hands|u5272|u5408|u55b6|u6307|u6708|u6709|u6e80|u7121|u7533|u7981|u7a7a|uk|umbrella|unamused|underage|unlock|up|us|v|vertical_traffic_light|vhs|vibration_mode|video_camera|video_game|violin|virgo|volcano|vs|walking|waning_crescent_moon|waning_gibbous_moon|warning|watch|water_buffalo|watermelon|wave|wavy_dash|waxing_crescent_moon|waxing_gibbous_moon|wc|weary|wedding|whale|whale2|wheelchair|white_check_mark|white_circle|white_flower|white_large_square|white_medium_small_square|white_medium_square|white_small_square|white_square_button|wind_chime|wine_glass|wink|wolf|woman|womans_clothes|womans_hat|womens|worried|wrench|x|yellow_heart|yen|yum|zap|zero|zzz)(:)\",\n          \"name\": \"string.emoji.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"string.emoji.start.gfm\"\n            },\n            \"2\": {\n              \"name\": \"string.emoji.word.gfm\"\n            },\n            \"3\": {\n              \"name\": \"string.emoji.end.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=^|\\\\s|\\\"|'|\\\\(|\\\\[)(#)(\\\\d+)(?=[\\\\s\\\"'\\\\.,;\\\\)\\\\]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.issue.tag.gfm\"\n            },\n            \"2\": {\n              \"name\": \"string.issue.number.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=^|\\\\s|\\\"|'|\\\\(|\\\\[)(@)(\\\\w[-\\\\w:]*)(?=[\\\\s\\\"'.,;\\\\)\\\\]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.mention.gfm\"\n            },\n            \"2\": {\n              \"name\": \"string.username.gfm\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?<=^|[^\\\\w\\\\d~])~~(?!$|~|\\\\s)\",\n          \"end\": \"(?<!^|\\\\s)~~*~(?=$|[^\\\\w|\\\\d])\",\n          \"name\": \"markup.strike.gfm\",\n          \"patterns\": [\n            {\n              \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n              \"name\": \"constant.character.entity.gfm\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.entity.gfm\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.entity.gfm\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"escapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.gfm\"\n        }\n      ]\n    },\n    \"code\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(`+)(?!$)\",\n          \"end\": \"\\\\1\",\n          \"name\": \"markup.raw.gfm\"\n        }\n      ]\n    },\n    \"links\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\[!)(\\\\[)([^\\\\]]*)(\\\\])(\\\\()([^\\\\)]+)(\\\\))(\\\\])((\\\\()([^\\\\)]+)(\\\\))|(\\\\[)([^\\\\]]+)(\\\\]))\",\n          \"name\": \"link\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"3\": {\n              \"name\": \"entity.gfm\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"6\": {\n              \"name\": \"markup.underline.link.gfm\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"10\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"11\": {\n              \"name\": \"markup.underline.link.gfm\"\n            },\n            \"12\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"13\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"14\": {\n              \"name\": \"markup.underline.link.gfm\"\n            },\n            \"15\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\[!)(\\\\[)([^\\\\]]*)(\\\\])(\\\\[)([^\\\\)]+)(\\\\])(\\\\])((\\\\()([^\\\\)]+)(\\\\))|(\\\\[)([^\\\\]]+)(\\\\]))\",\n          \"name\": \"link\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"3\": {\n              \"name\": \"entity.gfm\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"6\": {\n              \"name\": \"markup.underline.link.gfm\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"10\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"11\": {\n              \"name\": \"markup.underline.link.gfm\"\n            },\n            \"12\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"13\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"14\": {\n              \"name\": \"markup.underline.link.gfm\"\n            },\n            \"15\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"!?(\\\\[)([^\\\\]]*)(\\\\])(\\\\()([^\\\\)]+)(\\\\))\",\n          \"name\": \"link\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"2\": {\n              \"name\": \"entity.gfm\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"5\": {\n              \"name\": \"markup.underline.link.gfm\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"!?(\\\\[)([^\\\\]]*)(\\\\])(\\\\[)([^\\\\]]*)(\\\\])\",\n          \"name\": \"link\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"2\": {\n              \"name\": \"entity.gfm\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"5\": {\n              \"name\": \"markup.underline.link.gfm\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"^\\\\s*(\\\\[)([^\\\\]]+)(\\\\])\\\\s*:\\\\s*<([^>]+)>\",\n          \"name\": \"link\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"2\": {\n              \"name\": \"entity.gfm\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"4\": {\n              \"name\": \"markup.underline.link.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"^\\\\s*(\\\\[)([^\\\\]]+)(\\\\])\\\\s*(:)\\\\s*(\\\\S+)\",\n          \"name\": \"link\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.begin.gfm\"\n            },\n            \"2\": {\n              \"name\": \"entity.gfm\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.end.gfm\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.key-value.gfm\"\n            },\n            \"5\": {\n              \"name\": \"markup.underline.link.gfm\"\n            }\n          }\n        }\n      ]\n    },\n    \"emphasis\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=^|[^\\\\w\\\\d\\\\*])\\\\*\\\\*\\\\*(?!$|\\\\*|\\\\s)\",\n          \"end\": \"(?<!^|\\\\s)\\\\*\\\\*\\\\**\\\\*(?=$|[^\\\\w|\\\\d])\",\n          \"name\": \"markup.bold.italic.gfm\",\n          \"patterns\": [\n            {\n              \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n              \"name\": \"constant.character.entity.gfm\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.entity.gfm\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.entity.gfm\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|[^\\\\w\\\\d_])___(?!$|_|\\\\s)\",\n          \"end\": \"(?<!^|\\\\s)___*_(?=$|[^\\\\w|\\\\d])\",\n          \"name\": \"markup.bold.italic.gfm\",\n          \"patterns\": [\n            {\n              \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n              \"name\": \"constant.character.entity.gfm\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.entity.gfm\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.entity.gfm\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![\\\\w|\\\\\\\\])([_]{2})(?!\\\\s)(?m:(.+?))(?<![\\\\s|\\\\\\\\])(\\\\1)(?!\\\\w)\",\n          \"name\": \"markup.bold.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inlines-in-inlines\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![\\\\w|\\\\\\\\])([\\\\*]{2})(?!\\\\s)(?m:(.+?))(?<![\\\\s|\\\\\\\\])(\\\\1)(?!\\\\w)\",\n          \"name\": \"markup.bold.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inlines-in-inlines\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=\\\\w)([\\\\*]{2})(?:.+?)(?<!\\\\W)(\\\\1)\",\n          \"name\": \"markup.bold.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=\\\\s|^)([\\\\*]{2})(?=\\\\w)(?:.+?)(\\\\1)(?=\\\\w)\",\n          \"name\": \"markup.bold.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![\\\\w|_|\\\\\\\\])([_])(?!\\\\s|\\\\1)(?m:(.+?))(?<![\\\\s|\\\\\\\\])(\\\\1)(?!\\\\w)\",\n          \"name\": \"markup.italic.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inlines-in-inlines\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![\\\\w|\\\\*|\\\\\\\\])([\\\\*])(?!\\\\s|\\\\1)(?m:(.+?))(?<![\\\\s|\\\\\\\\])(\\\\1)(?!\\\\w)\",\n          \"name\": \"markup.italic.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inlines-in-inlines\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=\\\\w)([\\\\*])(?:.+?)(?<!\\\\W)(\\\\1)\",\n          \"name\": \"markup.italic.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=\\\\s|^)([\\\\*])(?=\\\\w)(?:.+?)(\\\\1)(?=\\\\w)\",\n          \"name\": \"markup.italic.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        }\n      ]\n    },\n    \"line-breaks\": {\n      \"patterns\": [\n        {\n          \"match\": \"(  )$\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"linebreak.gfm\"\n            }\n          }\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)[a-zA-Z0-9]+(;)\",\n          \"name\": \"constant.character.entity.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(&)#[0-9]+(;)\",\n          \"name\": \"constant.character.entity.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        },\n        {\n          \"match\": \"(&)#x[0-9a-fA-F]+(;)\",\n          \"name\": \"constant.character.entity.gfm\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.gfm\"\n            }\n          }\n        }\n      ]\n    },\n    \"criticmark\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\\\\+\\\\+\",\n          \"end\": \"\\\\+\\\\+}\",\n          \"name\": \"markup.inserted.critic.gfm.addition\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.inserted.critic.gfm.addition.marker\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{--\",\n          \"end\": \"--}\",\n          \"name\": \"markup.deleted.critic.gfm.deletion\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.deleted.critic.gfm.deletion.marker\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{==\",\n          \"end\": \"==}\",\n          \"name\": \"critic.gfm.highlight\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"critic.gfm.highlight.marker\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{>>\",\n          \"end\": \"<<}\",\n          \"name\": \"critic.gfm.comment\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"critic.gfm.comment.marker\"\n            }\n          }\n        },\n        {\n          \"begin\": \"{~~\",\n          \"end\": \"~~}\",\n          \"name\": \"markup.changed.critic.gfm.substitution\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.changed.critic.gfm.substitution.marker\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"~>\",\n              \"name\": \"punctuation.definition.changed.critic.gfm.substitution.operator\"\n            },\n            {\n              \"include\": \"#emphasis\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/markdown-latex-combined.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/vscode-markdown-tm-grammar/blob/master/syntaxes/markdown.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/vscode-markdown-tm-grammar/commit/69d3321b4923ca2d5e8e900018887cc38b5fe04a\",\n  \"name\": \"Markdown\",\n  \"scopeName\": \"text.tex.markdown_latex_combined\",\n  \"patterns\": [\n    {\n      \"include\": \"text.tex.latex\"\n    },\n    {\n      \"include\": \"#frontMatter\"\n    },\n    {\n      \"include\": \"#block\"\n    }\n  ],\n  \"repository\": {\n    \"block\": {\n      \"patterns\": [\n        {\n          \"include\": \"#separator\"\n        },\n        {\n          \"include\": \"#heading\"\n        },\n        {\n          \"include\": \"#blockquote\"\n        },\n        {\n          \"include\": \"#lists\"\n        },\n        {\n          \"include\": \"#fenced_code_block\"\n        },\n        {\n          \"include\": \"#raw_block\"\n        },\n        {\n          \"include\": \"#link-def\"\n        },\n        {\n          \"include\": \"#html\"\n        },\n        {\n          \"include\": \"#paragraph\"\n        }\n      ]\n    },\n    \"blockquote\": {\n      \"begin\": \"(^|\\\\G)[ ]{0,3}(>) ?\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.quote.begin.markdown\"\n        }\n      },\n      \"name\": \"markup.quote.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        }\n      ],\n      \"while\": \"(^|\\\\G)\\\\s*(>) ?\"\n    },\n    \"fenced_code_block_css\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(css|css.erb)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_basic\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(html|htm|shtml|xhtml|inc|tmpl|tpl)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_ini\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ini|conf)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.ini\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ini\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_java\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(java|bsh)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.java\",\n          \"patterns\": [\n            {\n              \"include\": \"source.java\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_lua\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(lua)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"source.lua\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_makefile\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(Makefile|makefile|GNUmakefile|OCamlMakefile)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"source.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_perl\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"source.perl\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_r\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(R|r|s|S|Rprofile|\\\\{\\\\.r.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.r\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_ruby\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_php\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(php|php3|php4|php5|phpt|phtml|aw|ctp)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.php\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            },\n            {\n              \"include\": \"source.php\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_sql\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(sql|ddl|dml)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_vs_net\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(vb)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.vs_net\",\n          \"patterns\": [\n            {\n              \"include\": \"source.asp.vb.net\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_xml\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_xsl\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xsl|xslt)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.xsl\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml.xsl\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_yaml\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(yaml|yml)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.yaml\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_dosbatch\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bat|batch)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.dosbatch\",\n          \"patterns\": [\n            {\n              \"include\": \"source.batchfile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_clojure\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(clj|cljs|clojure)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"source.clojure\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_coffee\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(coffee|Cakefile|coffee.erb)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"source.coffee\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_c\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(c|h)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.c\",\n          \"patterns\": [\n            {\n              \"include\": \"source.c\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_cpp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(cpp|c\\\\+\\\\+|cxx)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.cpp source.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_diff\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(patch|diff|rej)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.diff\",\n          \"patterns\": [\n            {\n              \"include\": \"source.diff\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_dockerfile\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(dockerfile|Dockerfile)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.dockerfile\",\n          \"patterns\": [\n            {\n              \"include\": \"source.dockerfile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_git_commit\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(COMMIT_EDITMSG|MERGE_MSG)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.git_commit\",\n          \"patterns\": [\n            {\n              \"include\": \"text.git-commit\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_git_rebase\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(git-rebase-todo)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.git_rebase\",\n          \"patterns\": [\n            {\n              \"include\": \"text.git-rebase\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_go\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(go|golang)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.go\",\n          \"patterns\": [\n            {\n              \"include\": \"source.go\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_groovy\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(groovy|gvy)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"source.groovy\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_pug\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jade|pug)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"text.pug\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_js\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(js|jsx|javascript|es6|mjs|cjs|dataviewjs|\\\\{\\\\.js.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.javascript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_js_regexp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(regexp)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.js_regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js.regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_json\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(json|json5|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_jsonc\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsonc)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.jsonc\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json.comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_less\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(less)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.less\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.less\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_objc\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|m|h)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"source.objc\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_swift\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(swift)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"source.swift\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_scss\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(scss)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.scss\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_perl6\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.perl6\",\n          \"patterns\": [\n            {\n              \"include\": \"source.perl.6\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_powershell\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(powershell|ps1|psm1|psd1)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.powershell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.powershell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_python\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi|\\\\{\\\\.python.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_julia\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(julia|\\\\{\\\\.julia.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_regexp_python\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(re)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.regexp_python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp.python\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_rust\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(rust|rs|\\\\{\\\\.rust.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.rust\",\n          \"patterns\": [\n            {\n              \"include\": \"source.rust\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_scala\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(scala|sbt)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.scala\",\n          \"patterns\": [\n            {\n              \"include\": \"source.scala\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_shell\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\\\{\\\\.bash.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.shellscript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_ts\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(typescript|ts)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.typescript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_tsx\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(tsx)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.typescriptreact\",\n          \"patterns\": [\n            {\n              \"include\": \"source.tsx\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_csharp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(cs|csharp|c#)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.csharp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cs\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_fsharp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(fs|fsharp|f#)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.fsharp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.fsharp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_dart\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(dart)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.dart\",\n          \"patterns\": [\n            {\n              \"include\": \"source.dart\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_handlebars\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(handlebars|hbs)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.handlebars\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.handlebars\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_markdown\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(markdown|md)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_log\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(log)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.log\",\n          \"patterns\": [\n            {\n              \"include\": \"text.log\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_erlang\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(erlang)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"source.erlang\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_elixir\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(elixir)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"source.elixir\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_latex\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(latex|tex)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.latex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.tex.latex\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_bibtex\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bibtex)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.bibtex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.bibtex\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fenced_code_block_css\"\n        },\n        {\n          \"include\": \"#fenced_code_block_basic\"\n        },\n        {\n          \"include\": \"#fenced_code_block_ini\"\n        },\n        {\n          \"include\": \"#fenced_code_block_java\"\n        },\n        {\n          \"include\": \"#fenced_code_block_lua\"\n        },\n        {\n          \"include\": \"#fenced_code_block_makefile\"\n        },\n        {\n          \"include\": \"#fenced_code_block_perl\"\n        },\n        {\n          \"include\": \"#fenced_code_block_r\"\n        },\n        {\n          \"include\": \"#fenced_code_block_ruby\"\n        },\n        {\n          \"include\": \"#fenced_code_block_php\"\n        },\n        {\n          \"include\": \"#fenced_code_block_sql\"\n        },\n        {\n          \"include\": \"#fenced_code_block_vs_net\"\n        },\n        {\n          \"include\": \"#fenced_code_block_xml\"\n        },\n        {\n          \"include\": \"#fenced_code_block_xsl\"\n        },\n        {\n          \"include\": \"#fenced_code_block_yaml\"\n        },\n        {\n          \"include\": \"#fenced_code_block_dosbatch\"\n        },\n        {\n          \"include\": \"#fenced_code_block_clojure\"\n        },\n        {\n          \"include\": \"#fenced_code_block_coffee\"\n        },\n        {\n          \"include\": \"#fenced_code_block_c\"\n        },\n        {\n          \"include\": \"#fenced_code_block_cpp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_diff\"\n        },\n        {\n          \"include\": \"#fenced_code_block_dockerfile\"\n        },\n        {\n          \"include\": \"#fenced_code_block_git_commit\"\n        },\n        {\n          \"include\": \"#fenced_code_block_git_rebase\"\n        },\n        {\n          \"include\": \"#fenced_code_block_go\"\n        },\n        {\n          \"include\": \"#fenced_code_block_groovy\"\n        },\n        {\n          \"include\": \"#fenced_code_block_pug\"\n        },\n        {\n          \"include\": \"#fenced_code_block_js\"\n        },\n        {\n          \"include\": \"#fenced_code_block_js_regexp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_json\"\n        },\n        {\n          \"include\": \"#fenced_code_block_jsonc\"\n        },\n        {\n          \"include\": \"#fenced_code_block_less\"\n        },\n        {\n          \"include\": \"#fenced_code_block_objc\"\n        },\n        {\n          \"include\": \"#fenced_code_block_swift\"\n        },\n        {\n          \"include\": \"#fenced_code_block_scss\"\n        },\n        {\n          \"include\": \"#fenced_code_block_perl6\"\n        },\n        {\n          \"include\": \"#fenced_code_block_powershell\"\n        },\n        {\n          \"include\": \"#fenced_code_block_python\"\n        },\n        {\n          \"include\": \"#fenced_code_block_julia\"\n        },\n        {\n          \"include\": \"#fenced_code_block_regexp_python\"\n        },\n        {\n          \"include\": \"#fenced_code_block_rust\"\n        },\n        {\n          \"include\": \"#fenced_code_block_scala\"\n        },\n        {\n          \"include\": \"#fenced_code_block_shell\"\n        },\n        {\n          \"include\": \"#fenced_code_block_ts\"\n        },\n        {\n          \"include\": \"#fenced_code_block_tsx\"\n        },\n        {\n          \"include\": \"#fenced_code_block_csharp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_fsharp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_dart\"\n        },\n        {\n          \"include\": \"#fenced_code_block_handlebars\"\n        },\n        {\n          \"include\": \"#fenced_code_block_markdown\"\n        },\n        {\n          \"include\": \"#fenced_code_block_log\"\n        },\n        {\n          \"include\": \"#fenced_code_block_erlang\"\n        },\n        {\n          \"include\": \"#fenced_code_block_elixir\"\n        },\n        {\n          \"include\": \"#fenced_code_block_latex\"\n        },\n        {\n          \"include\": \"#fenced_code_block_bibtex\"\n        },\n        {\n          \"include\": \"#fenced_code_block_unknown\"\n        }\n      ]\n    },\n    \"fenced_code_block_unknown\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?=([^`~]*)?$)\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language\"\n        }\n      },\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"name\": \"markup.fenced_code.block.markdown\"\n    },\n    \"heading\": {\n      \"match\": \"(?:^|\\\\G)[ ]{0,3}(#{1,6}\\\\s+(.*?)(\\\\s+#{1,6})?\\\\s*)$\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"(#{6})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.6.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{5})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.5.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{4})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.4.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{3})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.3.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{2})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.2.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{1})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.1.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            }\n          ]\n        }\n      },\n      \"name\": \"markup.heading.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline\"\n        }\n      ]\n    },\n    \"heading-setext\": {\n      \"patterns\": [\n        {\n          \"match\": \"^(={3,})(?=[ \\\\t]*$\\\\n?)\",\n          \"name\": \"markup.heading.setext.1.markdown\"\n        },\n        {\n          \"match\": \"^(-{3,})(?=[ \\\\t]*$\\\\n?)\",\n          \"name\": \"markup.heading.setext.2.markdown\"\n        }\n      ]\n    },\n    \"html\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)\\\\s*(<!--)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            }\n          },\n          \"end\": \"(-->)\",\n          \"name\": \"comment.block.html\"\n        },\n        {\n          \"begin\": \"(?i)(^|\\\\G)\\\\s*(?=<(script|style|pre)(\\\\s|$|>)(?!.*?</(script|style|pre)>))\",\n          \"end\": \"(?i)(.*)((</)(script|style|pre)(>))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.derivative\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"meta.tag.structure.$4.end.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\s*|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.derivative\"\n                }\n              ],\n              \"while\": \"(?i)^(?!.*</(script|style|pre)>)\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(^|\\\\G)\\\\s*(?=</?[a-zA-Z]+[^\\\\s/&gt;]*(\\\\s|$|/?>))\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ],\n          \"while\": \"^(?!\\\\s*$)\"\n        },\n        {\n          \"begin\": \"(^|\\\\G)\\\\s*(?=(<[a-zA-Z0-9\\\\-](/?>|\\\\s.*?>)|</[a-zA-Z0-9\\\\-]>)\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ],\n          \"while\": \"^(?!\\\\s*$)\"\n        }\n      ]\n    },\n    \"link-def\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.reference.link.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.key-value.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"6\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"8\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"9\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"12\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"14\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"15\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"16\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"17\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        }\n      },\n      \"match\": \"(?x)\\n  \\\\s*            # Leading whitespace\\n  (\\\\[)([^]]+?)(\\\\])(:)    # Reference name\\n  [ \\\\t]*          # Optional whitespace\\n  (?:(<)([^\\\\>]+?)(>)|(\\\\S+?))      # The url\\n  [ \\\\t]*          # Optional whitespace\\n  (?:\\n      ((\\\\().+?(\\\\)))    # Match title in parens…\\n    | ((\\\").+?(\\\"))    # or in double quotes…\\n    | ((').+?('))    # or in single quotes.\\n  )?            # Title is optional\\n  \\\\s*            # Optional whitespace\\n  $\\n\",\n      \"name\": \"meta.link.reference.def.markdown\"\n    },\n    \"list_paragraph\": {\n      \"begin\": \"(^|\\\\G)(?=\\\\S)(?![*+->]\\\\s|[0-9]+\\\\.\\\\s)\",\n      \"name\": \"meta.paragraph.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline\"\n        },\n        {\n          \"include\": \"text.html.derivative\"\n        },\n        {\n          \"include\": \"#heading-setext\"\n        }\n      ],\n      \"while\": \"(^|\\\\G)(?!\\\\s*$|#|[ ]{0,3}([-*_>][ ]{2,}){3,}[ \\\\t]*$\\\\n?|[ ]{0,3}[*+->]|[ ]{0,3}[0-9]+\\\\.)\"\n    },\n    \"lists\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)([ ]{0,3})([*+-])([ \\\\t])\",\n          \"beginCaptures\": {\n            \"3\": {\n              \"name\": \"punctuation.definition.list.begin.markdown\"\n            }\n          },\n          \"comment\": \"Currently does not support un-indented second lines.\",\n          \"name\": \"markup.list.unnumbered.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#list_paragraph\"\n            }\n          ],\n          \"while\": \"((^|\\\\G)([ ]{2,4}|\\\\t))|(^[ \\\\t]*$)\"\n        },\n        {\n          \"begin\": \"(^|\\\\G)([ ]{0,3})([0-9]+\\\\.)([ \\\\t])\",\n          \"beginCaptures\": {\n            \"3\": {\n              \"name\": \"punctuation.definition.list.begin.markdown\"\n            }\n          },\n          \"name\": \"markup.list.numbered.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#list_paragraph\"\n            }\n          ],\n          \"while\": \"((^|\\\\G)([ ]{2,4}|\\\\t))|(^[ \\\\t]*$)\"\n        }\n      ]\n    },\n    \"paragraph\": {\n      \"begin\": \"(^|\\\\G)[ ]{0,3}(?=\\\\S)\",\n      \"name\": \"meta.paragraph.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline\"\n        },\n        {\n          \"include\": \"text.html.derivative\"\n        },\n        {\n          \"include\": \"#heading-setext\"\n        }\n      ],\n      \"while\": \"(^|\\\\G)((?=\\\\s*[-=]{3,}\\\\s*$)|[ ]{4,}(?=\\\\S))\"\n    },\n    \"raw_block\": {\n      \"begin\": \"(^|\\\\G)([ ]{4}|\\\\t)\",\n      \"name\": \"markup.raw.block.markdown\",\n      \"while\": \"(^|\\\\G)([ ]{4}|\\\\t)\"\n    },\n    \"separator\": {\n      \"match\": \"(^|\\\\G)[ ]{0,3}([\\\\*\\\\-\\\\_])([ ]{0,2}\\\\2){2,}[ \\\\t]*$\\\\n?\",\n      \"name\": \"meta.separator.markdown\"\n    },\n    \"frontMatter\": {\n      \"begin\": \"\\\\A-{3}\\\\s*$\",\n      \"contentName\": \"meta.embedded.block.frontmatter\",\n      \"patterns\": [\n        {\n          \"include\": \"source.yaml\"\n        }\n      ],\n      \"end\": \"(^|\\\\G)-{3}|\\\\.{3}\\\\s*$\"\n    },\n    \"inline\": {\n      \"patterns\": [\n        {\n          \"include\": \"text.tex.latex\"\n        },\n        {\n          \"include\": \"#ampersand\"\n        },\n        {\n          \"include\": \"#bracket\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#italic\"\n        },\n        {\n          \"include\": \"#raw\"\n        },\n        {\n          \"include\": \"#strikethrough\"\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#image-inline\"\n        },\n        {\n          \"include\": \"#image-ref\"\n        },\n        {\n          \"include\": \"#link-email\"\n        },\n        {\n          \"include\": \"#link-inet\"\n        },\n        {\n          \"include\": \"#link-inline\"\n        },\n        {\n          \"include\": \"#link-ref\"\n        },\n        {\n          \"include\": \"#link-ref-literal\"\n        },\n        {\n          \"include\": \"#link-ref-shortcut\"\n        }\n      ]\n    },\n    \"ampersand\": {\n      \"comment\": \"Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.\",\n      \"match\": \"&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)\",\n      \"name\": \"meta.other.valid-ampersand.markdown\"\n    },\n    \"bold\": {\n      \"begin\": \"(?x) (?<open>(\\\\*\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*\\\\*|(?<!\\\\w)\\\\b__))(?=\\\\S) (?=\\n  (\\n    <[^>]*+>              # HTML tags\\n    | (?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>\\n                      # Raw\\n    | \\\\\\\\[\\\\\\\\`*_{}\\\\[\\\\]()#.!+\\\\->]?+      # Escapes\\n    | \\\\[\\n    (\\n        (?<square>          # Named group\\n          [^\\\\[\\\\]\\\\\\\\]        # Match most chars\\n          | \\\\\\\\.            # Escaped chars\\n          | \\\\[ \\\\g<square>*+ \\\\]    # Nested brackets\\n        )*+\\n      \\\\]\\n      (\\n        (              # Reference Link\\n          [ ]?          # Optional space\\n          \\\\[[^\\\\]]*+\\\\]        # Ref name\\n        )\\n        | (              # Inline Link\\n          \\\\(            # Opening paren\\n            [ \\\\t]*+        # Optional whitespace\\n            <?(.*?)>?      # URL\\n            [ \\\\t]*+        # Optional whitespace\\n            (          # Optional Title\\n              (?<title>['\\\"])\\n              (.*?)\\n              \\\\k<title>\\n            )?\\n          \\\\)\\n        )\\n      )\\n    )\\n    | (?!(?<=\\\\S)\\\\k<open>).            # Everything besides\\n                      # style closer\\n  )++\\n  (?<=\\\\S)(?=__\\\\b|\\\\*\\\\*)\\\\k<open>                # Close\\n)\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.bold.markdown\"\n        }\n      },\n      \"end\": \"(?<=\\\\S)(\\\\1)\",\n      \"name\": \"markup.bold.markdown\",\n      \"patterns\": [\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"(?=<[^>]*?>)\",\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#ampersand\"\n        },\n        {\n          \"include\": \"#bracket\"\n        },\n        {\n          \"include\": \"#raw\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#italic\"\n        },\n        {\n          \"include\": \"#image-inline\"\n        },\n        {\n          \"include\": \"#link-inline\"\n        },\n        {\n          \"include\": \"#link-inet\"\n        },\n        {\n          \"include\": \"#link-email\"\n        },\n        {\n          \"include\": \"#image-ref\"\n        },\n        {\n          \"include\": \"#link-ref-literal\"\n        },\n        {\n          \"include\": \"#link-ref\"\n        },\n        {\n          \"include\": \"#link-ref-shortcut\"\n        },\n        {\n          \"include\": \"#strikethrough\"\n        }\n      ]\n    },\n    \"bracket\": {\n      \"comment\": \"Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.\",\n      \"match\": \"<(?![a-zA-Z/?\\\\$!])\",\n      \"name\": \"meta.other.valid-bracket.markdown\"\n    },\n    \"escape\": {\n      \"match\": \"\\\\\\\\[-`*_#+.!(){}\\\\[\\\\]\\\\\\\\>]\",\n      \"name\": \"constant.character.escape.markdown\"\n    },\n    \"image-inline\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.description.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.description.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.description.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"markup.underline.link.image.markdown\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"9\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"12\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"14\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"15\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"16\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"17\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"18\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        }\n      },\n      \"match\": \"(?x)\\n  (\\\\!\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])\\n                # Match the link text.\\n  (\\\\()            # Opening paren for url\\n    (<?)(\\\\S+?)(>?)      # The url\\n    [ \\\\t]*          # Optional whitespace\\n    (?:\\n        ((\\\\().+?(\\\\)))    # Match title in parens…\\n      | ((\\\").+?(\\\"))    # or in double quotes…\\n      | ((').+?('))    # or in single quotes.\\n    )?            # Title is optional\\n    \\\\s*            # Optional whitespace\\n  (\\\\))\\n\",\n      \"name\": \"meta.image.inline.markdown\"\n    },\n    \"image-ref\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.description.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.description.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.description.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        },\n        \"6\": {\n          \"name\": \"constant.other.reference.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        }\n      },\n      \"match\": \"(\\\\!\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])[ ]?(\\\\[)(.*?)(\\\\])\",\n      \"name\": \"meta.image.reference.markdown\"\n    },\n    \"italic\": {\n      \"begin\": \"(?x) (?<open>(\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*|(?<!\\\\w)\\\\b_))(?=\\\\S)                # Open\\n  (?=\\n    (\\n      <[^>]*+>              # HTML tags\\n      | (?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>\\n                        # Raw\\n      | \\\\\\\\[\\\\\\\\`*_{}\\\\[\\\\]()#.!+\\\\->]?+      # Escapes\\n      | \\\\[\\n      (\\n          (?<square>          # Named group\\n            [^\\\\[\\\\]\\\\\\\\]        # Match most chars\\n            | \\\\\\\\.            # Escaped chars\\n            | \\\\[ \\\\g<square>*+ \\\\]    # Nested brackets\\n          )*+\\n        \\\\]\\n        (\\n          (              # Reference Link\\n            [ ]?          # Optional space\\n            \\\\[[^\\\\]]*+\\\\]        # Ref name\\n          )\\n          | (              # Inline Link\\n            \\\\(            # Opening paren\\n              [ \\\\t]*+        # Optional whtiespace\\n              <?(.*?)>?      # URL\\n              [ \\\\t]*+        # Optional whtiespace\\n              (          # Optional Title\\n                (?<title>['\\\"])\\n                (.*?)\\n                \\\\k<title>\\n              )?\\n            \\\\)\\n          )\\n        )\\n      )\\n      | \\\\k<open>\\\\k<open>                   # Must be bold closer\\n      | (?!(?<=\\\\S)\\\\k<open>).            # Everything besides\\n                        # style closer\\n    )++\\n    (?<=\\\\S)(?=_\\\\b|\\\\*)\\\\k<open>                # Close\\n  )\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.italic.markdown\"\n        }\n      },\n      \"end\": \"(?<=\\\\S)(\\\\1)((?!\\\\1)|(?=\\\\1\\\\1))\",\n      \"name\": \"markup.italic.markdown\",\n      \"patterns\": [\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"(?=<[^>]*?>)\",\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#ampersand\"\n        },\n        {\n          \"include\": \"#bracket\"\n        },\n        {\n          \"include\": \"#raw\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#image-inline\"\n        },\n        {\n          \"include\": \"#link-inline\"\n        },\n        {\n          \"include\": \"#link-inet\"\n        },\n        {\n          \"include\": \"#link-email\"\n        },\n        {\n          \"include\": \"#image-ref\"\n        },\n        {\n          \"include\": \"#link-ref-literal\"\n        },\n        {\n          \"include\": \"#link-ref\"\n        },\n        {\n          \"include\": \"#link-ref-shortcut\"\n        },\n        {\n          \"include\": \"#strikethrough\"\n        }\n      ]\n    },\n    \"link-email\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"2\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        }\n      },\n      \"match\": \"(<)((?:mailto:)?[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*)(>)\",\n      \"name\": \"meta.link.email.lt-gt.markdown\"\n    },\n    \"link-inet\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"2\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        }\n      },\n      \"match\": \"(<)((?:https?|ftp)://.*?)(>)\",\n      \"name\": \"meta.link.inet.markdown\"\n    },\n    \"link-inline\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"8\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"10\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"12\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"14\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"15\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"16\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"17\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"18\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"19\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"20\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"21\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        }\n      },\n      \"match\": \"(?x)\\n  (\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])\\n                # Match the link text.\\n  (\\\\()            # Opening paren for url\\n    # The url\\n      [ \\\\t]*\\n      (\\n         (<)([^<>\\\\n]*)(>)\\n         | ((?<url>(?>[^\\\\s()]+)|\\\\(\\\\g<url>*\\\\))*)\\n      )\\n      [ \\\\t]*\\n    # The title  \\n    (?:\\n        ((\\\\()[^()]*(\\\\)))    # Match title in parens…\\n      | ((\\\")[^\\\"]*(\\\"))    # or in double quotes…\\n      | ((')[^']*('))    # or in single quotes.\\n    )?            # Title is optional\\n    \\\\s*            # Optional whitespace\\n  (\\\\))\\n\",\n      \"name\": \"meta.link.inline.markdown\"\n    },\n    \"link-ref\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.constant.begin.markdown\"\n        },\n        \"6\": {\n          \"name\": \"constant.other.reference.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.constant.end.markdown\"\n        }\n      },\n      \"match\": \"(?<![\\\\]\\\\\\\\])(\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])(\\\\[)([^\\\\]]*+)(\\\\])\",\n      \"name\": \"meta.link.reference.markdown\"\n    },\n    \"link-ref-literal\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.constant.begin.markdown\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.constant.end.markdown\"\n        }\n      },\n      \"match\": \"(?<![\\\\]\\\\\\\\])(\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])[ ]?(\\\\[)(\\\\])\",\n      \"name\": \"meta.link.reference.literal.markdown\"\n    },\n    \"link-ref-shortcut\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        }\n      },\n      \"match\": \"(?<![\\\\]\\\\\\\\])(\\\\[)(\\\\S+?)(\\\\])\",\n      \"name\": \"meta.link.reference.markdown\"\n    },\n    \"raw\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.raw.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.raw.markdown\"\n        }\n      },\n      \"match\": \"(`+)((?:[^`]|(?!(?<!`)\\\\1(?!`))`)*+)(\\\\1)\",\n      \"name\": \"markup.inline.raw.string.markdown\"\n    },\n    \"strikethrough\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.strikethrough.markdown\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"applyEndPatternLast\": 1,\n              \"begin\": \"(?=<[^>]*?>)\",\n              \"end\": \"(?<=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.derivative\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escape\"\n            },\n            {\n              \"include\": \"#ampersand\"\n            },\n            {\n              \"include\": \"#bracket\"\n            },\n            {\n              \"include\": \"#raw\"\n            },\n            {\n              \"include\": \"#bold\"\n            },\n            {\n              \"include\": \"#italic\"\n            },\n            {\n              \"include\": \"#image-inline\"\n            },\n            {\n              \"include\": \"#link-inline\"\n            },\n            {\n              \"include\": \"#link-inet\"\n            },\n            {\n              \"include\": \"#link-email\"\n            },\n            {\n              \"include\": \"#image-ref\"\n            },\n            {\n              \"include\": \"#link-ref-literal\"\n            },\n            {\n              \"include\": \"#link-ref\"\n            },\n            {\n              \"include\": \"#link-ref-shortcut\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.strikethrough.markdown\"\n        }\n      },\n      \"match\": \"(~{2,})((?:[^~]|(?!(?<!~)\\\\1(?!~))~)*+)(\\\\1)\",\n      \"name\": \"markup.strikethrough.markdown\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/markdown.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/vscode-markdown-tm-grammar/blob/master/syntaxes/markdown.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/vscode-markdown-tm-grammar/commit/69d3321b4923ca2d5e8e900018887cc38b5fe04a\",\n  \"name\": \"Markdown\",\n  \"scopeName\": \"text.html.markdown\",\n  \"patterns\": [\n    {\n      \"include\": \"#frontMatter\"\n    },\n    {\n      \"include\": \"#block\"\n    }\n  ],\n  \"repository\": {\n    \"block\": {\n      \"patterns\": [\n        {\n          \"include\": \"#separator\"\n        },\n        {\n          \"include\": \"#heading\"\n        },\n        {\n          \"include\": \"#blockquote\"\n        },\n        {\n          \"include\": \"#lists\"\n        },\n        {\n          \"include\": \"#fenced_code_block\"\n        },\n        {\n          \"include\": \"#raw_block\"\n        },\n        {\n          \"include\": \"#link-def\"\n        },\n        {\n          \"include\": \"#html\"\n        },\n        {\n          \"include\": \"#paragraph\"\n        }\n      ]\n    },\n    \"blockquote\": {\n      \"begin\": \"(^|\\\\G)[ ]{0,3}(>) ?\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.quote.begin.markdown\"\n        }\n      },\n      \"name\": \"markup.quote.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        }\n      ],\n      \"while\": \"(^|\\\\G)\\\\s*(>) ?\"\n    },\n    \"fenced_code_block_css\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(css|css.erb)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_basic\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(html|htm|shtml|xhtml|inc|tmpl|tpl)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_ini\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ini|conf)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.ini\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ini\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_java\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(java|bsh)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.java\",\n          \"patterns\": [\n            {\n              \"include\": \"source.java\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_lua\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(lua)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"source.lua\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_makefile\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(Makefile|makefile|GNUmakefile|OCamlMakefile)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"source.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_perl\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"source.perl\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_r\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(R|r|s|S|Rprofile|\\\\{\\\\.r.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.r\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_ruby\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_php\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(php|php3|php4|php5|phpt|phtml|aw|ctp)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.php\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            },\n            {\n              \"include\": \"source.php\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_sql\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(sql|ddl|dml)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_vs_net\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(vb)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.vs_net\",\n          \"patterns\": [\n            {\n              \"include\": \"source.asp.vb.net\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_xml\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_xsl\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xsl|xslt)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.xsl\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml.xsl\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_yaml\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(yaml|yml)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.yaml\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_dosbatch\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bat|batch)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.dosbatch\",\n          \"patterns\": [\n            {\n              \"include\": \"source.batchfile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_clojure\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(clj|cljs|clojure)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"source.clojure\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_coffee\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(coffee|Cakefile|coffee.erb)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"source.coffee\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_c\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(c|h)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.c\",\n          \"patterns\": [\n            {\n              \"include\": \"source.c\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_cpp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(cpp|c\\\\+\\\\+|cxx)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.cpp source.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_diff\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(patch|diff|rej)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.diff\",\n          \"patterns\": [\n            {\n              \"include\": \"source.diff\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_dockerfile\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(dockerfile|Dockerfile)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.dockerfile\",\n          \"patterns\": [\n            {\n              \"include\": \"source.dockerfile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_git_commit\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(COMMIT_EDITMSG|MERGE_MSG)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.git_commit\",\n          \"patterns\": [\n            {\n              \"include\": \"text.git-commit\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_git_rebase\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(git-rebase-todo)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.git_rebase\",\n          \"patterns\": [\n            {\n              \"include\": \"text.git-rebase\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_go\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(go|golang)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.go\",\n          \"patterns\": [\n            {\n              \"include\": \"source.go\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_groovy\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(groovy|gvy)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"source.groovy\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_pug\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jade|pug)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"text.pug\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_js\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(js|jsx|javascript|es6|mjs|cjs|dataviewjs|\\\\{\\\\.js.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.javascript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_js_regexp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(regexp)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.js_regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js.regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_json\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(json|json5|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_jsonc\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsonc)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.jsonc\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json.comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_less\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(less)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.less\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.less\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_objc\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|m|h)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"source.objc\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_swift\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(swift)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"source.swift\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_scss\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(scss)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.scss\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_perl6\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.perl6\",\n          \"patterns\": [\n            {\n              \"include\": \"source.perl.6\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_powershell\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(powershell|ps1|psm1|psd1)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.powershell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.powershell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_python\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi|\\\\{\\\\.python.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_julia\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(julia|\\\\{\\\\.julia.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_regexp_python\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(re)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.regexp_python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp.python\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_rust\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(rust|rs|\\\\{\\\\.rust.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.rust\",\n          \"patterns\": [\n            {\n              \"include\": \"source.rust\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_scala\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(scala|sbt)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.scala\",\n          \"patterns\": [\n            {\n              \"include\": \"source.scala\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_shell\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\\\{\\\\.bash.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.shellscript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_ts\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(typescript|ts)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.typescript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_tsx\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(tsx)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.typescriptreact\",\n          \"patterns\": [\n            {\n              \"include\": \"source.tsx\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_csharp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(cs|csharp|c#)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.csharp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cs\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_fsharp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(fs|fsharp|f#)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.fsharp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.fsharp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_dart\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(dart)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.dart\",\n          \"patterns\": [\n            {\n              \"include\": \"source.dart\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_handlebars\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(handlebars|hbs)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.handlebars\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.handlebars\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_markdown\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(markdown|md)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_log\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(log)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.log\",\n          \"patterns\": [\n            {\n              \"include\": \"text.log\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_erlang\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(erlang)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"source.erlang\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_elixir\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(elixir)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"source.elixir\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_latex\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(latex|tex)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.latex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.tex.latex\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_bibtex\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bibtex)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.bibtex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.bibtex\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fenced_code_block_css\"\n        },\n        {\n          \"include\": \"#fenced_code_block_basic\"\n        },\n        {\n          \"include\": \"#fenced_code_block_ini\"\n        },\n        {\n          \"include\": \"#fenced_code_block_java\"\n        },\n        {\n          \"include\": \"#fenced_code_block_lua\"\n        },\n        {\n          \"include\": \"#fenced_code_block_makefile\"\n        },\n        {\n          \"include\": \"#fenced_code_block_perl\"\n        },\n        {\n          \"include\": \"#fenced_code_block_r\"\n        },\n        {\n          \"include\": \"#fenced_code_block_ruby\"\n        },\n        {\n          \"include\": \"#fenced_code_block_php\"\n        },\n        {\n          \"include\": \"#fenced_code_block_sql\"\n        },\n        {\n          \"include\": \"#fenced_code_block_vs_net\"\n        },\n        {\n          \"include\": \"#fenced_code_block_xml\"\n        },\n        {\n          \"include\": \"#fenced_code_block_xsl\"\n        },\n        {\n          \"include\": \"#fenced_code_block_yaml\"\n        },\n        {\n          \"include\": \"#fenced_code_block_dosbatch\"\n        },\n        {\n          \"include\": \"#fenced_code_block_clojure\"\n        },\n        {\n          \"include\": \"#fenced_code_block_coffee\"\n        },\n        {\n          \"include\": \"#fenced_code_block_c\"\n        },\n        {\n          \"include\": \"#fenced_code_block_cpp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_diff\"\n        },\n        {\n          \"include\": \"#fenced_code_block_dockerfile\"\n        },\n        {\n          \"include\": \"#fenced_code_block_git_commit\"\n        },\n        {\n          \"include\": \"#fenced_code_block_git_rebase\"\n        },\n        {\n          \"include\": \"#fenced_code_block_go\"\n        },\n        {\n          \"include\": \"#fenced_code_block_groovy\"\n        },\n        {\n          \"include\": \"#fenced_code_block_pug\"\n        },\n        {\n          \"include\": \"#fenced_code_block_js\"\n        },\n        {\n          \"include\": \"#fenced_code_block_js_regexp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_json\"\n        },\n        {\n          \"include\": \"#fenced_code_block_jsonc\"\n        },\n        {\n          \"include\": \"#fenced_code_block_less\"\n        },\n        {\n          \"include\": \"#fenced_code_block_objc\"\n        },\n        {\n          \"include\": \"#fenced_code_block_swift\"\n        },\n        {\n          \"include\": \"#fenced_code_block_scss\"\n        },\n        {\n          \"include\": \"#fenced_code_block_perl6\"\n        },\n        {\n          \"include\": \"#fenced_code_block_powershell\"\n        },\n        {\n          \"include\": \"#fenced_code_block_python\"\n        },\n        {\n          \"include\": \"#fenced_code_block_julia\"\n        },\n        {\n          \"include\": \"#fenced_code_block_regexp_python\"\n        },\n        {\n          \"include\": \"#fenced_code_block_rust\"\n        },\n        {\n          \"include\": \"#fenced_code_block_scala\"\n        },\n        {\n          \"include\": \"#fenced_code_block_shell\"\n        },\n        {\n          \"include\": \"#fenced_code_block_ts\"\n        },\n        {\n          \"include\": \"#fenced_code_block_tsx\"\n        },\n        {\n          \"include\": \"#fenced_code_block_csharp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_fsharp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_dart\"\n        },\n        {\n          \"include\": \"#fenced_code_block_handlebars\"\n        },\n        {\n          \"include\": \"#fenced_code_block_markdown\"\n        },\n        {\n          \"include\": \"#fenced_code_block_log\"\n        },\n        {\n          \"include\": \"#fenced_code_block_erlang\"\n        },\n        {\n          \"include\": \"#fenced_code_block_elixir\"\n        },\n        {\n          \"include\": \"#fenced_code_block_latex\"\n        },\n        {\n          \"include\": \"#fenced_code_block_bibtex\"\n        },\n        {\n          \"include\": \"#fenced_code_block_unknown\"\n        }\n      ]\n    },\n    \"fenced_code_block_unknown\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?=([^`~]*)?$)\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language\"\n        }\n      },\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"name\": \"markup.fenced_code.block.markdown\"\n    },\n    \"heading\": {\n      \"match\": \"(?:^|\\\\G)[ ]{0,3}(#{1,6}\\\\s+(.*?)(\\\\s+#{1,6})?\\\\s*)$\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"(#{6})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.6.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{5})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.5.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{4})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.4.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{3})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.3.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{2})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.2.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{1})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.1.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            }\n          ]\n        }\n      },\n      \"name\": \"markup.heading.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline\"\n        }\n      ]\n    },\n    \"heading-setext\": {\n      \"patterns\": [\n        {\n          \"match\": \"^(={3,})(?=[ \\\\t]*$\\\\n?)\",\n          \"name\": \"markup.heading.setext.1.markdown\"\n        },\n        {\n          \"match\": \"^(-{3,})(?=[ \\\\t]*$\\\\n?)\",\n          \"name\": \"markup.heading.setext.2.markdown\"\n        }\n      ]\n    },\n    \"html\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)\\\\s*(<!--)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            }\n          },\n          \"end\": \"(-->)\",\n          \"name\": \"comment.block.html\"\n        },\n        {\n          \"begin\": \"(?i)(^|\\\\G)\\\\s*(?=<(script|style|pre)(\\\\s|$|>)(?!.*?</(script|style|pre)>))\",\n          \"end\": \"(?i)(.*)((</)(script|style|pre)(>))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.derivative\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"meta.tag.structure.$4.end.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\s*|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.derivative\"\n                }\n              ],\n              \"while\": \"(?i)^(?!.*</(script|style|pre)>)\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(^|\\\\G)\\\\s*(?=</?[a-zA-Z]+[^\\\\s/&gt;]*(\\\\s|$|/?>))\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ],\n          \"while\": \"^(?!\\\\s*$)\"\n        },\n        {\n          \"begin\": \"(^|\\\\G)\\\\s*(?=(<[a-zA-Z0-9\\\\-](/?>|\\\\s.*?>)|</[a-zA-Z0-9\\\\-]>)\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ],\n          \"while\": \"^(?!\\\\s*$)\"\n        }\n      ]\n    },\n    \"link-def\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.reference.link.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.key-value.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"6\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"8\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"9\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"12\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"14\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"15\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"16\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"17\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        }\n      },\n      \"match\": \"(?x)\\n  \\\\s*            # Leading whitespace\\n  (\\\\[)([^]]+?)(\\\\])(:)    # Reference name\\n  [ \\\\t]*          # Optional whitespace\\n  (?:(<)([^\\\\>]+?)(>)|(\\\\S+?))      # The url\\n  [ \\\\t]*          # Optional whitespace\\n  (?:\\n      ((\\\\().+?(\\\\)))    # Match title in parens…\\n    | ((\\\").+?(\\\"))    # or in double quotes…\\n    | ((').+?('))    # or in single quotes.\\n  )?            # Title is optional\\n  \\\\s*            # Optional whitespace\\n  $\\n\",\n      \"name\": \"meta.link.reference.def.markdown\"\n    },\n    \"list_paragraph\": {\n      \"begin\": \"(^|\\\\G)(?=\\\\S)(?![*+->]\\\\s|[0-9]+\\\\.\\\\s)\",\n      \"name\": \"meta.paragraph.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline\"\n        },\n        {\n          \"include\": \"text.html.derivative\"\n        },\n        {\n          \"include\": \"#heading-setext\"\n        }\n      ],\n      \"while\": \"(^|\\\\G)(?!\\\\s*$|#|[ ]{0,3}([-*_>][ ]{2,}){3,}[ \\\\t]*$\\\\n?|[ ]{0,3}[*+->]|[ ]{0,3}[0-9]+\\\\.)\"\n    },\n    \"lists\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)([ ]{0,3})([*+-])([ \\\\t])\",\n          \"beginCaptures\": {\n            \"3\": {\n              \"name\": \"punctuation.definition.list.begin.markdown\"\n            }\n          },\n          \"comment\": \"Currently does not support un-indented second lines.\",\n          \"name\": \"markup.list.unnumbered.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#list_paragraph\"\n            }\n          ],\n          \"while\": \"((^|\\\\G)([ ]{2,4}|\\\\t))|(^[ \\\\t]*$)\"\n        },\n        {\n          \"begin\": \"(^|\\\\G)([ ]{0,3})([0-9]+\\\\.)([ \\\\t])\",\n          \"beginCaptures\": {\n            \"3\": {\n              \"name\": \"punctuation.definition.list.begin.markdown\"\n            }\n          },\n          \"name\": \"markup.list.numbered.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#list_paragraph\"\n            }\n          ],\n          \"while\": \"((^|\\\\G)([ ]{2,4}|\\\\t))|(^[ \\\\t]*$)\"\n        }\n      ]\n    },\n    \"paragraph\": {\n      \"begin\": \"(^|\\\\G)[ ]{0,3}(?=\\\\S)\",\n      \"name\": \"meta.paragraph.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline\"\n        },\n        {\n          \"include\": \"text.html.derivative\"\n        },\n        {\n          \"include\": \"#heading-setext\"\n        }\n      ],\n      \"while\": \"(^|\\\\G)((?=\\\\s*[-=]{3,}\\\\s*$)|[ ]{4,}(?=\\\\S))\"\n    },\n    \"raw_block\": {\n      \"begin\": \"(^|\\\\G)([ ]{4}|\\\\t)\",\n      \"name\": \"markup.raw.block.markdown\",\n      \"while\": \"(^|\\\\G)([ ]{4}|\\\\t)\"\n    },\n    \"separator\": {\n      \"match\": \"(^|\\\\G)[ ]{0,3}([\\\\*\\\\-\\\\_])([ ]{0,2}\\\\2){2,}[ \\\\t]*$\\\\n?\",\n      \"name\": \"meta.separator.markdown\"\n    },\n    \"frontMatter\": {\n      \"begin\": \"\\\\A-{3}\\\\s*$\",\n      \"contentName\": \"meta.embedded.block.frontmatter\",\n      \"patterns\": [\n        {\n          \"include\": \"source.yaml\"\n        }\n      ],\n      \"end\": \"(^|\\\\G)-{3}|\\\\.{3}\\\\s*$\"\n    },\n    \"inline\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ampersand\"\n        },\n        {\n          \"include\": \"#bracket\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#italic\"\n        },\n        {\n          \"include\": \"#raw\"\n        },\n        {\n          \"include\": \"#strikethrough\"\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#image-inline\"\n        },\n        {\n          \"include\": \"#image-ref\"\n        },\n        {\n          \"include\": \"#link-email\"\n        },\n        {\n          \"include\": \"#link-inet\"\n        },\n        {\n          \"include\": \"#link-inline\"\n        },\n        {\n          \"include\": \"#link-ref\"\n        },\n        {\n          \"include\": \"#link-ref-literal\"\n        },\n        {\n          \"include\": \"#link-ref-shortcut\"\n        }\n      ]\n    },\n    \"ampersand\": {\n      \"comment\": \"Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.\",\n      \"match\": \"&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)\",\n      \"name\": \"meta.other.valid-ampersand.markdown\"\n    },\n    \"bold\": {\n      \"begin\": \"(?x) (?<open>(\\\\*\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*\\\\*|(?<!\\\\w)\\\\b__))(?=\\\\S) (?=\\n  (\\n    <[^>]*+>              # HTML tags\\n    | (?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>\\n                      # Raw\\n    | \\\\\\\\[\\\\\\\\`*_{}\\\\[\\\\]()#.!+\\\\->]?+      # Escapes\\n    | \\\\[\\n    (\\n        (?<square>          # Named group\\n          [^\\\\[\\\\]\\\\\\\\]        # Match most chars\\n          | \\\\\\\\.            # Escaped chars\\n          | \\\\[ \\\\g<square>*+ \\\\]    # Nested brackets\\n        )*+\\n      \\\\]\\n      (\\n        (              # Reference Link\\n          [ ]?          # Optional space\\n          \\\\[[^\\\\]]*+\\\\]        # Ref name\\n        )\\n        | (              # Inline Link\\n          \\\\(            # Opening paren\\n            [ \\\\t]*+        # Optional whitespace\\n            <?(.*?)>?      # URL\\n            [ \\\\t]*+        # Optional whitespace\\n            (          # Optional Title\\n              (?<title>['\\\"])\\n              (.*?)\\n              \\\\k<title>\\n            )?\\n          \\\\)\\n        )\\n      )\\n    )\\n    | (?!(?<=\\\\S)\\\\k<open>).            # Everything besides\\n                      # style closer\\n  )++\\n  (?<=\\\\S)(?=__\\\\b|\\\\*\\\\*)\\\\k<open>                # Close\\n)\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.bold.markdown\"\n        }\n      },\n      \"end\": \"(?<=\\\\S)(\\\\1)\",\n      \"name\": \"markup.bold.markdown\",\n      \"patterns\": [\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"(?=<[^>]*?>)\",\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#ampersand\"\n        },\n        {\n          \"include\": \"#bracket\"\n        },\n        {\n          \"include\": \"#raw\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#italic\"\n        },\n        {\n          \"include\": \"#image-inline\"\n        },\n        {\n          \"include\": \"#link-inline\"\n        },\n        {\n          \"include\": \"#link-inet\"\n        },\n        {\n          \"include\": \"#link-email\"\n        },\n        {\n          \"include\": \"#image-ref\"\n        },\n        {\n          \"include\": \"#link-ref-literal\"\n        },\n        {\n          \"include\": \"#link-ref\"\n        },\n        {\n          \"include\": \"#link-ref-shortcut\"\n        },\n        {\n          \"include\": \"#strikethrough\"\n        }\n      ]\n    },\n    \"bracket\": {\n      \"comment\": \"Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.\",\n      \"match\": \"<(?![a-zA-Z/?\\\\$!])\",\n      \"name\": \"meta.other.valid-bracket.markdown\"\n    },\n    \"escape\": {\n      \"match\": \"\\\\\\\\[-`*_#+.!(){}\\\\[\\\\]\\\\\\\\>]\",\n      \"name\": \"constant.character.escape.markdown\"\n    },\n    \"image-inline\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.description.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.description.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.description.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"markup.underline.link.image.markdown\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"9\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"12\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"14\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"15\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"16\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"17\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"18\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        }\n      },\n      \"match\": \"(?x)\\n  (\\\\!\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])\\n                # Match the link text.\\n  (\\\\()            # Opening paren for url\\n    (<?)(\\\\S+?)(>?)      # The url\\n    [ \\\\t]*          # Optional whitespace\\n    (?:\\n        ((\\\\().+?(\\\\)))    # Match title in parens…\\n      | ((\\\").+?(\\\"))    # or in double quotes…\\n      | ((').+?('))    # or in single quotes.\\n    )?            # Title is optional\\n    \\\\s*            # Optional whitespace\\n  (\\\\))\\n\",\n      \"name\": \"meta.image.inline.markdown\"\n    },\n    \"image-ref\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.description.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.description.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.description.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        },\n        \"6\": {\n          \"name\": \"constant.other.reference.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        }\n      },\n      \"match\": \"(\\\\!\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])[ ]?(\\\\[)(.*?)(\\\\])\",\n      \"name\": \"meta.image.reference.markdown\"\n    },\n    \"italic\": {\n      \"begin\": \"(?x) (?<open>(\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*|(?<!\\\\w)\\\\b_))(?=\\\\S)                # Open\\n  (?=\\n    (\\n      <[^>]*+>              # HTML tags\\n      | (?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>\\n                        # Raw\\n      | \\\\\\\\[\\\\\\\\`*_{}\\\\[\\\\]()#.!+\\\\->]?+      # Escapes\\n      | \\\\[\\n      (\\n          (?<square>          # Named group\\n            [^\\\\[\\\\]\\\\\\\\]        # Match most chars\\n            | \\\\\\\\.            # Escaped chars\\n            | \\\\[ \\\\g<square>*+ \\\\]    # Nested brackets\\n          )*+\\n        \\\\]\\n        (\\n          (              # Reference Link\\n            [ ]?          # Optional space\\n            \\\\[[^\\\\]]*+\\\\]        # Ref name\\n          )\\n          | (              # Inline Link\\n            \\\\(            # Opening paren\\n              [ \\\\t]*+        # Optional whtiespace\\n              <?(.*?)>?      # URL\\n              [ \\\\t]*+        # Optional whtiespace\\n              (          # Optional Title\\n                (?<title>['\\\"])\\n                (.*?)\\n                \\\\k<title>\\n              )?\\n            \\\\)\\n          )\\n        )\\n      )\\n      | \\\\k<open>\\\\k<open>                   # Must be bold closer\\n      | (?!(?<=\\\\S)\\\\k<open>).            # Everything besides\\n                        # style closer\\n    )++\\n    (?<=\\\\S)(?=_\\\\b|\\\\*)\\\\k<open>                # Close\\n  )\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.italic.markdown\"\n        }\n      },\n      \"end\": \"(?<=\\\\S)(\\\\1)((?!\\\\1)|(?=\\\\1\\\\1))\",\n      \"name\": \"markup.italic.markdown\",\n      \"patterns\": [\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"(?=<[^>]*?>)\",\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#ampersand\"\n        },\n        {\n          \"include\": \"#bracket\"\n        },\n        {\n          \"include\": \"#raw\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#image-inline\"\n        },\n        {\n          \"include\": \"#link-inline\"\n        },\n        {\n          \"include\": \"#link-inet\"\n        },\n        {\n          \"include\": \"#link-email\"\n        },\n        {\n          \"include\": \"#image-ref\"\n        },\n        {\n          \"include\": \"#link-ref-literal\"\n        },\n        {\n          \"include\": \"#link-ref\"\n        },\n        {\n          \"include\": \"#link-ref-shortcut\"\n        },\n        {\n          \"include\": \"#strikethrough\"\n        }\n      ]\n    },\n    \"link-email\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"2\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        }\n      },\n      \"match\": \"(<)((?:mailto:)?[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*)(>)\",\n      \"name\": \"meta.link.email.lt-gt.markdown\"\n    },\n    \"link-inet\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"2\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        }\n      },\n      \"match\": \"(<)((?:https?|ftp)://.*?)(>)\",\n      \"name\": \"meta.link.inet.markdown\"\n    },\n    \"link-inline\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"8\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"10\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"12\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"14\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"15\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"16\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"17\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"18\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"19\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"20\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"21\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        }\n      },\n      \"match\": \"(?x)\\n  (\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])\\n                # Match the link text.\\n  (\\\\()            # Opening paren for url\\n    # The url\\n      [ \\\\t]*\\n      (\\n         (<)([^<>\\\\n]*)(>)\\n         | ((?<url>(?>[^\\\\s()]+)|\\\\(\\\\g<url>*\\\\))*)\\n      )\\n      [ \\\\t]*\\n    # The title  \\n    (?:\\n        ((\\\\()[^()]*(\\\\)))    # Match title in parens…\\n      | ((\\\")[^\\\"]*(\\\"))    # or in double quotes…\\n      | ((')[^']*('))    # or in single quotes.\\n    )?            # Title is optional\\n    \\\\s*            # Optional whitespace\\n  (\\\\))\\n\",\n      \"name\": \"meta.link.inline.markdown\"\n    },\n    \"link-ref\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.constant.begin.markdown\"\n        },\n        \"6\": {\n          \"name\": \"constant.other.reference.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.constant.end.markdown\"\n        }\n      },\n      \"match\": \"(?<![\\\\]\\\\\\\\])(\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])(\\\\[)([^\\\\]]*+)(\\\\])\",\n      \"name\": \"meta.link.reference.markdown\"\n    },\n    \"link-ref-literal\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.constant.begin.markdown\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.constant.end.markdown\"\n        }\n      },\n      \"match\": \"(?<![\\\\]\\\\\\\\])(\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])[ ]?(\\\\[)(\\\\])\",\n      \"name\": \"meta.link.reference.literal.markdown\"\n    },\n    \"link-ref-shortcut\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        }\n      },\n      \"match\": \"(?<![\\\\]\\\\\\\\])(\\\\[)(\\\\S+?)(\\\\])\",\n      \"name\": \"meta.link.reference.markdown\"\n    },\n    \"raw\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.raw.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.raw.markdown\"\n        }\n      },\n      \"match\": \"(`+)((?:[^`]|(?!(?<!`)\\\\1(?!`))`)*+)(\\\\1)\",\n      \"name\": \"markup.inline.raw.string.markdown\"\n    },\n    \"strikethrough\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.strikethrough.markdown\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"applyEndPatternLast\": 1,\n              \"begin\": \"(?=<[^>]*?>)\",\n              \"end\": \"(?<=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.derivative\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escape\"\n            },\n            {\n              \"include\": \"#ampersand\"\n            },\n            {\n              \"include\": \"#bracket\"\n            },\n            {\n              \"include\": \"#raw\"\n            },\n            {\n              \"include\": \"#bold\"\n            },\n            {\n              \"include\": \"#italic\"\n            },\n            {\n              \"include\": \"#image-inline\"\n            },\n            {\n              \"include\": \"#link-inline\"\n            },\n            {\n              \"include\": \"#link-inet\"\n            },\n            {\n              \"include\": \"#link-email\"\n            },\n            {\n              \"include\": \"#image-ref\"\n            },\n            {\n              \"include\": \"#link-ref-literal\"\n            },\n            {\n              \"include\": \"#link-ref\"\n            },\n            {\n              \"include\": \"#link-ref-shortcut\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.strikethrough.markdown\"\n        }\n      },\n      \"match\": \"(~{2,})((?:[^~]|(?!(?<!~)\\\\1(?!~))~)*+)(\\\\1)\",\n      \"name\": \"markup.strikethrough.markdown\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/mask.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"mask\"],\n  \"name\": \"Mask\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#punctuation\"\n    },\n    {\n      \"include\": \"#literal-string\"\n    },\n    {\n      \"include\": \"#decorator\"\n    },\n    {\n      \"include\": \"#import\"\n    },\n    {\n      \"include\": \"#xml_markdown\"\n    },\n    {\n      \"include\": \"#xml_style\"\n    },\n    {\n      \"include\": \"#xml_script\"\n    },\n    {\n      \"include\": \"#xml\"\n    },\n    {\n      \"include\": \"#define\"\n    },\n    {\n      \"include\": \"#tag_javascript\"\n    },\n    {\n      \"include\": \"#tag_var\"\n    },\n    {\n      \"include\": \"#tag_style\"\n    },\n    {\n      \"include\": \"#tag_markdown\"\n    },\n    {\n      \"include\": \"#tag\"\n    },\n    {\n      \"include\": \"#statement\"\n    },\n    {\n      \"include\": \"#node_klass_id\"\n    },\n    {\n      \"include\": \"#node_template\"\n    },\n    {\n      \"include\": \"#node\"\n    }\n  ],\n  \"repository\": {\n    \"punctuation\": {\n      \"match\": \"([>;\\\\{\\\\}])\",\n      \"name\": \"meta.group.braces\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"import\": {\n      \"end\": \"(;|(?<=['|\\\"]))\",\n      \"name\": \"import.mask\",\n      \"begin\": \"(import)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(sync|async|as|from)\\\\b\",\n          \"name\": \"keyword\"\n        },\n        {\n          \"match\": \"(,)\",\n          \"name\": \"punctuation\"\n        },\n        {\n          \"include\": \"#literal-string\"\n        }\n      ]\n    },\n    \"xml_style\": {\n      \"end\": \"(?i)</style[^\\\\>]*>\",\n      \"name\": \"syntax.markdown.mask\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.parameter\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.css\"\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"variable.parameter\"\n        }\n      },\n      \"begin\": \"(?i)<style[^\\\\>]*>\"\n    },\n    \"tag_style\": {\n      \"end\": \"(?<=\\\\})|(\\\\})\",\n      \"name\": \"syntax.style.mask\",\n      \"begin\": \"(style)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#klass_id\"\n        },\n        {\n          \"include\": \"#node_attribute\"\n        },\n        {\n          \"include\": \"#style\"\n        }\n      ]\n    },\n    \"tag_var\": {\n      \"end\": \"([\\\\};\\\\]])|(?<=[\\\\};\\\\]])\",\n      \"name\": \"var.mask\",\n      \"begin\": \"(var)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"node_klass_id\": {\n      \"end\": \"(?<=[>;\\\\{\\\\}])|(?=[>;\\\\{\\\\}])|([>;\\\\{\\\\}])\",\n      \"name\": \"node.head.mask\",\n      \"begin\": \"(?=[\\\\.#])\",\n      \"patterns\": [\n        {\n          \"include\": \"#klass_id\"\n        },\n        {\n          \"include\": \"#node_attribute\"\n        }\n      ]\n    },\n    \"js-interpolation\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\\]\",\n          \"name\": \"other.interpolated.mask\",\n          \"begin\": \"\\\\[\",\n          \"patterns\": [\n            {\n              \"include\": \"#js-interpolation\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\\\\\)(~)([\\\\w\\\\.]+)\",\n          \"name\": \"markup.italic\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter\"\n            },\n            \"2\": {\n              \"name\": \"other.interpolated.mask\"\n            }\n          }\n        },\n        {\n          \"end\": \"\\\\]\",\n          \"name\": \"markup.italic\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\s*\\\\w*\\\\s*:)\",\n              \"name\": \"keyword.util.mask\"\n            },\n            {\n              \"include\": \"#js-interpolation\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"begin\": \"(~\\\\[)\"\n        }\n      ]\n    },\n    \"literal-string\": {\n      \"patterns\": [\n        {\n          \"end\": \"(''')\",\n          \"name\": \"literal-string\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-content\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.js\"\n            }\n          },\n          \"begin\": \"(''')\"\n        },\n        {\n          \"end\": \"(\\\"\\\"\\\")\",\n          \"name\": \"literal-string\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-content\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.js\"\n            }\n          },\n          \"begin\": \"(\\\"\\\"\\\")\"\n        },\n        {\n          \"end\": \"(')\",\n          \"name\": \"literal-string\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-content\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.js\"\n            }\n          },\n          \"begin\": \"(')\"\n        },\n        {\n          \"end\": \"(\\\")\",\n          \"name\": \"literal-string\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-content\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.js\"\n            }\n          },\n          \"begin\": \"(\\\")\"\n        }\n      ]\n    },\n    \"xml\": {\n      \"end\": \"(?<=</\\\\1>)\",\n      \"name\": \"syntax.html.mask\",\n      \"begin\": \"(?=</?\\\\s*(\\\\w+))\",\n      \"patterns\": [\n        {\n          \"end\": \"(</mask>)\",\n          \"begin\": \"(<mask>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.mask\"\n            }\n          ]\n        },\n        {\n          \"include\": \"text.html.basic\"\n        },\n        {\n          \"include\": \"#xml\"\n        }\n      ]\n    },\n    \"node_attribute_value\": {\n      \"patterns\": [\n        {\n          \"match\": \"(true|false)(?=[\\\\s>;\\\\{])\",\n          \"name\": \"constant.character\"\n        },\n        {\n          \"match\": \"([\\\\d\\\\.]+)(?=[\\\\s>;\\\\{])\",\n          \"name\": \"constant.numeric\"\n        },\n        {\n          \"include\": \"#literal-string\"\n        },\n        {\n          \"match\": \"((\\\\s*)[^\\\\s>;\\\\{]+)\",\n          \"name\": \"string.quoted\"\n        }\n      ]\n    },\n    \"define\": {\n      \"end\": \"(?<=[>;\\\\{\\\\}])|(?=[>;\\\\{\\\\}])|([>;\\\\{\\\\}])\",\n      \"name\": \"define.mask\",\n      \"begin\": \"((define|let)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(as|extends)\\\\b\",\n          \"name\": \"keyword\"\n        },\n        {\n          \"match\": \"(,)\",\n          \"name\": \"punctuation\"\n        },\n        {\n          \"match\": \"([\\\\w_\\\\-:]+)\",\n          \"name\": \"entity.other.attribute-name\"\n        },\n        {\n          \"match\": \"(\\\\([^\\\\)]*\\\\))\",\n          \"name\": \"variable.parameter\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword\"\n        }\n      },\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"tag\": {\n      \"end\": \"(?<=[>;\\\\{\\\\}])|(?=[>;\\\\{\\\\}])|([>;\\\\{\\\\}])\",\n      \"name\": \"tag.mask\",\n      \"begin\": \"(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|video|wbr|xmp)(?=[\\\\s.#;\\\\{\\\\}]|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.mask\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#node_attributes\"\n        }\n      ]\n    },\n    \"markdown\": {\n      \"end\": \"('''|\\\"\\\"\\\")\",\n      \"name\": \"syntax.markdown.mask\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.parameter\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.html.markdown\"\n        }\n      ],\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"variable.parameter\"\n        }\n      },\n      \"begin\": \"((\\\\{|>)\\\\s*('''|\\\"\\\"\\\"))\"\n    },\n    \"node_template\": {\n      \"end\": \"(?<=[>;\\\\{\\\\}])|(?=[>;\\\\{\\\\}])|([>;\\\\{\\\\}])\",\n      \"name\": \"node.mask\",\n      \"begin\": \"(@[^\\\\s\\\\.#;>\\\\{]+)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.parameter.mask\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#klass_id\"\n        },\n        {\n          \"include\": \"#node_attribute\"\n        }\n      ]\n    },\n    \"js-block\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\\}\",\n          \"name\": \"other.interpolated.mask\",\n          \"begin\": \"\\\\{\",\n          \"patterns\": [\n            {\n              \"include\": \"#js-block\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"statement\": {\n      \"end\": \"(?<=[>;\\\\{\\\\}])|(?=[>;\\\\{\\\\}])|([>;\\\\{\\\\}])\",\n      \"name\": \"tag.mask\",\n      \"begin\": \"(if|else|with|each|for|switch|case|\\\\+if|\\\\+with|\\\\+each|\\\\+for|debugger|log|script|\\\\:import|\\\\:template|include)(?=[\\\\s.#;\\\\{\\\\}]|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#node_attributes\"\n        }\n      ]\n    },\n    \"node_attribute\": {\n      \"name\": \"node.attribute.mask\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"name\": \"attribute-expression\",\n          \"include\": \"#expression\"\n        },\n        {\n          \"end\": \"([\\\\s;>\\\\{])\",\n          \"name\": \"attribute-key-value\",\n          \"begin\": \"([\\\\w_\\\\-$]+)(\\\\s*=\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node_attribute_value\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([\\\\w_\\\\-$:]+)(?=([\\\\s;>\\\\{])|$)\",\n          \"name\": \"entity.other.attribute-name\"\n        }\n      ]\n    },\n    \"tag_markdown\": {\n      \"end\": \"(?<=\\\\})|(\\\\})\",\n      \"name\": \"syntax.markdown.mask\",\n      \"begin\": \"(md|markdown)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#klass_id\"\n        },\n        {\n          \"include\": \"#node_attribute\"\n        },\n        {\n          \"include\": \"#markdown\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.js\",\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.js\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"node_attributes\": {\n      \"end\": \"(?<=[>;\\\\{\\\\}])\",\n      \"name\": \"node.attributes.mask\",\n      \"begin\": \"\",\n      \"patterns\": [\n        {\n          \"include\": \"#klass_id\"\n        },\n        {\n          \"include\": \"#node_attribute\"\n        }\n      ]\n    },\n    \"tag_javascript\": {\n      \"end\": \"(\\\\})|(?<=\\\\})\",\n      \"name\": \"slot.mask\",\n      \"begin\": \"(slot|pipe|event|function|script)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(static|private|public|async|self)\\\\b\",\n          \"name\": \"keyword\"\n        },\n        {\n          \"include\": \"#klass_id\"\n        },\n        {\n          \"include\": \"#node_attribute\"\n        },\n        {\n          \"include\": \"#javascript\"\n        }\n      ]\n    },\n    \"xml_markdown\": {\n      \"end\": \"(?i)</markdown[^\\\\>]*>\",\n      \"name\": \"syntax.markdown.mask\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.parameter\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.html.markdown\"\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"variable.parameter\"\n        }\n      },\n      \"begin\": \"(?i)<markdown[^\\\\>]*>\"\n    },\n    \"html\": {\n      \"patterns\": [\n        {\n          \"end\": \"(('''|\\\"\\\"\\\"))\",\n          \"name\": \"syntax.html.mask\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"begin\": \"((\\\\{|>)\\\\s*('''|\\\"\\\"\\\"))\"\n        }\n      ]\n    },\n    \"klass_id\": {\n      \"end\": \"(?=[\\\\s\\\\.#])\",\n      \"name\": \"node-head.attribute.mask\",\n      \"begin\": \"([\\\\.#][\\\\w_\\\\-$:]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.markup.bold.mask\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"match\": \"(([\\\\w_\\\\-$]+)(?=[\\\\s.#]))\",\n          \"name\": \"entity.other.attribute-name.mask\"\n        }\n      ]\n    },\n    \"js-expression\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\\)\",\n          \"name\": \"other.interpolated.mask\",\n          \"begin\": \"\\\\(\",\n          \"patterns\": [\n            {\n              \"include\": \"#js-expression\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"javascript\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\\}\",\n          \"name\": \"syntax.js.mask\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#js-block\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"begin\": \"\\\\{\"\n        }\n      ]\n    },\n    \"xml_script\": {\n      \"end\": \"(?i)</script[^\\\\>]*>\",\n      \"name\": \"syntax.markdown.mask\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.parameter\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"variable.parameter\"\n        }\n      },\n      \"begin\": \"(?i)<script[^\\\\>]*>\"\n    },\n    \"string-content\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(x[\\\\da-fA-F]{2}|u[\\\\da-fA-F]{4}|.)\",\n          \"name\": \"constant.character.escape.js\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"match\": \"(.)\",\n          \"name\": \"string\"\n        }\n      ]\n    },\n    \"node\": {\n      \"end\": \"(?<=[>;\\\\{\\\\}])|(?=[>;\\\\{\\\\}])|([>;\\\\{\\\\}])\",\n      \"name\": \"node.mask\",\n      \"begin\": \"([^\\\\s\\\\.#;>\\\\{\\\\(]+)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.tag.mask\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#node_attributes\"\n        }\n      ]\n    },\n    \"style\": {\n      \"patterns\": [\n        {\n          \"end\": \"(\\\\})\",\n          \"name\": \"syntax.style.mask\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"begin\": \"(\\\\{)\"\n        }\n      ]\n    },\n    \"node_attribute_expression\": {\n      \"end\": \"(\\\\))\",\n      \"name\": \"meta.group.braces.round\",\n      \"begin\": \"(\\\\()\",\n      \"patterns\": [\n        {\n          \"include\": \"#js-expression\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\\)\",\n          \"name\": \"markup.italic\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#js-expression\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter\"\n            }\n          },\n          \"begin\": \"(\\\\()\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.mask\",\n  \"uuid\": \"1a1ae218-751e-4eb8-8c10-4400d892a660\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/matlab.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"m\"],\n  \"keyEquivalent\": \"^~M\",\n  \"name\": \"matlab\",\n  \"patterns\": [\n    {\n      \"comment\": \"This and #all_after_command_dual are split out so #command_dual can be excluded in things like (), {}, []\",\n      \"include\": \"#all_before_command_dual\"\n    },\n    {\n      \"include\": \"#command_dual\"\n    },\n    {\n      \"include\": \"#all_after_command_dual\"\n    }\n  ],\n  \"repository\": {\n    \"all_before_command_dual\": {\n      \"patterns\": [\n        {\n          \"include\": \"#classdef\"\n        },\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#blocks\"\n        },\n        {\n          \"include\": \"#control_statements\"\n        },\n        {\n          \"include\": \"#global_persistent\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"#indexing_curly_brackets\"\n        },\n        {\n          \"include\": \"#curly_brackets\"\n        }\n      ]\n    },\n    \"all_after_command_dual\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#line_continuation\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#conjugate_transpose\"\n        },\n        {\n          \"include\": \"#transpose\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#operators\"\n        }\n      ]\n    },\n    \"blocks\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(for)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.for.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.for.matlab\"\n            }\n          },\n          \"name\": \"meta.for.matlab\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(if)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.if.matlab\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"name\": \"meta.if.matlab\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.elseif.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(elseif)\\\\b(.*)$\\\\n?\",\n              \"name\": \"meta.elseif.matlab\"\n            },\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.else.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(else)\\\\b(.*)?$\\\\n?\",\n              \"name\": \"meta.else.matlab\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(parfor)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.for.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.for.matlab\"\n            }\n          },\n          \"name\": \"meta.parfor.matlab\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!$)\",\n              \"end\": \"$\\\\n?\",\n              \"name\": \"meta.parfor-quantity.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(spmd)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.spmd.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.spmd.matlab\"\n            }\n          },\n          \"name\": \"meta.spmd.matlab\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!$)\",\n              \"end\": \"$\\\\n?\",\n              \"name\": \"meta.spmd-statement.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(switch)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.switch.matlab\"\n            }\n          },\n          \"name\": \"meta.switch.matlab\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.case.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(case)\\\\b(.*)$\\\\n?\",\n              \"name\": \"meta.case.matlab\"\n            },\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.otherwise.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(otherwise)\\\\b(.*)?$\\\\n?\",\n              \"name\": \"meta.otherwise.matlab\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(try)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.try.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.try.matlab\"\n            }\n          },\n          \"name\": \"meta.try.matlab\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.catch.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(catch)\\\\b(.*)?$\\\\n?\",\n              \"name\": \"meta.catch.matlab\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(while)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.while.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.while.matlab\"\n            }\n          },\n          \"name\": \"meta.while.matlab\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"classdef\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t(classdef)\\n\\t\\t\\t\\t\\t\\t\\t\\\\b\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t(.*)\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"storage.type.class.matlab\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\t\\t\\t# Class name\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\t\\t\\t\\t\\t\\t\\t\\t# Optional inheritance\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(<)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=(%|...)).*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                          \"name\": \"variable.parameter.class.matlab\"\n                        },\n                        {\n                          \"begin\": \"=\\\\s*\",\n                          \"end\": \",|(?=\\\\))\",\n                          \"patterns\": [\n                            {\n                              \"match\": \"true|false\",\n                              \"name\": \"constant.language.boolean.matlab\"\n                            },\n                            {\n                              \"include\": \"#string\"\n                            }\n                          ]\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"meta.class-declaration.matlab\"\n                    },\n                    \"3\": {\n                      \"name\": \"entity.name.section.class.matlab\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.operator.other.matlab\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"[a-zA-Z][a-zA-Z0-9_]*(\\\\.[a-zA-Z][a-zA-Z0-9_]*)*\",\n                          \"name\": \"entity.other.inherited-class.matlab\"\n                        },\n                        {\n                          \"match\": \"&\",\n                          \"name\": \"keyword.operator.other.matlab\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"$self\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.class.matlab\"\n            }\n          },\n          \"name\": \"meta.class.matlab\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(properties)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.properties.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                      \"name\": \"variable.parameter.properties.matlab\"\n                    },\n                    {\n                      \"begin\": \"=\\\\s*\",\n                      \"end\": \",|(?=\\\\))\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"true|false\",\n                          \"name\": \"constant.language.boolean.matlab\"\n                        },\n                        {\n                          \"match\": \"public|protected|private\",\n                          \"name\": \"constant.language.access.matlab\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.properties.matlab\"\n                }\n              },\n              \"name\": \"meta.properties.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"#validators\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(methods)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.methods.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                      \"name\": \"variable.parameter.methods.matlab\"\n                    },\n                    {\n                      \"begin\": \"=\\\\s*\",\n                      \"end\": \",|(?=\\\\))\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"true|false\",\n                          \"name\": \"constant.language.boolean.matlab\"\n                        },\n                        {\n                          \"match\": \"public|protected|private\",\n                          \"name\": \"constant.language.access.matlab\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.methods.matlab\"\n                }\n              },\n              \"name\": \"meta.methods.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(events)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.events.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                      \"name\": \"variable.parameter.events.matlab\"\n                    },\n                    {\n                      \"begin\": \"=\\\\s*\",\n                      \"end\": \",|(?=\\\\))\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"true|false\",\n                          \"name\": \"constant.language.boolean.matlab\"\n                        },\n                        {\n                          \"match\": \"public|protected|private\",\n                          \"name\": \"constant.language.access.matlab\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.events.matlab\"\n                }\n              },\n              \"name\": \"meta.events.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(enumeration)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.enumeration.matlab\"\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.enumeration.matlab\"\n                }\n              },\n              \"name\": \"meta.enumeration.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"command_dual\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.matlab\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.command.matlab\"\n        },\n        \"28\": {\n          \"name\": \"comment.line.percentage.matlab\"\n        }\n      },\n      \"comment\": \"  1        2                                  3                                                    4                                                  5                                                    6                                                         7                                                                             8                 9                            10                   11                      12                         13                   14                                                               1516       17                                                             18                                                                                                                               19                      20                                     21                                    22                                      23                                         24                                         25                                                                         26            27                 28\",\n      \"match\": \"^\\\\s*((?# A> )([b-df-hk-moq-zA-HJ-MO-Z]\\\\w*|a|an|a([A-Za-mo-z0-9_]\\\\w*|n[A-Za-rt-z0-9_]\\\\w*|ns\\\\w+)|e|ep|e([A-Za-oq-z0-9_]\\\\w*|p[A-Za-rt-z0-9_]\\\\w*|ps\\\\w+)|in|i([A-Za-mo-z0-9_]\\\\w*|n[A-Za-eg-z0-9_]\\\\w*|nf\\\\w+)|I|In|I([A-Za-mo-z0-9_]\\\\w*|n[A-Za-eg-z0-9_]\\\\w*|nf\\\\w+)|j\\\\w+|N|Na|N([A-Zb-z0-9_]\\\\w*|a[A-MO-Za-z0-9_]\\\\w*|aN\\\\w+)|n|na|nar|narg|nargi|nargo|nargou|n([A-Zb-z0-9_]\\\\w*|a([A-Za-mo-qs-z0-9_]\\\\w*|n\\\\w+|r([A-Za-fh-z0-9_]\\\\w*|g([A-Za-hj-nq-z0-9_]\\\\w*|i([A-Za-mo-z0-9_]\\\\w*|n\\\\w+)|o([A-Za-tv-z0-9_]\\\\w*|u([A-Za-su-z]\\\\w*|t\\\\w+))))))|p|p[A-Za-hj-z0-9_]\\\\w*|pi\\\\w+)(?# <A )\\\\s+(((?# B> )([^\\\\s;,%()=.{&|~<>:+\\\\-*/\\\\\\\\@^'\\\"]|(?=')|(?=\\\"))(?# <B )|(?# C> )(\\\\.\\\\^|\\\\.\\\\*|\\\\./|\\\\.\\\\\\\\|\\\\.'|\\\\.\\\\(|&&|==|\\\\|\\\\||&(?=[^&])|\\\\|(?=[^\\\\|])|~=|<=|>=|~(?!=)|<(?!=)|>(?!=)|:|\\\\+|-|\\\\*|/|\\\\\\\\|@|\\\\^)(?# <C )(?# D> )([^\\\\s]|\\\\s*(?=%)|\\\\s+$|\\\\s+(,|;|\\\\)|}|\\\\]|&|\\\\||<|>|=|:|\\\\*|/|\\\\\\\\|\\\\^|@|(\\\\.[^\\\\d.]|\\\\.\\\\.[^.])))(?# <D )|(?# E> )(\\\\.[^^*/\\\\\\\\'(\\\\sA-Za-z])(?# <E ))(?# F> )([^%]|'[^']*'|\\\"[^\\\"]*\\\")*(?# <F )|(?# X> )(\\\\.(?=\\\\s)|\\\\.[A-Za-z]|(?={))(?# <X )(?# Y> )([^(=\\\\'\\\"%]|==|'[^']*'|\\\"[^\\\"]*\\\"|\\\\(|\\\\([^)%]*\\\\)|\\\\[|\\\\[[^\\\\]%]*\\\\]|{|{[^}%]*})*(\\\\.\\\\.\\\\.[^%]*)?((?=%)|$)(?# <Y )))(%.*)?$\"\n    },\n    \"comment_block\": {\n      \"begin\": \"(^[\\\\s]*)%\\\\{[^\\\\n\\\\S]*+\\\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.matlab\"\n        }\n      },\n      \"end\": \"^[\\\\s]*%\\\\}[^\\\\n\\\\S]*+(?:\\\\n|$)\",\n      \"name\": \"comment.block.percentage.matlab\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"match\": \"^[^\\\\n]*\\\\n\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=%%\\\\s)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.matlab\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"%%\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.matlab\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-percentage.matlab\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G[^\\\\S\\\\n]*(?![\\\\n\\\\s])\",\n                  \"contentName\": \"meta.cell.matlab\",\n                  \"end\": \"(?=\\\\n)\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=%)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.matlab\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"%\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.matlab\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.percentage.matlab\"\n            }\n          ]\n        }\n      ]\n    },\n    \"control_statements\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.matlab\"\n        }\n      },\n      \"match\": \"\\\\s*(?:^|[\\\\s,;])(break|continue|return)\\\\b\",\n      \"name\": \"meta.control.matlab\"\n    },\n    \"function\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t(function)\\n\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t(?:\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\[) ([^\\\\]]*) (\\\\])\\n\\t\\t\\t\\t\\t\\t\\t\\t  | ([a-zA-Z][a-zA-Z0-9_]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\s* = \\\\s*\\n\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*(\\\\.[a-zA-Z][a-zA-Z0-9_]*)*)\\t# Function name\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Trailing space\\n\\t\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"storage.type.function.matlab\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.matlab\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\w+\",\n                  \"name\": \"variable.parameter.output.matlab\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.arguments.end.matlab\"\n            },\n            \"6\": {\n              \"name\": \"variable.parameter.output.function.matlab\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.function.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b(\\\\s*\\\\n)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.function.matlab\"\n            }\n          },\n          \"name\": \"meta.function.matlab\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\(\",\n              \"end\": \"\\\\)\",\n              \"name\": \"meta.arguments.function.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation\"\n                },\n                {\n                  \"match\": \"\\\\w+\",\n                  \"name\": \"variable.parameter.input.matlab\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(arguments)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.arguments.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                      \"name\": \"variable.parameter.arguments.matlab\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.arguments.matlab\"\n                }\n              },\n              \"name\": \"meta.arguments.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"#validators\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"global_persistent\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.globalpersistent.matlab\"\n        }\n      },\n      \"match\": \"^\\\\s*(global|persistent)\\\\b\",\n      \"name\": \"meta.globalpersistent.matlab\"\n    },\n    \"parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?<!\\\\.\\\\.\\\\.).\\\\n)\",\n      \"comment\": \"We don't include $self here to avoid matching command syntax inside (), [], {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"include\": \"#all_before_command_dual\"\n        },\n        {\n          \"include\": \"#all_after_command_dual\"\n        },\n        {\n          \"comment\": \"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written\",\n          \"include\": \"#block_keywords\"\n        }\n      ]\n    },\n    \"square_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"comment\": \"We don't include $self here to avoid matching command syntax inside (), [], {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#all_before_command_dual\"\n        },\n        {\n          \"include\": \"#all_after_command_dual\"\n        },\n        {\n          \"comment\": \"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written\",\n          \"include\": \"#block_keywords\"\n        }\n      ]\n    },\n    \"curly_brackets\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"comment\": \"We don't include $self here to avoid matching command syntax inside (), [], {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"include\": \"#all_before_command_dual\"\n        },\n        {\n          \"include\": \"#all_after_command_dual\"\n        },\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"comment\": \"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written\",\n          \"include\": \"#block_keywords\"\n        }\n      ]\n    },\n    \"indexing_curly_brackets\": {\n      \"Comment\": \"Match identifier{idx, idx, } and stop at newline without ... This helps with partially written code like x{idx \",\n      \"begin\": \"([a-zA-Z][a-zA-Z0-9_\\\\.]*\\\\s*)\\\\{\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\}|(?<!\\\\.\\\\.\\\\.).\\\\n)\",\n      \"comment\": \"We don't include $self here to avoid matching command syntax inside (), [], {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"include\": \"#all_before_command_dual\"\n        },\n        {\n          \"include\": \"#all_after_command_dual\"\n        },\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"comment\": \"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written\",\n          \"include\": \"#block_keywords\"\n        }\n      ]\n    },\n    \"line_continuation\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.symbols.matlab\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.continuation.matlab\"\n        }\n      },\n      \"comment\": \"Line continuations\",\n      \"match\": \"(\\\\.\\\\.\\\\.)(.*)$\",\n      \"name\": \"meta.linecontinuation.matlab\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"string.interpolated.matlab\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.matlab\"\n            }\n          },\n          \"comment\": \"Shell command\",\n          \"match\": \"^\\\\s*((!).*$\\\\n?)\"\n        },\n        {\n          \"begin\": \"((?<=(\\\\[|\\\\(|\\\\{|=|\\\\s|;|:|,|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^))|^)'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.matlab\"\n            }\n          },\n          \"comment\": \"Character vector literal (single-quoted)\",\n          \"end\": \"'(?=(\\\\[|\\\\(|\\\\{|\\\\]|\\\\)|\\\\}|=|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^|\\\\s|;|:|,))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.matlab\"\n            }\n          },\n          \"name\": \"string.quoted.single.matlab\",\n          \"patterns\": [\n            {\n              \"match\": \"''\",\n              \"name\": \"constant.character.escape.matlab\"\n            },\n            {\n              \"match\": \"'(?=.)\",\n              \"name\": \"invalid.illegal.unescaped-quote.matlab\"\n            },\n            {\n              \"comment\": \"Operator symbols\",\n              \"match\": \"((\\\\%([\\\\+\\\\-0]?\\\\d{0,3}(\\\\.\\\\d{1,3})?)(c|d|e|E|f|g|G|s|((b|t)?(o|u|x|X))))|\\\\%\\\\%|\\\\\\\\(b|f|n|r|t|\\\\\\\\))\",\n              \"name\": \"constant.character.escape.matlab\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<=(\\\\[|\\\\(|\\\\{|=|\\\\s|;|:|,|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^))|^)\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.matlab\"\n            }\n          },\n          \"comment\": \"String literal (double-quoted)\",\n          \"end\": \"\\\"(?=(\\\\[|\\\\(|\\\\{|\\\\]|\\\\)|\\\\}|=|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^|\\\\||\\\\s|;|:|,))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.matlab\"\n            }\n          },\n          \"name\": \"string.quoted.double.matlab\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"\\\"\",\n              \"name\": \"constant.character.escape.matlab\"\n            },\n            {\n              \"match\": \"\\\"(?=.)\",\n              \"name\": \"invalid.illegal.unescaped-quote.matlab\"\n            }\n          ]\n        }\n      ]\n    },\n    \"conjugate_transpose\": {\n      \"match\": \"((?<=[^\\\\s])|(?<=\\\\])|(?<=\\\\))|(?<=\\\\}))'\",\n      \"name\": \"keyword.operator.transpose.matlab\"\n    },\n    \"transpose\": {\n      \"match\": \"\\\\.'\",\n      \"name\": \"keyword.operator.transpose.matlab\"\n    },\n    \"constants\": {\n      \"comment\": \"MATLAB Constants\",\n      \"match\": \"(?<!\\\\.)\\\\b(eps|false|Inf|inf|intmax|intmin|namelengthmax|NaN|nan|on|off|realmax|realmin|true|pi)\\\\b\",\n      \"name\": \"constant.language.matlab\"\n    },\n    \"variables\": {\n      \"comment\": \"MATLAB variables\",\n      \"match\": \"(?<!\\\\.)\\\\b(nargin|nargout|varargin|varargout)\\\\b\",\n      \"name\": \"variable.other.function.matlab\"\n    },\n    \"end_in_parens\": {\n      \"comment\": \"end as operator symbol\",\n      \"match\": \"\\\\bend\\\\b\",\n      \"name\": \"keyword.operator.symbols.matlab\"\n    },\n    \"numbers\": {\n      \"comment\": \"Valid numbers: 1, .1, 1.1, .1e1, 1.1e1, 1e1, 1i, 1j, 1e2j\",\n      \"match\": \"(?<=[\\\\s\\\\-\\\\+\\\\*\\\\/\\\\\\\\=:\\\\[\\\\(\\\\{,]|^)\\\\d*\\\\.?\\\\d+([eE][+-]?\\\\d)?([0-9&&[^\\\\.]])*(i|j)?\\\\b\",\n      \"name\": \"constant.numeric.matlab\"\n    },\n    \"operators\": {\n      \"comment\": \"Operator symbols\",\n      \"match\": \"(?<=\\\\s)(==|~=|>|>=|<|<=|&|&&|:|\\\\||\\\\|\\\\||\\\\+|-|\\\\*|\\\\.\\\\*|/|\\\\./|\\\\\\\\|\\\\.\\\\\\\\|\\\\^|\\\\.\\\\^)(?=\\\\s)\",\n      \"name\": \"keyword.operator.symbols.matlab\"\n    },\n    \"validators\": {\n      \"comment\": \"Property and argument validation. Match an identifier allowing . and ?.\",\n      \"begin\": \"\\\\s*[;]?\\\\s*([a-zA-Z][a-zA-Z0-9_\\\\.\\\\?]*)\",\n      \"end\": \"([;\\\\n%=].*)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Match comments\",\n              \"match\": \"([%].*)\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"comment\": \"Handle things like arg = val; nextArg\",\n              \"match\": \"(=[^;]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"comment\": \"End of property/argument patterns which start a new property/argument. Look for beginning of identifier after semicolon. Otherwise treat as regular code.\",\n              \"match\": \"([\\\\n;]\\\\s*[a-zA-Z].*)\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#validators\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#line_continuation\"\n        },\n        {\n          \"comment\": \"Size declaration\",\n          \"match\": \"\\\\s*(\\\\([^\\\\)]*\\\\))\",\n          \"name\": \"storage.type.matlab\"\n        },\n        {\n          \"comment\": \"Type declaration\",\n          \"match\": \"([a-zA-Z][a-zA-Z0-9_\\\\.]*)\",\n          \"name\": \"storage.type.matlab\"\n        },\n        {\n          \"include\": \"#braced_validator_list\"\n        }\n      ]\n    },\n    \"braced_validator_list\": {\n      \"comment\": \"Validator functions. Treated as a recursive group to permit nested brackets, quotes, etc.\",\n      \"begin\": \"\\\\s*({)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.matlab\"\n        }\n      },\n      \"end\": \"(})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.matlab\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#braced_validator_list\"\n        },\n        {\n          \"include\": \"#validator_strings\"\n        },\n        {\n          \"include\": \"#line_continuation\"\n        },\n        {\n          \"match\": \"([^{}}'\\\"\\\\.]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.matlab\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"storage.type.matlab\"\n        }\n      ]\n    },\n    \"validator_strings\": {\n      \"comment\": \"Simplified string patterns nested inside validator functions which don't change scopes of matches.\",\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"begin\": \"((?<=(\\\\[|\\\\(|\\\\{|=|\\\\s|;|:|,|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^))|^)'\",\n              \"comment\": \"Character vector literal (single-quoted)\",\n              \"end\": \"'(?=(\\\\[|\\\\(|\\\\{|\\\\]|\\\\)|\\\\}|=|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^|\\\\s|;|:|,))\",\n              \"name\": \"storage.type.matlab\",\n              \"patterns\": [\n                {\n                  \"match\": \"''\"\n                },\n                {\n                  \"match\": \"'(?=.)\"\n                },\n                {\n                  \"match\": \"([^']+)\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"((?<=(\\\\[|\\\\(|\\\\{|=|\\\\s|;|:|,|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^))|^)\\\"\",\n              \"comment\": \"String literal (double-quoted)\",\n              \"end\": \"\\\"(?=(\\\\[|\\\\(|\\\\{|\\\\]|\\\\)|\\\\}|=|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^|\\\\||\\\\s|;|:|,))\",\n              \"name\": \"storage.type.matlab\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\"\\\"\"\n                },\n                {\n                  \"match\": \"\\\"(?=.)\"\n                },\n                {\n                  \"match\": \"[^\\\"]+\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.matlab\",\n  \"uuid\": \"48F8858B-72FF-11D9-BFEE-000D93589AF6\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/mediawiki.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"MediaWiki\",\n  \"scopeName\": \"text.html.mediawiki\",\n  \"fileTypes\": [\"mediawiki\", \"wiki\"],\n  \"patterns\": [\n    { \"include\": \"#variable\" },\n    { \"include\": \"#comment\" },\n    { \"include\": \"#switch\" },\n    { \"include\": \"#redirect\" },\n    { \"include\": \"#entity\" },\n    { \"include\": \"#emphasis\" },\n    { \"include\": \"#tag\" },\n    { \"include\": \"#table\" },\n    { \"include\": \"#hr\" },\n    { \"include\": \"#heading\" },\n    { \"include\": \"#link\" },\n    { \"include\": \"#list\" },\n    { \"include\": \"#template\" }\n  ],\n  \"repository\": {\n    \"hr\": { \"patterns\": [{ \"name\": \"markup.bold\", \"match\": \"^[-]{4,}\" }] },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.variable\",\n          \"begin\": \"{{{\",\n          \"end\": \"}}}\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*(\\\\w+)\\\\s*(\\\\|)?\",\n              \"captures\": {\n                \"1\": { \"name\": \"variable.other\" },\n                \"2\": { \"name\": \"keyword.operator\" }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"switch\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language\",\n          \"match\": \"__NOTOC__|__FORCETOC__|__TOC__|__NOEDITSECTION__|__NEWSECTIONLINK__|__NONEWSECTIONLINK__|__NOWYSIWYG__|__NOGALLERY__|__HIDDENCAT__|__EXPECTUNUSEDCATEGORY__|__NOCONTENTCONVERT__|__NOCC__|__NOTITLECONVERT__|__NOTC__|__START__|__END__|__INDEX__|__NOINDEX__|__STATICREDIRECT__|__NOGLOBAL__|__DISAMBIG__\"\n        }\n      ]\n    },\n    \"redirect\": {\n      \"patterns\": [\n        {\n          \"match\": \"(^#REDIRECT|^#redirect|^#Redirect)(\\\\s+)\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.control.redirect\" },\n            \"2\": { \"name\": \"meta.keyword.control\" }\n          }\n        }\n      ]\n    },\n    \"entity\": {\n      \"patterns\": [{ \"name\": \"constant.character.entity\", \"match\": \"&\\\\w+;\" }]\n    },\n    \"list\": {\n      \"patterns\": [\n        {\n          \"name\": \"markup.list\",\n          \"begin\": \"^([#*;:]+)\",\n          \"end\": \"$\",\n          \"beginCaptures\": { \"1\": { \"name\": \"markup.bold\" } },\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      ]\n    },\n    \"template\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.template\",\n          \"begin\": \"({{)\\\\s*([\\\\w ]+)\\\\s*\",\n          \"end\": \"}}\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"storage.type.function\" },\n            \"2\": { \"name\": \"entity.name.function\" }\n          },\n          \"endCaptures\": { \"0\": { \"name\": \"storage.type.function\" } },\n          \"patterns\": [\n            {\n              \"name\": \"meta.structure.dictionary\",\n              \"begin\": \"(\\\\|)\\\\s*([a-zA-Z-]*)\\\\s*(=)\\\\s*([^|}]*)\",\n              \"end\": \"(?=}}|[|])\",\n              \"beginCaptures\": {\n                \"1\": { \"name\": \"storage\" },\n                \"2\": { \"name\": \"support.type.property-name\" },\n                \"3\": {\n                  \"name\": \"punctuation.separator.dictionary.key-value.mediawiki\"\n                },\n                \"4\": {\n                  \"name\": \"meta.structure.dictionary.value\",\n                  \"patterns\": [{ \"include\": \"$self\" }]\n                }\n              }\n            },\n            {\n              \"name\": \"meta.template.value\",\n              \"begin\": \"(\\\\|)(.*?)\",\n              \"end\": \"(?=}}|[|])\",\n              \"captures\": { \"1\": { \"name\": \"storage\" } },\n              \"patterns\": [{ \"include\": \"$self\" }]\n            }\n          ]\n        }\n      ]\n    },\n    \"link\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.link.internal\",\n          \"begin\": \"(\\\\[\\\\[)\\\\s*(Category|Wikipedia)?:?([^\\\\]\\\\]\\\\|]+)\\\\s*(\\\\|)*\",\n          \"end\": \"\\\\]\\\\]\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag.mediawiki\" },\n            \"3\": { \"name\": \"string.other.link.title.mediawiki\" },\n            \"4\": { \"name\": \"punctuation.definition.tag\" }\n          },\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.tag.end\" } },\n          \"contentName\": \"string.unquoted\",\n          \"patterns\": [{ \"include\": \"$self\" }]\n        },\n        {\n          \"name\": \"meta.tag.link.external\",\n          \"match\": \"(\\\\[)(.*?)[\\\\s]+(.*?)(\\\\])\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#url\" }] },\n            \"3\": { \"name\": \"string.unquoted\" },\n            \"4\": { \"name\": \"punctuation.definition.tag.end\" }\n          }\n        }\n      ]\n    },\n    \"comment\": {\n      \"name\": \"comment.block.html\",\n      \"begin\": \"<!--\",\n      \"end\": \"-->\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.html\" } },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G-?>\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.html\"\n        },\n        {\n          \"match\": \"<!--(?!>)|<!-(?=-->)\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.html\"\n        },\n        {\n          \"match\": \"--!>\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.html\"\n        }\n      ]\n    },\n    \"emphasis\": {\n      \"patterns\": [\n        {\n          \"match\": \"(''''')(?!')((.*?))('''''|$)\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"markup.bold\" },\n            \"3\": { \"name\": \"markup.italic\" },\n            \"4\": { \"name\": \"punctuation.definition.tag.end\" }\n          }\n        },\n        {\n          \"match\": \"(''')(?!')(.*?)('''|$)\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"markup.bold\" },\n            \"3\": { \"name\": \"punctuation.definition.tag.end\" }\n          }\n        },\n        {\n          \"match\": \"('')(?!')(.*?)(''|$)\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"markup.italic\" },\n            \"3\": { \"name\": \"punctuation.definition.tag.end\" }\n          }\n        }\n      ]\n    },\n    \"heading\": {\n      \"name\": \"markup.heading\",\n      \"patterns\": [\n        {\n          \"name\": \"markup.heading\",\n          \"match\": \"(={1,6})(.+?)(\\\\1)(?!=)\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.heading\" },\n            \"2\": { \"name\": \"entity.name.section.mediawiki\" },\n            \"3\": { \"name\": \"punctuation.definition.heading\" }\n          }\n        }\n      ]\n    },\n    \"tag\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.block.ref\",\n          \"begin\": \"(?i)(<)(ref)(\\\\s+.*?)?(>)\",\n          \"end\": \"(?i)(<\\\\/)(ref)\\\\s*(>)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" },\n            \"3\": { \"patterns\": [{ \"include\": \"#attribute\" }] },\n            \"4\": { \"name\": \"punctuation.definition.tag.end\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" },\n            \"3\": { \"name\": \"punctuation.definition.tag.end\" }\n          },\n          \"patterns\": [{ \"include\": \"$self\" }]\n        },\n        {\n          \"name\": \"meta.tag.block.syntaxhighlight\",\n          \"begin\": \"(?i)(<)(syntaxhighlight)\\\\s+lang\\\\=(?:\\\\'|\\\")(.*?)?(?:\\\\'|\\\")(>)\",\n          \"end\": \"(?i)(<\\\\/)(syntaxhighlight)\\\\s*(>)\",\n          \"contentName\": \"meta.embedded.block.$3\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" },\n            \"3\": { \"patterns\": [{ \"include\": \"#attribute\" }] },\n            \"4\": { \"name\": \"punctuation.definition.tag.end\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" },\n            \"3\": { \"name\": \"punctuation.definition.tag.end\" }\n          },\n          \"patterns\": [{ \"include\": \"#template\" }, { \"include\": \"source.js\" }]\n        },\n        {\n          \"name\": \"meta.tag.block.nowiki\",\n          \"begin\": \"(?i)(<)(nowiki)(\\\\s+.*?)?(>)\",\n          \"end\": \"(?i)(<\\\\/)(nowiki)\\\\s*(>)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" },\n            \"3\": { \"patterns\": [{ \"include\": \"#attribute\" }] },\n            \"4\": { \"name\": \"punctuation.definition.tag.end\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" },\n            \"3\": { \"name\": \"punctuation.definition.tag.end\" }\n          }\n        },\n        {\n          \"name\": \"meta.tag.block.html\",\n          \"begin\": \"(?i)(<)(html)(\\\\s+.*?)?(>)\",\n          \"end\": \"(?i)(<\\\\/)(html)\\\\s*(>)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" },\n            \"3\": { \"patterns\": [{ \"include\": \"#attribute\" }] },\n            \"4\": { \"name\": \"punctuation.definition.tag.end\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" },\n            \"3\": { \"name\": \"punctuation.definition.tag.end\" }\n          },\n          \"patterns\": [{ \"include\": \"text.html.basic\" }]\n        },\n        {\n          \"name\": \"meta.tag.block.any\",\n          \"begin\": \"(?i)(<\\\\/?)(noinclude|includeonly)(?=\\\\W)\",\n          \"end\": \"(\\\\/)?(>)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"invalid.illegal.characters-not-allowed-here\" },\n            \"2\": { \"name\": \"punctuation.definition.tag.end\" }\n          },\n          \"patterns\": [{ \"include\": \"#attribute\" }]\n        },\n        {\n          \"name\": \"meta.tag.other\",\n          \"begin\": \"(?i)(<)(br|wbr|hr|meta|link)(?=\\\\W)\",\n          \"end\": \"(\\\\/?>)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" }\n          },\n          \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end\" } },\n          \"patterns\": [{ \"include\": \"#attribute\" }]\n        },\n        {\n          \"name\": \"meta.tag.block\",\n          \"begin\": \"(?i)(<\\\\/?)(div|center|span|h1|h2|h3|h4|h5|h6|bdo|em|strong|cite|dfn|code|samp|kbd|var|abbr|blockquote|q|sub|sup|p|pre|ins|del|ul|ol|li|dl|dd|dt|table|caption|thead|tfoot|tbody|colgroup|col|tr|td|th|a|img|video|source|track|tt|b|i|big|small|strike|s|u|font|ruby|rb|rp|rt|rtc|math|figure|figcaption|bdi|data|time|mark|html)(?=\\\\W)\",\n          \"end\": \"(\\\\/)?(>)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"entity.name.tag\" }\n          },\n          \"endCaptures\": {\n            \"1\": { \"name\": \"invalid.illegal.characters-not-allowed-here\" },\n            \"2\": { \"name\": \"punctuation.definition.tag.end\" }\n          },\n          \"patterns\": [{ \"include\": \"#attribute\" }]\n        },\n        {\n          \"name\": \"meta.tag.other\",\n          \"begin\": \"(?i)(<\\\\/)(br|wbr|hr|meta|link)(?=\\\\W)\",\n          \"end\": \"(\\\\/?>)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"invalid.illegal.characters-not-allowed-here\" },\n            \"3\": { \"name\": \"entity.name.tag\" }\n          },\n          \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end\" } },\n          \"patterns\": [{ \"include\": \"#attribute\" }]\n        }\n      ]\n    },\n    \"table\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.block.table\",\n          \"begin\": \"^\\\\s*({\\\\|)(.*?)$\",\n          \"end\": \"^\\\\s*\\\\|}\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#attribute\" }] },\n            \"3\": { \"name\": \"invalid.illegal\" }\n          },\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.tag.end\" } },\n          \"patterns\": [\n            { \"include\": \"#comment\" },\n            { \"include\": \"#template\" },\n            { \"include\": \"#caption\" },\n            { \"include\": \"#tr\" },\n            { \"include\": \"#th\" },\n            { \"include\": \"#td\" }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"caption\": {\n          \"name\": \"meta.tag.block.table-caption\",\n          \"begin\": \"^\\\\s*(\\\\|\\\\+)\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" }\n          }\n        },\n        \"tr\": {\n          \"name\": \"meta.tag.block.tr\",\n          \"match\": \"^\\\\s*(\\\\|\\\\-)[\\\\s]*(.*)\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"name\": \"invalid.illegal\" }\n          }\n        },\n        \"th\": {\n          \"name\": \"meta.tag.block.th.heading\",\n          \"begin\": \"^\\\\s*(!)((.*?)(\\\\|))?(.*?)(?=(!!)|$)\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"3\": { \"patterns\": [{ \"include\": \"#attribute\" }] },\n            \"4\": { \"name\": \"punctuation.definition.tag\" },\n            \"5\": { \"name\": \"markup.bold\" }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"meta.tag.block.th.inline\",\n              \"match\": \"(!!)((.*?)(\\\\|))?(.*?)(?=(!!)|$)\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n                \"3\": { \"patterns\": [{ \"include\": \"#attribute\" }] },\n                \"4\": { \"name\": \"punctuation.definition.tag\" },\n                \"5\": { \"name\": \"markup.bold\" }\n              }\n            },\n            { \"include\": \"$self\" }\n          ]\n        },\n        \"td\": {\n          \"name\": \"meta.tag.block.td\",\n          \"begin\": \"^\\\\s*(\\\\|)\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin\" },\n            \"2\": { \"patterns\": [{ \"include\": \"#attribute\" }] },\n            \"3\": { \"name\": \"punctuation.definition.tag\" }\n          },\n          \"patterns\": [{ \"include\": \"$self\" }]\n        }\n      }\n    },\n    \"attribute\": {\n      \"patterns\": [\n        { \"include\": \"#string\" },\n        { \"name\": \"entity.other.attribute-name\", \"match\": \"\\\\w+\" }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        { \"name\": \"string.quoted.double\", \"begin\": \"\\\\\\\"\", \"end\": \"\\\\\\\"\" },\n        { \"name\": \"string.quoted.single\", \"begin\": \"\\\\'\", \"end\": \"\\\\'\" }\n      ]\n    },\n    \"url\": {\n      \"patterns\": [\n        {\n          \"name\": \"markup.underline.link\",\n          \"match\": \"(?:http(s)?:\\\\/\\\\/)?[\\\\w.-]+(?:\\\\.[\\\\w\\\\.-]+)+[\\\\w\\\\-\\\\._~:\\\\/?#\\\\[\\\\]@!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=.]+\"\n        },\n        { \"name\": \"invalid.illegal.characters-not-allowed-here\", \"match\": \".*\" }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/mel.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"(\\\\*\\\\*/|^\\\\s*\\\\})\",\n  \"foldingStartMarker\": \"(/\\\\*\\\\*|\\\\{\\\\s*$)\",\n  \"keyEquivalent\": \"^~M\",\n  \"fileTypes\": [\"mel\", \"ma\", \"mel.erb\"],\n  \"uuid\": \"69554E52-391D-42BC-9F65-7A77444BA1CF\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(matrix|string|vector|float|int|void)\\\\b\",\n      \"name\": \"storage.type.mel\"\n    },\n    {\n      \"match\": \"\\\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\\\b\",\n      \"name\": \"support.function.mel\"\n    },\n    {\n      \"match\": \"\\\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\\\b\",\n      \"name\": \"support.constant.mel\"\n    },\n    {\n      \"match\": \"\\\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\\\b\",\n      \"name\": \"keyword.control.mel\"\n    },\n    { \"match\": \"\\\\b(global)\\\\b\", \"name\": \"keyword.other.mel\" },\n    { \"match\": \"\\\\b(null|undefined)\\\\b\", \"name\": \"constant.language.mel\" },\n    {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\\\b\",\n      \"name\": \"constant.numeric.mel\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.mel\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.mel\" }\n      ],\n      \"name\": \"string.quoted.double.mel\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.mel\" }\n      }\n    },\n    {\n      \"match\": \"(\\\\$)[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*?\\\\b\",\n      \"name\": \"variable.other.mel\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.mel\" } }\n    },\n    {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.mel\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.mel\" }\n      ],\n      \"name\": \"string.quoted.single.mel\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.mel\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(false|true|yes|no|on|off)\\\\b\",\n      \"name\": \"constant.language.mel\"\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.mel\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.mel\" } }\n    },\n    {\n      \"match\": \"(//).*$\\\\n?\",\n      \"name\": \"comment.line.double-slash.mel\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.comment.mel\" } }\n    },\n    { \"match\": \"\\\\b(instanceof)\\\\b\", \"name\": \"keyword.operator.mel\" },\n    {\n      \"match\": \"[-\\\\!\\\\%\\\\&\\\\*\\\\+\\\\=\\\\/\\\\?\\\\:]\",\n      \"name\": \"keyword.operator.symbolic.mel\"\n    },\n    {\n      \"match\": \"^[ \\\\t]*(#)[a-zA-Z]+\",\n      \"name\": \"meta.preprocessor.mel\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.preprocessor.mel\" } }\n    },\n    {\n      \"begin\": \"((?:global\\\\s*)?proc)\\\\s*(\\\\w+\\\\s*\\\\[?\\\\]?\\\\s+|\\\\s+)([A-Za-z_][A-Za-z0-9_\\\\.]*)\\\\s*(\\\\()\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.section.function.mel\" } },\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"$self\" }],\n      \"name\": \"meta.function.mel\",\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"entity.name.function.mel\" },\n        \"1\": { \"name\": \"keyword.other.mel\" },\n        \"4\": { \"name\": \"punctuation.section.function.mel\" },\n        \"2\": { \"name\": \"storage.type.mel\" }\n      }\n    }\n  ],\n  \"name\": \"MEL\",\n  \"scopeName\": \"source.mel\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/mermaid.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"mermaid\"],\n  \"patterns\": [\n    {\n      \"include\": \"#mermaid\"\n    }\n  ],\n  \"repository\": {\n    \"mermaid\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Class Diagram\",\n          \"begin\": \"^\\\\s*(classDiagram)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"comment\": \"(class name) (\\\"multiplicity relationship\\\")? (relationship) (\\\"multiplicity relationship\\\")? (class name) :? (labelText)?\",\n              \"match\": \"([\\\\w-]+)\\\\s(\\\"(?:\\\\d+|\\\\*|0..\\\\d+|1..\\\\d+|1..\\\\*)\\\")?\\\\s?(--o|--\\\\*|\\\\<--|--\\\\>|<\\\\.\\\\.|\\\\.\\\\.\\\\>|\\\\<\\\\|\\\\.\\\\.|\\\\.\\\\.\\\\|\\\\>|\\\\<\\\\|--|--\\\\|>|--\\\\*|--|\\\\.\\\\.|\\\\*--|o--)\\\\s(\\\"(?:\\\\d+|\\\\*|0..\\\\d+|1..\\\\d+|1..\\\\*)\\\")?\\\\s?([\\\\w-]+)\\\\s?(:)?\\\\s(.*)$\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"7\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(class name) : (visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$\",\n              \"match\": \"([\\\\w-]+)\\\\s?(:)\\\\s([\\\\+~#-])?([\\\\w-]+)(\\\\()([\\\\w-]+)?(~)?([\\\\w-]+)?(~)?\\\\s?([\\\\w-]+)?(\\\\))([*\\\\$])?\\\\s?([\\\\w-]+)?(~)?([\\\\w-]+)?(~)?$\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.parenthesis.open.mermaid\"\n                },\n                \"6\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"8\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"9\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                },\n                \"10\": {\n                  \"name\": \"entity.name.variable.parameter.mermaid\"\n                },\n                \"11\": {\n                  \"name\": \"punctuation.parenthesis.closed.mermaid\"\n                },\n                \"12\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"13\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"14\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"15\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"16\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(class name) : (visibility)?(datatype/generic data type) (attribute name)$\",\n              \"match\": \"([\\\\w-]+)\\\\s?(:)\\\\s([\\\\+~#-])?([\\\\w-]+)(~)?([\\\\w-]+)?(~)?\\\\s([\\\\w-]+)?$\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"6\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                },\n                \"8\": {\n                  \"name\": \"entity.name.variable.field.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"<<(Annotation)>> (class name)\",\n              \"match\": \"(<<)([\\\\w-]+)(>>)\\\\s?([\\\\w-]+)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"class (class name) ~?(generic type)?~? ({)\",\n              \"begin\": \"(class)\\\\s+([\\\\w-]+)(~)?([\\\\w-]+)?(~)?\\\\s?({)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\%%.*\",\n                  \"name\": \"comment\"\n                },\n                {\n                  \"comment\": \"(visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$\",\n                  \"begin\": \"\\\\s([\\\\+~#-])?([\\\\w-]+)(\\\\()\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"entity.name.function.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.parenthesis.open.mermaid\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"comment\": \"(TBD)\",\n                      \"match\": \"\\\\s*,?\\\\s*([\\\\w-]+)?(~)?([\\\\w-]+)?(~)?\\\\s?([\\\\w-]+)?\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.mermaid\"\n                        },\n                        \"2\": {\n                          \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                        },\n                        \"3\": {\n                          \"name\": \"storage.type.mermaid\"\n                        },\n                        \"4\": {\n                          \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                        },\n                        \"5\": {\n                          \"name\": \"entity.name.variable.parameter.mermaid\"\n                        }\n                      }\n                    }\n                  ],\n                  \"end\": \"(\\\\))([*\\\\$])?\\\\s?([\\\\w-]+)?(~)?([\\\\w-]+)?(~)?$\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.parenthesis.closed.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                    },\n                    \"5\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(visibility)?(datatype/generic data type) (attribute name)$\",\n                  \"match\": \"\\\\s([\\\\+~#-])?([\\\\w-]+)(~)?([\\\\w-]+)?(~)?\\\\s([\\\\w-]+)?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                    },\n                    \"6\": {\n                      \"name\": \"entity.name.variable.field.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"<<(Annotation)>> (class name)\",\n                  \"match\": \"(<<)([\\\\w-]+)(>>)\\\\s?([\\\\w-]+)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"entity.name.type.class.mermaid\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"(})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"class (class name) ~?(generic type)?~?\",\n              \"match\": \"(class)\\\\s+([\\\\w-]+)(~)?([\\\\w-]+)?(~)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Entity Relationship Diagram\",\n          \"begin\": \"^\\\\s*(erDiagram)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"comment\": \"(entity)\",\n              \"match\": \"^\\\\s*([\\\\w-]+)$\",\n              \"name\": \"variable\"\n            },\n            {\n              \"comment\": \"(entity) {\",\n              \"begin\": \"\\\\s+([\\\\w-]+)\\\\s+({)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"(type) (name) (PK|FK)? (\\\"comment\\\")?\",\n                  \"match\": \"\\\\s*([\\\\w-]+)\\\\s+([\\\\w-]+)\\\\s+(PK|FK)?\\\\s*(\\\"[\\\"\\\\($&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*\\\")?\\\\s*\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"variable\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"string\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"(})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(entity) (relationship) (entity) : (label)\",\n              \"match\": \"\\\\s*([\\\\w-]+)\\\\s+((?:\\\\|o|\\\\|\\\\||}o|}\\\\|)(?:..|--)(?:o\\\\||\\\\|\\\\||o{|\\\\|{))\\\\s+([\\\\w-]+)\\\\s+(:)\\\\s+((?:\\\"[\\\\w\\\\s]*\\\")|(?:[\\\\w-]+))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"string\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Gantt Diagram\",\n          \"begin\": \"^\\\\s*(gantt)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"match\": \"(dateFormat)\\\\s+([\\\\w-]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                }\n              }\n            },\n            {\n              \"match\": \"(axisFormat)\\\\s+([\\\\w\\\\%/-]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                }\n              }\n            },\n            {\n              \"match\": \"(title)\\\\s+(\\\\s*[\\\"\\\\(\\\\)$&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"match\": \"(section)\\\\s+(\\\\s*[\\\"\\\\(\\\\)$&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\s(.*)(:)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"string\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"(crit|done|active|after)\",\n                  \"name\": \"entity.name.function.mermaid\"\n                },\n                {\n                  \"match\": \"\\\\%%.*\",\n                  \"name\": \"comment\"\n                }\n              ],\n              \"end\": \"$\"\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Graph\",\n          \"begin\": \"^\\\\s*(graph|flowchart)\\\\s+([A-Za-z\\\\ 0-9]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"match\": \"\\\\b(subgraph)\\\\s+([A-Za-z\\\\ 0-9]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                }\n              },\n              \"name\": \"meta.function.mermaid\"\n            },\n            {\n              \"match\": \"\\\\b(end|RB|BT|RL|TD|LR)\\\\b\",\n              \"name\": \"keyword.control.mermaid\"\n            },\n            {\n              \"comment\": \"(Entity From)(Graph Link)\",\n              \"begin\": \"(\\\\b[-\\\\w]+\\\\b\\\\s*)(-?-[-\\\\>]\\\\|?|=?=[=\\\\>]|(?:\\\\.-|-\\\\.)-?\\\\>?|<-->)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\%%.*\",\n                  \"name\": \"comment\"\n                },\n                {\n                  \"comment\": \"(Graph Link Text)?(Graph Link)(Entity To)?(Edge/Shape)?(Text)?(Edge/Shape)?\",\n                  \"match\": \"(\\\\s*(?:\\\"[^\\\"]+\\\")|(?:[\\\\($&%\\\\^/#.,?!;:*+<>_\\\\'\\\\\\\\\\\\w\\\\s]*))?\\\\s*(-?-[-\\\\>]\\\\|?|=?=[=\\\\>]|(?:\\\\.-|-\\\\.)-?\\\\>?|\\\\|)(\\\\s*[-\\\\w]+\\\\b)(\\\\[|\\\\(+|\\\\>|\\\\{)?(\\\\s*[-\\\\w]+\\\\b)?(\\\\]|\\\\)+|\\\\})?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"string\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"variable\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"5\": {\n                      \"name\": \"string\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(Entity To)(Edge/Shape)?(Text)?(Edge/Shape)?\",\n                  \"match\": \"(\\\\s*[-\\\\w]+\\\\b)(\\\\[|\\\\(+|\\\\>|\\\\{)?(\\\\s*[-\\\\w]+\\\\b)?(\\\\]|\\\\)+|\\\\})?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"$\"\n            },\n            {\n              \"comment\": \"(Entity)(Edge/Shape)(Text)(Edge/Shape)\",\n              \"begin\": \"(\\\\b[-\\\\w]+\\\\b\\\\s*)(\\\\[|\\\\(+|\\\\>|\\\\{|\\\\(\\\\()(\\\\s*(?:\\\"[^\\\"]+\\\")|(?:[$&%\\\\^/#.,?!;:*+<>_\\\\'\\\\\\\\\\\\w\\\\s]*))(\\\\]|\\\\)+|\\\\}|\\\\)\\\\))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"(Entity)(Edge/Shape)(Text)(Edge/Shape)\",\n                  \"match\": \"(\\\\s*\\\\b[-\\\\w]+\\\\b\\\\s*)(\\\\[|\\\\(+|\\\\>|\\\\{)(\\\\s*[\\\"\\\\($&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)(\\\\]|\\\\)+|\\\\})\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(Graph Link)(Graph Link Text)(Graph Link)(Entity)(Edge/Shape)(Text)(Edge/Shape)\",\n                  \"match\": \"(\\\\s*-?-[-\\\\>]\\\\|?|=?=[=\\\\>]|(?:\\\\.-|-\\\\.)-?\\\\>?)(\\\\s*[-\\\\w\\\\s]+\\\\b)?(-?-[-\\\\>]\\\\|?|=?=[=\\\\>]|(?:\\\\.-|-\\\\.)-?\\\\>?|\\\\|)?(\\\\s*\\\\b[-\\\\w]+\\\\b\\\\s*)(\\\\[|\\\\(+|\\\\>|\\\\{)(\\\\s*[\\\"\\\\($&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)?(\\\\]|\\\\)+|\\\\})\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"string\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"variable\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"6\": {\n                      \"name\": \"string\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"$\"\n            },\n            {\n              \"match\": \"(\\\\b[-\\\\w]+\\\\b\\\\s*)\",\n              \"name\": \"variable\"\n            },\n            {\n              \"comment\": \"(Class)(Node(s))(ClassName)\",\n              \"match\": \"\\\\s*(class)\\\\s+(\\\\b[-,\\\\w]+)\\\\s+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(ClassDef)(ClassName)(Styles)\",\n              \"match\": \"\\\\s*(classDef)\\\\s+(\\\\b\\\\w+\\\\b)\\\\s+(\\\\b[-,:;#\\\\w]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(Click)(Entity)(Link)?(Tooltip)\",\n              \"match\": \"\\\\s*(click)\\\\s+(\\\\b[-\\\\w]+\\\\b\\\\s*)(\\\\b\\\\w+\\\\b)?\\\\s(\\\"*.*\\\")\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"string\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Pie Chart\",\n          \"begin\": \"^\\\\s*(pie)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"match\": \"(title)\\\\s+(\\\\s*[\\\"\\\\(\\\\)$&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\s(.*)(:)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"string\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\%%.*\",\n                  \"name\": \"comment\"\n                }\n              ],\n              \"end\": \"$\"\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Sequence Diagram\",\n          \"begin\": \"^\\\\s*(sequenceDiagram)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\%%|#).*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"comment\": \"(title)\",\n              \"match\": \"(title)\\\\s*(:)\\\\s+(\\\\s*[\\\"\\\\(\\\\)$&%\\\\^/#.,?!:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(participant)(Actor)(as)?(Label)?\",\n              \"match\": \"\\\\s*(participant)\\\\s+([\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+?)(?:\\\\s+(as))?\\\\s([\\\"\\\\(\\\\)$&%\\\\^/#.,?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(activate/deactivate)(Actor)\",\n              \"match\": \"\\\\s*((?:de)?activate)\\\\s+(\\\\b[\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b\\\\s*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(Note)(direction)(Actor)(,)?(Actor)?(:)(Message)\",\n              \"match\": \"\\\\s*(Note)\\\\s+((?:left|right)\\\\sof|over)\\\\s+(\\\\b[\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b\\\\s*)(,)?(\\\\b[\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b\\\\s*)?(:)(?:\\\\s+([^;#]*))?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"variable\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"7\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(loop)(loop text)\",\n              \"match\": \"\\\\s*(loop)(?:\\\\s+([^;#]*))?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(end)\",\n              \"match\": \"\\\\s*(end)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(alt/else/opt/par/and/autonumber)(text)\",\n              \"match\": \"\\\\s*(alt|else|opt|par|and|rect|autonumber)(?:\\\\s+([^#;]*))?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(Actor)(Arrow)(Actor)(:)(Message)\",\n              \"match\": \"\\\\s*(\\\\b[\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b)\\\\s*(-?-(?:\\\\>|x|\\\\))\\\\>?[+-]?)\\\\s*([\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b)\\\\s*(:)\\\\s*([^;#]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"string\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"State Diagram\",\n          \"begin\": \"^\\\\s*(stateDiagram)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"comment\": \"}\",\n              \"match\": \"\\\\s+(})\\\\s+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"--\",\n              \"match\": \"\\\\s+(--)\\\\s+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(state)\",\n              \"match\": \"^\\\\s*([\\\\w-]+)$\",\n              \"name\": \"variable\"\n            },\n            {\n              \"comment\": \"(state) : (description)\",\n              \"match\": \"([\\\\w-]+)\\\\s+(:)\\\\s+(\\\\s*[-\\\\w\\\\s]+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"state\",\n              \"begin\": \"(state)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"\\\"(description)\\\" as (state)\",\n                  \"match\": \"\\\\s+(\\\"[-\\\\w\\\\s]+\\\\b\\\")\\\\s+(as)\\\\s+([\\\\w-]+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"string\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"variable\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(state name) {\",\n                  \"match\": \"\\\\s+([\\\\w-]+)\\\\s+({)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(state name) <<fork|join>>\",\n                  \"match\": \"\\\\s+([\\\\w-]+)\\\\s+(<<(?:fork|join)>>)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"$\"\n            },\n            {\n              \"comment\": \"(state) -->\",\n              \"begin\": \"([\\\\w-]+)\\\\s+(-->)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"(state) (:)? (transition text)?\",\n                  \"match\": \"\\\\s+([\\\\w-]+)\\\\s*(:)?\\\\s*(\\\\s*[-\\\\w\\\\s]+\\\\b)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"[*] (:)? (transition text)?\",\n                  \"match\": \"(\\\\[\\\\*\\\\])\\\\s*(:)?\\\\s*(\\\\s*[-\\\\w\\\\s]+\\\\b)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"$\"\n            },\n            {\n              \"comment\": \"[*] --> (state) (:)? (transition text)?\",\n              \"match\": \"(\\\\[\\\\*\\\\])\\\\s+(-->)\\\\s+([\\\\w-]+)\\\\s*(:)?\\\\s*(\\\\s*[-\\\\w\\\\s]+\\\\b)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"note left|right of (state name)\",\n              \"match\": \"(note (?:left|right) of)\\\\s+([\\\\w-]+)\\\\s+(:)\\\\s*(\\\\s*[-\\\\w\\\\s]+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"note left|right of (state name) (note text) end note\",\n              \"begin\": \"(note (?:left|right) of)\\\\s+([\\\\w-]+)(.|\\\\n)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                }\n              },\n              \"contentName\": \"string\",\n              \"end\": \"(end note)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.mermaid\",\n  \"name\": \"mermaid\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/mikrotik.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"rsc\"],\n  \"name\": \"Mikrotik Script\",\n  \"patterns\": [\n    {\n      \"include\": \"#literal-string\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#parameters-readwrite\"\n    },\n    {\n      \"include\": \"#literal-constants\"\n    },\n    {\n      \"include\": \"#literal-boolean\"\n    },\n    {\n      \"include\": \"#literal-ip\"\n    },\n    {\n      \"include\": \"#literal-mac\"\n    },\n    {\n      \"include\": \"#literal-date\"\n    },\n    {\n      \"include\": \"#literal-number\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"include\": \"#variable-definition\"\n    },\n    {\n      \"include\": \"#control-flow\"\n    },\n    {\n      \"include\": \"#commands\"\n    },\n    {\n      \"include\": \"#parameters-readonly\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#line-continuation\"\n    }\n  ],\n  \"repository\": {\n    \"commands\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x) \\\\b(?<![\\\\-=])( Neighbor| aaa| accept\\\\-filter| access\\\\-list| access| accounting| action| address\\\\-list| address| add| advertise\\\\-filter| advertisements| aggregate| alert| align| area| arp| bandwidth\\\\-server| bandwidth\\\\-test| beep| bfd| bgp\\\\-vpls| bgp| binding| bonding| bridge| cache\\\\-contents| cache| certificate| cisco\\\\-bgp\\\\-vpls| client| config| connect\\\\-list| connections| connection| cookie| cpu| delay| detail| dhcp\\\\-client| dhcp\\\\-relay| dhcp\\\\-server| direct| disable| discovery| dns\\\\-update| e\\\\-mail| edit| enable| environment| eoip| error| ethernet| export| fdb| fetch| file| filter| find| find| firewall| firmware| flush| get| gps| graphing| gre6| gre| group| host| hotspot| identity| inbox| info| inserts| installed\\\\-sa| instance| interfaces| interface| interface| ip\\\\-binding| ip\\\\-scan| ipip| ipsec| ipv6| ip| ip| irq| keys| key| l2tp\\\\-client| l2tp\\\\-server| latency\\\\-distribution| layer7\\\\-protocol| lcd| ldp| lease| leds| len| logging| log| lookup| lsa| mac\\\\-server| mac\\\\-winbox| mangle| manual\\\\-sa| manual\\\\-tx\\\\-power\\\\-table| mesh| mirror| mme| mode\\\\-cfg| monitor| mpls| nat| nbma\\\\-neighbor| nd| neighbor| netwatch| network| note| nstreme\\\\-dual| nstreme| ntp| option| originators| ospf\\\\-router| ospf| ovpn\\\\-client| ovpn\\\\-server| packet\\\\-generator| packet\\\\-template| packet| parse| path\\\\-state| pci| peer| pick| ping| policy| pool| port| ppp\\\\-client| pppoe\\\\-client| pppoe\\\\-server| ppp| pptp\\\\-client| pptp\\\\-server| prefix\\\\-list| prefix| print| profile| proposal| protocol| proxy| put| queue| range| raw| registration\\\\-table| remote\\\\-peers| remove| resolve| resource| resv\\\\-state| rip| routerboard| route| routing| run| scan| scep| scheduler| script| security\\\\-profiles| send| server| service| settings| set| set| sham\\\\-link| shares| share| smb| sms| snapshot| sniffer| socks| sstp\\\\-client| sstp\\\\-server| statistics| stats| status| switch| system| target| terminal| time| toarray| tobool| toid| toip6| toip| tonum| tool| tostr| totime| typeof| tracking| traffic\\\\-eng| traffic\\\\-flow| traffic\\\\-generator| traffic\\\\-monitor| tunnel\\\\-path| type| uncounted| upgrade| upnp| ups| usb| used| users| user| virtual\\\\-link| vlan| vpls| vpnv4\\\\-route| vrf| vrrp| walled\\\\-garden| watchdog| wds| web\\\\-access| wireless| return )(?!-)\\\\b\\n\",\n          \"name\": \"support.function.mikrotik-script\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.mikrotik-script\"\n            }\n          },\n          \"comment\": \"comments are ignored by syntax\",\n          \"match\": \"(#).*$\\\\n?\",\n          \"name\": \"comment.line.number-sign.mikrotik-script\"\n        }\n      ]\n    },\n    \"control-flow\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.mikrotik-script\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.whitespace.mikrotik-script\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.comparison.mikrotik-script\"\n            }\n          },\n          \"match\": \"\\\\b(from|to|step|in|do|else|while)\\\\b([\\\\s|\\\\t]*)(=)\"\n        },\n        {\n          \"match\": \"\\\\b(while|for|foreach|on-error|if|do)\\\\b\",\n          \"name\": \"keyword.control.flow.mikrotik-script\"\n        }\n      ]\n    },\n    \"line-continuation\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.continuation.line.mikrotik-script\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.unexpected-text.mikrotik-script\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)(.*)$\\\\n?\"\n        }\n      ]\n    },\n    \"literal-boolean\": {\n      \"patterns\": [\n        {\n          \"comment\": \"boolean\",\n          \"match\": \"\\\\b(true|false)\\\\b\",\n          \"name\": \"constant.language.mikrotik-script\"\n        }\n      ]\n    },\n    \"literal-date\": {\n      \"patterns\": [\n        {\n          \"comment\": \"1s, 2m, 3h, 4d\",\n          \"match\": \"\\\\b([1-9]+[0-9]*|0)(ms|s|m|h|d|w)\\\\b\",\n          \"name\": \"constant.other.time.mikrotik-script\"\n        },\n        {\n          \"comment\": \"1w5d12:20:59\",\n          \"match\": \"\\\\b(([1-9]+[0-9]*w)?([1-9]+[0-9]*d)?([0-9]{2}:[0-9]{2}:[0-9]{2}))\\\\b\",\n          \"name\": \"constant.other.time.mikrotik-script\"\n        },\n        {\n          \"match\": \"\\\\b((jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\\\\/[0-9]{2}\\\\/[1-9]+[0-9]*)\\\\b\",\n          \"name\": \"constant.other.date.mikrotik-script\"\n        },\n        {\n          \"match\": \"([\\\\+\\\\-]?[0-9]{2}:[0-9]{2})\",\n          \"name\": \"constant.other.time.delta.mikrotik-script\"\n        }\n      ]\n    },\n    \"literal-ip\": {\n      \"patterns\": [\n        {\n          \"comment\": \"IPv6 address, zero compressed IPv6 addresses, link-local IPv6 addresses with zone index, IPv4-Embedded IPv6 Address, IPv4-mapped IPv6 addresses, IPv4-translated addresses (http://stackoverflow.com/a/17871737/188530)\",\n          \"match\": \"\\\\b((\\\\h{1,4}\\\\:){7}\\\\h{1,4}|(\\\\h{1,4}\\\\:){1,7}\\\\:|(\\\\h{1,4}\\\\:){1,6}\\\\:\\\\h{1,4}|(\\\\h{1,4}\\\\:){1,5}(\\\\:\\\\h{1,4}){1,2}|(\\\\h{1,4}\\\\:){1,4}(\\\\:\\\\h{1,4}){1,3}|(\\\\h{1,4}\\\\:){1,3}(\\\\:\\\\h{1,4}){1,4}|(\\\\h{1,4}\\\\:){1,2}(\\\\:\\\\h{1,4}){1,5}|\\\\h{1,4}\\\\:((\\\\:\\\\h{1,4}){1,6})|\\\\:((\\\\:\\\\h{1,4}){1,7}|\\\\:)|fe80\\\\:(\\\\:\\\\h{,4}){,4}\\\\%[0-9a-zA-Z]{1,}|\\\\:\\\\:(ffff(\\\\:0{1,4})?\\\\:)?((25[0-5]|(2[0-4]|1?[0-9])?[0-9]).){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])|(\\\\h{1,4}\\\\:){1,4}\\\\:((25[0-5]|(2[0-4]|1?[0-9])?[0-9]).){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9]))\\\\b\",\n          \"name\": \"constant.other.ipv6.mikrotik-script\"\n        },\n        {\n          \"comment\": \"IPv4 address (http://stackoverflow.com/a/5284179/188530)\",\n          \"match\": \"\\\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\\\/([0-9]|1[0-9]|2[0-4]))?\\\\b\",\n          \"name\": \"constant.other.ipv4.mikrotik-script\"\n        }\n      ]\n    },\n    \"literal-mac\": {\n      \"patterns\": [\n        {\n          \"comment\": \"MAC address (http://stackoverflow.com/a/4260512/188530)\",\n          \"match\": \"\\\\b(\\\\h{2}[:-]){5}(\\\\h{2})\\\\b\",\n          \"name\": \"constant.other.mac.mikrotik-script\"\n        }\n      ]\n    },\n    \"literal-number\": {\n      \"patterns\": [\n        {\n          \"comment\": \"64bit signed integer in hexadecimal form\",\n          \"match\": \"\\\\b(?i:(0x\\\\h*))\\\\b\",\n          \"name\": \"constant.numeric.integer.hexadecimal.mikrotik-script\"\n        },\n        {\n          \"comment\": \"64bit signed integer in decimal form\",\n          \"match\": \"\\\\b([1-9]+[0-9]*|0)\\\\b\",\n          \"name\": \"constant.numeric.integer.decimal.mikrotik-script\"\n        }\n      ]\n    },\n    \"literal-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.mikrotik-script\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.mikrotik-script\"\n            }\n          },\n          \"name\": \"string.quoted.double.mikrotik-script\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-escape\"\n            },\n            {\n              \"include\": \"#string-expression\"\n            },\n            {\n              \"include\": \"#line-continuation\"\n            },\n            {\n              \"match\": \"\\\\n\",\n              \"name\": \"invalid.illegal.newline.mikrotik-script\"\n            }\n          ]\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"comment\": \"arithmetic operators\",\n          \"match\": \"\\\\+|\\\\-|\\\\*|\\\\/\",\n          \"name\": \"keyword.operator.arithmetic.mikrotik-script\"\n        },\n        {\n          \"comment\": \"relational operators\",\n          \"match\": \"<|>|<=|>=\",\n          \"name\": \"keyword.operator.relational.mikrotik-script\"\n        },\n        {\n          \"comment\": \"comparison operators\",\n          \"match\": \"=|!=\",\n          \"name\": \"keyword.operator.comparison.mikrotik-script\"\n        },\n        {\n          \"comment\": \"logical operators\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.mikrotik-script\"\n        },\n        {\n          \"comment\": \"bitwise operators\",\n          \"match\": \"~|\\\\||\\\\^|\\\\&|<<|>>\",\n          \"name\": \"keyword.operator.bitwise.mikrotik-script\"\n        },\n        {\n          \"comment\": \"concatenation operators\",\n          \"match\": \"\\\\.|\\\\,\",\n          \"name\": \"keyword.operator.concatenation.mikrotik-script\"\n        },\n        {\n          \"comment\": \"access array element by key\",\n          \"match\": \"->\",\n          \"name\": \"keyword.operator.other.mikrotik-script\"\n        },\n        {\n          \"comment\": \"delimeters\",\n          \"match\": \":|\\\\$|\\\\/\",\n          \"name\": \"keyword.operator.other.mikrotik-script\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.statement.mikrotik-script\"\n        },\n        {\n          \"match\": \"\\\\(|\\\\)\",\n          \"name\": \"meta.brace.round.mikrotik-script\"\n        },\n        {\n          \"match\": \"\\\\{|\\\\}\",\n          \"name\": \"meta.brace.curly.mikrotik-script\"\n        },\n        {\n          \"match\": \"\\\\[|\\\\]\",\n          \"name\": \"meta.brace.square.mikrotik-script\"\n        }\n      ]\n    },\n    \"parameters-readonly\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x) \\\\b(?<![\\\\-=])( 802\\\\.1x\\\\-port\\\\-enabled| ac\\\\-mac| ack\\\\-timeout| active\\\\-address| active\\\\-client\\\\-id| active\\\\-cpu| active\\\\-interfaces| active\\\\-links| active\\\\-mac\\\\-address| active\\\\-server| actual\\\\-interface| actual\\\\-tx\\\\-interval| addresses| adjacency| agent\\\\-circuit\\\\-id| agent\\\\-remote\\\\-id| aggregator| ap| architecture\\\\-name| as\\\\-path| as4\\\\-capability| assured| atomic\\\\-aggregate| authentication\\\\-type| authority| backup\\\\-dr\\\\-address| bad\\\\-blocks| bgp\\\\-ext\\\\-communities| bgp| blocked| board\\\\-name| bytes\\\\-in| bytes\\\\-out| ca\\\\-crl\\\\-host| caller\\\\-id| category| ca| checksum| cisco\\\\-bgp\\\\-signaled| client| cluster\\\\-list| communities| cpu\\\\-count| cpu\\\\-frequency| cpu\\\\-load| creation\\\\-time| crl| data\\\\-byte| db\\\\-exchanges| db\\\\-summaries| denied| desired\\\\-tx\\\\-interval| dhcp| dijkstras| disk| dr\\\\-address| dsa| dst\\\\-user| dst| dynamic| effective\\\\-router\\\\-id| egress| encoding| encryption| errors| established| evm\\\\-ch0| evm\\\\-ch1| evm\\\\-ch2| expire\\\\-time| expired| expires\\\\-after| expires\\\\-in| external\\\\-imports| file\\\\-size| file\\\\ type| fingerprint| first\\\\-header| frame\\\\-bytes| frames| framing\\\\-current\\\\-size| framing\\\\-limit| framing\\\\-mode| free\\\\-hdd\\\\-space| free\\\\-memory| gateway\\\\-status| global| gre\\\\-key| gre\\\\-version| group\\\\-encryption| header\\\\-stack| hits| hw\\\\-frame\\\\-bytes| hw\\\\-frames| icmp\\\\-code| icmp\\\\-id| icmp\\\\-type| idle\\\\-time| id| imposed\\\\-label| in\\\\-accepted| in\\\\-dropped| in\\\\-label| in\\\\-previous\\\\-hop| in\\\\-transformed| inactive| info| inteface| invalid\\\\-after| invalid\\\\-before| invalid| io| ip\\\\-dscp| ip\\\\-dst| ip\\\\-frag\\\\-off| ip\\\\-gateway| ip\\\\-id| ip\\\\-src| ip\\\\-ttl| irq| issued| issuer| label| last\\\\-accessed\\\\-time| last\\\\-accessed| last\\\\-activity| last\\\\-ip| last\\\\-modified\\\\-time| last\\\\-modified| last\\\\-seen| latency\\\\-distribution\\\\-measure\\\\-interval| latency\\\\-distribution\\\\-samples| link\\\\-local| local\\\\-label| local\\\\-pref| local\\\\-transport| locally\\\\-originated| ls\\\\-requests| ls\\\\-retransmits| mac\\\\-dst| mac\\\\-src| management\\\\-protection| manufacture\\\\-date| max\\\\-entries| med| memory| message| model| mru| next\\\\-hop| nexthop| no\\\\-expiration\\\\-info| no\\\\-memory| nominal\\\\-battery\\\\-voltage| non\\\\-cacheable| non\\\\-output| not\\\\-found| nstreme| offline\\\\-after| operational| options| originator\\\\-id| origin| ospf\\\\-metric| ospf| out\\\\-accepted| out\\\\-dropped| out\\\\-label| out\\\\-next\\\\-hop| out\\\\-transformed| owner| p\\\\-throughput| package\\\\-architecture| package\\\\-built\\\\-time| package\\\\-name| package\\\\-version| packed\\\\-bytes| packed\\\\-frames| packets\\\\-in| packets\\\\-out| packets\\\\-rx| path\\\\-in\\\\-explicit\\\\-route| path\\\\-in\\\\-record\\\\-route| path\\\\-out\\\\-explicit\\\\-route| path\\\\-out\\\\-record\\\\-route| peer| ph2\\\\-state| pool| prefix\\\\-count| primary\\\\-dns| primary\\\\-ntp| protocols| radius| raw\\\\-header| received\\\\-from| recorded\\\\-route| refresh\\\\-capability| remaining\\\\-bw| remote\\\\-group| remote\\\\-hold\\\\-time| remote\\\\-id| remote\\\\-label| remote\\\\-min\\\\-rx| remote\\\\-status| reply\\\\-dst\\\\-address| reply\\\\-src\\\\-address| required\\\\-min\\\\-rx| resv\\\\-bandwidth| resv\\\\-out\\\\-record\\\\-route| revoked| rip| routeros\\\\-version| router| running| rx\\\\-1024\\\\-1518| rx\\\\-128\\\\-255| rx\\\\-1519\\\\-max| rx\\\\-256\\\\-511| rx\\\\-512\\\\-1023| rx\\\\-64| rx\\\\-65\\\\-127| rx\\\\-align\\\\-error| rx\\\\-broadcast| rx\\\\-bytes| rx\\\\-ccq| rx\\\\-fcs\\\\-error| rx\\\\-fragment| rx\\\\-multicast| rx\\\\-overflow| rx\\\\-pause| rx\\\\-rate| rx\\\\-runt| rx\\\\-too\\\\-long| scep\\\\-url| secondary\\\\-dns| secondary\\\\-ntp| seen\\\\ reply| sending\\\\-path| sending\\\\-resv| sending\\\\-targeted\\\\-hello| sequence\\\\-number| serial| service| shared| side| signal\\\\-strength\\\\-ch0| signal\\\\-strength\\\\-ch1| signal\\\\-strength\\\\-ch2| signal\\\\-strength| signal\\\\-to\\\\-noise| since| slave| smart\\\\-card\\\\-key| src\\\\-user| src| state\\\\-changes| static| strength\\\\-at\\\\-rates| successes| switch| tcp\\\\-state| tdma\\\\-retx| tdma\\\\-rx\\\\-size| tdma\\\\-timing\\\\-offset| tdma\\\\-tx\\\\-size| tdma\\\\-windfull| timestamp| too\\\\-large| total\\\\-entries| total\\\\-hdd\\\\-space| total\\\\-memory| transport\\\\-nexthop| tx\\\\-1024\\\\-1518| tx\\\\-128\\\\-255| tx\\\\-1519\\\\-max| tx\\\\-256\\\\-511| tx\\\\-512\\\\-1023| tx\\\\-64| tx\\\\-65\\\\-127| tx\\\\-align\\\\-error| tx\\\\-broadcast| tx\\\\-bytes| tx\\\\-ccq| tx\\\\-evm\\\\-ch0| tx\\\\-evm\\\\-ch1| tx\\\\-evm\\\\-ch2| tx\\\\-fcs\\\\-error| tx\\\\-fragment| tx\\\\-frames\\\\-timed\\\\-out| tx\\\\-multicast| tx\\\\-overflow| tx\\\\-pause| tx\\\\-rate| tx\\\\-runt| tx\\\\-signal\\\\-strength\\\\-ch0| tx\\\\-signal\\\\-strength\\\\-ch1| tx\\\\-signal\\\\-strength\\\\-ch2| tx\\\\-signal\\\\-strength| tx\\\\-too\\\\-long| udp\\\\-dst\\\\-port| udp\\\\-src\\\\-port| unknown\\\\-server| unreachable| updates\\\\-received| updates\\\\-sent| up| uri| used\\\\-hold\\\\-time| used\\\\-keepalive\\\\-time| users| vlan\\\\-protocol| vpls| wds| withdraws\\\\-received| withdraws\\\\-sent| wmm\\\\-enabled| write\\\\-sect\\\\-since\\\\-reboot| write\\\\-sect\\\\-total )(?!-)\\\\b\\n\",\n          \"name\": \"entity.other.attribute-name.readonly.mikrotik-script\"\n        }\n      ]\n    },\n    \"parameters-readwrite\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.readwrite.mikrotik-script\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.unexpected-text.mikrotik-script\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.assigment.mikrotik-script\"\n            }\n          },\n          \"match\": \"(?x) (\\\\b(?<![\\\\/\\\\-=])(?<words> 2ghz\\\\-10mhz\\\\-power\\\\-channels| 2ghz\\\\-11n\\\\-channels| 2ghz\\\\-5mhz\\\\-power\\\\-channels| 2ghz\\\\-b\\\\-channels| 2ghz\\\\-g\\\\-channels| 2ghz\\\\-g\\\\-turbo\\\\-channels| 5ghz\\\\-10mhz\\\\-power\\\\-channels| 5ghz\\\\-11n\\\\-channels| 5ghz\\\\-5mhz\\\\-power\\\\-channels| 5ghz\\\\-channels| 5ghz\\\\-turbo\\\\-channels| 6to4\\\\-interface| 802\\\\.3\\\\-sap| 802\\\\.3\\\\-type| AH| DNS| ESP| NET\\\\-BIOS| SNMP| ac\\\\-name| accept\\\\-dynamic\\\\-neighbors| accept\\\\-redirects| accept\\\\-router\\\\-advertisements| accept\\\\-source\\\\-route| accept| accessible\\\\-via\\\\-web| account\\\\-local\\\\-traffic| accounting| action| active\\\\-flow\\\\-timeout| active\\\\-mode| active\\\\-port\\\\-type| active| adaptive\\\\-noise\\\\-immunity| add\\\\-arp| add\\\\-default\\\\-route| add\\\\-lifetime| add\\\\-mac\\\\-cookie| add\\\\-relay\\\\-info| address\\\\-families| address\\\\-family| address\\\\-list\\\\-timeout| address\\\\-list| address\\\\-pool| address\\\\-prefix\\\\-length| address6| addresses| address| addtime| adjacent\\\\-neighbors| admin\\\\-mac| advertise\\\\-dns| advertise\\\\-filter| advertise\\\\-interval| advertise\\\\-mac\\\\-address| advertise\\\\-timeout| advertise\\\\-url| advertised\\\\-l2mtu| advertise| affinity\\\\-exclude| affinity\\\\-include\\\\-all| affinity\\\\-include\\\\-any| ageing\\\\-time| age| ah\\\\-algorithm| ah\\\\-key| ah\\\\-spi| alarm\\\\-setting| alert\\\\-timeout| allocate\\\\-udp\\\\-ports\\\\-from| allow\\\\-address| allow\\\\-as\\\\-in| allow\\\\-disable\\\\-external\\\\-interface| allow\\\\-fast\\\\-path| allow\\\\-guests| allow\\\\-remote\\\\-requests| allow\\\\-sharedkey| allow\\\\-target| allowed\\\\-number| allow| always\\\\-broadcast| always\\\\-from\\\\-cache| antenna\\\\-gain| antenna\\\\-mode| ap\\\\-tx\\\\-limit| apn| append\\\\-bgp\\\\-communities| append\\\\-route\\\\-targets| area\\\\-id| area\\\\-prefix| area| arp\\\\-dst\\\\-address| arp\\\\-dst\\\\-mac\\\\-address| arp\\\\-gratuitous| arp\\\\-hardware\\\\-type| arp\\\\-interval| arp\\\\-ip\\\\-targets| arp\\\\-opcode| arp\\\\-packet\\\\-type| arp\\\\-ping| arp\\\\-src\\\\-address| arp\\\\-src\\\\-mac\\\\-address| arp\\\\-timeout| arp| as\\\\-override| ascii| as| attribute\\\\-filter| audio\\\\-max| audio\\\\-min| audio\\\\-monitor| auth\\\\-algorithms| auth\\\\-algorithm| auth\\\\-key| auth\\\\-method| authenticate| authentication\\\\-key\\\\-id| authentication\\\\-key| authentication\\\\-password| authentication\\\\-protocol| authentication\\\\-types| authentication| authoritative| auth| auto\\\\-bandwidth\\\\-avg\\\\-interval| auto\\\\-bandwidth\\\\-range| auto\\\\-bandwidth\\\\-reserve| auto\\\\-bandwidth\\\\-update\\\\-interval| auto\\\\-mac| auto\\\\-negotiation| auto\\\\-send\\\\-supout| automatic\\\\-supout| autonomous| backup\\\\-designated\\\\-router| bandwidth\\\\-limit| bandwidth| band| basic\\\\-rates\\\\-a\\\\/g| basic\\\\-rates\\\\-b| battery\\\\-charge| battery\\\\-voltage| baud\\\\-rate| bearing| bgp\\\\-as\\\\-path\\\\-length| bgp\\\\-as\\\\-path| bgp\\\\-atomic\\\\-aggregate| bgp\\\\-communities| bgp\\\\-local\\\\-pref| bgp\\\\-med| bgp\\\\-origin| bgp\\\\-prepend| bgp\\\\-weight| bidirectional\\\\-timeout| blink| block\\\\-access| blockade\\\\-k\\\\-factor| board| body| boot\\\\-device| boot\\\\-file\\\\-name| boot\\\\-protocol| bootp\\\\-support| bridge\\\\-cost| bridge\\\\-horizon| bridge\\\\-mode| bridge\\\\-path\\\\-cost| bridge\\\\-port\\\\-priority| bridge| broadcast| bsd\\\\-syslog| burst\\\\-time| bytes| ca\\\\-fingerprint| ca\\\\-identity| cable\\\\-setting| cable\\\\-test| cache\\\\-administrator| cache\\\\-entries| cache\\\\-hit\\\\-dscp| cache\\\\-max\\\\-ttl| cache\\\\-on\\\\-disk| cache\\\\-size| capabilities| cc| certificate| chain| challenge\\\\-password| change\\\\-tcp\\\\-mss| channel\\\\-time| channel\\\\-width| channel| check\\\\-certificate| check\\\\-gateway| check\\\\-interval| check\\\\-status| chip\\\\-info| cipher| cisco\\\\-style\\\\-id| cisco\\\\-style| cisco\\\\-vpls\\\\-nlri\\\\-len\\\\-fmt| client\\\\-id| client\\\\-to\\\\-client\\\\-reflection| client\\\\-tx\\\\-limit| cluster\\\\-id| code| comment| common\\\\-name| compression| confederation\\\\-peers| confederation| connect\\\\-to| connection\\\\-bytes| connection\\\\-limit| connection\\\\-mark| connection\\\\-rate| connection\\\\-state| connection\\\\-type| connect| contact| contents| content| contrast| cost| country| count| cpu\\\\-frequency| cpu| current\\\\-bytes| current\\\\-mac\\\\-address| data\\\\-bits| data\\\\-channel| data| date\\\\-and\\\\-time| days\\\\-valid| dead\\\\-interval| default\\\\-ap\\\\-tx\\\\-limit| default\\\\-authentication| default\\\\-cable\\\\-settings| default\\\\-client\\\\-tx\\\\-limit| default\\\\-cost| default\\\\-forwarding| default\\\\-group| default\\\\-name| default\\\\-originate| default\\\\-periodic\\\\-calibration| default\\\\-profile| default\\\\-route\\\\-distance| default\\\\-vlan\\\\-id| default| delay\\\\-threshold| designated\\\\-port\\\\-count| designated\\\\-router| device\\\\-id| device| dfs\\\\-mode| dh\\\\-group| dhcp\\\\-options| dhcp\\\\-option| dhcp\\\\-server| dial\\\\-command| dial\\\\-on\\\\-demand| direction| directory| disable\\\\-csma| disable\\\\-running\\\\-check| disabled| disconnect\\\\-timeout| discover| disk\\\\-file\\\\-count| disk\\\\-file\\\\-name| disk\\\\-lines\\\\-per\\\\-file| disk\\\\-stop\\\\-on\\\\-full| distance| distribute\\\\-default| distribute\\\\-for\\\\-default\\\\-route| dns\\\\-name| dns\\\\-server| do\\\\-not\\\\-fragment| domain\\\\-id| domain\\\\-tag| domain| down\\\\-delay| down\\\\-flood\\\\-thresholds| down\\\\-script| dpd\\\\-interval| dpd\\\\-maximum\\\\-failures| dscp| dst\\\\-address\\\\-list| dst\\\\-address\\\\-type| dst\\\\-address| dst\\\\-delta| dst\\\\-end| dst\\\\-host| dst\\\\-limit| dst\\\\-mac\\\\-address| dst\\\\-path| dst\\\\-port| dst\\\\-start| duid| duration| dynamic\\\\-label\\\\-range| eap\\\\-methods| edge\\\\-port\\\\-discovery| edge\\\\-port| edge| email\\\\-to| email| enable\\\\-nstreme| enable\\\\-polling| enabled| enc\\\\-algorithms| enc\\\\-algorithm| encryption\\\\-password| encryption\\\\-protocol| engine\\\\-id| esp\\\\-auth\\\\-algorithm| esp\\\\-auth\\\\-key| esp\\\\-enc\\\\-algorithm| esp\\\\-enc\\\\-key| esp\\\\-spi| eui\\\\-64| exchange\\\\-mode| exclude\\\\-groups| export\\\\-pub\\\\-key| export\\\\-route\\\\-target| external\\\\-fdb| file\\\\-limit| file\\\\-name| file| filter\\\\-direction| filter\\\\-interface| filter\\\\-ip\\\\-address| filter\\\\-ip\\\\-protocol| filter\\\\-mac\\\\-address| filter\\\\-mac\\\\-protocol| filter\\\\-mac| filter\\\\-operator\\\\-between\\\\-entries| filter\\\\-port| filter\\\\-stream| fingerprint\\\\-algorithm| firmware| flow\\\\-control\\\\-auto| flow\\\\-control\\\\-rx| flow\\\\-control\\\\-tx| flow\\\\-control| force\\\\-aes| force\\\\-backup\\\\-booter| forward\\\\-delay| forwarding| forward| fragment\\\\-offset| fragment| frame\\\\-lifetime| frame\\\\-size| framer\\\\-limit| framer\\\\-policy| frames\\\\-per\\\\-second| frequency\\\\-mode| frequency\\\\-offset| frequency| from\\\\-address| from\\\\-date| from\\\\-pool| from\\\\-time| from| full\\\\-duplex| garbage\\\\-timer| gateway\\\\-class| gateway\\\\-keepalive| gateway\\\\-selection| gateway| generate\\\\-key| generate\\\\-policy| generic\\\\-timeout| graph| group\\\\-ciphers| group\\\\-key\\\\-update| group| hash\\\\-algorithm| hello\\\\-interval| hide\\\\-ssid| hold\\\\-time| holding\\\\-priority| hop\\\\-limit| hoplimit| hops| horizon| host\\\\-name| host| hotspot\\\\-address| hotspot| ht\\\\-ampdu\\\\-priorities| ht\\\\-amsdu\\\\-limit| ht\\\\-amsdu\\\\-threshold| ht\\\\-basic\\\\-mcs| ht\\\\-chains| ht\\\\-channel\\\\-width| ht\\\\-guard\\\\-interval| ht\\\\-rates| ht\\\\-rxchains| ht\\\\-streams| ht\\\\-supported\\\\-mcs| ht\\\\-txchains| html\\\\-directory| http\\\\-cookie\\\\-lifetime| http\\\\-proxy| hw\\\\-fragmentation\\\\-threshold| hw\\\\-protection\\\\-mode| hw\\\\-protection\\\\-threshold| hw\\\\-retries| hwmp\\\\-default\\\\-hoplimit| hwmp\\\\-prep\\\\-lifetime| hwmp\\\\-preq\\\\-destination\\\\-only| hwmp\\\\-preq\\\\-reply\\\\-and\\\\-forward| hwmp\\\\-preq\\\\-retries| hwmp\\\\-preq\\\\-waiting\\\\-time| hwmp\\\\-rann\\\\-interval| hwmp\\\\-rann\\\\-lifetime| hwmp\\\\-rann\\\\-propagation\\\\-delay| iaid| icmp\\\\-options| icmp\\\\-rate\\\\-limit| icmp\\\\-rate\\\\-mask| icmp\\\\-timeout| identification| identity| idle\\\\-timeout| ignore\\\\-as\\\\-path\\\\-len| ignore\\\\-directip\\\\-modem| igp\\\\-flood\\\\-period| import\\\\-route\\\\-target| import| in\\\\-bridge\\\\-port| in\\\\-bridge| in\\\\-buffer\\\\-errors| in\\\\-errors| in\\\\-filter| in\\\\-header\\\\-errors| in\\\\-interface| in\\\\-no\\\\-policies| in\\\\-no\\\\-states| in\\\\-policy\\\\-blocked| in\\\\-policy\\\\-errors| in\\\\-prefix\\\\-list| in\\\\-state\\\\-expired| in\\\\-state\\\\-invalid| in\\\\-state\\\\-mismatches| in\\\\-state\\\\-mode\\\\-errors| in\\\\-state\\\\-protocol\\\\-errors| in\\\\-state\\\\-sequence\\\\-errors| in\\\\-template\\\\-mismatches| inactive\\\\-flow\\\\-timeout| include\\\\-igp| incoming\\\\-filter| incoming\\\\-packet\\\\-mark| info\\\\-channel| ingress\\\\-priority| inherit\\\\-attributes| inject\\\\-summary\\\\-lsas| insert\\\\-queue\\\\-before| instance| interface\\\\-name| interface\\\\-type| interfaces| interface| interim\\\\-update| interval| invert\\\\-math| ip\\\\-address| ip\\\\-forwarding| ip\\\\-forward| ip\\\\-header\\\\-size| ip\\\\-packet\\\\-size| ip\\\\-protocol| ipsec\\\\-protocols| ipv4\\\\-options| ipv6| jump\\\\-target| k\\\\-factor| keep\\\\-max\\\\-sms| keep\\\\-result| keepalive\\\\-timeout| keepalive\\\\-time| keepalive| key\\\\-bits| key\\\\-chain| key\\\\-id| key\\\\-name| key\\\\-size| key\\\\-usage| key| kind| l2mtu| l2router\\\\-id| lacp\\\\-rate| last\\\\-packet\\\\-before| latency\\\\-distribution\\\\-max| latency\\\\-distribution\\\\-scale| latency| latitude| layer7\\\\-protocol| learning| lease\\\\-script| lease\\\\-time| leds| level| life\\\\-time| lifebytes| lifetime| limit\\\\-bytes\\\\-in| limit\\\\-bytes\\\\-out| limit\\\\-bytes\\\\-total| limit\\\\-uptime| limit| line\\\\-voltage| link\\\\-monitoring| list| load| local\\\\-address| local\\\\-port| local\\\\-tx\\\\-speed| local\\\\-udp\\\\-tx\\\\-size| locality| locally\\\\-originated\\\\-bgp| local| location| log\\\\-prefix| login\\\\-by| longitude| loop\\\\-detect| low\\\\-battery| lsr\\\\-id| mac\\\\-address| mac\\\\-auth\\\\-password| mac\\\\-cookie\\\\-timeout| mac\\\\-protocol| make\\\\-static| managed\\\\-address\\\\-configuration| management\\\\-protection\\\\-key| management\\\\-protection| manual\\\\-sa| manual\\\\-tx\\\\-powers| master\\\\-interface| master\\\\-port| match\\\\-chain| max\\\\-cache\\\\-object\\\\-size| max\\\\-cache\\\\-size| max\\\\-client\\\\-connections| max\\\\-connections| max\\\\-fresh\\\\-time| max\\\\-message\\\\-age| max\\\\-mru| max\\\\-mtu| max\\\\-prefix\\\\-limit| max\\\\-prefix\\\\-restart\\\\-time| max\\\\-server\\\\-connections| max\\\\-sessions| max\\\\-station\\\\-count| max\\\\-udp\\\\-packet\\\\-size| mbps| mdix\\\\-enable| memory\\\\-limit| memory\\\\-lines| memory\\\\-scroll| memory\\\\-stop\\\\-on\\\\-full| mesh\\\\-portal| mesh| messages\\\\-rx| messages\\\\-tx| method| metric\\\\-bgp| metric\\\\-connected| metric\\\\-default| metric\\\\-ospf| metric\\\\-other\\\\-ospf| metric\\\\-rip| metric\\\\-static| metric| mii\\\\-interval| min\\\\-runtime| min\\\\-rx| mirror\\\\-source| mirror\\\\-target| mode\\\\-cfg| modem\\\\-init| modem\\\\-signal\\\\-treshold| mode| monitor| mpls\\\\-mtu| mpls\\\\-te\\\\-area| mpls\\\\-te\\\\-router\\\\-id| mq\\\\-pfifo\\\\-limit| mrru| mschapv2\\\\-password| mschapv2\\\\-username| mss| mtu| multicast\\\\-buffering| multicast\\\\-helper| multihop| multiple\\\\-channels| multiplier| my\\\\-id\\\\-user\\\\-fqdn| name| nas\\\\-port\\\\-type| nat\\\\-traversal| neighbor\\\\-id| neighbors| neighbor| netmask| network\\\\-type| network| new\\\\-connection\\\\-mark| new\\\\-dscp| new\\\\-mss| new\\\\-packet\\\\-mark| new\\\\-priority| new\\\\-routing\\\\-mark| new\\\\-ttl| next\\\\-server| nexthop\\\\-choice| no\\\\-ping\\\\-delay| noise\\\\-floor\\\\-threshold| note| nth| ntp\\\\-server| null\\\\-modem| num| nv2\\\\-cell\\\\-radius| nv2\\\\-noise\\\\-floor\\\\-offset| nv2\\\\-preshared\\\\-key| nv2\\\\-qos| nv2\\\\-queue\\\\-count| nv2\\\\-security| offline\\\\-time| on\\\\-alert| on\\\\-backup| on\\\\-battery| on\\\\-event| on\\\\-fail\\\\-retry\\\\-time| on\\\\-interface| on\\\\-line| on\\\\-link| on\\\\-login| on\\\\-logout| on\\\\-master| one\\\\-session\\\\-per\\\\-host| only\\\\-headers| only\\\\-one| open\\\\-status\\\\-page| organization| organziation| orig\\\\-mac\\\\-address| origination\\\\-interval| originator| ospf\\\\-type| other\\\\-configuration| out\\\\-bridge\\\\-port| out\\\\-bridge| out\\\\-bundle\\\\-check\\\\-errors| out\\\\-bundle\\\\-errors| out\\\\-errors| out\\\\-filter| out\\\\-interface| out\\\\-no\\\\-states| out\\\\-policy\\\\-blocked| out\\\\-policy\\\\-dead| out\\\\-policy\\\\-errors| out\\\\-prefix\\\\-list| out\\\\-state\\\\-expired| out\\\\-state\\\\-mode\\\\-errors| out\\\\-state\\\\-protocol\\\\-errors| out\\\\-state\\\\-sequence\\\\-errors| outgoing\\\\-filter| outgoing\\\\-packet\\\\-mark| output\\\\-voltage| overloaded\\\\-output| p2p| packet\\\\-mark| packet\\\\-size| packet\\\\-type| packets| page\\\\-refresh| parent\\\\-proxy\\\\-port| parent\\\\-proxy| parent\\\\-queue| parity| passive| password| path\\\\-cost| path\\\\-vector\\\\-limit| path| pci\\\\-info| pcq\\\\-burst\\\\-rate| pcq\\\\-burst\\\\-threshold| pcq\\\\-burst\\\\-time| pcq\\\\-classifier| pcq\\\\-dst\\\\-address\\\\-mask| pcq\\\\-dst\\\\-address6\\\\-mask| pcq\\\\-limit| pcq\\\\-rate| pcq\\\\-src\\\\-address\\\\-mask| pcq\\\\-src\\\\-address6\\\\-mask| pcq\\\\-total\\\\-limit| peek\\\\-rate| per\\\\-connection\\\\-classifier| periodic\\\\-calibration\\\\-interval| periodic\\\\-calibration| pfifo\\\\-limit| pfs\\\\-group| pfs| phone| phy\\\\-regs| pin| platform| poe\\\\-out| poe\\\\-priority| point\\\\-to\\\\-point\\\\-port| point\\\\-to\\\\-point| policy\\\\-group| policy| poll\\\\-interval| pool\\\\-name| pool\\\\-prefix\\\\-length| port\\\\-count| port\\\\-number| port\\\\-type| ports| port| pps| preamble\\\\-mode| preemption\\\\-mode| pref\\\\-src| preferred\\\\-gateway| preferred\\\\-lifetime| prefix\\\\-length| prefix| primary\\\\-ntp| primary\\\\-path| primary\\\\-retry\\\\-interval| primary\\\\-server| primary| priority| prism\\\\-cardtype| private\\\\-algo| private\\\\-key| private\\\\-pre\\\\-shared\\\\-key| profile| propagate\\\\-ttl| proposal\\\\-check| proposal| proprietary\\\\-extensions| proprietary\\\\-extension| protocol\\\\-mode| protocol| psd| pw\\\\-mtu| pw\\\\-type| query\\\\-server\\\\-timeout| query\\\\-total\\\\-timeout| queue\\\\-type| queue| quick| ra\\\\-delay| ra\\\\-interval| ra\\\\-lifetime| radio\\\\-name| radius\\\\-accounting| radius\\\\-default\\\\-domain| radius\\\\-eap\\\\-accounting| radius\\\\-interim\\\\-update| radius\\\\-location\\\\-name| radius\\\\-mac\\\\-authentication| radius\\\\-mac\\\\-caching| radius\\\\-mac\\\\-format| radius\\\\-mac\\\\-mode| random\\\\-data| random| ranges| range| rate\\\\-limit| rate\\\\-selection| rate\\\\-set| rates\\\\-a\\\\/g| rates\\\\-b| rate| raw\\\\-value| reachable\\\\-time| read\\\\-access| read\\\\-only| receive\\\\-all| receive\\\\-enabled| receive\\\\-errors| receive| record\\\\-route| red\\\\-avg\\\\-packet| red\\\\-burst| red\\\\-limit| red\\\\-max\\\\-threshold| red\\\\-min\\\\-threshold| redirect\\\\-to| redistribute\\\\-bgp| redistribute\\\\-connected| redistribute\\\\-ospf| redistribute\\\\-other\\\\-bgp| redistribute\\\\-other\\\\-ospf| redistribute\\\\-rip| redistribute\\\\-static| refresh\\\\-time| regexp| reject\\\\-with| relay| release| remember| remote\\\\-address| remote\\\\-as| remote\\\\-certificate| remote\\\\-mac| remote\\\\-peer| remote\\\\-port| remote\\\\-tx\\\\-speed| remote\\\\-udp\\\\-tx\\\\-size| remote| remove\\\\-private\\\\-as| renew| reoptimize\\\\-interval| reoptimize\\\\-paths| replace\\\\-battery| replay| req\\\\-fingerprint| require\\\\-client\\\\-certificate| resends| reset\\\\-alert| reset\\\\-counters\\\\-all| reset\\\\-counters| reset\\\\-mac\\\\-address| resource\\\\-class| retransmit\\\\-interval| role| root\\\\-bridge\\\\-id| root\\\\-bridge| root\\\\-path\\\\-cost| root\\\\-port| route\\\\-comment| route\\\\-distinguisher| route\\\\-reflect| route\\\\-tag| route\\\\-target| router\\\\-id| routes| routing\\\\-mark| routing\\\\-table| rp\\\\-filter| rp_filter| runtime\\\\-calibration\\\\-running| runtime\\\\-left| rx\\\\-band| rx\\\\-channel\\\\-width| rx\\\\-frequency| rx\\\\-radio| sa\\\\-dst\\\\-address| sa\\\\-src\\\\-address| sa\\\\-type| same\\\\-not\\\\-by\\\\-dst| satellites| scan\\\\-list| scope| secondary\\\\-ntp| secondary\\\\-paths| secondary\\\\-server| secret| secure\\\\-redirects| security\\\\-profile| security| send\\\\-dns| send\\\\-email\\\\-from| send\\\\-email\\\\-to| send\\\\-initial\\\\-contact| send\\\\-redirects| send\\\\-smtp\\\\-server| send\\\\-targeted| sending\\\\-rstp| send| seq\\\\-number| serial\\\\-number| serialize\\\\-connections| servers| server| service\\\\-name| session\\\\-timeout| set\\\\-bgp\\\\-communities| set\\\\-bgp\\\\-local\\\\-pref| set\\\\-bgp\\\\-med| set\\\\-bgp\\\\-prepend\\\\-path| set\\\\-bgp\\\\-prepend| set\\\\-bgp\\\\-weight| set\\\\-check\\\\-gateway| set\\\\-disabled| set\\\\-distance| set\\\\-in\\\\-nexthop\\\\-direct| set\\\\-in\\\\-nexthop\\\\-ipv6| set\\\\-in\\\\-nexthop\\\\-linklocal| set\\\\-in\\\\-nexthop| set\\\\-metric| set\\\\-out\\\\-nexthop\\\\-ipv6| set\\\\-out\\\\-nexthop\\\\-linklocal| set\\\\-out\\\\-nexthop| set\\\\-pref\\\\-src| set\\\\-route\\\\-comment| set\\\\-route\\\\-tag| set\\\\-route\\\\-targets| set\\\\-routing\\\\-mark| set\\\\-scope| set\\\\-site\\\\-of\\\\-origin| set\\\\-system\\\\-time| set\\\\-target\\\\-scope| set\\\\-type| set\\\\-use\\\\-te\\\\-nexthop| setup\\\\-priority| setup| sfp\\\\-rate\\\\-select| sfq\\\\-allot| sfq\\\\-perturb| shared\\\\-users| share| show\\\\-at\\\\-login| show\\\\-dummy\\\\-rule| signal\\\\-range| silent\\\\-boot| sim\\\\-pin| simple\\\\-queue| sip\\\\-direct\\\\-media| site\\\\-id| site\\\\-of\\\\-origin| size| skin| slaves| smart\\\\-boost\\\\-mode| smart\\\\-ssdd\\\\-mode| smtp\\\\-server| software\\\\-id| source| speed| spi| split\\\\-include| split\\\\-user\\\\-domain| src\\\\-address\\\\-list| src\\\\-address\\\\-type| src\\\\-address| src\\\\-mac\\\\-address| src\\\\-mac| src\\\\-path| src\\\\-port| ssid\\\\-all| ssid| ssl\\\\-certificate| start\\\\-time| start| state| static\\\\-algo\\\\-0| static\\\\-algo\\\\-1| static\\\\-algo\\\\-2| static\\\\-algo\\\\-3| static\\\\-key\\\\-0| static\\\\-key\\\\-1| static\\\\-key\\\\-2| static\\\\-key\\\\-3| static\\\\-sta\\\\-private\\\\-algo| static\\\\-sta\\\\-private\\\\-key| static\\\\-transmit\\\\-key| station\\\\-bridge\\\\-clone\\\\-mac| stats\\\\-samples\\\\-to\\\\-keep| status\\\\-autorefresh| status| stop\\\\-bits| stop| store\\\\-every| store\\\\-leases\\\\-disk| store\\\\-name| store\\\\-on\\\\-disk| stp\\\\-flags| stp\\\\-forward\\\\-delay| stp\\\\-hello\\\\-time| stp\\\\-max\\\\-age| stp\\\\-msg\\\\-age| stp\\\\-port| stp\\\\-root\\\\-address| stp\\\\-root\\\\-cost| stp\\\\-root\\\\-priority| stp\\\\-sender\\\\-address| stp\\\\-sender\\\\-priority| stp\\\\-type| streaming\\\\-enabled| streaming\\\\-max\\\\-rate| streaming\\\\-server| subject| summary\\\\-only| supplicant\\\\-identity| supported\\\\-bands| supported\\\\-rates\\\\-a\\\\/g| supported\\\\-rates\\\\-b| suppress\\\\-filter| synchronize| syslog\\\\-facility| syslog\\\\-severity| syslog\\\\-time\\\\-format| target\\\\-scope| target| tcp\\\\-close\\\\-timeout| tcp\\\\-close\\\\-wait\\\\-timeout| tcp\\\\-connection\\\\-count| tcp\\\\-established\\\\-timeout| tcp\\\\-fin\\\\-wait\\\\-timeout| tcp\\\\-flags| tcp\\\\-last\\\\-ack\\\\-timeout| tcp\\\\-md5\\\\-key| tcp\\\\-mss| tcp\\\\-syn\\\\-received\\\\-timeout| tcp\\\\-syn\\\\-sent\\\\-timeout| tcp\\\\-syncookies| tcp\\\\-time\\\\-wait\\\\-timeout| tcp_syncookies| tdma\\\\-debug| tdma\\\\-hw\\\\-test\\\\-mode| tdma\\\\-override\\\\-rate| tdma\\\\-override\\\\-size| tdma\\\\-period\\\\-size| tdma\\\\-test\\\\-mode| te\\\\-metric| template| test\\\\-audio| test\\\\-id| threshold| time\\\\-zone\\\\-name| time\\\\-zone| timeout\\\\-timer| timeout| time| tls\\\\-certificate| tls\\\\-mode| tls| to\\\\-addresses| to\\\\-address| to\\\\-arp\\\\-reply\\\\-mac\\\\-address| to\\\\-dst\\\\-mac\\\\-address| to\\\\-ports| to\\\\-src\\\\-mac\\\\-address| top\\\\-bits| topics| total| to| traffic| transfer\\\\-cause| transit\\\\-area| translator\\\\-role| transmit\\\\-delay| transmit\\\\-hash\\\\-policy| transmit\\\\-hold\\\\-count| transparent\\\\-proxy| transport\\\\-address| transport| trap\\\\-generators| trap\\\\-target| trap\\\\-version| trial\\\\-uptime| trial\\\\-user\\\\-profile| trigger| trusted| ttl| tunnel\\\\-id| tunnel| tx\\\\-band| tx\\\\-channel\\\\-width| tx\\\\-frequency| tx\\\\-power\\\\-mode| tx\\\\-power| tx\\\\-radio| tx\\\\-template| type| udp\\\\-stream\\\\-timeout| udp\\\\-timeout| unicast\\\\-ciphers| unit| unpack| up\\\\-delay| up\\\\-flood\\\\-thresholds| up\\\\-script| update\\\\-source| update\\\\-stats\\\\-interval| update\\\\-timer| upload| uptime| url| usb\\\\-version| use\\\\-bfd| use\\\\-compression| use\\\\-control\\\\-word| use\\\\-cspf| use\\\\-dn| use\\\\-encryption| use\\\\-explicit\\\\-null| use\\\\-ip\\\\-firewall\\\\-for\\\\-pppoe| use\\\\-ip\\\\-firewall\\\\-for\\\\-vlan| use\\\\-ip\\\\-firewall| use\\\\-mpls| use\\\\-peer\\\\-dns| use\\\\-peer\\\\-ntp| use\\\\-radius| use\\\\-service\\\\-tag| use\\\\-src\\\\-mac| use\\\\-udp| use\\\\-vj\\\\-compression| username| user| v3\\\\-protocol| v9\\\\-template\\\\-refresh| v9\\\\-template\\\\-timeout| valid\\\\-lifetime| valid\\\\-server| valid| value| vendor\\\\-id| vendor| verify\\\\-client\\\\-certificate| verify\\\\-server\\\\-address\\\\-from\\\\-certificate| verify\\\\-server\\\\-certificate| version| vlan\\\\-encap| vlan\\\\-header| vlan\\\\-id| vlan\\\\-mode| vlan\\\\-priority| vpls\\\\-id| vrid| watch\\\\-address| watchdog\\\\-timer| wds\\\\-address| wds\\\\-cost\\\\-range| wds\\\\-default\\\\-bridge| wds\\\\-default\\\\-cost| wds\\\\-ignore\\\\-ssid| wds\\\\-mode| wins\\\\-server| wireless\\\\-protocol| wmm\\\\-support| wpa\\\\-pre\\\\-shared\\\\-key| wpa2\\\\-pre\\\\-shared\\\\-key| write\\\\-access| xauth\\\\-login| xauth\\\\-password| zone )\\\\b(?!-)(([\\\\s\\\\t]*?)(=))?)\\n\"\n        }\n      ]\n    },\n    \"string-escape\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\\\\"|\\\\\\\\\\\\\\\\|\\\\\\\\n|\\\\\\\\r|\\\\\\\\t|\\\\\\\\\\\\$|\\\\\\\\\\\\?|\\\\\\\\_|\\\\\\\\a|\\\\\\\\b|\\\\\\\\f|\\\\\\\\v|\\\\\\\\\\\\h\\\\h\",\n          \"name\": \"constant.character.escape.mikrotik-script\"\n        }\n      ]\n    },\n    \"string-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\$\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"include\": \"#line-continuation\"\n            },\n            {\n              \"match\": \"\\\\n\",\n              \"name\": \"invalid.illegal.newline.mikrotik-script\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\$\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"include\": \"#line-continuation\"\n            },\n            {\n              \"match\": \"\\\\n\",\n              \"name\": \"invalid.illegal.newline.mikrotik-script\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.mikrotik-script\"\n            }\n          },\n          \"match\": \"(\\\\$)([0-9a-zA-Z]+)\",\n          \"name\": \"variable.other.mikrotik-script\"\n        },\n        {\n          \"begin\": \"(\\\\$)(\\\\\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.mikrotik-script\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.begin.mikrotik-script\"\n            }\n          },\n          \"end\": \"\\\\\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.end.mikrotik-script\"\n            }\n          },\n          \"name\": \"variable.other.mikrotik-script\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-escape\"\n            },\n            {\n              \"include\": \"#line-continuation\"\n            },\n            {\n              \"match\": \"\\\\n\",\n              \"name\": \"invalid.illegal.newline.mikrotik-script\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-definition\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.other.mikrotik-script\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.mikrotik-script\"\n            }\n          },\n          \"match\": \"(\\\\:)(global|local)\\\\b\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.mikrotik-script\",\n  \"uuid\": \"1a4e4c34-d9fb-4371-b819-9934ebed400c\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/mips.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.mips\",\n  \"fileTypes\": [\"s\", \"mips\", \"spim\", \"asm\"],\n  \"patterns\": [\n    {\n      \"comment\": \"ok actually this are instructions, but one also could call them funtions…\",\n      \"match\": \"\\\\b(mul|abs|div|divu|mulo|mulou|neg|negu|not|rem|remu|rol|ror|li|seq|sge|sgeu|sgt|sgtu|sle|sleu|sne|b|beqz|bge|bgeu|bgt|bgtu|ble|bleu|blt|bltu|bnez|la|ld|ulh|ulhu|ulw|sd|ush|usw|move|mfc1\\\\.d|l\\\\.d|l\\\\.s|s\\\\.d|s\\\\.s)\\\\b\",\n      \"name\": \"support.function.pseudo.mips\"\n    },\n    {\n      \"match\": \"\\\\b(abs\\\\.d|abs\\\\.s|add|add\\\\.d|add\\\\.s|addi|addiu|addu|and|andi|bc1f|bc1t|beq|bgez|bgezal|bgtz|blez|bltz|bltzal|bne|break|c\\\\.eq\\\\.d|c\\\\.eq\\\\.s|c\\\\.le\\\\.d|c\\\\.le\\\\.s|c\\\\.lt\\\\.d|c\\\\.lt\\\\.s|ceil\\\\.w\\\\.d|ceil\\\\.w\\\\.s|clo|clz|cvt\\\\.d\\\\.s|cvt\\\\.d\\\\.w|cvt\\\\.s\\\\.d|cvt\\\\.s\\\\.w|cvt\\\\.w\\\\.d|cvt\\\\.w\\\\.s|div|div\\\\.d|div\\\\.s|divu|eret|floor\\\\.w\\\\.d|floor\\\\.w\\\\.s|j|jal|jalr|jr|lb|lbu|lh|lhu|ll|lui|lw|lwc1|lwl|lwr|madd|maddu|mfc0|mfc1|mfhi|mflo|mov\\\\.d|mov\\\\.s|movf|movf\\\\.d|movf\\\\.s|movn|movn\\\\.d|movn\\\\.s|movt|movt\\\\.d|movt\\\\.s|movz|movz\\\\.d|movz\\\\.s|msub|mtc0|mtc1|mthi|mtlo|mul|mul\\\\.d|mul\\\\.s|mult|multu|neg\\\\.d|neg\\\\.s|nop|nor|or|ori|round\\\\.w\\\\.d|round\\\\.w\\\\.s|sb|sc|sdc1|sh|sll|sllv|slt|slti|sltiu|sltu|sqrt\\\\.d|sqrt\\\\.s|sra|srav|srl|srlv|sub|sub\\\\.d|sub\\\\.s|subu|sw|swc1|swl|swr|syscall|teq|teqi|tge|tgei|tgeiu|tgeu|tlt|tlti|tltiu|tltu|trunc\\\\.w\\\\.d|trunc\\\\.w\\\\.s|xor|xori)\\\\b\",\n      \"name\": \"support.function.mips\"\n    },\n    {\n      \"match\": \"\\\\.(ascii|asciiz|byte|data|double|float|half|kdata|ktext|space|text|word|set\\\\s*(noat|at))\\\\b\",\n      \"name\": \"storage.type.mips\"\n    },\n    { \"match\": \"\\\\.(align|extern||globl)\\\\b\", \"name\": \"storage.modifier.mips\" },\n    {\n      \"match\": \"\\\\b([A-Za-z0-9_]+):\",\n      \"name\": \"meta.function.label.mips\",\n      \"captures\": { \"1\": { \"name\": \"entity.name.function.label.mips\" } }\n    },\n    {\n      \"match\": \"(\\\\$)(0|[2-9]|1[0-9]|2[0-5]|2[89]|3[0-1])\\\\b\",\n      \"name\": \"variable.other.register.usable.by-number.mips\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.mips\" } }\n    },\n    {\n      \"match\": \"(\\\\$)(zero|v[01]|a[0-3]|t[0-9]|s[0-7]|gp|sp|fp|ra)\\\\b\",\n      \"name\": \"variable.other.register.usable.by-name.mips\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.mips\" } }\n    },\n    {\n      \"match\": \"(\\\\$)(at|k[01]|1|2[67])\\\\b\",\n      \"name\": \"variable.other.register.reserved.mips\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.mips\" } }\n    },\n    {\n      \"match\": \"(\\\\$)f([0-9]|1[0-9]|2[0-9]|3[0-1])\\\\b\",\n      \"name\": \"variable.other.register.usable.floating-point.mips\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.mips\" } }\n    },\n    { \"match\": \"\\\\b\\\\d+\\\\.\\\\d+\\\\b\", \"name\": \"constant.numeric.float.mips\" },\n    {\n      \"match\": \"\\\\b(\\\\d+|0(x|X)[a-fA-F0-9]+)\\\\b\",\n      \"name\": \"constant.numeric.integer.mips\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.mips\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\[rnt\\\\\\\\\\\"]\", \"name\": \"constant.character.escape.mips\" }\n      ],\n      \"name\": \"string.quoted.double.mips\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.mips\" }\n      }\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.mips\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.mips\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.mips\" }\n      }\n    }\n  ],\n  \"name\": \"MIPS Assembler\",\n  \"keyEquivalent\": \"^~M\",\n  \"uuid\": \"7FD88C2E-6BE3-11D9-9A40-0011242E4184\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/mysql.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"\\\\s*\\\\(\\\\s*$\",\n  \"bundleUUID\": \"AAB4CBF7-73F9-11D9-B89A-000D93589AF6\",\n  \"foldingStopMarker\": \"^\\\\s*\\\\)\",\n  \"keyEquivalent\": \"^~S\",\n  \"fileTypes\": [\"sql\", \"ddl\", \"dml\"],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"(--).*$\\\\n?\",\n          \"name\": \"comment.line.double-dash.sql\",\n          \"captures\": { \"1\": { \"name\": \"punctuation.definition.comment.sql\" } }\n        },\n        {\n          \"match\": \"(#).*$\\\\n?\",\n          \"name\": \"comment.line.number-sign.sql\",\n          \"captures\": { \"1\": { \"name\": \"punctuation.definition.comment.sql\" } }\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.c\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.sql\" } }\n        }\n      ]\n    },\n    \"string_escape\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape.sql\"\n    },\n    \"string_interpolation\": {\n      \"match\": \"(#\\\\{)([^\\\\}]*)(\\\\})\",\n      \"name\": \"string.interpolated.sql\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.string.end.sql\" } }\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"match\": \"(')[^'\\\\\\\\]*(')\",\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"name\": \"string.quoted.single.sql\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.begin.sql\" },\n            \"3\": { \"name\": \"punctuation.definition.string.end.sql\" }\n          }\n        },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.sql\" }\n          },\n          \"end\": \"'\",\n          \"patterns\": [{ \"include\": \"#string_escape\" }],\n          \"name\": \"string.quoted.single.sql\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.sql\" }\n          }\n        },\n        {\n          \"match\": \"(?<!\\\\.)(`)[^`\\\\\\\\]*(`)(?!\\\\.)\",\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"name\": \"source.sql.mysql.identifier\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.identifier.begin.sql\" },\n            \"3\": { \"name\": \"punctuation.definition.identifier.end.sql\" }\n          }\n        },\n        {\n          \"begin\": \"`\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.identifier.end.sql\" }\n          },\n          \"end\": \"`\",\n          \"patterns\": [{ \"include\": \"#string_escape\" }],\n          \"name\": \"source.sql.mysql.identifier\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.identifier.begin.sql\" }\n          }\n        },\n        {\n          \"match\": \"(\\\")[^\\\"#]*(\\\")\",\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"name\": \"source.sql.mysql.identifier\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.identifier.begin.sql\" },\n            \"3\": { \"name\": \"punctuation.definition.identifier.end.sql\" }\n          }\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.identifier.end.sql\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [{ \"include\": \"#string_interpolation\" }],\n          \"name\": \"source.sql.mysql.identifier\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.identifier.begin.sql\" }\n          }\n        },\n        {\n          \"begin\": \"%\\\\{\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.sql\" }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [{ \"include\": \"#string_interpolation\" }],\n          \"name\": \"string.other.quoted.brackets.sql\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.sql\" }\n          }\n        }\n      ]\n    },\n    \"regexps\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/(?=\\\\S.*/)\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.sql\" }\n          },\n          \"end\": \"/\",\n          \"patterns\": [\n            { \"include\": \"#string_interpolation\" },\n            { \"match\": \"\\\\\\\\/\", \"name\": \"constant.character.escape.slash.sql\" }\n          ],\n          \"name\": \"string.regexp.sql\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.sql\" }\n          }\n        },\n        {\n          \"end\": \"\\\\}\",\n          \"begin\": \"%r\\\\{\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.sql\" }\n          },\n          \"patterns\": [{ \"include\": \"#string_interpolation\" }],\n          \"comment\": \"We should probably handle nested bracket pairs!?! -- Allan\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.sql\" }\n          },\n          \"name\": \"string.regexp.modr.sql\"\n        }\n      ]\n    }\n  },\n  \"uuid\": \"6FBEE1E0-D923-4DE8-9B57-6096FAB14BB0\",\n  \"patterns\": [\n    { \"include\": \"#comments\" },\n    {\n      \"match\": \"(?i:^\\\\s*(create)\\\\s+(aggregate|conversion|database|domain|function|group|(unique\\\\s+)?index|language|operator class|operator|rule|schema|sequence|tablespace|type|user)\\\\s+)(?:([\\\"`]?)(\\\\w+)\\\\4\\\\.)?([\\\"`]?)(\\\\w+)\\\\6\",\n      \"name\": \"meta.create.sql\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.create.sql\" },\n        \"2\": { \"name\": \"keyword.other.sql\" },\n        \"7\": { \"name\": \"entity.name.function.sql\" },\n        \"5\": { \"name\": \"entity.other.inherited-class.sql\" }\n      }\n    },\n    {\n      \"match\": \"(?i:^\\\\s*(create)\\\\s+((?:temporary\\\\s+)?table(?:\\\\s+if\\\\s+not\\\\s+exists)?\\\\s+)(?:([\\\"`]?)(\\\\w+)\\\\3\\\\.)?([\\\"`]?)(\\\\w+)\\\\5)(?i:\\\\s+(\\\\(?)\\\\s*(like)\\\\s+(?:([\\\"`]?)(\\\\w+)\\\\9\\\\.)?([\\\"`]?)(\\\\w+)\\\\11\\\\s*\\\\7)?\",\n      \"name\": \"meta.create.table.sql\",\n      \"captures\": {\n        \"8\": { \"name\": \"keyword.other.create.table.sql\" },\n        \"4\": { \"name\": \"entity.other.inherited-class.sql\" },\n        \"1\": { \"name\": \"keyword.other.create.sql\" },\n        \"12\": { \"name\": \"constant.other.table-name.sql\" },\n        \"6\": { \"name\": \"entity.name.function.sql\" },\n        \"10\": { \"name\": \"constant.other.database-name.sql\" },\n        \"2\": { \"name\": \"keyword.other.create.table.sql\" }\n      }\n    },\n    {\n      \"match\": \"(?i:^\\\\s*(create(?:\\\\s+or\\\\s+replace)?)(?:\\\\s+(algorithm)\\\\s*=\\\\s*(undefined|merge|temptable))?(?:\\\\s+(definer)\\\\s*=\\\\s*(?:(current_user)|\\\\w+))?(?:\\\\s+(sql\\\\s+security)\\\\s*=\\\\s*(definer|invoker))?\\\\s+(view)\\\\s+)(?:([\\\"`]?)(\\\\w+)\\\\9\\\\.)?([\\\"`]?)(\\\\w+)\\\\11\",\n      \"name\": \"meta.create.view.sql\",\n      \"captures\": {\n        \"7\": { \"name\": \"constant.other.security.mysql.sql\" },\n        \"3\": { \"name\": \"constant.other.algorithm.mysql.sql\" },\n        \"8\": { \"name\": \"keyword.other.view.sql\" },\n        \"4\": { \"name\": \"keyword.other.create.view.mysql.sql\" },\n        \"5\": { \"name\": \"constant.other.definer.mysql.sql\" },\n        \"1\": { \"name\": \"keyword.other.create.sql\" },\n        \"12\": { \"name\": \"entity.name.function.sql\" },\n        \"6\": { \"name\": \"keyword.other.create.view.mysql.sql\" },\n        \"10\": { \"name\": \"entity.other.inherited-class.sql\" },\n        \"2\": { \"name\": \"keyword.other.create.view.mysql.sql\" }\n      }\n    },\n    {\n      \"match\": \"(?i:^\\\\s*(create)(?:\\\\s+(definer)\\\\s*=\\\\s*(?:(current_user)|\\\\w+))?\\\\s+(trigger)\\\\s+(\\\\w+)\\\\s+(before|after)\\\\s+(insert|update|delete)\\\\s+(on)\\\\s+)(?:([\\\"`]?)(\\\\w+)\\\\9\\\\.)?([\\\"`]?)(\\\\w+)\\\\11(?i:\\\\s+(for)\\\\s+(each)\\\\s+(row))\",\n      \"name\": \"meta.create.trigger.sql\",\n      \"captures\": {\n        \"10\": { \"name\": \"constant.other.database-name.sql\" },\n        \"2\": { \"name\": \"keyword.other.create.trigger.mysql.sql\" },\n        \"15\": { \"name\": \"keyword.other.create.trigger.mysql.sql\" },\n        \"3\": { \"name\": \"constant.other.definer.mysql.sql\" },\n        \"4\": { \"name\": \"keyword.other.trigger.sql\" },\n        \"5\": { \"name\": \"entity.name.function.sql\" },\n        \"12\": { \"name\": \"constant.other.table-name.sql\" },\n        \"6\": { \"name\": \"keyword.other.create.trigger.mysql.sql\" },\n        \"13\": { \"name\": \"keyword.other.create.trigger.mysql.sql\" },\n        \"7\": { \"name\": \"keyword.other.create.trigger.mysql.sql\" },\n        \"8\": { \"name\": \"keyword.other.create.trigger.mysql.sql\" },\n        \"14\": { \"name\": \"keyword.other.create.trigger.mysql.sql\" },\n        \"1\": { \"name\": \"keyword.other.create.sql\" }\n      }\n    },\n    {\n      \"match\": \"(?i:^\\\\s*(drop)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table(?:\\\\s+if\\\\s+exists)?|tablespace|trigger|type|user|view))\",\n      \"name\": \"meta.drop.sql\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.create.sql\" },\n        \"2\": { \"name\": \"keyword.other.sql\" }\n      }\n    },\n    {\n      \"match\": \"(?i:\\\\s*(drop)\\\\s+(table)\\\\s+(\\\\w+)(\\\\s+cascade)?\\\\b)\",\n      \"name\": \"meta.drop.sql\",\n      \"captures\": {\n        \"3\": { \"name\": \"entity.name.function.sql\" },\n        \"1\": { \"name\": \"keyword.other.create.sql\" },\n        \"4\": { \"name\": \"keyword.other.cascade.sql\" },\n        \"2\": { \"name\": \"keyword.other.table.sql\" }\n      }\n    },\n    {\n      \"match\": \"(?i:^\\\\s*(alter)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\s+)\",\n      \"name\": \"meta.alter.sql\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.create.sql\" },\n        \"2\": { \"name\": \"keyword.other.table.sql\" }\n      }\n    },\n    {\n      \"match\": \"(?xi)\\n\\n\\t\\t\\t\\t# Data Types\\n\\n\\t\\t\\t\\t# Non-suffix types\\n\\t\\t\\t\\t# Capture 1\\n\\t\\t\\t\\t\\\\b(year|time(?:stamp)?|date(?:time)?|(?:long|medium|tiny)?blob)\\\\b\\n\\n\\t\\t\\t\\t# Non-suffix types with optional qualifiers\\n\\t\\t\\t\\t# Capture 2 + 3i\\n\\t\\t\\t\\t|\\\\b((?:long|medium|tiny)?text)\\\\b(?:\\\\((\\\\d+)\\\\))?\\n\\n\\t\\t\\t\\t# Required numeric suffix types\\n\\t\\t\\t\\t# Capture 4 + 5i\\n\\t\\t\\t\\t|\\\\b(varbinary)\\\\((\\\\d+)\\\\)\\n\\n\\t\\t\\t\\t# Required numeric suffix types with optional qualifiers\\n\\t\\t\\t\\t# Capture 6 + 7i + 8o + 9c + 10o + 11c\\n\\t\\t\\t\\t|\\\\b(varchar)\\\\((\\\\d+)\\\\)(?:\\\\s+(char(?:set|acter\\\\sset))\\\\s+([a-zA-Z0-9]+)(?:\\\\s+(collate)\\\\s+([_a-zA-Z0-9]+))?)?\\n\\n\\t\\t\\t\\t# Optianal single numeric suffix\\n\\t\\t\\t\\t# Capture 12 + 13i\\n\\t\\t\\t\\t|\\\\b(bi(?:t|nary))\\\\b(?:\\\\((\\\\d+)\\\\))?\\n\\n\\t\\t\\t\\t# Optional single numeric suffix with optional qualifiers\\n\\t\\t\\t\\t# Capture 14 + 15i + 16l + 17l\\n\\t\\t\\t\\t|\\\\b((?:big|medium|small|tiny)?int|integer|decimal|numeric)\\\\b(?:\\\\((\\\\d+)\\\\))?(?:\\\\s+(unsigned))?(?:\\\\s+(zerofill))?\\n\\n\\t\\t\\t\\t# Optional single numeric suffix with optional qualifiers\\n\\t\\t\\t\\t# Capture 18 + 19i + 20o + 21c + 22o + 23c\\n\\t\\t\\t\\t|\\\\b(char)\\\\b(?:\\\\((\\\\d+)\\\\))?(?:\\\\s+(char(?:set|acter\\\\sset))\\\\s+([a-zA-Z0-9]+)(?:\\\\s+(collate)\\\\s+([_a-zA-Z0-9]+))?)?\\n\\n\\t\\t\\t\\t# Optional double numeric suffix with optional qualifiers\\n\\t\\t\\t\\t# Capture 24 + 25i + 26i + 27l + 28l\\n\\t\\t\\t\\t|\\\\b(numeric|d(?:ouble|ecimal)|float|real)\\\\b(?:\\\\((\\\\d+),\\\\s*(\\\\d+)\\\\))?(?:\\\\s+(unsigned))?(?:\\\\s+(zerofill))?\\n\\n\\t\\t\\t\\t# Required multi-valued suffix with optional qualifiers\\n\\t\\t\\t\\t# Capture 29 + 30x + 31s + 32o + 33c + 34o + 35c\\n\\t\\t\\t\\t|\\\\b(set|enum)\\\\(([^\\\\,\\\\)]+(?:(,\\\\s*)[^\\\\,\\\\)]+)*)\\\\)(?:\\\\s+(char(?:set|acter\\\\sset))\\\\s+([a-zA-Z0-9]+)(?:\\\\s+(collate)\\\\s+([_a-zA-Z0-9]+))?)?\\n            \\n\\t\\t\\t\",\n      \"captures\": {\n        \"3\": { \"name\": \"constant.numeric.sql\" },\n        \"12\": { \"name\": \"storage.type.sql\" },\n        \"21\": { \"name\": \"constant.other.charset.mysql.sql\" },\n        \"4\": { \"name\": \"storage.type.sql\" },\n        \"30\": { \"name\": \"constant.other.user-defined.sql\" },\n        \"13\": { \"name\": \"constant.numeric.sql\" },\n        \"5\": { \"name\": \"constant.numeric.sql\" },\n        \"22\": { \"name\": \"keyword.other.mysql.sql\" },\n        \"6\": { \"name\": \"storage.type.sql\" },\n        \"31\": { \"name\": \"source.sql.mysql\" },\n        \"14\": { \"name\": \"storage.type.sql\" },\n        \"7\": { \"name\": \"constant.numeric.sql\" },\n        \"23\": { \"name\": \"constant.other.charset.mysql.sql\" },\n        \"32\": { \"name\": \"keyword.other.mysql.sql\" },\n        \"15\": { \"name\": \"constant.numeric.sql\" },\n        \"8\": { \"name\": \"keyword.other.mysql.sql\" },\n        \"24\": { \"name\": \"storage.type.sql\" },\n        \"9\": { \"name\": \"constant.other.charset.mysql.sql\" },\n        \"33\": { \"name\": \"constant.other.charset.mysql.sql\" },\n        \"16\": { \"name\": \"constant.language.mysql.sql\" },\n        \"25\": { \"name\": \"constant.numeric.sql\" },\n        \"34\": { \"name\": \"keyword.other.mysql.sql\" },\n        \"17\": { \"name\": \"constant.language.mysql.sql\" },\n        \"26\": { \"name\": \"constant.numeric.sql\" },\n        \"35\": { \"name\": \"constant.other.charset.mysql.sql\" },\n        \"18\": { \"name\": \"storage.type.sql\" },\n        \"27\": { \"name\": \"constant.language.mysql.sql\" },\n        \"19\": { \"name\": \"constant.numeric.sql\" },\n        \"28\": { \"name\": \"constant.language.mysql.sql\" },\n        \"29\": { \"name\": \"storage.type.sql\" },\n        \"10\": { \"name\": \"keyword.other.mysql.sql\" },\n        \"1\": { \"name\": \"storage.type.sql\" },\n        \"11\": { \"name\": \"constant.other.charset.mysql.sql\" },\n        \"2\": { \"name\": \"storage.type.sql\" },\n        \"20\": { \"name\": \"keyword.other.mysql.sql\" }\n      }\n    },\n    {\n      \"match\": \"(?i:\\\\b((?:primary|foreign)\\\\s+key|references|on\\\\sdelete(\\\\s+cascade)?|check|constraint)\\\\b)\",\n      \"name\": \"storage.modifier.sql\"\n    },\n    {\n      \"match\": \"(?ix)\\n\\t\\t\\t\\n\\t\\t\\t        # Column Definitions\\n\\t\\t\\t        \\n\\t\\t\\t        # Capture 1\\n\\t\\t\\t        \\\\b(?:not\\\\s+)?(null)\\\\b\\n\\t\\t\\t        \\n\\t\\t\\t        # Capture\\n\\t\\t\\t        |\\\\b(?:default\\\\s+)\\n\\t\\t\\t        \\n\\t\\t\\t        # Capture\\n\\t\\t\\t        |\\\\bauto_increment\\\\b\\n\\t\\t\\t        \\n\\t\\t\\t        # Capture\\n\\t\\t\\t        |\\\\b(?:unique(?:\\\\s+key)?|(?:primary\\\\s+)?key)\\\\b\\n\\t\\t\\t        \\n\\t\\t\\t        # Capture\\n\\t\\t\\t        |\\\\bcomment\\\\s+\\n\\t\\t\\t        \\n\\t\\t\\t        # Capture 2\\n\\t\\t\\t        |\\\\bcolumn_format\\\\s+(d(?:ynamic|efault)|fixed)\\\\b\\n\\t\\t\\t        \\n\\t\\t\\t        # Capture 3\\n\\t\\t\\t        |\\\\bstorage\\\\s+(d(?:isk|efault)|memory)\\\\b\\n\\t\\t\\t        \\n\\t\\t\\t\",\n      \"name\": \"storage.modifier.mysql.sql\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.language.sql\" },\n        \"2\": { \"name\": \"constant.language.mysql.sql\" },\n        \"3\": { \"name\": \"constant.language.mysql.sql\" }\n      }\n    },\n    { \"match\": \"\\\\b\\\\d+\\\\b\", \"name\": \"constant.numeric.sql\" },\n    {\n      \"match\": \"(?i:\\\\b(select(\\\\s+distinct)?|insert\\\\s+(ignore\\\\s+)?into|update|delete|from|set|where|group\\\\sby|or|like|and|union(\\\\s+all)?|having|order\\\\sby|limit|(inner|cross)\\\\s+join|straight_join|(left|right)(\\\\s+outer)?\\\\s+join|natural(\\\\s+(left|right)(\\\\s+outer)?)?\\\\s+join)\\\\b)\",\n      \"name\": \"keyword.other.DML.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(on|((is\\\\s+)?not\\\\s+)?null)\\\\b)\",\n      \"name\": \"keyword.other.DDL.create.II.sql\"\n    },\n    { \"match\": \"(?i:\\\\bvalues\\\\b)\", \"name\": \"keyword.other.DML.II.sql\" },\n    {\n      \"match\": \"(?i:\\\\b(begin(\\\\s+work)?|start\\\\s+transaction|commit(\\\\s+work)?|rollback(\\\\s+work)?)\\\\b)\",\n      \"name\": \"keyword.other.LUW.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(grant(\\\\swith\\\\sgrant\\\\soption)?|revoke)\\\\b)\",\n      \"name\": \"keyword.other.authorization.sql\"\n    },\n    { \"match\": \"(?i:\\\\bin\\\\b)\", \"name\": \"keyword.other.data-integrity.sql\" },\n    {\n      \"match\": \"(?i:^\\\\s*(comment\\\\s+on\\\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\\\s+.*?\\\\s+(is)\\\\s+)\",\n      \"name\": \"keyword.other.object-comments.sql\"\n    },\n    { \"match\": \"(?i)\\\\bAS\\\\b\", \"name\": \"keyword.other.alias.sql\" },\n    { \"match\": \"(?i)\\\\b(DESC|ASC)\\\\b\", \"name\": \"keyword.other.order.sql\" },\n    { \"match\": \"\\\\*\", \"name\": \"keyword.operator.star.sql\" },\n    { \"match\": \"[!<>]?=|<>|<|>\", \"name\": \"keyword.operator.comparison.sql\" },\n    { \"match\": \"-|\\\\+|/\", \"name\": \"keyword.operator.math.sql\" },\n    { \"match\": \"\\\\|\\\\|\", \"name\": \"keyword.operator.concatenator.sql\" },\n    {\n      \"comment\": \"List of SQL99 built-in functions from http://www.oreilly.com/catalog/sqlnut/chapter/ch04.html\",\n      \"match\": \"(?i)\\\\b(CURRENT_(DATE|TIME(STAMP)?|USER)|(SESSION|SYSTEM)_USER)\\\\b\",\n      \"name\": \"support.function.scalar.sql\"\n    },\n    {\n      \"comment\": \"List of SQL99 built-in functions from http://www.oreilly.com/catalog/sqlnut/chapter/ch04.html\",\n      \"match\": \"(?i)\\\\b(AVG|COUNT|MIN|MAX|SUM)(?=\\\\s*\\\\()\",\n      \"name\": \"support.function.aggregate.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(CONCATENATE|CONVERT|LOWER|SUBSTRING|TRANSLATE|TRIM|UPPER)\\\\b\",\n      \"name\": \"support.function.string.sql\"\n    },\n    {\n      \"match\": \"(?:(?:`?(\\\\w+)`?)\\\\.)?(?:`?(\\\\w+)`?)?\\\\.`?(\\\\w+)`?\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.other.database-name.sql\" },\n        \"2\": { \"name\": \"constant.other.table-name.sql\" },\n        \"3\": { \"name\": \"constant.other.column-name.sql\" }\n      }\n    },\n    { \"include\": \"#strings\" },\n    { \"include\": \"#regexps\" }\n  ],\n  \"name\": \"SQL (MySQL)\",\n  \"scopeName\": \"source.sql.mysql\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/nginx.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\n    \"conf.erb\",\n    \"conf\",\n    \"ngx\",\n    \"nginx.conf\",\n    \"mime.types\",\n    \"fastcgi_params\",\n    \"scgi_params\",\n    \"uwsgi_params\"\n  ],\n  \"foldingStartMarker\": \"\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"^\\\\s*\\\\}\",\n  \"keyEquivalent\": \"^~N\",\n  \"name\": \"nginx\",\n  \"patterns\": [\n    {\n      \"name\": \"comment.line.number-sign\",\n      \"match\": \"\\\\#.*\"\n    },\n    {\n      \"name\": \"meta.context.lua.nginx\",\n      \"begin\": \"\\\\b((?:content|rewrite|access|init_worker|init|set|log|balancer|ssl_(?:client_hello|session_fetch|certificate))_by_lua(?:_block)?)\\\\s*\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"contentName\": \"meta.embedded.block.lua\",\n      \"patterns\": [\n        {\n          \"include\": \"source.lua\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.lua.nginx\",\n      \"begin\": \"\\\\b((?:content|rewrite|access|init_worker|init|set|log|balancer|ssl_(?:client_hello|session_fetch|certificate))_by_lua)\\\\s*'\",\n      \"end\": \"'\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"contentName\": \"meta.embedded.block.lua\",\n      \"patterns\": [\n        {\n          \"include\": \"source.lua\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.events.nginx\",\n      \"begin\": \"\\\\b(events) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.http.nginx\",\n      \"begin\": \"\\\\b(http) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.mail.nginx\",\n      \"begin\": \"\\\\b(mail) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.stream.nginx\",\n      \"begin\": \"\\\\b(stream) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.server.nginx\",\n      \"begin\": \"\\\\b(server) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.location.nginx\",\n      \"begin\": \"\\\\b(location) +([\\\\^]?~[\\\\*]?|=) +(.*?)\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.nginx\"\n        },\n        \"3\": {\n          \"name\": \"string.regexp.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.location.nginx\",\n      \"begin\": \"\\\\b(location) +(.*?)\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.context.location.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.limit_except.nginx\",\n      \"begin\": \"\\\\b(limit_except) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.if.nginx\",\n      \"begin\": \"\\\\b(if) +\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#if_condition\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.upstream.nginx\",\n      \"begin\": \"\\\\b(upstream) +(.*?)\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.context.location.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.types.nginx\",\n      \"begin\": \"\\\\b(types) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.map.nginx\",\n      \"begin\": \"\\\\b(map) +(\\\\$)([A-Za-z0-9\\\\_]+) +(\\\\$)([A-Za-z0-9\\\\_]+) *\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.variable.nginx\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.nginx\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.variable.nginx\"\n        },\n        \"5\": {\n          \"name\": \"variable.other.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        },\n        {\n          \"name\": \"punctuation.terminator.nginx\",\n          \"match\": \";\"\n        },\n        {\n          \"name\": \"comment.line.number-sign\",\n          \"match\": \"\\\\#.*\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.block.nginx\",\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(return)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(rewrite)\\\\s+\",\n      \"end\": \"(last|break|redirect|permanent)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.nginx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(server)\\\\s+\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#server_parameters\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(internal|empty_gif|f4f|flv|hls|mp4|break|status|stub_status|ip_hash|ntlm|least_conn|upstream_conf|least_conn|zone_sync)\\\\b\",\n      \"end\": \"(;|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      }\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(accept_)(mutex|mutex_delay)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(debug_)(connection|points)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(error_)(log|page)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(ssl_)(engine|buffer_size|certificate|certificate_key|ciphers|client_certificate|conf_command|crl|dhparam|early_data|ecdh_curve|ocsp|ocsp_cache|ocsp_responder|password_file|prefer_server_ciphers|protocols|reject_handshake|session_cache|session_ticket_key|session_tickets|session_timeout|stapling|stapling_file|stapling_responder|stapling_verify|trusted_certificate|verify_client|verify_depth|alpn|handshake_timeout|preread)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(worker_)(aio_requests|connections|cpu_affinity|priority|processes|rlimit_core|rlimit_nofile|shutdown_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(auth_)(delay|basic|basic_user_file|jwt|jwt_claim_set|jwt_header_set|jwt_key_file|jwt_key_request|jwt_leeway|jwt_type|jwt_require|request|request_set|http|http_header|http_pass_client_cert|http_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(client_)(body_buffer_size|body_in_file_only|body_in_single_buffer|body_temp_path|body_timeout|header_buffer_size|header_timeout|max_body_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(keepalive_)(disable|requests|time|timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(limit_)(rate|rate_after|conn|conn_dry_run|conn_log_level|conn_status|conn_zone|zone|req|req_dry_run|req_log_level|req_status|req_zone)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(lingering_)(close|time|timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(log_)(not_found|subrequest|format)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(max_)(ranges|errors)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(msie_)(padding|refresh)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(open_)(file_cache|file_cache_errors|file_cache_min_uses|file_cache_valid|log_file_cache)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(send_)(lowat|timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(server_)(name|name_in_redirect|names_hash_bucket_size|names_hash_max_size|tokens)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(tcp_)(nodelay|nopush)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(types_)(hash_bucket_size|hash_max_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(variables_)(hash_bucket_size|hash_max_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(add_)(before_body|after_body|header|trailer)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(status_)(zone|format)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(autoindex_)(exact_size|format|localtime)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(ancient_)(browser|browser_value)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(modern_)(browser|browser_value)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(charset_)(map|types)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(dav_)(access|methods)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(fastcgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|catch_stderr|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|index|intercept_errors|keep_conn|limit_rate|max_temp_file_size|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_lowat|send_timeout|socket_keepalive|split_path_info|store|store_access|temp_file_write_size|temp_path)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(geoip_)(country|city|org|proxy|proxy_recursive)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(grpc_)(bind|buffer_size|connect_timeout|hide_header|ignore_headers|intercept_errors|next_upstream|next_upstream_timeout|next_upstream_tries|pass|pass_header|read_timeout|send_timeout|set_header|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(gzip_)(buffers|comp_level|disable|http_version|min_length|proxied|types|vary|static)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(hls_)(buffers|forward_args|fragment|mp4_buffer_size|mp4_max_buffer_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(image_)(filter|filter_buffer|filter_interlace|filter_jpeg_quality|filter_sharpen|filter_transparency|filter_webp_quality)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(map_)(hash_bucket_size|hash_max_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(memcached_)(bind|buffer_size|connect_timeout|force_ranges|gzip_flag|next_upstream|next_upstream_timeout|next_upstream_tries|pass|read_timeout|send_timeout|socket_keepalive)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(mp4_)(buffer_size|max_buffer_size|limit_rate|limit_rate_after)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(perl_)(modules|require|set)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(proxy_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_convert_head|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|cookie_domain|cookie_flags|cookie_path|force_ranges|headers_hash_bucket_size|headers_hash_max_size|hide_header|http_version|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|method|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|redirect|request_buffering|send_lowat|send_timeout|set_body|set_header|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth|store|store_access|temp_file_write_size|temp_path|buffer|pass_error_message|protocol|smtp_auth|timeout|protocol_timeout|download_rate|half_close|requests|responses|session_drop|ssl|upload_rate)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(real_)(ip_header|ip_recursive)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(referer_)(hash_bucket_size|hash_max_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(scgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_timeout|socket_keepalive|store|store_access|temp_file_write_size|temp_path)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(secure_)(link|link_md5|link_secret)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(session_)(log|log_format|log_zone)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(spdy_)(chunk_size|headers_comp)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(ssi_)(last_modified|min_file_chunk|silent_errors|types|value_length)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(sub_)(filter|filter_last_modified|filter_once|filter_types)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(health_)(check|check_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(userid_)(domain|expires|flags|mark|name|p3p|path|service)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(uwsgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|modifier1|modifier2|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_timeout|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth|store|store_access|temp_file_write_size|temp_path)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(http2_)(body_preread_size|chunk_size|idle_timeout|max_concurrent_pushes|max_concurrent_streams|max_field_size|max_header_size|max_requests|push|push_preload|recv_buffer_size|recv_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(xslt_)(last_modified|param|string_param|stylesheet|types)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(imap_)(auth|capabilities|client_buffer)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(pop3_)(auth|capabilities)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(smtp_)(auth|capabilities|client_buffer|greeting_delay)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(preread_)(buffer_size|timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(zone_)(sync_buffers|sync_connect_retry_interval|sync_connect_timeout|sync_interval|sync_recv_buffer_size|sync_server|sync_ssl|sync_ssl_certificate|sync_ssl_certificate_key|sync_ssl_ciphers|sync_ssl_conf_command|sync_ssl_crl|sync_ssl_name|sync_ssl_password_file|sync_ssl_protocols|sync_ssl_server_name|sync_ssl_trusted_certificate|sync_ssl_verify|sync_ssl_verify_depth|sync_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(js_)(body_filter|content|fetch_ciphers|fetch_protocols|fetch_trusted_certificate|fetch_verify_depth|header_filter|import|include|path|set|var|access|filter|preread)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(daemon|env|include|pid|use|user|aio|alias|directio|etag|listen|resolver|root|satisfy|sendfile|allow|deny|api|autoindex|charset|geo|gunzip|gzip|expires|index|keyval|mirror|perl|set|slice|ssi|ssl|zone|state|hash|keepalive|queue|random|sticky|match|userid|protocol|timeout|xclient|starttls|load_module|lock_file|master_process|multi_accept|pcre_jit|thread_pool|timer_resolution|working_directory|absolute_redirect|aio_write|chunked_transfer_encoding|connection_pool_size|default_type|directio_alignment|disable_symlinks|if_modified_since|ignore_invalid_headers|large_client_header_buffers|merge_slashes|output_buffers|port_in_redirect|postpone_output|read_ahead|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver_timeout|sendfile_max_chunk|subrequest_output_buffer_size|try_files|underscores_in_headers|addition_types|override_charset|source_charset|create_full_put_path|min_delete_depth|f4f_buffer_size|gunzip_buffers|keyval_zone|access_log|mirror_request_body|random_index|set_real_ip_from|valid_referers|rewrite_log|uninitialized_variable_warn|split_clients|least_time|sticky_cookie_insert|xml_entities|google_perftools_profiles)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b([a-zA-Z0-9\\\\_]+)\\\\s+\",\n      \"end\": \"(;|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.unknown.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b([a-z]+\\\\/[A-Za-z0-9\\\\-\\\\.\\\\+]+)\\\\b\",\n      \"end\": \"(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.other.mediatype.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"if_condition\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"name\": \"keyword.operator.nginx\",\n          \"match\": \"\\\\!?\\\\~\\\\*?\\\\s\"\n        },\n        {\n          \"name\": \"keyword.operator.nginx\",\n          \"match\": \"\\\\!?\\\\-[fdex]\\\\s\"\n        },\n        {\n          \"name\": \"keyword.operator.nginx\",\n          \"match\": \"\\\\!?=[^=]\"\n        },\n        {\n          \"include\": \"#regexp_and_string\"\n        }\n      ]\n    },\n    \"server_parameters\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:^|\\\\s)(weight|max_conn|max_fails|fail_timeout|slow_start)(=)([0-9][0-9\\\\.]*[bBkKmMgGtTsShHdD]?)(?:\\\\s|;|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.nginx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nginx\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.nginx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\$)([A-Za-z0-9\\\\_]+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.nginx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.nginx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\$\\\\{)([A-Za-z0-9\\\\_]+)(\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.nginx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.nginx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.nginx\"\n            }\n          }\n        }\n      ]\n    },\n    \"regexp_and_string\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.nginx\",\n          \"match\": \"\\\\^.*?\\\\$\"\n        },\n        {\n          \"name\": \"string.quoted.double.nginx\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.nginx\",\n              \"match\": \"\\\\\\\\[\\\"'nt\\\\\\\\]\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.nginx\",\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.nginx\",\n              \"match\": \"\\\\\\\\[\\\"'nt\\\\\\\\]\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"name\": \"comment.line.number-sign\",\n          \"match\": \"\\\\#.*\"\n        },\n        {\n          \"match\": \"[\\\\t ](=?[0-9][0-9\\\\.]*[bBkKmMgGtTsShHdD]?)(?=[\\\\t ;])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.nginx\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.language.nginx\",\n          \"match\": \"[\\\\t ](on|off|true|false)(?=[\\\\t ;])\"\n        },\n        {\n          \"name\": \"constant.language.nginx\",\n          \"match\": \"[\\\\t ](kqueue|rtsig|epoll|\\\\/dev\\\\/poll|select|poll|eventport|max|all|default_server|default|main|crit|error|debug|warn|notice|last)(?=[\\\\t ;])\"\n        },\n        {\n          \"name\": \"keyword.operator.nginx\",\n          \"match\": \"\\\\\\\\.*\\\\ |\\\\~\\\\*|\\\\~|\\\\!\\\\~\\\\*|\\\\!\\\\~\"\n        },\n        {\n          \"include\": \"#regexp_and_string\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.nginx\",\n  \"uuid\": \"0C04066A-12D2-43CA-8238-00A12CE4C12D\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/nim.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"nim\"],\n  \"keyEquivalent\": \"^~N\",\n  \"name\": \"nim\",\n  \"patterns\": [\n    {\n      \"begin\": \"[ \\\\t]*##\\\\[\",\n      \"contentName\": \"comment.block.doc-comment.content.nim\",\n      \"end\": \"\\\\]##\",\n      \"name\": \"comment.block.doc-comment.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#multilinedoccomment\",\n          \"name\": \"comment.block.doc-comment.nested.nim\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"[ \\\\t]*#\\\\[\",\n      \"contentName\": \"comment.block.content.nim\",\n      \"end\": \"\\\\]#\",\n      \"name\": \"comment.block.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#multilinecomment\",\n          \"name\": \"comment.block.nested.nim\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=##)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"##\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.nim\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.doc-comment.nim\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#[^\\\\[])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.nim\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.nim\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"A nim procedure or method\",\n      \"name\": \"meta.proc.nim\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(proc|method|template|macro|iterator|converter|func)\\\\s+\\\\`?([^\\\\:\\\\{\\\\s\\\\`\\\\*\\\\(]*)\\\\`?(\\\\s*\\\\*)?\\\\s*(?=\\\\(|\\\\=|:|\\\\[|\\\\n|\\\\{)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.nim\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.export\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.nim\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"discard \\\"\\\"\\\"\",\n      \"comment\": \"A discarded triple string literal comment\",\n      \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n      \"name\": \"comment.line.discarded.nim\"\n    },\n    {\n      \"include\": \"#float_literal\"\n    },\n    {\n      \"include\": \"#integer_literal\"\n    },\n    {\n      \"comment\": \"Operator as function name\",\n      \"match\": \"(?<=\\\\`)[^\\\\` ]+(?=\\\\`)\",\n      \"name\": \"entity.name.function.nim\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export\"\n        }\n      },\n      \"comment\": \"Export qualifier.\",\n      \"match\": \"\\\\b\\\\s*(\\\\*)(?:\\\\s*(?=[,:])|\\\\s+(?=[=]))\"\n    },\n    {\n      \"comment\": \"Export qualifier following a type def.\",\n      \"match\": \"\\\\b([A-Z]\\\\w+)(\\\\*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.nim\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.export\"\n        }\n      }\n    },\n    {\n      \"include\": \"#string_literal\"\n    },\n    {\n      \"comment\": \"Language Constants.\",\n      \"match\": \"\\\\b(true|false|Inf|NegInf|NaN|nil)\\\\b\",\n      \"name\": \"constant.language.nim\"\n    },\n    {\n      \"comment\": \"Keywords that affect program control flow or scope.\",\n      \"match\": \"\\\\b(block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\\\b\",\n      \"name\": \"keyword.control.nim\"\n    },\n    {\n      \"comment\": \"Keyword boolean operators for expressions.\",\n      \"match\": \"(\\\\b(and|in|is|isnot|not|notin|or|xor)\\\\b)\",\n      \"name\": \"keyword.boolean.nim\"\n    },\n    {\n      \"comment\": \"Generic operators for expressions.\",\n      \"match\": \"(=|\\\\+|-|\\\\*|/|<|>|@|\\\\$|~|&|%|!|\\\\?|\\\\^|\\\\.|:|\\\\\\\\)+\",\n      \"name\": \"keyword.operator.nim\"\n    },\n    {\n      \"comment\": \"Other keywords.\",\n      \"match\": \"(\\\\b(addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template)\\\\b)\",\n      \"name\": \"keyword.other.nim\"\n    },\n    {\n      \"comment\": \"Invalid and unused keywords.\",\n      \"match\": \"(\\\\b(generic|interface|lambda|out|shared)\\\\b)\",\n      \"name\": \"invalid.illegal.invalid-keyword.nim\"\n    },\n    {\n      \"comment\": \"Common functions\",\n      \"match\": \"\\\\b(new|await|assert|echo|defined|declared|newException|countup|countdown|high|low)\\\\b\",\n      \"name\": \"keyword.other.common.function.nim\"\n    },\n    {\n      \"comment\": \"Built-in, concrete types.\",\n      \"match\": \"\\\\b(((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed)\\\\b\",\n      \"name\": \"storage.type.concrete.nim\"\n    },\n    {\n      \"comment\": \"Built-in, generic types.\",\n      \"match\": \"\\\\b(range|array|seq|set|pointer)\\\\b\",\n      \"name\": \"storage.type.generic.nim\"\n    },\n    {\n      \"comment\": \"Special types.\",\n      \"match\": \"\\\\b(openarray|varargs|void)\\\\b\",\n      \"name\": \"storage.type.generic.nim\"\n    },\n    {\n      \"comment\": \"Other constants.\",\n      \"match\": \"\\\\b[A-Z][A-Z0-9_]+\\\\b\",\n      \"name\": \"support.constant.nim\"\n    },\n    {\n      \"comment\": \"Other types.\",\n      \"match\": \"\\\\b[A-Z]\\\\w+\\\\b\",\n      \"name\": \"support.type.nim\"\n    },\n    {\n      \"comment\": \"Function call.\",\n      \"match\": \"\\\\b\\\\w+\\\\b(?=(\\\\[([a-zA-Z0-9_,]|\\\\s)+\\\\])?\\\\()\",\n      \"name\": \"support.function.any-method.nim\"\n    },\n    {\n      \"comment\": \"Function call (no parenthesis).\",\n      \"match\": \"(?!(openarray|varargs|void|range|array|seq|set|pointer|new|await|assert|echo|defined|declared|newException|countup|countdown|high|low|((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed|addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template|and|in|is|isnot|not|notin|or|xor|proc|method|template|macro|iterator|converter|func|true|false|Inf|NegInf|NaN|nil|block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\\\b)\\\\w+\\\\s+(?!(and|in|is|isnot|not|notin|or|xor|[^a-zA-Z0-9_\\\"'`(-+]+)\\\\b)(?=[a-zA-Z0-9_\\\"'`(-+])\",\n      \"name\": \"support.function.any-method.nim\"\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=\\\\{\\\\.emit: ?\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\\\\.(emit:) ?(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.c\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")(\\\\.{0,1}\\\\})?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.c\"\n            }\n          },\n          \"name\": \"meta.embedded.block.c\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\`\",\n              \"end\": \"\\\\`\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.c\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\{\\\\.\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.pragma.start.nim\"\n        }\n      },\n      \"end\": \"\\\\.?\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.pragma.end.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b([[:alpha:]]\\\\w*)(?:\\\\s|\\\\s*:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            }\n          },\n          \"end\": \"(?=\\\\.?\\\\}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.nim\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b([[:alpha:]]\\\\w*)\\\\(\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.nim\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b([[:alpha:]]\\\\w*)(?=\\\\.?\\\\}|,)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\b([[:alpha:]]\\\\w*)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.nim\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.nim\"\n            }\n          },\n          \"name\": \"string.quoted.triple.raw.nim\"\n        },\n        {\n          \"begin\": \"\\\\b([[:alpha:]]\\\\w*)(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.nim\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.nim\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.nim\"\n        },\n        {\n          \"begin\": \"\\\\b(hint\\\\[\\\\w+\\\\]):\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            }\n          },\n          \"end\": \"(?=\\\\.?\\\\}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.nim\"\n            }\n          ]\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.comma.nim\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=asm \\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(asm) (\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.asm\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.asm\"\n            }\n          },\n          \"name\": \"meta.embedded.block.asm\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\`\",\n              \"end\": \"\\\\`\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.asm\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.nim\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.nim\"\n        }\n      },\n      \"comment\": \"tmpl specifier\",\n      \"match\": \"(tmpl(i)?)(?=( (html|xml|js|css|glsl|md))?\\\"\\\"\\\")\"\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=html\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(html)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"text.html\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=xml\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(xml)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"text.xml\"\n            }\n          },\n          \"name\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=js\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(js)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.js\"\n            }\n          },\n          \"name\": \"meta.embedded.block.js\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=css\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(css)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.css\"\n            }\n          },\n          \"name\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=glsl\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(glsl)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.glsl\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.glsl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.glsl\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.glsl\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=md\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(md)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"text.html.markdown\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"text.html.markdown\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html.markdown\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"multilinecomment\": {\n      \"begin\": \"#\\\\[\",\n      \"end\": \"\\\\]#\",\n      \"patterns\": [\n        {\n          \"include\": \"#multilinecomment\"\n        }\n      ]\n    },\n    \"multilinedoccomment\": {\n      \"begin\": \"##\\\\[\",\n      \"end\": \"\\\\]##\",\n      \"patterns\": [\n        {\n          \"include\": \"#multilinedoccomment\"\n        }\n      ]\n    },\n    \"char_escapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[cC]|\\\\\\\\[rR]\",\n          \"name\": \"constant.character.escape.carriagereturn.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[lL]|\\\\\\\\[nN]\",\n          \"name\": \"constant.character.escape.linefeed.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[fF]\",\n          \"name\": \"constant.character.escape.formfeed.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[tT]\",\n          \"name\": \"constant.character.escape.tabulator.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[vV]\",\n          \"name\": \"constant.character.escape.verticaltabulator.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\"\",\n          \"name\": \"constant.character.escape.double-quote.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\'\",\n          \"name\": \"constant.character.escape.single-quote.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[0-9]+\",\n          \"name\": \"constant.character.escape.chardecimalvalue.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[aA]\",\n          \"name\": \"constant.character.escape.alert.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[bB]\",\n          \"name\": \"constant.character.escape.backspace.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[eE]\",\n          \"name\": \"constant.character.escape.escape.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[xX]\\\\h\\\\h\",\n          \"name\": \"constant.character.escape.hex.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.backslash.nim\"\n        }\n      ]\n    },\n    \"string_escapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[pP]\",\n          \"name\": \"constant.character.escape.newline.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[uU]\\\\h\\\\h\\\\h\\\\h\",\n          \"name\": \"constant.character.escape.hex.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[uU]\\\\{\\\\h+\\\\}\",\n          \"name\": \"constant.character.escape.hex.nim\"\n        },\n        {\n          \"include\": \"#char_escapes\"\n        }\n      ]\n    },\n    \"raw_string_escapes\": {\n      \"match\": \"[^\\\"](\\\"\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.double-quote.nim\"\n        }\n      }\n    },\n    \"fmt_interpolation\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.nim\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \":\",\n          \"end\": \"(?=\\\\})\",\n          \"name\": \"meta.template.format-specifier.nim\"\n        },\n        {\n          \"include\": \"source.nim\"\n        }\n      ],\n      \"name\": \"meta.template.expression.nim\"\n    },\n    \"string_literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fmt_string_triple\"\n        },\n        {\n          \"include\": \"#fmt_string_triple_operator\"\n        },\n        {\n          \"include\": \"#extended_string_quoted_triple_raw\"\n        },\n        {\n          \"include\": \"#string_quoted_triple_raw\"\n        },\n        {\n          \"include\": \"#fmt_string_operator\"\n        },\n        {\n          \"include\": \"#fmt_string\"\n        },\n        {\n          \"include\": \"#fmt_string_call\"\n        },\n        {\n          \"include\": \"#string_quoted_double_raw\"\n        },\n        {\n          \"include\": \"#extended_string_quoted_double_raw\"\n        },\n        {\n          \"include\": \"#string_quoted_single\"\n        },\n        {\n          \"include\": \"#string_quoted_triple\"\n        },\n        {\n          \"include\": \"#string_quoted_double\"\n        }\n      ]\n    },\n    \"fmt_string\": {\n      \"begin\": \"\\\\b(fmt)(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.raw.nim\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\")\\\"(?!\\\")\",\n          \"name\": \"invalid.illegal.nim\"\n        },\n        {\n          \"include\": \"#raw_string_escapes\"\n        },\n        {\n          \"include\": \"#fmt_interpolation\"\n        }\n      ]\n    },\n    \"fmt_string_triple\": {\n      \"begin\": \"\\\\b(fmt)(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.raw.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#fmt_interpolation\"\n        }\n      ]\n    },\n    \"fmt_string_operator\": {\n      \"begin\": \"(&)(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.nim\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\"\",\n          \"name\": \"invalid.illegal.nim\"\n        },\n        {\n          \"include\": \"#string_escapes\"\n        },\n        {\n          \"include\": \"#fmt_interpolation\"\n        }\n      ]\n    },\n    \"fmt_string_triple_operator\": {\n      \"begin\": \"(&)(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.raw.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#fmt_interpolation\"\n        }\n      ]\n    },\n    \"fmt_string_call\": {\n      \"begin\": \"(fmt)\\\\((?=\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.nim\"\n            }\n          },\n          \"end\": \"\\\"(?=\\\\))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.nim\"\n            }\n          },\n          \"name\": \"string.quoted.double.nim\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"\",\n              \"name\": \"invalid.illegal.nim\"\n            },\n            {\n              \"include\": \"#string_escapes\"\n            },\n            {\n              \"include\": \"#fmt_interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string_quoted_double\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"comment\": \"Double Quoted String\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escapes\"\n        }\n      ]\n    },\n    \"string_quoted_double_raw\": {\n      \"begin\": \"\\\\br\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.raw.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#raw_string_escapes\"\n        }\n      ]\n    },\n    \"extended_string_quoted_double_raw\": {\n      \"begin\": \"\\\\b(\\\\w+)(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.raw.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#raw_string_escapes\"\n        }\n      ]\n    },\n    \"string_quoted_single\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"comment\": \"Single quoted character literal\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.single.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#char_escapes\"\n        },\n        {\n          \"match\": \"([^']{2,}?)\",\n          \"name\": \"invalid.illegal.character.nim\"\n        }\n      ]\n    },\n    \"string_quoted_triple\": {\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"comment\": \"Triple Quoted String\",\n      \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.nim\"\n    },\n    \"string_quoted_triple_raw\": {\n      \"begin\": \"r\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"comment\": \"Raw Triple Quoted String\",\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.raw.nim\"\n    },\n    \"extended_string_quoted_triple_raw\": {\n      \"begin\": \"\\\\b(\\\\w+)(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.raw.nim\"\n    },\n    \"float_literal\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b\\\\d[_\\\\d]*((\\\\.\\\\d[_\\\\d]*([eE][\\\\+\\\\-]?\\\\d[_\\\\d]*)?)|([eE][\\\\+\\\\-]?\\\\d[_\\\\d]*))('([fF](32|64|128)|[fFdD]))?\",\n          \"name\": \"constant.numeric.float.decimal.nim\"\n        },\n        {\n          \"match\": \"\\\\b0[xX]\\\\h[_\\\\h]*'([fF](32|64|128)|[fFdD])\",\n          \"name\": \"constant.numeric.float.hexadecimal.nim\"\n        },\n        {\n          \"match\": \"\\\\b0o[0-7][_0-7]*'([fF](32|64|128)|[fFdD])\",\n          \"name\": \"constant.numeric.float.octal.nim\"\n        },\n        {\n          \"match\": \"\\\\b0(b|B)[01][_01]*'([fF](32|64|128)|[fFdD])\",\n          \"name\": \"constant.numeric.float.binary.nim\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d[_\\\\d]*)'([fF](32|64|128)|[fFdD])\",\n          \"name\": \"constant.numeric.float.decimal.nim\"\n        }\n      ]\n    },\n    \"integer_literal\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(0[xX]\\\\h[_\\\\h]*)('(([iIuU](8|16|32|64))|[uU]))?\",\n          \"name\": \"constant.numeric.integer.hexadecimal.nim\"\n        },\n        {\n          \"match\": \"\\\\b(0o[0-7][_0-7]*)('(([iIuU](8|16|32|64))|[uU]))?\",\n          \"name\": \"constant.numeric.integer.octal.nim\"\n        },\n        {\n          \"match\": \"\\\\b(0(b|B)[01][_01]*)('(([iIuU](8|16|32|64))|[uU]))?\",\n          \"name\": \"constant.numeric.integer.binary.nim\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d[_\\\\d]*)('(([iIuU](8|16|32|64))|[uU]))?\",\n          \"name\": \"constant.numeric.integer.decimal.nim\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.nim\",\n  \"uuid\": \"6DD62CE8-B129-4554-BD8E-CE5DB490E5A4\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/nix.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"nix\"],\n  \"name\": \"nix\",\n  \"patterns\": [\n    {\n      \"include\": \"#expression\"\n    }\n  ],\n  \"repository\": {\n    \"attribute-bind\": {\n      \"patterns\": [\n        {\n          \"include\": \"#attribute-name\"\n        },\n        {\n          \"include\": \"#attribute-bind-from-equals\"\n        }\n      ]\n    },\n    \"attribute-bind-from-equals\": {\n      \"begin\": \"\\\\=\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.bind.nix\"\n        }\n      },\n      \"end\": \"\\\\;\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.bind.nix\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"attribute-inherit\": {\n      \"begin\": \"\\\\binherit\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.inherit.nix\"\n        }\n      },\n      \"end\": \"\\\\;\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.inherit.nix\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.arguments.nix\"\n            }\n          },\n          \"end\": \"(?=\\\\;)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.function.arguments.nix\"\n                }\n              },\n              \"end\": \"(?=\\\\;)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#bad-reserved\"\n                },\n                {\n                  \"include\": \"#attribute-name-single\"\n                },\n                {\n                  \"include\": \"#others\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=[a-zA-Z\\\\_])\",\n          \"end\": \"(?=\\\\;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#bad-reserved\"\n            },\n            {\n              \"include\": \"#attribute-name-single\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"attribute-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n          \"name\": \"entity.other.attribute-name.multipart.nix\"\n        },\n        {\n          \"match\": \"\\\\.\"\n        },\n        {\n          \"include\": \"#string-quoted\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"attribute-name-single\": {\n      \"match\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n      \"name\": \"entity.other.attribute-name.single.nix\"\n    },\n    \"attrset-contents\": {\n      \"patterns\": [\n        {\n          \"include\": \"#attribute-inherit\"\n        },\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"include\": \"#attribute-bind\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"attrset-definition\": {\n      \"begin\": \"(?=\\\\{)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.attrset.nix\"\n            }\n          },\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.attrset.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attrset-contents\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\})\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attrset-definition-brace-opened\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\})\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=.?)\",\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.attrset.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attrset-contents\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attrset-for-sure\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\brec\\\\b)\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\brec\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.other.nix\"\n                }\n              },\n              \"end\": \"(?=\\\\{)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#others\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#attrset-definition\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\{\\\\s*(\\\\}|[^,?]*(=|;)))\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#attrset-definition\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attrset-or-function\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.attrset-or-function.nix\"\n        }\n      },\n      \"end\": \"(?=([\\\\])};]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=(\\\\s*\\\\}|\\\\\\\"|\\\\binherit\\\\b|\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*(\\\\s*\\\\.|\\\\s*=[^=])))\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#attrset-definition-brace-opened\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=(\\\\.\\\\.\\\\.|\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\\\\s*[,?]))\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-definition-brace-opened\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"begin\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter.function.maybe.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=\\\\.)\",\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attrset-definition-brace-opened\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\s*(\\\\,)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nix\"\n                }\n              },\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-definition-brace-opened\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=\\\\=)\",\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute-bind-from-equals\"\n                },\n                {\n                  \"include\": \"#attrset-definition-brace-opened\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=\\\\?)\",\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-parameter-default\"\n                },\n                {\n                  \"begin\": \"\\\\,\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"keyword.operator.nix\"\n                    }\n                  },\n                  \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#function-definition-brace-opened\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"bad-reserved\": {\n      \"match\": \"\\\\b(if|then|else|assert|with|let|in|rec|inherit)\\\\b\",\n      \"name\": \"invalid.illegal.reserved.nix\"\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*([^*]|\\\\*[^\\\\/])*\",\n          \"end\": \"\\\\*\\\\/\",\n          \"name\": \"comment.block.nix\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-remark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\#\",\n          \"end\": \"$\",\n          \"name\": \"comment.line.number-sign.nix\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-remark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comment-remark\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"markup.bold.comment.nix\"\n        }\n      },\n      \"match\": \"(TODO|FIXME|BUG|\\\\!\\\\!\\\\!):?\"\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(builtins|true|false|null)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"constant.language.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(scopedImport|import|isNull|abort|throw|baseNameOf|dirOf|removeAttrs|map|toString|derivationStrict|derivation)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b[0-9]+\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#parens-and-cont\"\n        },\n        {\n          \"include\": \"#list-and-cont\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#with-assert\"\n        },\n        {\n          \"include\": \"#function-for-sure\"\n        },\n        {\n          \"include\": \"#attrset-for-sure\"\n        },\n        {\n          \"include\": \"#attrset-or-function\"\n        },\n        {\n          \"include\": \"#let\"\n        },\n        {\n          \"include\": \"#if\"\n        },\n        {\n          \"include\": \"#operator-unary\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"include\": \"#parameter-name-and-cont\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"expression-cont\": {\n      \"begin\": \"(?=.?)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#function-for-sure\"\n        },\n        {\n          \"include\": \"#attrset-for-sure\"\n        },\n        {\n          \"include\": \"#attrset-or-function\"\n        },\n        {\n          \"match\": \"(\\\\bor\\\\b|\\\\.|==|!=|!|\\\\<\\\\=|\\\\<|\\\\>\\\\=|\\\\>|&&|\\\\|\\\\||-\\\\>|//|\\\\?|\\\\+\\\\+|-|\\\\*|/(?=([^*]|$))|\\\\+)\",\n          \"name\": \"keyword.operator.nix\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-body\": {\n      \"begin\": \"(@\\\\s*([a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*)\\\\s*)?(\\\\:)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-body-from-colon\": {\n      \"begin\": \"(\\\\:)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.function.nix\"\n        }\n      },\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-contents\": {\n      \"patterns\": [\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"include\": \"#function-parameter\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-definition\": {\n      \"begin\": \"(?=.?)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-body-from-colon\"\n        },\n        {\n          \"begin\": \"(?=.?)\",\n          \"end\": \"(?=\\\\:)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.parameter.function.4.nix\"\n                }\n              },\n              \"end\": \"(?=\\\\:)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\@\",\n                  \"end\": \"(?=\\\\:)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#function-header-until-colon-no-arg\"\n                    },\n                    {\n                      \"include\": \"#others\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#others\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=\\\\{)\",\n              \"end\": \"(?=\\\\:)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-header-until-colon-with-arg\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-definition-brace-opened\": {\n      \"begin\": \"(?=.?)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-body-from-colon\"\n        },\n        {\n          \"begin\": \"(?=.?)\",\n          \"end\": \"(?=\\\\:)\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-header-close-brace-with-arg\"\n            },\n            {\n              \"begin\": \"(?=.?)\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-contents\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-for-sure\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=(\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\\\\s*[:@]|\\\\{[^}]*\\\\}\\\\s*:|\\\\{[^#}\\\"'/=]*[,\\\\?]))\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-definition\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-header-close-brace-no-arg\": {\n      \"begin\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.entity.function.nix\"\n        }\n      },\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-header-close-brace-with-arg\": {\n      \"begin\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.entity.function.nix\"\n        }\n      },\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-header-terminal-arg\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-header-open-brace\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.entity.function.2.nix\"\n        }\n      },\n      \"end\": \"(?=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-contents\"\n        }\n      ]\n    },\n    \"function-header-terminal-arg\": {\n      \"begin\": \"(?=@)\",\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\@\",\n          \"end\": \"(?=\\\\:)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*)\",\n              \"end\": \"(?=\\\\:)\",\n              \"name\": \"variable.parameter.function.3.nix\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-header-until-colon-no-arg\": {\n      \"begin\": \"(?=\\\\{)\",\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-header-open-brace\"\n        },\n        {\n          \"include\": \"#function-header-close-brace-no-arg\"\n        }\n      ]\n    },\n    \"function-header-until-colon-with-arg\": {\n      \"begin\": \"(?=\\\\{)\",\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-header-open-brace\"\n        },\n        {\n          \"include\": \"#function-header-close-brace-with-arg\"\n        }\n      ]\n    },\n    \"function-parameter\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\.\\\\.\\\\.)\",\n          \"end\": \"(,|(?=\\\\}))\",\n          \"name\": \"keyword.operator.nix\",\n          \"patterns\": [\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter.function.1.nix\"\n            }\n          },\n          \"end\": \"(,|(?=\\\\}))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#whitespace\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-parameter-default\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-parameter-default\": {\n      \"begin\": \"\\\\?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.nix\"\n        }\n      },\n      \"end\": \"(?=[,}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"if\": {\n      \"begin\": \"(?=\\\\bif\\\\b)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bif\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"\\\\bth(?=en\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=th)en\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"\\\\bel(?=se\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=el)se\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"illegal\": {\n      \"match\": \".\",\n      \"name\": \"invalid.illegal\"\n    },\n    \"interpolation\": {\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.nix\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.nix\"\n        }\n      },\n      \"name\": \"markup.italic\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"let\": {\n      \"begin\": \"(?=\\\\blet\\\\b)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\blet\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(in|else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=\\\\{)\",\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attrset-contents\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(^|(?<=\\\\}))\",\n                  \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#expression-cont\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#others\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#attrset-contents\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\bin\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"list\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.list.nix\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.list.nix\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"list-and-cont\": {\n      \"begin\": \"(?=\\\\[)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#expression-cont\"\n        }\n      ]\n    },\n    \"operator-unary\": {\n      \"match\": \"(!|-)\",\n      \"name\": \"keyword.operator.unary.nix\"\n    },\n    \"others\": {\n      \"patterns\": [\n        {\n          \"include\": \"#whitespace\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#illegal\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"variable.parameter.name.nix\"\n        }\n      },\n      \"match\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\"\n    },\n    \"parameter-name-and-cont\": {\n      \"begin\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.parameter.name.nix\"\n        }\n      },\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression-cont\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.expression.nix\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.expression.nix\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"parens-and-cont\": {\n      \"begin\": \"(?=\\\\()\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#expression-cont\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\'\\\\')\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\'\\\\'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.other.start.nix\"\n                }\n              },\n              \"end\": \"\\\\'\\\\'(?!\\\\$|\\\\'|\\\\\\\\.)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.other.end.nix\"\n                }\n              },\n              \"name\": \"string.quoted.other.nix\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\'\\\\'(\\\\$|\\\\'|\\\\\\\\.)\",\n                  \"name\": \"constant.character.escape.nix\"\n                },\n                {\n                  \"include\": \"#interpolation\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\\\\")\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-quoted\"\n            },\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([a-zA-Z0-9\\\\.\\\\_\\\\-\\\\+]*(\\\\/[a-zA-Z0-9\\\\.\\\\_\\\\-\\\\+]+)+)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.unquoted.path.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\<[a-zA-Z0-9\\\\.\\\\_\\\\-\\\\+]+(\\\\/[a-zA-Z0-9\\\\.\\\\_\\\\-\\\\+]+)*\\\\>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.unquoted.spath.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([a-zA-Z][a-zA-Z0-9\\\\+\\\\-\\\\.]*\\\\:[a-zA-Z0-9\\\\%\\\\/\\\\?\\\\:\\\\@\\\\&\\\\=\\\\+\\\\$\\\\,\\\\-\\\\_\\\\.\\\\!\\\\~\\\\*\\\\']+)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.unquoted.url.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-quoted\": {\n      \"begin\": \"\\\\\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.double.start.nix\"\n        }\n      },\n      \"end\": \"\\\\\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.double.end.nix\"\n        }\n      },\n      \"name\": \"string.quoted.double.nix\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.nix\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"whitespace\": {\n      \"match\": \"\\\\s+\"\n    },\n    \"with-assert\": {\n      \"begin\": \"\\\\b(with|assert)\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.nix\"\n        }\n      },\n      \"end\": \"\\\\;\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.nix\",\n  \"uuid\": \"0514fd5f-acb6-436d-b42c-7643e6d36c8f\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/nsis.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.nsis\",\n  \"fileTypes\": [\"nsi\", \"nsh\"],\n  \"patterns\": [\n    {\n      \"match\": \"(\\\\b|^\\\\s*)\\\\!(include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\\\\b\",\n      \"name\": \"keyword.compiler.nsis\"\n    },\n    {\n      \"match\": \"(\\\\b|^\\\\s*)(Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetPluginUnload|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegStr|WriteUninstaller|XPStyle)\\\\b\",\n      \"name\": \"keyword.command.nsis\"\n    },\n    {\n      \"match\": \"(\\\\b|^\\\\s*)\\\\!(ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\\\\b\",\n      \"name\": \"keyword.control.nsis\"\n    },\n    { \"match\": \"(\\\\b|^\\\\s*)(?i)\\\\w+\\\\:\\\\:\\\\w+\", \"name\": \"keyword.plugin.nsis\" },\n    { \"match\": \"[!<>]?=|<>|<|>\", \"name\": \"keyword.operator.comparison.nsis\" },\n    {\n      \"match\": \"(\\\\b|^\\\\s*)(Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|SubSection|SubSectionEnd|PageEx|PageExEnd)\\\\b\",\n      \"name\": \"support.function.nsis\"\n    },\n    {\n      \"match\": \"(\\\\b|^\\\\s*)(?i)(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\\\\b\",\n      \"name\": \"support.constant.nsis\"\n    },\n    {\n      \"match\": \"\\\\b(true|on)\\\\b\",\n      \"name\": \"constant.language.boolean.true.nsis\"\n    },\n    {\n      \"match\": \"\\\\b(false|off)\\\\b\",\n      \"name\": \"constant.language.boolean.false.nsis\"\n    },\n    {\n      \"match\": \"(\\\\b|^\\\\s*)(?i)((un\\\\.)?components|(un\\\\.)?custom|(un\\\\.)?directory|(un\\\\.)?instfiles|(un\\\\.)?license|uninstConfirm|admin|all|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|zlib)\\\\b\",\n      \"name\": \"constant.language.option.nsis\"\n    },\n    {\n      \"match\": \"\\\\/(?i)(a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING\\\\=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID\\\\=|ITALIC|LANG\\\\=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname\\\\=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\\\\b\",\n      \"name\": \"constant.language.slash-option.nsis\"\n    },\n    {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\\\\.[0-9]+)?))\\\\b\",\n      \"name\": \"constant.numeric.nsis\"\n    },\n    { \"match\": \"\\\\${[\\\\w]+}\", \"name\": \"entity.name.function.nsis\" },\n    { \"match\": \"\\\\$[\\\\w]+\", \"name\": \"storage.type.function.nsis\" },\n    {\n      \"begin\": \"`\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.nsis\" }\n      },\n      \"end\": \"`\",\n      \"patterns\": [\n        { \"match\": \"\\\\$\\\\\\\\.\", \"name\": \"constant.character.escape.nsis\" }\n      ],\n      \"name\": \"string.quoted.back.nsis\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.nsis\" }\n      }\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.nsis\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\$\\\\\\\\.\", \"name\": \"constant.character.escape.nsis\" }\n      ],\n      \"name\": \"string.quoted.double.nsis\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.nsis\" }\n      }\n    },\n    {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.nsis\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [\n        { \"match\": \"\\\\$\\\\\\\\.\", \"name\": \"constant.character.escape.nsis\" }\n      ],\n      \"name\": \"string.quoted.single.nsis\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.nsis\" }\n      }\n    },\n    {\n      \"match\": \"(;|#).*$\\\\n?\",\n      \"name\": \"comment.line.nsis\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.comment.nsis\" } }\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.nsis\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.nsis\" } }\n    },\n    {\n      \"match\": \"(\\\\!include|\\\\!insertmacro)\\\\b\",\n      \"captures\": { \"match\": { \"name\": \"keyword.control.import.nsis\" } }\n    }\n  ],\n  \"comment\": \"\\n\\ttodo: - highlight functions\\n\\t\",\n  \"name\": \"NSIS\",\n  \"uuid\": \"B6872F8A-D31D-11E0-9572-0800200C9A66\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/nu.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"nushell\",\n  \"scopeName\": \"source.nushell\",\n  \"patterns\": [\n    { \"include\": \"#define-variable\" },\n    { \"include\": \"#define-alias\" },\n    { \"include\": \"#function\" },\n    { \"include\": \"#extern\" },\n    { \"include\": \"#module\" },\n    { \"include\": \"#use-module\" },\n    { \"include\": \"#expression\" },\n    { \"include\": \"#comment\" }\n  ],\n  \"repository\": {\n    \"string\": {\n      \"patterns\": [\n        { \"include\": \"#string-single-quote\" },\n        { \"include\": \"#string-backtick\" },\n        { \"include\": \"#string-double-quote\" },\n        { \"include\": \"#string-interpolated-double\" },\n        { \"include\": \"#string-interpolated-single\" },\n        { \"include\": \"#string-raw\" },\n        { \"include\": \"#string-bare\" }\n      ]\n    },\n    \"string-escape\": {\n      \"match\": \"\\\\\\\\(?:[bfrnt\\\\\\\\'\\\"/]|u[0-9a-fA-F]{4})\",\n      \"name\": \"constant.character.escape.nushell\"\n    },\n    \"string-bare\": {\n      \"match\": \"[^$\\\\[{(\\\"',|#\\\\s|;][^\\\\[\\\\]{}()\\\"'\\\\s,|;]*\",\n      \"name\": \"string.bare.nushell\"\n    },\n    \"string-raw\": {\n      \"begin\": \"r(#+)'\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.nushell\" }\n      },\n      \"end\": \"'\\\\1\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.nushell\" }\n      },\n      \"name\": \"string.raw.nushell\"\n    },\n    \"string-single-quote\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.nushell\" }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.nushell\" }\n      },\n      \"name\": \"string.quoted.single.nushell\"\n    },\n    \"string-backtick\": {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.nushell\" }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.nushell\" }\n      },\n      \"name\": \"string.quoted.single.nushell\"\n    },\n    \"string-double-quote\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.nushell\" }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.nushell\" }\n      },\n      \"name\": \"string.quoted.double.nushell\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\w+\"\n        },\n        { \"include\": \"#string-escape\" }\n      ]\n    },\n    \"string-interpolated-double\": {\n      \"begin\": \"\\\\$\\\"\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.nushell\" }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.nushell\" }\n      },\n      \"name\": \"string.interpolated.double.nushell\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[()]\",\n          \"name\": \"constant.character.escape.nushell\"\n        },\n        { \"include\": \"#string-escape\" },\n        { \"include\": \"#paren-expression\" }\n      ]\n    },\n    \"string-interpolated-single\": {\n      \"begin\": \"\\\\$'\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.nushell\" }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.nushell\" }\n      },\n      \"name\": \"string.interpolated.single.nushell\",\n      \"patterns\": [{ \"include\": \"#paren-expression\" }]\n    },\n    \"control-keywords\": {\n      \"comment\": \"Regex generated with list-to-tree (https://github.com/glcraft/list-to-tree)\",\n      \"match\": \"(?<![0-9a-zA-Z_\\\\-.\\\\/:\\\\\\\\])(?:break|continue|else(?: if)?|for|if|loop|mut|return|try|while)(?![0-9a-zA-Z_\\\\-.\\\\/:\\\\\\\\])\",\n      \"name\": \"keyword.control.nushell\"\n    },\n    \"comment\": {\n      \"match\": \"(#.*)$\",\n      \"name\": \"comment.nushell\"\n    },\n    \"keyword\": {\n      \"match\": \"(?:def(?:-env)?)\",\n      \"name\": \"keyword.other.nushell\"\n    },\n    \"parameters\": {\n      \"match\": \"(?<=\\\\s)(-{1,2})[\\\\w-]+\",\n      \"name\": \"variable.parameter.nushell\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.nushell\" }\n      }\n    },\n    \"variables\": {\n      \"match\": \"(\\\\$[a-zA-Z0-9_]+)((?:\\\\.(?:[\\\\w-]+|\\\"[\\\\w\\\\- ]+\\\"))*)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            { \"include\": \"#internal-variables\" },\n            {\n              \"match\": \"\\\\$.+\",\n              \"name\": \"variable.other.nushell\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"variable.other.nushell\"\n        }\n      }\n    },\n    \"variable-fields\": {\n      \"match\": \"(?<=\\\\)|\\\\}|\\\\])(?:\\\\.(?:[\\\\w-]+|\\\"[\\\\w\\\\- ]+\\\"))+\",\n      \"name\": \"variable.other.nushell\"\n    },\n    \"internal-variables\": {\n      \"match\": \"\\\\$(?:nu|env)\\\\b\",\n      \"name\": \"variable.language.nushell\"\n    },\n    \"datetime\": {\n      \"match\": \"\\\\b\\\\d{4}-\\\\d{2}-\\\\d{2}(?:T\\\\d{2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d+)?(?:\\\\+\\\\d{2}:?\\\\d{2}|Z)?)?\\\\b\",\n      \"name\": \"constant.numeric.nushell\"\n    },\n    \"numbers-hexa\": {\n      \"match\": \"(?<![\\\\w-])_*+0_*+x_*+[0-9a-fA-F][0-9a-fA-F_]*+(?![\\\\w.])\",\n      \"name\": \"constant.numeric.nushell\"\n    },\n    \"numbers-octal\": {\n      \"match\": \"(?<![\\\\w-])_*+0_*+o_*+[0-7][0-7_]*+(?![\\\\w.])\",\n      \"name\": \"constant.numeric.nushell\"\n    },\n    \"numbers-binary\": {\n      \"match\": \"(?<![\\\\w-])_*+0_*+b_*+[01][01_]*+(?![\\\\w.])\",\n      \"name\": \"constant.numeric.nushell\"\n    },\n    \"numbers\": {\n      \"match\": \"(?<![\\\\w-])_*+[-+]?_*+(?:(?i:NaN|infinity|inf)_*+|(?:\\\\d[\\\\d_]*+\\\\.?|\\\\._*+\\\\d)[\\\\d_]*+(?i:E_*+[-+]?_*+\\\\d[\\\\d_]*+)?)(?i:ns|us|µs|ms|sec|min|hr|day|wk|b|kb|mb|gb|tb|pt|eb|zb|kib|mib|gib|tib|pit|eib|zib)?(?:(?![\\\\w.])|(?=\\\\.\\\\.))\",\n      \"name\": \"constant.numeric.nushell\"\n    },\n    \"binary\": {\n      \"begin\": \"\\\\b(0x)(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"constant.numeric.nushell\" },\n        \"2\": { \"name\": \"meta.brace.square.begin.nushell\" }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"meta.brace.square.begin.nushell\" }\n      },\n      \"name\": \"constant.binary.nushell\",\n      \"patterns\": [\n        { \"match\": \"[0-9a-fA-F]{2}\", \"name\": \"constant.numeric.nushell\" }\n      ]\n    },\n    \"constant-keywords\": {\n      \"match\": \"\\\\b(?:true|false|null)\\\\b\",\n      \"name\": \"constant.language.nushell\"\n    },\n    \"constant-value\": {\n      \"patterns\": [\n        { \"include\": \"#constant-keywords\" },\n        { \"include\": \"#datetime\" },\n        { \"include\": \"#numbers\" },\n        { \"include\": \"#numbers-hexa\" },\n        { \"include\": \"#numbers-octal\" },\n        { \"include\": \"#numbers-binary\" },\n        { \"include\": \"#binary\" }\n      ]\n    },\n    \"spread\": {\n      \"match\": \"\\\\.\\\\.\\\\.(?=[^\\\\s\\\\]}])\",\n      \"name\": \"keyword.control.nushell\"\n    },\n    \"ranges\": {\n      \"match\": \"\\\\.\\\\.<?\",\n      \"name\": \"keyword.control.nushell\"\n    },\n    \"operators-word\": {\n      \"match\": \"(?<= |\\\\()(?:mod|in|not-(?:in|like|has)|not|and|or|xor|bit-(?:or|and|xor|shl|shr)|starts-with|ends-with|like|has)(?= |\\\\)|$)\",\n      \"name\": \"keyword.control.nushell\"\n    },\n    \"operators-symbols\": {\n      \"match\": \"(?<= )(?:(?:\\\\+|\\\\-|\\\\*|\\\\/)=?|\\\\/\\\\/|\\\\*\\\\*|!=|[<>=]=?|[!=]~|\\\\+\\\\+=?)(?= |$)\",\n      \"name\": \"keyword.control.nushell\"\n    },\n    \"operators\": {\n      \"patterns\": [\n        { \"include\": \"#operators-word\" },\n        { \"include\": \"#operators-symbols\" },\n        { \"include\": \"#ranges\" }\n      ]\n    },\n    \"table\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.brace.square.begin.nushell\" }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"meta.brace.square.end.nushell\" }\n      },\n      \"name\": \"meta.table.nushell\",\n      \"patterns\": [\n        { \"include\": \"#spread\" },\n        { \"include\": \"#value\" },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.nushell\"\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.list.nushell\",\n          \"begin\": \"\\\\b(list)\\\\s*<\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"entity.name.type.nushell\" }\n          },\n          \"end\": \">\",\n          \"patterns\": [{ \"include\": \"#types\" }]\n        },\n        {\n          \"name\": \"meta.record.nushell\",\n          \"begin\": \"\\\\b(record)\\\\s*<\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"entity.name.type.nushell\" }\n          },\n          \"end\": \">\",\n          \"patterns\": [\n            {\n              \"match\": \"([\\\\w\\\\-]+|\\\"[\\\\w\\\\- ]+\\\"|'[^']+')\\\\s*:\\\\s*\",\n              \"captures\": {\n                \"1\": { \"name\": \"variable.parameter.nushell\" }\n              }\n            },\n            { \"include\": \"#types\" }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(\\\\w+)\\\\b\",\n          \"name\": \"entity.name.type.nushell\"\n        }\n      ]\n    },\n    \"function-parameter\": {\n      \"patterns\": [\n        {\n          \"match\": \"(-{0,2}|\\\\.{3})[\\\\w-]+(?:\\\\((-[\\\\w?])\\\\))?\",\n          \"name\": \"variable.parameter.nushell\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.control.nushell\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\??:\\\\s*\",\n          \"end\": \"(?=(?:\\\\s+(?:-{0,2}|\\\\.{3})[\\\\w-]+)|(?:\\\\s*(?:,|\\\\]|\\\\||@|=|#|$)))\",\n          \"patterns\": [{ \"include\": \"#types\" }]\n        },\n        {\n          \"begin\": \"@(?=\\\"|')\",\n          \"end\": \"(?<=\\\"|')\",\n          \"patterns\": [{ \"include\": \"#string\" }]\n        },\n        {\n          \"name\": \"default.value.nushell\",\n          \"begin\": \"=\\\\s*\",\n          \"end\": \"(?=(?:\\\\s+-{0,2}[\\\\w-]+)|(?:\\\\s*(?:,|\\\\]|\\\\||#|$)))\",\n          \"patterns\": [{ \"include\": \"#value\" }]\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.brace.square.begin.nushell\" }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"meta.brace.square.end.nushell\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#function-parameter\" },\n        { \"include\": \"#comment\" }\n      ],\n      \"name\": \"meta.function.parameters.nushell\"\n    },\n    \"function-multiple-inout\": {\n      \"begin\": \"(?<=]\\\\s*)(:)\\\\s+(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.in-out.nushell\" },\n        \"2\": { \"name\": \"meta.brace.square.begin.nushell\" }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"meta.brace.square.end.nushell\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#types\" },\n        {\n          \"match\": \"\\\\s*(,)\\\\s*\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.separator.nushell\" }\n          }\n        },\n        {\n          \"match\": \"\\\\s+(->)\\\\s+\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.operator.nushell\" }\n          }\n        }\n      ]\n    },\n    \"function-inout\": {\n      \"patterns\": [\n        { \"include\": \"#types\" },\n        {\n          \"match\": \"->\",\n          \"name\": \"keyword.operator.nushell\"\n        },\n        { \"include\": \"#function-multiple-inout\" }\n      ]\n    },\n    \"function-body\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.function.begin.nushell\" }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.function.end.nushell\" }\n      },\n      \"name\": \"meta.function.body.nushell\",\n      \"patterns\": [{ \"include\": \"source.nushell\" }]\n    },\n    \"function\": {\n      \"begin\": \"((?:export\\\\s+)?def)(?:\\\\s+((?:--\\\\w+(?:\\\\s+--\\\\w+)*)))?\\\\s+([\\\\w\\\\-]+|\\\"[\\\\w\\\\- ]+\\\"|'[\\\\w\\\\- ]+'|`[\\\\w\\\\- ]+`)(?:\\\\s+((?:--\\\\w+(?:\\\\s+--\\\\w+)*)))?\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"entity.name.function.nushell\" },\n        \"2\": { \"name\": \"entity.name.function.nushell\" },\n        \"3\": { \"name\": \"entity.name.type.nushell\" },\n        \"4\": { \"name\": \"entity.name.function.nushell\" }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#function-parameters\" },\n        { \"include\": \"#function-body\" },\n        { \"include\": \"#function-inout\" }\n      ]\n    },\n    \"extern\": {\n      \"begin\": \"((?:export\\\\s+)?extern)\\\\s+([\\\\w\\\\-]+|\\\"[\\\\w\\\\- ]+\\\")\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"entity.name.function.nushell\" },\n        \"2\": { \"name\": \"entity.name.type.nushell\" }\n      },\n      \"end\": \"(?<=\\\\])\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.function.end.nushell\" }\n      },\n      \"patterns\": [{ \"include\": \"#function-parameters\" }]\n    },\n    \"module\": {\n      \"begin\": \"((?:export\\\\s+)?module)\\\\s+([\\\\w\\\\-]+)\\\\s*\\\\{\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"entity.name.function.nushell\" },\n        \"2\": { \"name\": \"entity.name.namespace.nushell\" }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.module.end.nushell\" }\n      },\n      \"name\": \"meta.module.nushell\",\n      \"patterns\": [{ \"include\": \"source.nushell\" }]\n    },\n    \"use-module\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*((?:export )?use)\\\\s+([\\\\w\\\\-]+|\\\"[\\\\w\\\\- ]+\\\"|'[\\\\w\\\\- ]+')(?:\\\\s+([\\\\w\\\\-]+|\\\"[\\\\w\\\\- ]+\\\"|'[\\\\w\\\\- ]+'|\\\\*))?\\\\s*;?$\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.name.function.nushell\" },\n            \"2\": { \"name\": \"entity.name.namespace.nushell\" },\n            \"3\": { \"name\": \"keyword.other.nushell\" }\n          }\n        },\n        {\n          \"begin\": \"^\\\\s*((?:export )?use)\\\\s+([\\\\w\\\\-]+|\\\"[\\\\w\\\\- ]+\\\"|'[\\\\w\\\\- ]+')\\\\s*\\\\[\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"entity.name.function.nushell\" },\n            \"2\": { \"name\": \"entity.name.namespace.nushell\" }\n          },\n          \"end\": \"(\\\\])\\\\s*;?\\\\s*$\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"meta.brace.square.end.nushell\" }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"([\\\\w\\\\-]+|\\\"[\\\\w\\\\- ]+\\\"|'[\\\\w\\\\- ]+'|\\\\*),?\",\n              \"captures\": {\n                \"1\": { \"name\": \"keyword.other.nushell\" }\n              }\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<path>(?:/|\\\\\\\\|~[\\\\/\\\\\\\\]|\\\\.\\\\.?[\\\\/\\\\\\\\])?(?:[^\\\\/\\\\\\\\]+[\\\\/\\\\\\\\])*[\\\\w\\\\- ]+(?:\\\\.nu)?){0}^\\\\s*((?:export )?use)\\\\s+(\\\"\\\\g<path>\\\"|'\\\\g<path>\\\\'|(?![\\\"'])\\\\g<path>)(?:\\\\s+([\\\\w\\\\-]+|\\\"[\\\\w\\\\- ]+\\\"|'[^']+'|\\\\*))?\\\\s*;?$\",\n          \"captures\": {\n            \"2\": { \"name\": \"entity.name.function.nushell\" },\n            \"3\": {\n              \"name\": \"string.bare.nushell\",\n              \"patterns\": [\n                {\n                  \"match\": \"([\\\\w\\\\- ]+)(?:\\\\.nu)?(?=$|\\\"|')\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"entity.name.namespace.nushell\" }\n                  }\n                }\n              ]\n            },\n            \"4\": { \"name\": \"keyword.other.nushell\" }\n          }\n        },\n        {\n          \"begin\": \"(?<path>(?:/|\\\\\\\\|~[\\\\/\\\\\\\\]|\\\\.\\\\.?[\\\\/\\\\\\\\])?(?:[^\\\\/\\\\\\\\]+[\\\\/\\\\\\\\])*[\\\\w\\\\- ]+(?:\\\\.nu)?){0}^\\\\s*((?:export )?use)\\\\s+(\\\"\\\\g<path>\\\"|'\\\\g<path>\\\\'|(?![\\\"'])\\\\g<path>)\\\\s+\\\\[\",\n          \"beginCaptures\": {\n            \"2\": { \"name\": \"entity.name.function.nushell\" },\n            \"3\": {\n              \"name\": \"string.bare.nushell\",\n              \"patterns\": [\n                {\n                  \"match\": \"([\\\\w\\\\- ]+)(?:\\\\.nu)?(?=$|\\\"|')\",\n                  \"captures\": {\n                    \"1\": { \"name\": \"entity.name.namespace.nushell\" }\n                  }\n                }\n              ]\n            }\n          },\n          \"end\": \"(\\\\])\\\\s*;?\\\\s*$\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"meta.brace.square.end.nushell\" }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"([\\\\w\\\\-]+|\\\"[\\\\w\\\\- ]+\\\"|'[\\\\w\\\\- ]+'|\\\\*),?\",\n              \"captures\": {\n                \"0\": { \"name\": \"keyword.other.nushell\" }\n              }\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^\\\\s*(?:export )?use\\\\b\",\n          \"captures\": {\n            \"0\": { \"name\": \"entity.name.function.nushell\" }\n          }\n        }\n      ]\n    },\n    \"for-loop\": {\n      \"begin\": \"(for)\\\\s+(\\\\$?\\\\w+)\\\\s+(in)\\\\s+(.+)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.other.nushell\" },\n        \"2\": { \"name\": \"variable.other.nushell\" },\n        \"3\": { \"name\": \"keyword.other.nushell\" },\n        \"4\": { \"patterns\": [{ \"include\": \"#value\" }] },\n        \"5\": { \"name\": \"punctuation.section.block.begin.bracket.curly.nushell\" }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.block.end.bracket.curly.nushell\" }\n      },\n      \"name\": \"meta.for-loop.nushell\",\n      \"patterns\": [{ \"include\": \"source.nushell\" }]\n    },\n    \"paren-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.brace.round.begin.nushell\" }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"meta.brace.round.end.nushell\" }\n      },\n      \"name\": \"meta.expression.parenthesis.nushell\",\n      \"patterns\": [{ \"include\": \"#expression\" }]\n    },\n    \"braced-expression\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.block.begin.bracket.curly.nushell\" }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.block.end.bracket.curly.nushell\" }\n      },\n      \"name\": \"meta.expression.braced.nushell\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\{)\\\\s*\\\\|\",\n          \"end\": \"\\\\|\",\n          \"name\": \"meta.closure.parameters.nushell\",\n          \"patterns\": [{ \"include\": \"#function-parameter\" }]\n        },\n        {\n          \"match\": \"(\\\\w+)\\\\s*(:)\\\\s*\",\n          \"captures\": {\n            \"1\": { \"name\": \"variable.other.nushell\" },\n            \"2\": { \"name\": \"keyword.control.nushell\" }\n          }\n        },\n        {\n          \"match\": \"(\\\\$\\\"((?:[^\\\"\\\\\\\\]|\\\\\\\\.)*)\\\")\\\\s*(:)\\\\s*\",\n          \"captures\": {\n            \"1\": { \"name\": \"variable.other.nushell\" },\n            \"2\": {\n              \"name\": \"variable.other.nushell\",\n              \"patterns\": [{ \"include\": \"#paren-expression\" }]\n            },\n            \"3\": { \"name\": \"keyword.control.nushell\" }\n          },\n          \"name\": \"meta.record-entry.nushell\"\n        },\n        {\n          \"match\": \"(\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\\\")\\\\s*(:)\\\\s*\",\n          \"captures\": {\n            \"1\": { \"name\": \"variable.other.nushell\" },\n            \"2\": { \"name\": \"keyword.control.nushell\" }\n          },\n          \"name\": \"meta.record-entry.nushell\"\n        },\n        {\n          \"match\": \"(\\\\$'([^']*)')\\\\s*(:)\\\\s*\",\n          \"captures\": {\n            \"1\": { \"name\": \"variable.other.nushell\" },\n            \"2\": {\n              \"name\": \"variable.other.nushell\",\n              \"patterns\": [{ \"include\": \"#paren-expression\" }]\n            },\n            \"3\": { \"name\": \"keyword.control.nushell\" }\n          },\n          \"name\": \"meta.record-entry.nushell\"\n        },\n        {\n          \"match\": \"('[^']*')\\\\s*(:)\\\\s*\",\n          \"captures\": {\n            \"1\": { \"name\": \"variable.other.nushell\" },\n            \"2\": { \"name\": \"keyword.control.nushell\" }\n          },\n          \"name\": \"meta.record-entry.nushell\"\n        },\n        { \"include\": \"#spread\" },\n        { \"include\": \"source.nushell\" }\n      ]\n    },\n    \"define-variable\": {\n      \"match\": \"(let|mut|(?:export\\\\s+)?const)\\\\s+(\\\\w+)\\\\s+(=)\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.nushell\" },\n        \"2\": { \"name\": \"variable.other.nushell\" },\n        \"3\": {\n          \"patterns\": [{ \"include\": \"#operators\" }]\n        }\n      }\n    },\n    \"define-alias\": {\n      \"match\": \"((?:export )?alias)\\\\s+([\\\\w\\\\-!]+)\\\\s*(=)\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.function.nushell\" },\n        \"2\": { \"name\": \"entity.name.type.nushell\" },\n        \"3\": {\n          \"patterns\": [{ \"include\": \"#operators\" }]\n        }\n      }\n    },\n    \"pre-command\": {\n      \"begin\": \"(\\\\w+)(=)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"variable.other.nushell\" },\n        \"2\": {\n          \"patterns\": [{ \"include\": \"#operators\" }]\n        }\n      },\n      \"end\": \"(?=\\\\s+)\",\n      \"patterns\": [{ \"include\": \"#value\" }]\n    },\n\n    \"command\": {\n      \"begin\": \"(?<!\\\\w)(?:(\\\\^)|(?![0-9]|\\\\$))([\\\\w.!]+(?:(?: (?!-)[\\\\w\\\\-.!]+(?:(?= |\\\\))|$)|[\\\\w\\\\-.!]+))*|(?<=\\\\^)\\\\$?(?:\\\"[^\\\"]+\\\"|'[^']+'))\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.operator.nushell\" },\n        \"2\": {\n          \"patterns\": [\n            { \"include\": \"#control-keywords\" },\n            {\n              \"match\": \"(?:ansi|char) \\\\w+\",\n              \"captures\": {\n                \"0\": { \"name\": \"keyword.other.builtin.nushell\" }\n              }\n            },\n            {\n              \"comment\": \"Regex generated with list-to-tree (https://github.com/glcraft/list-to-tree)\",\n              \"match\": \"(a(?:l(?:ias|l)|n(?:si(?: (?:gradient|link|strip))?|y)|ppend|st|ttr(?: (?:category|deprecated|example|search-terms))?)|b(?:its(?: (?:and|not|or|ro(?:l|r)|sh(?:l|r)|xor))?|reak|ytes(?: (?:a(?:dd|t)|build|collect|ends-with|index-of|length|re(?:move|place|verse)|s(?:plit|tarts-with)))?)|c(?:al|d|h(?:ar|unk(?:-by|s))|lear|o(?:l(?:lect|umns)|m(?:mandline(?: (?:edit|get-cursor|set-cursor))?|p(?:act|lete))|n(?:fig(?: (?:env|flatten|nu|reset|use-colors))?|st|tinue))|p)|d(?:ate(?: (?:f(?:ormat|rom-human)|humanize|list-timezone|now|to-timezone))?|e(?:bug(?: (?:e(?:nv|xperimental-options)|info|profile))?|code(?: (?:base(?:32(?:hex)?|64)|hex))?|f(?:ault)?|scribe|tect(?: columns)?)|o|rop(?: (?:column|nth))?|t(?: (?:add|diff|format|now|part|to|utcnow))?|u)|e(?:ach(?: while)?|cho|moji|n(?:code(?: (?:base(?:32(?:hex)?|64)|hex))?|umerate)|rror(?: make)?|very|x(?:ec|it|p(?:l(?:ain|ore)|ort(?: (?:alias|const|def|extern|module|use)|-env)?)|tern))|f(?:i(?:l(?:e|l|ter)|nd|rst)|latten|or(?:mat(?: (?:bits|d(?:ate|uration)|filesize|number|pattern))?)?|rom(?: (?:csv|eml|i(?:cs|ni)|json|msgpack(?:z)?|nuon|ods|p(?:arquet|list)|ssv|t(?:oml|sv)|url|vcf|x(?:lsx|ml)|y(?:aml|ml)))?)|g(?:e(?:nerate|t)|lob|r(?:id|oup-by)|stat)|h(?:ash(?: (?:md5|sha256))?|e(?:aders|lp(?: (?:aliases|commands|e(?:scapes|xterns)|modules|operators|pipe-and-redirect))?)|i(?:de(?:-env)?|sto(?:gram|ry(?: (?:import|session))?))|ttp(?: (?:delete|get|head|options|p(?:atch|ost|ut)))?)|i(?:f|gnore|n(?:c|put(?: list(?:en)?)?|s(?:ert|pect)|t(?:erleave|o(?: (?:b(?:inary|ool)|cell-path|d(?:atetime|uration)|f(?:ilesize|loat)|glob|int|record|s(?:qlite|tring)|value))?))|s-(?:admin|empty|not-empty|terminal)|tems)|j(?:o(?:b(?: (?:flush|id|kill|list|recv|s(?:end|pawn)|tag|unfreeze))?|in)|son path|walk)|k(?:eybindings(?: (?:default|list(?:en)?))?|ill)|l(?:ast|e(?:ngth|t(?:-env)?)|ines|o(?:ad-env|op)|s)|m(?:at(?:ch|h(?: (?:a(?:bs|rc(?:cos(?:h)?|sin(?:h)?|tan(?:h)?)|vg)|c(?:eil|os(?:h)?)|exp|floor|l(?:n|og)|m(?:ax|edian|in|ode)|product|round|s(?:in(?:h)?|qrt|tddev|um)|tan(?:h)?|variance))?)|e(?:rge(?: deep)?|tadata(?: (?:access|set))?)|k(?:dir|temp)|o(?:dule|ve)|ut|v)|nu-(?:check|highlight)|o(?:pen|verlay(?: (?:hide|list|new|use))?)|p(?:a(?:nic|r(?:-each|se)|th(?: (?:basename|dirname|ex(?:ists|pand)|join|parse|relative-to|s(?:elf|plit)|type))?)|lugin(?: (?:add|list|rm|stop|use))?|o(?:lars(?: (?:a(?:gg(?:-groups)?|ll-(?:false|true)|ppend|rg-(?:m(?:ax|in)|sort|true|unique|where)|s(?:-date(?:time)?)?)|c(?:a(?:che|st)|o(?:l(?:lect|umns)?|n(?:cat(?:-str)?|tains|vert-time-zone)|unt(?:-null)?)|u(?:mulative|t))|d(?:atepart|ecimal|rop(?:-(?:duplicates|nulls))?|ummies)|exp(?:lode|r-not)|f(?:etch|i(?:l(?:l-n(?:an|ull)|ter(?:-with)?)|rst)|latten)|g(?:et(?:-(?:day|hour|m(?:inute|onth)|nanosecond|ordinal|second|week(?:day)?|year))?|roup-by)|horizontal|i(?:mplode|nt(?:eger|o-(?:d(?:f|type)|lazy|nu|repr|schema))|s-(?:duplicated|in|n(?:ot-null|ull)|unique))|join(?:-where)?|l(?:ast|en|i(?:st-contains|t)|owercase)|m(?:a(?:th|x)|e(?:an|dian)|in)|n(?:-unique|ot)|o(?:pen|therwise|ver)|p(?:ivot|rofile)|q(?:cut|u(?:antile|ery))|r(?:e(?:name|place(?:-time-zone)?|verse)|olling)|s(?:a(?:mple|ve)|chema|e(?:lect|t(?:-with-idx)?)|h(?:ape|ift)|lice|ort-by|t(?:d|ore-(?:get|ls|rm)|r(?:-(?:join|lengths|replace(?:-all)?|s(?:lice|plit|trip-chars))|ftime|uct-json-encode))|um(?:mary)?)|t(?:ake|runcate)|u(?:n(?:ique|nest|pivot)|ppercase)|va(?:lue-counts|r)|w(?:hen|ith-column)))?|rt)|r(?:epend|int)|s)|query(?: (?:db|git|json|web(?:page-info)?|xml))?|r(?:andom(?: (?:b(?:inary|ool)|chars|dice|float|int|uuid))?|e(?:duce|g(?:ex|istry(?: query)?)|ject|name|turn|verse)|m|o(?:ll(?: (?:down|left|right|up))?|tate)|un-(?:external|internal))|s(?:ave|c(?:hema|ope(?: (?:aliases|commands|e(?:ngine-stats|xterns)|modules|variables))?)|e(?:lect|q(?: (?:char|date))?)|huffle|kip(?: (?:until|while))?|l(?:eep|ice)|o(?:rt(?:-by)?|urce(?:-env)?)|plit(?: (?:c(?:ell-path|hars|olumn)|list|row|words))?|t(?:art|or(?: (?:create|delete|export|i(?:mport|nsert)|open|reset|update))?|r(?: (?:c(?:a(?:mel-case|pitalize)|o(?:mpress|ntains))|d(?:e(?:compress|dent|unicode)|istance|owncase)|e(?:nds-with|xpand)|inde(?:nt|x-of)|join|kebab-case|length|pascal-case|re(?:place|verse)|s(?:creaming-snake-case|hl-(?:quote|split)|imilarity|lug|nake-case|ta(?:rts-with|ts)|ubstring)|t(?:itle-case|rim)|upcase|wrap)|ess_internals)?)|ys(?: (?:cpu|disks|host|mem|net|temp|users))?)|t(?:a(?:ble|ke(?: (?:until|while))?)|e(?:e|rm(?: (?:query|size))?)|imeit|o(?: (?:csv|html|json|m(?:d|sgpack(?:z)?)|nuon|p(?:arquet|list)|t(?:ext|oml|sv)|xml|y(?:aml|ml))|uch)?|r(?:anspose|y)|utor)|u(?:limit|n(?:ame|iq(?:-by)?)|p(?:date(?: cells)?|sert)|rl(?: (?:build-query|decode|encode|join|parse|split-query))?|se)|v(?:alues|ersion(?: check)?|iew(?: (?:blocks|files|ir|s(?:ource|pan)))?)|w(?:atch|h(?:ere|i(?:ch|le)|oami)|i(?:ndow|th-env)|rap)|zip)(?![\\\\w-])( (.*))?\",\n              \"captures\": {\n                \"1\": { \"name\": \"keyword.other.builtin.nushell\" },\n                \"2\": {\n                  \"patterns\": [{ \"include\": \"#value\" }]\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=\\\\^)(?:\\\\$(\\\"[^\\\"]+\\\"|'[^']+')|\\\"[^\\\"]+\\\"|'[^']+')\",\n              \"name\": \"entity.name.type.external.nushell\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [{ \"include\": \"#paren-expression\" }]\n                }\n              }\n            },\n            {\n              \"match\": \"([\\\\w.]+(?:-[\\\\w.!]+)*)(?: (.*))?\",\n              \"captures\": {\n                \"1\": { \"name\": \"entity.name.type.external.nushell\" },\n                \"2\": {\n                  \"patterns\": [{ \"include\": \"#value\" }]\n                }\n              }\n            },\n            { \"include\": \"#value\" }\n          ]\n        }\n      },\n      \"end\": \"(?=\\\\||\\\\)|\\\\}|;)|$\",\n      \"name\": \"meta.command.nushell\",\n      \"patterns\": [\n        { \"include\": \"#parameters\" },\n        { \"include\": \"#spread\" },\n        { \"include\": \"#value\" }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        { \"include\": \"#pre-command\" },\n        { \"include\": \"#for-loop\" },\n        { \"include\": \"#operators\" },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"keyword.control.nushell\"\n        },\n        { \"include\": \"#control-keywords\" },\n        { \"include\": \"#constant-value\" },\n        { \"include\": \"#string-raw\" },\n        { \"include\": \"#command\" },\n        { \"include\": \"#value\" }\n      ]\n    },\n    \"value\": {\n      \"patterns\": [\n        { \"include\": \"#variables\" },\n        { \"include\": \"#variable-fields\" },\n        { \"include\": \"#control-keywords\" },\n        { \"include\": \"#constant-value\" },\n        { \"include\": \"#table\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#paren-expression\" },\n        { \"include\": \"#braced-expression\" },\n        { \"include\": \"#string\" },\n        { \"include\": \"#comment\" }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/nunjucks.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.html.nunjucks\",\n  \"fileTypes\": [\"nj\", \"njk\", \"nunjucks\"],\n  \"patterns\": [\n    {\n      \"begin\": \"{% comment %}\",\n      \"end\": \"{% endcomment %}\",\n      \"name\": \"comment.block.nunjucks\"\n    },\n    { \"begin\": \"{#\", \"end\": \"#}\", \"name\": \"comment.line.number-sign.nunjucks\" },\n    {\n      \"begin\": \"{{\",\n      \"end\": \"}}\",\n      \"patterns\": [{ \"include\": \"#template_filter\" }],\n      \"name\": \"storage.type.variable.nunjucks\",\n      \"captures\": { \"0\": { \"name\": \"entity.tag.tagbraces.nunjucks\" } }\n    },\n    {\n      \"begin\": \"{%-|{%\",\n      \"end\": \"-%}|%}\",\n      \"patterns\": [\n        { \"include\": \"#template_tag\" },\n        { \"include\": \"#template_filter\" }\n      ],\n      \"name\": \"storage.type.templatetag.nunjucks\",\n      \"captures\": { \"0\": { \"name\": \"entity.tag.tagbraces.nunjucks\" } }\n    },\n    {\n      \"begin\": \"(<)([a-zA-Z0-9:]++)(?=[^>]*></\\\\2>)\",\n      \"endCaptures\": {\n        \"3\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.end.html\" },\n        \"4\": { \"name\": \"entity.name.tag.html\" },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html\"\n        },\n        \"5\": { \"name\": \"punctuation.definition.tag.end.html\" }\n      },\n      \"end\": \"(>)(<)(/)(\\\\2)(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"end\": \"(\\\\?>)\",\n      \"patterns\": [\n        { \"include\": \"#tag-generic-attribute\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" }\n      ],\n      \"name\": \"meta.tag.preprocessor.xml.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n        \"2\": { \"name\": \"entity.name.tag.xml.html\" }\n      }\n    },\n    {\n      \"begin\": \"<!--\",\n      \"end\": \"--\\\\s*>\",\n      \"patterns\": [\n        { \"match\": \"--\", \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\" },\n        { \"include\": \"#embedded-code\" }\n      ],\n      \"name\": \"comment.block.html\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.html\" } }\n    },\n    {\n      \"begin\": \"<!\",\n      \"end\": \">\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i:DOCTYPE)\",\n          \"end\": \"(?=>)\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"[^\\\">]*\\\"\",\n              \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n            }\n          ],\n          \"name\": \"meta.tag.sgml.doctype.html\",\n          \"captures\": { \"1\": { \"name\": \"entity.name.tag.doctype.html\" } }\n        },\n        {\n          \"begin\": \"\\\\[CDATA\\\\[\",\n          \"end\": \"]](?=>)\",\n          \"name\": \"constant.other.inline-data.html\"\n        },\n        {\n          \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        }\n      ],\n      \"name\": \"meta.tag.sgml.html\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.tag.html\" } }\n    },\n    { \"include\": \"#embedded-code\" },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?![^>]*/>)\",\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [\n            {\n              \"begin\": \"{% comment %}\",\n              \"end\": \"{% endcomment %}\",\n              \"name\": \"comment.block.nunjucks\"\n            },\n            {\n              \"begin\": \"{#\",\n              \"end\": \"#}\",\n              \"name\": \"comment.line.number-sign.nunjucks\"\n            },\n            {\n              \"begin\": \"{{\",\n              \"end\": \"}}\",\n              \"patterns\": [{ \"include\": \"#template_filter\" }],\n              \"name\": \"storage.type.variable.nunjucks\",\n              \"captures\": { \"0\": { \"name\": \"entity.tag.tagbraces.nunjucks\" } }\n            },\n            {\n              \"begin\": \"{%\",\n              \"end\": \"%}\",\n              \"patterns\": [\n                { \"include\": \"#template_tag\" },\n                { \"include\": \"#template_filter\" }\n              ],\n              \"name\": \"storage.type.templatetag.nunjucks\",\n              \"captures\": { \"0\": { \"name\": \"entity.tag.tagbraces.nunjucks\" } }\n            },\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"source.css.nunjucks\" }\n          ],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.css.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?![^>]*/>)\",\n      \"endCaptures\": { \"2\": { \"name\": \"punctuation.definition.tag.html\" } },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [\n            {\n              \"begin\": \"{% comment %}\",\n              \"end\": \"{% endcomment %}\",\n              \"name\": \"comment.block.nunjucks\"\n            },\n            {\n              \"begin\": \"{#\",\n              \"end\": \"#}\",\n              \"name\": \"comment.line.number-sign.nunjucks\"\n            },\n            {\n              \"begin\": \"{{\",\n              \"end\": \"}}\",\n              \"patterns\": [{ \"include\": \"#template_filter\" }],\n              \"name\": \"storage.type.variable.nunjucks\",\n              \"captures\": { \"0\": { \"name\": \"entity.tag.tagbraces.nunjucks\" } }\n            },\n            {\n              \"begin\": \"{%\",\n              \"end\": \"%}\",\n              \"patterns\": [\n                { \"include\": \"#template_tag\" },\n                { \"include\": \"#template_filter\" }\n              ],\n              \"name\": \"storage.type.templatetag.nunjucks\",\n              \"captures\": { \"0\": { \"name\": \"entity.tag.tagbraces.nunjucks\" } }\n            },\n            {\n              \"match\": \"(//).*?((?=</script)|$\\\\n?)\",\n              \"name\": \"comment.line.double-slash.js\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.comment.js\" }\n              }\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"end\": \"\\\\*/|(?=</script)\",\n              \"name\": \"comment.block.js\",\n              \"captures\": {\n                \"0\": { \"name\": \"punctuation.definition.comment.js\" }\n              }\n            },\n            { \"include\": \"#php\" },\n            { \"include\": \"source.js\" }\n          ],\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" },\n            \"2\": { \"name\": \"entity.name.tag.script.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.js.embedded.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.script.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.structure.any.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.structure.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.block.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.block.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"((?: ?/)?>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.inline.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.inline.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)([a-zA-Z0-9:]+)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.other.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.other.html\" }\n      }\n    },\n    { \"include\": \"#entities\" },\n    { \"match\": \"<>\", \"name\": \"invalid.illegal.incomplete.html\" },\n    { \"match\": \"<\", \"name\": \"invalid.illegal.bad-angle-bracket.html\" }\n  ],\n  \"repository\": {\n    \"tag-stuff\": {\n      \"patterns\": [\n        { \"include\": \"#tag-id-attribute\" },\n        { \"include\": \"#tag-generic-attribute\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" },\n        { \"include\": \"#embedded-code\" }\n      ]\n    },\n    \"php\": {\n      \"begin\": \"(?=(^\\\\s*)?<\\\\?)\",\n      \"end\": \"(?!(^\\\\s*)?<\\\\?)\",\n      \"patterns\": [{ \"include\": \"source.php\" }]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [{ \"include\": \"#embedded-code\" }, { \"include\": \"#entities\" }],\n      \"name\": \"string.quoted.double.html\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      }\n    },\n    \"python\": {\n      \"begin\": \"(?:^\\\\s*)<\\\\?python(?!.*\\\\?>)\",\n      \"end\": \"\\\\?>(?:\\\\s*$\\\\n)?\",\n      \"patterns\": [{ \"include\": \"source.python\" }],\n      \"name\": \"source.python.embedded.html\"\n    },\n    \"template_tag\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(autoescape|endautoescape|block|endblock|blocktrans|endblocktrans|trans|plural|debug|extends|filter|firstof|for|empty|endfor|if|elif|else|endif|include|ifchanged|endifchanged|ifequal|endifequal|ifnotequal|endifnotequal|load|from|low|regroup|ssi|spaceless|endspaceless|templatetag|widthratio|with|endwith|csrf_token|cycle|url|lorem|thumbnail|endthumbnail|get_static_prefix)\\\\b\",\n          \"name\": \"keyword.control.tag-name.nunjucks\"\n        },\n        {\n          \"match\": \"\\\\b(and|or|not|in|by|as)\\\\b\",\n          \"name\": \"keyword.operator.nunjucks\"\n        }\n      ]\n    },\n    \"embedded-code\": {\n      \"patterns\": [\n        { \"include\": \"#ruby\" },\n        { \"include\": \"#php\" },\n        { \"include\": \"#python\" }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [{ \"include\": \"#embedded-code\" }, { \"include\": \"#entities\" }],\n      \"name\": \"string.quoted.single.html\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      }\n    },\n    \"tag-generic-attribute\": {\n      \"match\": \"\\\\b([a-zA-Z\\\\-:]+)\",\n      \"name\": \"entity.other.attribute-name.html\"\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.entity.html\" },\n            \"3\": { \"name\": \"punctuation.definition.entity.html\" }\n          }\n        },\n        { \"match\": \"&\", \"name\": \"invalid.illegal.bad-ampersand.html\" }\n      ]\n    },\n    \"tag-id-attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")\",\n      \"patterns\": [\n        {\n          \"end\": \"\\\"\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"patterns\": [\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"#entities\" }\n          ],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"name\": \"string.quoted.double.html\"\n        },\n        {\n          \"end\": \"'\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"patterns\": [\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"#entities\" }\n          ],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"name\": \"string.quoted.single.html\"\n        }\n      ],\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.other.attribute-name.id.html\" },\n        \"2\": { \"name\": \"punctuation.separator.key-value.html\" }\n      }\n    },\n    \"ruby\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<%+#\",\n          \"end\": \"%>\",\n          \"name\": \"comment.block.erb\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.erb\" } }\n        },\n        {\n          \"begin\": \"<%+(?!>)=?\",\n          \"end\": \"-?%>\",\n          \"patterns\": [\n            {\n              \"match\": \"(#).*?(?=-?%>)\",\n              \"name\": \"comment.line.number-sign.ruby\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.comment.ruby\" }\n              }\n            },\n            { \"include\": \"source.ruby\" }\n          ],\n          \"name\": \"source.ruby.embedded.html\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.section.embedded.ruby\" } }\n        },\n        {\n          \"begin\": \"<\\\\?r(?!>)=?\",\n          \"end\": \"-?\\\\?>\",\n          \"patterns\": [\n            {\n              \"match\": \"(#).*?(?=-?\\\\?>)\",\n              \"name\": \"comment.line.number-sign.ruby.nitro\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.comment.ruby.nitro\" }\n              }\n            },\n            { \"include\": \"source.ruby\" }\n          ],\n          \"name\": \"source.ruby.nitro.embedded.html\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.section.embedded.ruby.nitro\" }\n          }\n        }\n      ]\n    },\n    \"template_filter\": {\n      \"patterns\": [\n        {\n          \"match\": \"(add|addslashes|capfirst|center|cut|date|default|default_if_none|dictsort|dictsortreversed|divisibleby|escape|escapejs|filesizeformat|first|fix_ampersands|floatformat|force_escape|get_digit|iriencode|join|last|length|length_is|linebreaks|linebreaksbr|linenumbers|ljust|lower|make_list|phone2numeric|pluralize|pprint|random|removetags|rjust|safe|safeseq|slice|slugify|stringformat|striptags|time|timesince|timeutil|title|truncatewords|truncatewords_html|unordered_list|upper|urlencode|urlize|urlizetrunc|wordcount|wordwrap|yesno|apnumber|intcomma|intword|naturalday|ordinal|STATIC_PREFIX)\\\\b\",\n          \"name\": \"keyword.control.filter.nunjucks\"\n        },\n        {\n          \"begin\": \":\\\"|\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"storage.type.attr.nunjucks\"\n        },\n        {\n          \"begin\": \":\\\\'|\\\\'\",\n          \"end\": \"\\\\'\",\n          \"name\": \"storage.type.attr.nunjucks\"\n        },\n        { \"match\": \"\\\\|\", \"name\": \"string.unquoted.filter-pipe.nunjucks\" },\n        {\n          \"match\": \"[a-zA-Z0-9_.]+\",\n          \"name\": \"string.unquoted.tag-string.nunjucks\"\n        }\n      ]\n    }\n  },\n  \"name\": \"Nunjucks\",\n  \"uuid\": \"0AAEDD0E-56AD-4B71-95C8-2FF271DE5B19\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/objective-c.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-objc-syntax/blob/master/autogenerated/objc.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-objc-syntax/commit/119b75fb1f4d3e8726fa62588e3b935e0b719294\",\n  \"name\": \"objective-c\",\n  \"scopeName\": \"source.objc\",\n  \"patterns\": [\n    {\n      \"include\": \"#anonymous_pattern_1\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_2\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_3\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_4\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_5\"\n    },\n    {\n      \"include\": \"#apple_foundation_functional_macros\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_7\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_8\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_9\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_10\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_11\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_12\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_13\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_14\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_15\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_16\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_17\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_18\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_19\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_20\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_21\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_22\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_23\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_24\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_25\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_26\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_27\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_28\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_29\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_30\"\n    },\n    {\n      \"include\": \"#bracketed_content\"\n    },\n    {\n      \"include\": \"#c_lang\"\n    }\n  ],\n  \"repository\": {\n    \"anonymous_pattern_1\": {\n      \"begin\": \"((@)(interface|protocol))(?!.+;)\\\\s+([A-Za-z_][A-Za-z0-9_]*)\\\\s*((:)(?:\\\\s*)([A-Za-z][A-Za-z0-9]*))?(\\\\s|\\\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.objc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.objc\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.entity.other.inherited-class.objc\"\n        },\n        \"7\": {\n          \"name\": \"entity.other.inherited-class.objc\"\n        },\n        \"8\": {\n          \"name\": \"meta.divider.objc\"\n        },\n        \"9\": {\n          \"name\": \"meta.inherited-class.objc\"\n        }\n      },\n      \"contentName\": \"meta.scope.interface.objc\",\n      \"end\": \"((@)end)\\\\b\",\n      \"name\": \"meta.interface-or-protocol.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#interface_innards\"\n        }\n      ]\n    },\n    \"anonymous_pattern_10\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(defs|encode)\\\\b\",\n      \"name\": \"keyword.other.objc\"\n    },\n    \"anonymous_pattern_11\": {\n      \"match\": \"\\\\bid\\\\b\",\n      \"name\": \"storage.type.id.objc\"\n    },\n    \"anonymous_pattern_12\": {\n      \"match\": \"\\\\b(IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class|instancetype)\\\\b\",\n      \"name\": \"storage.type.objc\"\n    },\n    \"anonymous_pattern_13\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        }\n      },\n      \"match\": \"(@)(class|protocol)\\\\b\",\n      \"name\": \"storage.type.objc\"\n    },\n    \"anonymous_pattern_14\": {\n      \"begin\": \"((@)selector)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.objc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        }\n      },\n      \"contentName\": \"meta.selector.method-name.objc\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        }\n      },\n      \"name\": \"meta.selector.objc\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.arguments.objc\"\n            }\n          },\n          \"match\": \"\\\\b(?:[a-zA-Z_:][\\\\w]*)+\",\n          \"name\": \"support.function.any-method.name-of-parameter.objc\"\n        }\n      ]\n    },\n    \"anonymous_pattern_15\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage.modifier.objc\"\n        }\n      },\n      \"match\": \"(@)(synchronized|public|package|private|protected)\\\\b\",\n      \"name\": \"storage.modifier.objc\"\n    },\n    \"anonymous_pattern_16\": {\n      \"match\": \"\\\\b(YES|NO|Nil|nil)\\\\b\",\n      \"name\": \"constant.language.objc\"\n    },\n    \"anonymous_pattern_17\": {\n      \"match\": \"\\\\bNSApp\\\\b\",\n      \"name\": \"support.variable.foundation.objc\"\n    },\n    \"anonymous_pattern_18\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.support.function.cocoa.leopard.objc\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cocoa.leopard.objc\"\n        }\n      },\n      \"match\": \"(\\\\s*)\\\\b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol|ize(ToCGSize|FromCGSize))|Draw(NinePartImage|ThreePartImage)|P(oint(ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))\\\\b\"\n    },\n    \"anonymous_pattern_19\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.support.function.leading.cocoa.objc\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cocoa.objc\"\n        }\n      },\n      \"match\": \"(\\\\s*)\\\\b(NS(R(ound(DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(CriticalAlertPanel(RelativeToWindow)?|InformationalAlertPanel(RelativeToWindow)?|AlertPanel(RelativeToWindow)?)|e(set(MapTable|HashTable)|c(ycleZone|t(Clip(List)?|F(ill(UsingOperation|List(UsingOperation|With(Grays|Colors(UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(dPixel|l(MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(s)?|WindowServerMemory|AlertPanel)|M(i(n(X|Y)|d(X|Y))|ouseInRect|a(p(Remove|Get|Member|Insert(IfAbsent|KnownAbsent)?)|ke(R(ect|ange)|Size|Point)|x(Range|X|Y)))|B(itsPer(SampleFromDepth|PixelFromDepth)|e(stDepth|ep|gin(CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(ho(uldRetainWithZone|w(sServicesMenuItem|AnimationEffect))|tringFrom(R(ect|ange)|MapTable|S(ize|elector)|HashTable|Class|Point)|izeFromString|e(t(ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(Big(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|Short|Host(ShortTo(Big|Little)|IntTo(Big|Little)|DoubleTo(Big|Little)|FloatTo(Big|Little)|Long(To(Big|Little)|LongTo(Big|Little)))|Int|Double|Float|L(ittle(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|ong(Long)?)))|H(ighlightRect|o(stByteOrder|meDirectory(ForUser)?)|eight|ash(Remove|Get|Insert(IfAbsent|KnownAbsent)?)|FSType(CodeFromFileType|OfFile))|N(umberOfColorComponents|ext(MapEnumeratorPair|HashEnumeratorItem))|C(o(n(tainsRect|vert(GlyphsToPackedGlyphs|Swapped(DoubleToHost|FloatToHost)|Host(DoubleToSwapped|FloatToSwapped)))|unt(MapTable|HashTable|Frames|Windows(ForContext)?)|py(M(emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(MapTables|HashTables))|lassFromString|reate(MapTable(WithZone)?|HashTable(WithZone)?|Zone|File(namePboardType|ContentsPboardType)))|TemporaryDirectory|I(s(ControllerMarker|EmptyRect|FreedObject)|n(setRect|crementExtraRefCount|te(r(sect(sRect|ionR(ect|ange))|faceStyleForKey)|gralRect)))|Zone(Realloc|Malloc|Name|Calloc|Fr(omPointer|ee))|O(penStepRootDirectory|ffsetRect)|D(i(sableScreenUpdates|videRect)|ottedFrameRect|e(c(imal(Round|Multiply|S(tring|ubtract)|Normalize|Co(py|mpa(ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(MemoryPages|Object))|raw(Gr(oove|ayBezel)|B(itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(hiteBezel|indowBackground)|LightBezel))|U(serName|n(ionR(ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(Bundle(Setup|Cleanup)|Setup(VirtualMachine)?|Needs(ToLoadClasses|VirtualMachine)|ClassesF(orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(oint(InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(n(d(MapTableEnumeration|HashTableEnumeration)|umerate(MapTable|HashTable)|ableScreenUpdates)|qual(R(ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(ileTypeForHFSTypeCode|ullUserName|r(ee(MapTable|HashTable)|ame(Rect(WithWidth(UsingOperation)?)?|Address)))|Wi(ndowList(ForContext)?|dth)|Lo(cationInRange|g(v|PageSize)?)|A(ccessibility(R(oleDescription(ForUIElement)?|aiseBadArgumentException)|Unignored(Children(ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(Main|Load)|vailableWindowDepths|ll(MapTable(Values|Keys)|HashTableObjects|ocate(MemoryPages|Collectable|Object)))))\\\\b\"\n    },\n    \"anonymous_pattern_2\": {\n      \"begin\": \"((@)(implementation))\\\\s+([A-Za-z_][A-Za-z0-9_]*)\\\\s*(?::\\\\s*([A-Za-z][A-Za-z0-9]*))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.objc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.objc\"\n        },\n        \"5\": {\n          \"name\": \"entity.other.inherited-class.objc\"\n        }\n      },\n      \"contentName\": \"meta.scope.implementation.objc\",\n      \"end\": \"((@)end)\\\\b\",\n      \"name\": \"meta.implementation.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#implementation_innards\"\n        }\n      ]\n    },\n    \"anonymous_pattern_20\": {\n      \"match\": \"\\\\bNS(RuleEditor|G(arbageCollector|radient)|MapTable|HashTable|Co(ndition|llectionView(Item)?)|T(oolbarItemGroup|extInputClient|r(eeNode|ackingArea))|InvocationOperation|Operation(Queue)?|D(ictionaryController|ockTile)|P(ointer(Functions|Array)|athC(o(ntrol(Delegate)?|mponentCell)|ell(Delegate)?)|r(intPanelAccessorizing|edicateEditor(RowTemplate)?))|ViewController|FastEnumeration|Animat(ionContext|ablePropertyContainer))\\\\b\",\n      \"name\": \"support.class.cocoa.leopard.objc\"\n    },\n    \"anonymous_pattern_21\": {\n      \"match\": \"\\\\bNS(R(u(nLoop|ler(Marker|View))|e(sponder|cursiveLock|lativeSpecifier)|an(domSpecifier|geSpecifier))|G(etCommand|lyph(Generator|Storage|Info)|raphicsContext)|XML(Node|D(ocument|TD(Node)?)|Parser|Element)|M(iddleSpecifier|ov(ie(View)?|eCommand)|utable(S(tring|et)|C(haracterSet|opying)|IndexSet|D(ictionary|ata)|URLRequest|ParagraphStyle|A(ttributedString|rray))|e(ssagePort(NameServer)?|nu(Item(Cell)?|View)?|t(hodSignature|adata(Item|Query(ResultGroup|AttributeValueTuple)?)))|a(ch(BootstrapServer|Port)|trix))|B(itmapImageRep|ox|u(ndle|tton(Cell)?)|ezierPath|rowser(Cell)?)|S(hadow|c(anner|r(ipt(SuiteRegistry|C(o(ercionHandler|mmand(Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(er|View)|een))|t(epper(Cell)?|atus(Bar|Item)|r(ing|eam))|imple(HorizontalTypesetter|CString)|o(cketPort(NameServer)?|und|rtDescriptor)|p(e(cifierTest|ech(Recognizer|Synthesizer)|ll(Server|Checker))|litView)|e(cureTextField(Cell)?|t(Command)?|archField(Cell)?|rializer|gmentedC(ontrol|ell))|lider(Cell)?|avePanel)|H(ost|TTP(Cookie(Storage)?|URLResponse)|elpManager)|N(ib(Con(nector|trolConnector)|OutletConnector)?|otification(Center|Queue)?|u(ll|mber(Formatter)?)|etService(Browser)?|ameSpecifier)|C(ha(ngeSpelling|racterSet)|o(n(stantString|nection|trol(ler)?|ditionLock)|d(ing|er)|unt(Command|edSet)|pying|lor(Space|P(ick(ing(Custom|Default)|er)|anel)|Well|List)?|m(p(oundPredicate|arisonPredicate)|boBox(Cell)?))|u(stomImageRep|rsor)|IImageRep|ell|l(ipView|o(seCommand|neCommand)|assDescription)|a(ched(ImageRep|URLResponse)|lendar(Date)?)|reateCommand)|T(hread|ypesetter|ime(Zone|r)|o(olbar(Item(Validations)?)?|kenField(Cell)?)|ext(Block|Storage|Container|Tab(le(Block)?)?|Input|View|Field(Cell)?|List|Attachment(Cell)?)?|a(sk|b(le(Header(Cell|View)|Column|View)|View(Item)?))|reeController)|I(n(dex(S(pecifier|et)|Path)|put(Manager|S(tream|erv(iceProvider|er(MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(Rep|Cell|View)?)|O(ut(putStream|lineView)|pen(GL(Context|Pixel(Buffer|Format)|View)|Panel)|bj(CTypeSerializationCallBack|ect(Controller)?))|D(i(st(antObject(Request)?|ributed(NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(Controller)?|e(serializer|cimalNumber(Behaviors|Handler)?|leteCommand)|at(e(Components|Picker(Cell)?|Formatter)?|a)|ra(wer|ggingInfo))|U(ser(InterfaceValidations|Defaults(Controller)?)|RL(Re(sponse|quest)|Handle(Client)?|C(onnection|ache|redential(Storage)?)|Download(Delegate)?|Prot(ocol(Client)?|ectionSpace)|AuthenticationChallenge(Sender)?)?|n(iqueIDSpecifier|doManager|archiver))|P(ipe|o(sitionalSpecifier|pUpButton(Cell)?|rt(Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(steboard|nel|ragraphStyle|geLayout)|r(int(Info|er|Operation|Panel)|o(cessInfo|tocolChecker|perty(Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(numerator|vent|PSImageRep|rror|x(ception|istsCommand|pression))|V(iew(Animation)?|al(idated(ToobarItem|UserInterfaceItem)|ue(Transformer)?))|Keyed(Unarchiver|Archiver)|Qui(ckDrawView|tCommand)|F(ile(Manager|Handle|Wrapper)|o(nt(Manager|Descriptor|Panel)?|rm(Cell|atter)))|W(hoseSpecifier|indow(Controller)?|orkspace)|L(o(c(k(ing)?|ale)|gicalTest)|evelIndicator(Cell)?|ayoutManager)|A(ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(ication|e(Script|Event(Manager|Descriptor)))|ffineTransform|lert|r(chiver|ray(Controller)?)))\\\\b\",\n      \"name\": \"support.class.cocoa.objc\"\n    },\n    \"anonymous_pattern_22\": {\n      \"match\": \"\\\\bNS(R(oundingMode|ule(Editor(RowType|NestingMode)|rOrientation)|e(questUserAttentionType|lativePosition))|G(lyphInscription|radientDrawingOptions)|XML(NodeKind|D(ocumentContentKind|TDNodeKind)|ParserError)|M(ultibyteGlyphPacking|apTableOptions)|B(itmapFormat|oxType|ezierPathElement|ackgroundStyle|rowserDropOperation)|S(tr(ing(CompareOptions|DrawingOptions|EncodingConversionOptions)|eam(Status|Event))|p(eechBoundary|litViewDividerStyle)|e(archPathD(irectory|omainMask)|gmentS(tyle|witchTracking))|liderType|aveOptions)|H(TTPCookieAcceptPolicy|ashTableOptions)|N(otification(SuspensionBehavior|Coalescing)|umberFormatter(RoundingMode|Behavior|Style|PadPosition)|etService(sError|Options))|C(haracterCollection|o(lor(RenderingIntent|SpaceModel|PanelMode)|mp(oundPredicateType|arisonPredicateModifier))|ellStateValue|al(culationError|endarUnit))|T(ypesetterControlCharacterAction|imeZoneNameStyle|e(stComparisonOperation|xt(Block(Dimension|V(erticalAlignment|alueType)|Layer)|TableLayoutAlgorithm|FieldBezelStyle))|ableView(SelectionHighlightStyle|ColumnAutoresizingStyle)|rackingAreaOptions)|I(n(sertionPosition|te(rfaceStyle|ger))|mage(RepLoadStatus|Scaling|CacheMode|FrameStyle|LoadStatus|Alignment))|Ope(nGLPixelFormatAttribute|rationQueuePriority)|Date(Picker(Mode|Style)|Formatter(Behavior|Style))|U(RL(RequestCachePolicy|HandleStatus|C(acheStoragePolicy|redentialPersistence))|Integer)|P(o(stingStyle|int(ingDeviceType|erFunctionsOptions)|pUpArrowPosition)|athStyle|r(int(ing(Orientation|PaginationMode)|erTableStatus|PanelOptions)|opertyList(MutabilityOptions|Format)|edicateOperatorType))|ExpressionType|KeyValue(SetMutationKind|Change)|QTMovieLoopMode|F(indPanel(SubstringMatchType|Action)|o(nt(RenderingMode|FamilyClass)|cusRingPlacement))|W(hoseSubelementIdentifier|ind(ingRule|ow(B(utton|ackingLocation)|SharingType|CollectionBehavior)))|L(ine(MovementDirection|SweepDirection|CapStyle|JoinStyle)|evelIndicatorStyle)|Animation(BlockingMode|Curve))\\\\b\",\n      \"name\": \"support.type.cocoa.leopard.objc\"\n    },\n    \"anonymous_pattern_23\": {\n      \"match\": \"\\\\bC(I(Sampler|Co(ntext|lor)|Image(Accumulator)?|PlugIn(Registration)?|Vector|Kernel|Filter(Generator|Shape)?)|A(Renderer|MediaTiming(Function)?|BasicAnimation|ScrollLayer|Constraint(LayoutManager)?|T(iledLayer|extLayer|rans(ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(nimation(Group)?|ction)))\\\\b\",\n      \"name\": \"support.class.quartz.objc\"\n    },\n    \"anonymous_pattern_24\": {\n      \"match\": \"\\\\bC(G(Float|Point|Size|Rect)|IFormat|AConstraintAttribute)\\\\b\",\n      \"name\": \"support.type.quartz.objc\"\n    },\n    \"anonymous_pattern_25\": {\n      \"match\": \"\\\\bNS(R(ect(Edge)?|ange)|G(lyph(Relation|LayoutMode)?|radientType)|M(odalSession|a(trixMode|p(Table|Enumerator)))|B(itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(cr(oll(er(Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(Granularity|Direction|Affinity)|wapped(Double|Float)|aveOperationType)|Ha(sh(Table|Enumerator)|ndler(2)?)|C(o(ntrol(Size|Tint)|mp(ositingOperation|arisonResult))|ell(State|Type|ImagePosition|Attribute))|T(hreadPrivate|ypesetterGlyphInfo|i(ckMarkPosition|tlePosition|meInterval)|o(ol(TipTag|bar(SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(TabType|Alignment)|ab(State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(ContextAuxiliary|PixelFormatAuxiliary)|D(ocumentChangeType|atePickerElementFlags|ra(werState|gOperation))|UsableScrollerParts|P(oint|r(intingPageOrder|ogressIndicator(Style|Th(ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(nt(SymbolicTraits|TraitMask|Action)|cusRingType)|W(indow(OrderingMode|Depth)|orkspace(IconCreationOptions|LaunchOptions)|ritingDirection)|L(ineBreakMode|ayout(Status|Direction))|A(nimation(Progress|Effect)|ppl(ication(TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle))\\\\b\",\n      \"name\": \"support.type.cocoa.objc\"\n    },\n    \"anonymous_pattern_26\": {\n      \"match\": \"\\\\bNS(NotFound|Ordered(Ascending|Descending|Same))\\\\b\",\n      \"name\": \"support.constant.cocoa.objc\"\n    },\n    \"anonymous_pattern_27\": {\n      \"match\": \"\\\\bNS(MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification\\\\b\",\n      \"name\": \"support.constant.notification.cocoa.leopard.objc\"\n    },\n    \"anonymous_pattern_28\": {\n      \"match\": \"\\\\bNS(Menu(Did(RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(ystemColorsDidChange|plitView(DidResizeSubviews|WillResizeSubviews))|C(o(nt(extHelpModeDid(Deactivate|Activate)|rolT(intDidChange|extDid(BeginEditing|Change|EndEditing)))|lor(PanelColorDidChange|ListDidChange)|mboBox(Selection(IsChanging|DidChange)|Will(Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(oolbar(DidRemoveItem|WillAddItem)|ext(Storage(DidProcessEditing|WillProcessEditing)|Did(BeginEditing|Change|EndEditing)|View(DidChange(Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)))|ImageRepRegistryDidChange|OutlineView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)|Item(Did(Collapse|Expand)|Will(Collapse|Expand)))|Drawer(Did(Close|Open)|Will(Close|Open))|PopUpButton(CellWillPopUp|WillPopUp)|View(GlobalFrameDidChange|BoundsDidChange|F(ocusDidChange|rameDidChange))|FontSetChanged|W(indow(Did(Resi(ze|gn(Main|Key))|M(iniaturize|ove)|Become(Main|Key)|ChangeScreen(|Profile)|Deminiaturize|Update|E(ndSheet|xpose))|Will(M(iniaturize|ove)|BeginSheet|Close))|orkspace(SessionDid(ResignActive|BecomeActive)|Did(Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(Sleep|Unmount|PowerOff|LaunchApplication)))|A(ntialiasThresholdChanged|ppl(ication(Did(ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(nhide|pdate)|FinishLaunching)|Will(ResignActive|BecomeActive|Hide|Terminate|U(nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification\\\\b\",\n      \"name\": \"support.constant.notification.cocoa.objc\"\n    },\n    \"anonymous_pattern_29\": {\n      \"match\": \"\\\\bNS(RuleEditor(RowType(Simple|Compound)|NestingMode(Si(ngle|mple)|Compound|List))|GradientDraws(BeforeStartingLocation|AfterEndingLocation)|M(inusSetExpressionType|a(chPortDeallocate(ReceiveRight|SendRight|None)|pTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(oxCustom|undleExecutableArchitecture(X86|I386|PPC(64)?)|etweenPredicateOperatorType|ackgroundStyle(Raised|Dark|L(ight|owered)))|S(tring(DrawingTruncatesLastVisibleLine|EncodingConversion(ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(e(ech(SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(GrammarFlag|SpellingFlag))|litViewDividerStyleThi(n|ck))|e(rvice(RequestTimedOutError|M(iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(inimum|aximum)|Application(NotFoundError|LaunchFailedError))|gmentStyle(Round(Rect|ed)|SmallSquare|Capsule|Textured(Rounded|Square)|Automatic)))|H(UDWindowMask|ashTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(oModeColorPanel|etServiceNoAutoRename)|C(hangeRedone|o(ntainsPredicateOperatorType|l(orRenderingIntent(RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(None|ContentArea|TrackableArea|EditableTextArea))|T(imeZoneNameStyle(S(hort(Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(Regular|SourceList)|racking(Mouse(Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(ssumeInside|ctive(In(KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(n(tersectSetExpressionType|dexedColorSpaceModel)|mageScale(None|Proportionally(Down|UpOrDown)|AxesIndependently))|Ope(nGLPFAAllowOfflineRenderers|rationQueue(DefaultMaxConcurrentOperationCount|Priority(High|Normal|Very(High|Low)|Low)))|D(iacriticInsensitiveSearch|ownloadsDirectory)|U(nionSetExpressionType|TF(16(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(ointerFunctions(Ma(chVirtualMemory|llocMemory)|Str(ongMemory|uctPersonality)|C(StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(paque(Memory|Personality)|bjectP(ointerPersonality|ersonality)))|at(hStyle(Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(Scaling|Copies|Orientation|P(a(perSize|ge(Range|SetupAccessory))|review)))|Executable(RuntimeMismatchError|NotLoadableError|ErrorM(inimum|aximum)|L(inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(Initial|Prior)|F(i(ndPanelSubstringMatchType(StartsWith|Contains|EndsWith|FullWord)|leRead(TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(ndow(BackingLocation(MainMemory|Default|VideoMemory)|Sharing(Read(Only|Write)|None)|CollectionBehavior(MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType)\\\\b\",\n      \"name\": \"support.constant.cocoa.leopard.objc\"\n    },\n    \"anonymous_pattern_3\": {\n      \"begin\": \"@\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.objc\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.objc\"\n        }\n      },\n      \"name\": \"string.quoted.double.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        },\n        {\n          \"match\": \"(?x)%\\n\\t\\t\\t\\t\\t\\t(\\\\d+\\\\$)?                             # field (argument #)\\n\\t\\t\\t\\t\\t\\t[#0\\\\- +']*                          # flags\\n\\t\\t\\t\\t\\t\\t((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?              # minimum field width\\n\\t\\t\\t\\t\\t\\t(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?         # precision\\n\\t\\t\\t\\t\\t\\t[@]                                  # conversion type\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.placeholder.objc\"\n        },\n        {\n          \"include\": \"#string_placeholder\"\n        }\n      ]\n    },\n    \"anonymous_pattern_30\": {\n      \"match\": \"\\\\bNS(R(GB(ModeColorPanel|ColorSpaceModel)|ight(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey)|ound(RectBezelStyle|Bankers|ed(BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(CapStyle|JoinStyle))|un(StoppedResponse|ContinuesResponse|AbortedResponse)|e(s(izableWindowMask|et(CursorRectsRunLoopOrdering|FunctionKey))|ce(ssedBezelStyle|iver(sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(evancyLevelIndicatorStyle|ative(Before|After))|gular(SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(n(domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(ModeMatrix|Button)))|G(IFFileType|lyph(Below|Inscribe(B(elow|ase)|Over(strike|Below)|Above)|Layout(WithPrevious|A(tAPoint|gainstAPoint))|A(ttribute(BidiLevel|Soft|Inscribe|Elastic)|bove))|r(ooveBorder|eaterThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|a(y(ModeColorPanel|ColorSpaceModel)|dient(None|Con(cave(Strong|Weak)|vex(Strong|Weak)))|phiteControlTint)))|XML(N(o(tationDeclarationKind|de(CompactEmptyElement|IsCDATA|OptionsNone|Use(SingleQuotes|DoubleQuotes)|Pre(serve(NamespaceOrder|C(haracterReferences|DATA)|DTD|Prefixes|E(ntities|mptyElements)|Quotes|Whitespace|A(ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(ocument(X(MLKind|HTMLKind|Include)|HTMLKind|T(idy(XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(arser(GTRequiredError|XMLDeclNot(StartedError|FinishedError)|Mi(splaced(XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(StartedError|FinishedError))|S(t(andaloneValueError|ringNot(StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(MTOKENRequiredError|o(t(ationNot(StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(haracterRef(In(DTDError|PrologError|EpilogError)|AtEOFError)|o(nditionalSectionNot(StartedError|FinishedError)|mment(NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(ternalError|valid(HexCharacterRefError|C(haracter(RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(NameError|Error)))|OutOfMemoryError|D(ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(RI(RequiredError|FragmentError)|n(declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(MissingSemiError|NoNameError|In(Internal(SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(ocessingInstructionNot(StartedError|FinishedError)|ematureDocumentEndError))|E(n(codingNotSupportedError|tity(Ref(In(DTDError|PrologError|EpilogError)|erence(MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(StartedError|FinishedError)|Is(ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(StartedError|FinishedError)|xt(ernalS(tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(iteralNot(StartedError|FinishedError)|T(RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(RedefinedError|HasNoValueError|Not(StartedError|FinishedError)|ListNot(StartedError|FinishedError)))|rocessingInstructionKind)|E(ntity(GeneralKind|DeclarationKind|UnparsedKind|P(ar(sedKind|ameterKind)|redefined))|lement(Declaration(MixedKind|UndefinedKind|E(lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(N(MToken(sKind|Kind)|otationKind)|CDATAKind|ID(Ref(sKind|Kind)|Kind)|DeclarationKind|En(tit(yKind|iesKind)|umerationKind)|Kind))|M(i(n(XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(nthCalendarUnit|deSwitchFunctionKey|use(Moved(Mask)?|E(ntered(Mask)?|ventSubtype|xited(Mask)?))|veToBezierPathElement|mentary(ChangeButton|Push(Button|InButton)|Light(Button)?))|enuFunctionKey|a(c(intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(XEdge|YEdge))|ACHOperatingSystem)|B(MPFileType|o(ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(Se(condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(zelBorder|velLineJoinStyle|low(Bottom|Top)|gin(sWith(Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(spaceCharacter|tabTextMovement|ingStore(Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(owser(NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(h(ift(JISStringEncoding|KeyMask)|ow(ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(s(ReqFunctionKey|tem(D(omainMask|efined(Mask)?)|FunctionKey))|mbolStringEncoding)|c(a(nnedOption|le(None|ToFit|Proportionally))|r(oll(er(NoPart|Increment(Page|Line|Arrow)|Decrement(Page|Line|Arrow)|Knob(Slot)?|Arrows(M(inEnd|axEnd)|None|DefaultSetting))|Wheel(Mask)?|LockFunctionKey)|eenChangedEventType))|t(opFunctionKey|r(ingDrawing(OneShot|DisableScreenFontSubstitution|Uses(DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(Status(Reading|NotOpen|Closed|Open(ing)?|Error|Writing|AtEnd)|Event(Has(BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(ndEncountered|rrorOccurred)))))|i(ngle(DateMode|UnderlineStyle)|ze(DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(condCalendarUnit|lect(By(Character|Paragraph|Word)|i(ng(Next|Previous)|onAffinity(Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(Momentary|Select(One|Any)))|quareLineCapStyle|witchButton|ave(ToOperation|Op(tions(Yes|No|Ask)|eration)|AsOperation)|mall(SquareBezelStyle|C(ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(ighlightModeMatrix|SBModeColorPanel|o(ur(Minute(SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(Never|OnlyFromMainDocumentDomain|Always)|e(lp(ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(MonthDa(yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(o(n(StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(ification(SuspensionBehavior(Hold|Coalesce|D(eliverImmediately|rop))|NoCoalescing|CoalescingOn(Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(cr(iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(itle|opLevelContainersSpecifierError|abs(BezelBorder|NoBorder|LineBorder))|I(nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(ll(Glyph|CellType)|m(eric(Search|PadKeyMask)|berFormatter(Round(Half(Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(10|Default)|S(cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(ercentStyle|ad(Before(Suffix|Prefix)|After(Suffix|Prefix))))))|e(t(Services(BadArgumentError|NotFoundError|C(ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(t(iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(hange(ReadOtherContents|GrayCell(Mask)?|BackgroundCell(Mask)?|Cleared|Done|Undone|Autosaved)|MYK(ModeColorPanel|ColorSpaceModel)|ircular(BezelStyle|Slider)|o(n(stantValueExpressionType|t(inuousCapacityLevelIndicatorStyle|entsCellMask|ain(sComparison|erSpecifierError)|rol(Glyph|KeyMask))|densedFontMask)|lor(Panel(RGBModeMask|GrayModeMask|HSBModeMask|C(MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(p(osite(XOR|Source(In|O(ut|ver)|Atop)|Highlight|C(opy|lear)|Destination(In|O(ut|ver)|Atop)|Plus(Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(stom(SelectorPredicateOperatorType|PaletteModeColorPanel)|r(sor(Update(Mask)?|PointingDevice)|veToBezierPathElement))|e(nterT(extAlignment|abStopType)|ll(State|H(ighlighted|as(Image(Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(Bordered|InsetButton)|Disabled|Editable|LightsBy(Gray|Background|Contents)|AllowsMixedState))|l(ipPagination|o(s(ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(ControlTint|DisplayFunctionKey|LineFunctionKey))|a(seInsensitive(Search|PredicateOption)|n(notCreateScriptCommandError|cel(Button|TextMovement))|chesDirectory|lculation(NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(itical(Request|AlertStyle)|ayonModeColorPanel))|T(hick(SquareBezelStyle|erSquareBezelStyle)|ypesetter(Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(ineBreakAction|atestBehavior))|i(ckMark(Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(olbarItemVisibilityPriority(Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(Compression(N(one|EXT)|CCITTFAX(3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(rminate(Now|Cancel|Later)|xt(Read(InapplicableDocumentTypeError|WriteErrorM(inimum|aximum))|Block(M(i(nimum(Height|Width)|ddleAlignment)|a(rgin|ximum(Height|Width)))|B(o(ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(Characters|Attributes)|CellType|ured(RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(Character|TextMovement|le(tP(oint(Mask|EventSubtype)?|roximity(Mask|EventSubtype)?)|Column(NoResizing|UserResizingMask|AutoresizingMask)|View(ReverseSequentialColumnAutoresizingStyle|GridNone|S(olid(HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(n(sert(CharFunctionKey|FunctionKey|LineFunctionKey)|t(Type|ernalS(criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(2022JPStringEncoding|Latin(1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(R(ight|ep(MatchesDevice|LoadStatus(ReadingHeader|Completed|InvalidData|Un(expectedEOF|knownType)|WillNeedAllData)))|Below|C(ellType|ache(BySize|Never|Default|Always))|Interpolation(High|None|Default|Low)|O(nly|verlaps)|Frame(Gr(oove|ayBezel)|Button|None|Photo)|L(oadStatus(ReadError|C(ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(lign(Right|Bottom(Right|Left)?|Center|Top(Right|Left)?|Left)|bove)))|O(n(State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|TextMovement)|SF1OperatingSystem|pe(n(GL(GO(Re(setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(R(obust|endererID)|M(inimumPolicy|ulti(sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(creenMask|te(ncilSize|reo)|ingleRenderer|upersample|ample(s|Buffers|Alpha))|NoRecovery|C(o(lor(Size|Float)|mpliant)|losestPolicy)|OffScreen|D(oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(cc(umSize|elerated)|ux(Buffers|DepthStencil)|l(phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(B(itfield|oolType)|S(hortType|tr(ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(Type|longType)|ArrayType))|D(i(s(c(losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(Selection|PredicateModifier))|o(c(ModalWindowMask|ument(Directory|ationDirectory))|ubleType|wn(TextMovement|ArrowFunctionKey))|e(s(cendingPageOrder|ktopDirectory)|cimalTabStopType|v(ice(NColorSpaceModel|IndependentModifierFlagsMask)|eloper(Directory|ApplicationDirectory))|fault(ControlTint|TokenStyle)|lete(Char(acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(yCalendarUnit|teFormatter(MediumStyle|Behavior(10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(wer(Clos(ingState|edState)|Open(ingState|State))|gOperation(Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(ser(CancelledError|D(irectory|omainMask)|FunctionKey)|RL(Handle(NotLoaded|Load(Succeeded|InProgress|Failed))|CredentialPersistence(None|Permanent|ForSession))|n(scaledWindowMask|cachedRead|i(codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(o(CloseGroupingRunLoopOrdering|FunctionKey)|e(finedDateComponent|rline(Style(Single|None|Thick|Double)|Pattern(Solid|D(ot|ash(Dot(Dot)?)?)))))|known(ColorSpaceModel|P(ointingDevice|ageOrder)|KeyS(criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(ustifiedTextAlignment|PEG(2000FileType|FileType)|apaneseEUC(GlyphPacking|StringEncoding))|P(o(s(t(Now|erFontMask|WhenIdle|ASAP)|iti(on(Replace|Be(fore|ginning)|End|After)|ve(IntType|DoubleType|FloatType)))|pUp(NoArrow|ArrowAt(Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(InCell(Mask)?|OnPushOffButton)|e(n(TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(Mask)?)|P(S(caleField|tatus(Title|Field)|aveButton)|N(ote(Title|Field)|ame(Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(a(perFeedButton|ge(Range(To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(useFunctionKey|ragraphSeparatorCharacter|ge(DownFunctionKey|UpFunctionKey))|r(int(ing(ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(NotFound|OK|Error)|FunctionKey)|o(p(ertyList(XMLFormat|MutableContainers(AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(BarStyle|SpinningStyle|Preferred(SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(ssedTab|vFunctionKey))|L(HeightForm|CancelButton|TitleField|ImageButton|O(KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(n(terCharacter|d(sWith(Comparison|PredicateOperatorType)|FunctionKey))|v(e(nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(Comparison|PredicateOperatorType)|ra(serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(clude(10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(i(ew(M(in(XMargin|YMargin)|ax(XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(lidationErrorM(inimum|aximum)|riableExpressionType))|Key(SpecifierEvaluationScriptError|Down(Mask)?|Up(Mask)?|PathExpressionType|Value(MinusSetMutation|SetSetMutation|Change(Re(placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(New|Old)|UnionSetMutation|ValidationError))|QTMovie(NormalPlayback|Looping(BackAndForthPlayback|Playback))|F(1(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(nd(PanelAction(Replace(A(ndFind|ll(InSelection)?))?|S(howFindPanel|e(tFindString|lectAll(InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(Read(No(SuchFileError|PermissionError)|CorruptFileError|In(validFileNameError|applicableStringEncodingError)|Un(supportedSchemeError|knownError))|HandlingPanel(CancelButton|OKButton)|NoSuchFileError|ErrorM(inimum|aximum)|Write(NoPermissionError|In(validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(nt(Mo(noSpaceTrait|dernSerifsClass)|BoldTrait|S(ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(o(ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(ntegerAdvancementsRenderingMode|talicTrait)|O(ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(nknownClass|IOptimizedTrait)|Panel(S(hadowEffectModeMask|t(andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(amilyClassMask|reeformSerifsClass)|Antialiased(RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(Below|Type(None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(attingError(M(inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(ExpressionType|KeyMask)|3(1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(RevertButton|S(ize(Title|Field)|etButton)|CurrentField|Preview(Button|Field))|l(oat(ingPointSamplesBitmapFormat|Type)|agsChanged(Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(heelModeColorPanel|indow(s(NTOperatingSystem|CP125(1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(InterfaceStyle|OperatingSystem))|M(iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(ctivation|ddingToRecents)|A(sync|nd(Hide(Others)?|Print)|llowingClassicStartup))|eek(day(CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(ntsBidiLevels|rningAlertStyle)|r(itingDirection(RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(i(stModeMatrix|ne(Moves(Right|Down|Up|Left)|B(order|reakBy(C(harWrapping|lipping)|Truncating(Middle|Head|Tail)|WordWrapping))|S(eparatorCharacter|weep(Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(ssThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey))|a(yout(RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(sc(iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(y(Type|PredicateModifier|EventMask)|choredSearch|imation(Blocking|Nonblocking(Threaded)?|E(ffect(DisappearingItemDefault|Poof)|ase(In(Out)?|Out))|Linear)|dPredicateType)|t(Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(obe(GB1CharacterCollection|CNS1CharacterCollection|Japan(1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(saveOperation|Pagination)|pp(lication(SupportDirectory|D(irectory|e(fined(Mask)?|legateReply(Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(Mask)?)|l(ternateKeyMask|pha(ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(sWrongScriptError|EvaluationScriptError)|bove(Bottom|Top)|WTEventType))\\\\b\",\n      \"name\": \"support.constant.cocoa.objc\"\n    },\n    \"anonymous_pattern_4\": {\n      \"begin\": \"\\\\b(id)\\\\s*(?=<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.objc\"\n        }\n      },\n      \"end\": \"(?<=>)\",\n      \"name\": \"meta.id-with-protocol.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#protocol_list\"\n        }\n      ]\n    },\n    \"anonymous_pattern_5\": {\n      \"match\": \"\\\\b(NS_DURING|NS_HANDLER|NS_ENDHANDLER)\\\\b\",\n      \"name\": \"keyword.control.macro.objc\"\n    },\n    \"anonymous_pattern_7\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(try|catch|finally|throw)\\\\b\",\n      \"name\": \"keyword.control.exception.objc\"\n    },\n    \"anonymous_pattern_8\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(synchronized)\\\\b\",\n      \"name\": \"keyword.control.synchronize.objc\"\n    },\n    \"anonymous_pattern_9\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(required|optional)\\\\b\",\n      \"name\": \"keyword.control.protocol-specification.objc\"\n    },\n    \"apple_foundation_functional_macros\": {\n      \"begin\": \"(\\\\b(?:API_AVAILABLE|API_DEPRECATED|API_UNAVAILABLE|NS_AVAILABLE|NS_AVAILABLE_MAC|NS_AVAILABLE_IOS|NS_DEPRECATED|NS_DEPRECATED_MAC|NS_DEPRECATED_IOS|NS_SWIFT_NAME))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.preprocessor.apple-foundation.objc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.macro.arguments.begin.bracket.round.apple-foundation.objc\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.macro.arguments.end.bracket.round.apple-foundation.objc\"\n        }\n      },\n      \"name\": \"meta.preprocessor.macro.callable.apple-foundation.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#c_lang\"\n        }\n      ]\n    },\n    \"bracketed_content\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.begin.objc\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.objc\"\n        }\n      },\n      \"name\": \"meta.bracketed.objc\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=predicateWithFormat:)(?<=NSPredicate )(predicateWithFormat:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.any-method.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.arguments.objc\"\n            }\n          },\n          \"end\": \"(?=\\\\])\",\n          \"name\": \"meta.function-call.predicate.objc\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.arguments.objc\"\n                }\n              },\n              \"match\": \"\\\\bargument(Array|s)(:)\",\n              \"name\": \"support.function.any-method.name-of-parameter.objc\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.arguments.objc\"\n                }\n              },\n              \"match\": \"\\\\b\\\\w+(:)\",\n              \"name\": \"invalid.illegal.unknown-method.objc\"\n            },\n            {\n              \"begin\": \"@\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.objc\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(AND|OR|NOT|IN)\\\\b\",\n                  \"name\": \"keyword.operator.logical.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\b(ALL|ANY|SOME|NONE)\\\\b\",\n                  \"name\": \"constant.language.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\b(NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\\\b\",\n                  \"name\": \"constant.language.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\b(MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\\\b\",\n                  \"name\": \"keyword.operator.comparison.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\bC(ASEINSENSITIVE|I)\\\\b\",\n                  \"name\": \"keyword.other.modifier.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\b(ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\\\b\",\n                  \"name\": \"keyword.other.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\\\\\(\\\\\\\\|[abefnrtv'\\\"?]|[0-3]\\\\d{,2}|[4-7]\\\\d?|x[a-zA-Z0-9]+)\",\n                  \"name\": \"constant.character.escape.objc\"\n                },\n                {\n                  \"match\": \"\\\\\\\\.\",\n                  \"name\": \"invalid.illegal.unknown-escape.objc\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#special_variables\"\n            },\n            {\n              \"include\": \"#c_functions\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\w)(?<=[\\\\w\\\\])\\\"] )(\\\\w+(?:(:)|(?=\\\\])))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.any-method.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.arguments.objc\"\n            }\n          },\n          \"end\": \"(?=\\\\])\",\n          \"name\": \"meta.function-call.objc\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.arguments.objc\"\n                }\n              },\n              \"match\": \"\\\\b\\\\w+(:)\",\n              \"name\": \"support.function.any-method.name-of-parameter.objc\"\n            },\n            {\n              \"include\": \"#special_variables\"\n            },\n            {\n              \"include\": \"#c_functions\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#special_variables\"\n        },\n        {\n          \"include\": \"#c_functions\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"c_functions\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.support.function.leading.objc\"\n            },\n            \"2\": {\n              \"name\": \"support.function.C99.objc\"\n            }\n          },\n          \"match\": \"(\\\\s*)\\\\b(hypot(f|l)?|s(scanf|ystem|nprintf|ca(nf|lb(n(f|l)?|ln(f|l)?))|i(n(h(f|l)?|f|l)?|gn(al|bit))|tr(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(jmp|vbuf|locale|buf)|qrt(f|l)?|w(scanf|printf)|rand)|n(e(arbyint(f|l)?|xt(toward(f|l)?|after(f|l)?))|an(f|l)?)|c(s(in(h(f|l)?|f|l)?|qrt(f|l)?)|cos(h(f)?|f|l)?|imag(f|l)?|t(ime|an(h(f|l)?|f|l)?)|o(s(h(f|l)?|f|l)?|nj(f|l)?|pysign(f|l)?)|p(ow(f|l)?|roj(f|l)?)|e(il(f|l)?|xp(f|l)?)|l(o(ck|g(f|l)?)|earerr)|a(sin(h(f|l)?|f|l)?|cos(h(f|l)?|f|l)?|tan(h(f|l)?|f|l)?|lloc|rg(f|l)?|bs(f|l)?)|real(f|l)?|brt(f|l)?)|t(ime|o(upper|lower)|an(h(f|l)?|f|l)?|runc(f|l)?|gamma(f|l)?|mp(nam|file))|i(s(space|n(ormal|an)|cntrl|inf|digit|u(nordered|pper)|p(unct|rint)|finite|w(space|c(ntrl|type)|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit|blank)|l(ower|ess(equal|greater)?)|al(num|pha)|gr(eater(equal)?|aph)|xdigit|blank)|logb(f|l)?|max(div|abs))|di(v|fftime)|_Exit|unget(c|wc)|p(ow(f|l)?|ut(s|c(har)?|wc(har)?)|error|rintf)|e(rf(c(f|l)?|f|l)?|x(it|p(2(f|l)?|f|l|m1(f|l)?)?))|v(s(scanf|nprintf|canf|printf|w(scanf|printf))|printf|f(scanf|printf|w(scanf|printf))|w(scanf|printf)|a_(start|copy|end|arg))|qsort|f(s(canf|e(tpos|ek))|close|tell|open|dim(f|l)?|p(classify|ut(s|c|w(s|c))|rintf)|e(holdexcept|set(e(nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(aiseexcept|ror)|get(e(nv|xceptflag)|round))|flush|w(scanf|ide|printf|rite)|loor(f|l)?|abs(f|l)?|get(s|c|pos|w(s|c))|re(open|e|ad|xp(f|l)?)|m(in(f|l)?|od(f|l)?|a(f|l|x(f|l)?)?))|l(d(iv|exp(f|l)?)|o(ngjmp|cal(time|econv)|g(1(p(f|l)?|0(f|l)?)|2(f|l)?|f|l|b(f|l)?)?)|abs|l(div|abs|r(int(f|l)?|ound(f|l)?))|r(int(f|l)?|ound(f|l)?)|gamma(f|l)?)|w(scanf|c(s(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?|mbs)|pbrk|ftime|len|r(chr|tombs)|xfrm)|to(b|mb)|rtomb)|printf|mem(set|c(hr|py|mp)|move))|a(s(sert|ctime|in(h(f|l)?|f|l)?)|cos(h(f|l)?|f|l)?|t(o(i|f|l(l)?)|exit|an(h(f|l)?|2(f|l)?|f|l)?)|b(s|ort))|g(et(s|c(har)?|env|wc(har)?)|mtime)|r(int(f|l)?|ound(f|l)?|e(name|alloc|wind|m(ove|quo(f|l)?|ainder(f|l)?))|a(nd|ise))|b(search|towc)|m(odf(f|l)?|em(set|c(hr|py|mp)|move)|ktime|alloc|b(s(init|towcs|rtowcs)|towc|len|r(towc|len))))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.function-call.leading.objc\"\n            },\n            \"2\": {\n              \"name\": \"support.function.any-method.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.objc\"\n            }\n          },\n          \"match\": \"(?x) (?: (?= \\\\s )  (?:(?<=else|new|return) | (?<!\\\\w)) (\\\\s+))?\\n            \\t\\t\\t(\\\\b \\n            \\t\\t\\t\\t(?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\\\s*\\\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\\\b | :: )++                  # actual name\\n            \\t\\t\\t)\\n            \\t\\t\\t \\\\s*(\\\\()\",\n          \"name\": \"meta.function-call.objc\"\n        }\n      ]\n    },\n    \"c_lang\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-conditional\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#switch_statement\"\n        },\n        {\n          \"match\": \"\\\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\\\b\",\n          \"name\": \"keyword.control.objc\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"match\": \"typedef\",\n          \"name\": \"keyword.other.typedef.objc\"\n        },\n        {\n          \"match\": \"\\\\bin\\\\b\",\n          \"name\": \"keyword.other.in.objc\"\n        },\n        {\n          \"match\": \"\\\\b(const|extern|register|restrict|static|volatile|inline|__block)\\\\b\",\n          \"name\": \"storage.modifier.objc\"\n        },\n        {\n          \"match\": \"\\\\bk[A-Z]\\\\w*\\\\b\",\n          \"name\": \"constant.other.variable.mac-classic.objc\"\n        },\n        {\n          \"match\": \"\\\\bg[A-Z]\\\\w*\\\\b\",\n          \"name\": \"variable.other.readwrite.global.mac-classic.objc\"\n        },\n        {\n          \"match\": \"\\\\bs[A-Z]\\\\w*\\\\b\",\n          \"name\": \"variable.other.readwrite.static.mac-classic.objc\"\n        },\n        {\n          \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n          \"name\": \"constant.language.objc\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#special_variables\"\n        },\n        {\n          \"begin\": \"(?x)\\n^\\\\s* ((\\\\#)\\\\s*define) \\\\s+\\t# define\\n((?<id>[a-zA-Z_$][\\\\w$]*))\\t  # macro name\\n(?:\\n  (\\\\()\\n\\t(\\n\\t  \\\\s* \\\\g<id> \\\\s*\\t\\t # first argument\\n\\t  ((,) \\\\s* \\\\g<id> \\\\s*)*  # additional arguments\\n\\t  (?:\\\\.\\\\.\\\\.)?\\t\\t\\t# varargs ellipsis?\\n\\t)\\n  (\\\\))\\n)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.define.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.preprocessor.objc\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.begin.objc\"\n            },\n            \"6\": {\n              \"name\": \"variable.parameter.preprocessor.objc\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.separator.parameters.objc\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.end.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.macro.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*(error|warning))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.diagnostic.$3.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.diagnostic.objc\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.single.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"[^'\\\"]\",\n              \"end\": \"(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"name\": \"string.unquoted.single.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*(include(?:_next)?|import))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.$3.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.include.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.include.objc\"\n            },\n            {\n              \"begin\": \"<\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.other.lt-gt.include.objc\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#pragma-mark\"\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*line)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.line.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:((#)\\\\s*undef))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.undef.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.objc\",\n          \"patterns\": [\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n              \"name\": \"entity.name.function.preprocessor.objc\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:((#)\\\\s*pragma))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.pragma.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.pragma.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n              \"name\": \"entity.other.attribute-name.pragma.preprocessor.objc\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\\\b\",\n          \"name\": \"support.type.sys-types.objc\"\n        },\n        {\n          \"match\": \"\\\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\\\b\",\n          \"name\": \"support.type.pthread.objc\"\n        },\n        {\n          \"match\": \"(?x) \\\\b\\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\\n|uintmax_t|uintmax_t)\\n\\\\b\",\n          \"name\": \"support.type.stdint.objc\"\n        },\n        {\n          \"match\": \"\\\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\\\b\",\n          \"name\": \"support.constant.mac-classic.objc\"\n        },\n        {\n          \"match\": \"(?x) \\\\b\\n(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam\\n|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr\\n|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber\\n|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64\\n|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32\\n|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr\\n|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\\n\\\\b\",\n          \"name\": \"support.type.mac-classic.objc\"\n        },\n        {\n          \"match\": \"\\\\b([A-Za-z0-9_]+_t)\\\\b\",\n          \"name\": \"support.type.posix-reserved.objc\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"name\": \"meta.function.objc\",\n          \"begin\": \"(?<!\\\\w)(?!\\\\s*(?:not|compl|sizeof|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|_Alignof|_Alignas|while|for|do|if|else|goto|switch|return|break|case|continue|default|void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t|struct|union|enum|typedef|auto|register|static|extern|thread_local|inline|_Noreturn|const|volatile|restrict|_Atomic)\\\\s*\\\\()(?=[a-zA-Z_]\\\\w*\\\\s*\\\\()\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-innards\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        },\n        {\n          \"name\": \"meta.bracket.square.access.objc\",\n          \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.object.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.objc\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        {\n          \"name\": \"storage.modifier.array.bracket.square.objc\",\n          \"match\": \"\\\\[\\\\s*\\\\]\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.statement.objc\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.objc\"\n        }\n      ],\n      \"repository\": {\n        \"probably_a_parameter\": {\n          \"match\": \"(?<=(?:[a-zA-Z_0-9] |[&*>\\\\]\\\\)]))\\\\s*([a-zA-Z_]\\\\w*)\\\\s*(?=(?:\\\\[\\\\]\\\\s*)?(?:,|\\\\)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.probably.objc\"\n            }\n          }\n        },\n        \"access-method\": {\n          \"name\": \"meta.function-call.member.objc\",\n          \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))\\\\s*(?:(\\\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\\\s*(?:(?:\\\\.)|(?:->)))*)\\\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.object.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objc\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.dot-access.objc\"\n                },\n                {\n                  \"match\": \"->\",\n                  \"name\": \"punctuation.separator.pointer-access.objc\"\n                },\n                {\n                  \"match\": \"[a-zA-Z_][a-zA-Z_0-9]*\",\n                  \"name\": \"variable.object.objc\"\n                },\n                {\n                  \"name\": \"everything.else.objc\",\n                  \"match\": \".+\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.member.objc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.objc\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        \"block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objc\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objc\"\n                }\n              },\n              \"name\": \"meta.block.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            }\n          ]\n        },\n        \"block_innards\": {\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-enabled-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-conditional-block\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#c_function_call\"\n            },\n            {\n              \"name\": \"meta.initialization.objc\",\n              \"begin\": \"(?x)\\n(?:\\n  (?:\\n\\t(?=\\\\s)(?<!else|new|return)\\n\\t(?<=\\\\w) \\\\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)  # or word + space before name\\n  )\\n)\\n(\\n  (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++   # actual name\\n  |\\n  (?:(?<=operator) (?:[-*&<>=+!]+ | \\\\(\\\\) | \\\\[\\\\]))\\n)\\n\\\\s*(\\\\() # opening bracket\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.initialization.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.initialization.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objc\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#parens-block\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"c_function_call\": {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(?=\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n          \"end\": \"(?<=\\\\))(?!\\\\w)\",\n          \"name\": \"meta.function-call.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        \"comments\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.toc-list.banner.block.objc\"\n                }\n              },\n              \"match\": \"^/\\\\* =(\\\\s*.*?)\\\\s*= \\\\*/$\\\\n?\",\n              \"name\": \"comment.block.objc\"\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.begin.objc\"\n                }\n              },\n              \"end\": \"\\\\*/\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.end.objc\"\n                }\n              },\n              \"name\": \"comment.block.objc\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.toc-list.banner.line.objc\"\n                }\n              },\n              \"match\": \"^// =(\\\\s*.*?)\\\\s*=\\\\s*$\\\\n?\",\n              \"name\": \"comment.line.banner.objc\"\n            },\n            {\n              \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.whitespace.comment.leading.objc\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"//\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.comment.objc\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\n)\",\n                  \"name\": \"comment.line.double-slash.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#line_continuation_character\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"disabled\": {\n          \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n          \"end\": \"^\\\\s*#\\\\s*endif\\\\b\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        \"line_continuation_character\": {\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\\\\\)\\\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.line-continuation.objc\"\n                }\n              }\n            }\n          ]\n        },\n        \"parens\": {\n          \"name\": \"meta.parens.objc\",\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"parens-block\": {\n          \"name\": \"meta.parens.block.objc\",\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            },\n            {\n              \"match\": \"(?-mix:(?<!:):(?!:))\",\n              \"name\": \"punctuation.range-based.objc\"\n            }\n          ]\n        },\n        \"pragma-mark\": {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.pragma.pragma-mark.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.pragma-mark.objc\"\n            }\n          },\n          \"match\": \"^\\\\s*(((#)\\\\s*pragma\\\\s+mark)\\\\s+(.*))\",\n          \"name\": \"meta.section.objc\"\n        },\n        \"operators\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<![\\\\w$])(sizeof)(?![\\\\w$])\",\n              \"name\": \"keyword.operator.sizeof.objc\"\n            },\n            {\n              \"match\": \"--\",\n              \"name\": \"keyword.operator.decrement.objc\"\n            },\n            {\n              \"match\": \"\\\\+\\\\+\",\n              \"name\": \"keyword.operator.increment.objc\"\n            },\n            {\n              \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()/=\",\n              \"name\": \"keyword.operator.assignment.compound.objc\"\n            },\n            {\n              \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n              \"name\": \"keyword.operator.assignment.compound.bitwise.objc\"\n            },\n            {\n              \"match\": \"<<|>>\",\n              \"name\": \"keyword.operator.bitwise.shift.objc\"\n            },\n            {\n              \"match\": \"!=|<=|>=|==|<|>\",\n              \"name\": \"keyword.operator.comparison.objc\"\n            },\n            {\n              \"match\": \"&&|!|\\\\|\\\\|\",\n              \"name\": \"keyword.operator.logical.objc\"\n            },\n            {\n              \"match\": \"&|\\\\||\\\\^|~\",\n              \"name\": \"keyword.operator.objc\"\n            },\n            {\n              \"match\": \"=\",\n              \"name\": \"keyword.operator.assignment.objc\"\n            },\n            {\n              \"match\": \"%|\\\\*|/|-|\\\\+\",\n              \"name\": \"keyword.operator.objc\"\n            },\n            {\n              \"begin\": \"(\\\\?)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.ternary.objc\"\n                }\n              },\n              \"end\": \"(:)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.ternary.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"strings\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#string_placeholder\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"'\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.single.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            }\n          ]\n        },\n        \"string_escaped_char\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3]\\\\d{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n              \"name\": \"constant.character.escape.objc\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal.unknown-escape.objc\"\n            }\n          ]\n        },\n        \"string_placeholder\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x) %\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n              \"name\": \"constant.other.placeholder.objc\"\n            },\n            {\n              \"match\": \"(%)(?!\\\"\\\\s*(PRI|SCN))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"invalid.illegal.placeholder.objc\"\n                }\n              }\n            }\n          ]\n        },\n        \"storage_types\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?-mix:(?<!\\\\w)(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool)(?!\\\\w))\",\n              \"name\": \"storage.type.built-in.primitive.objc\"\n            },\n            {\n              \"match\": \"(?-mix:(?<!\\\\w)(?:_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t)(?!\\\\w))\",\n              \"name\": \"storage.type.built-in.objc\"\n            },\n            {\n              \"match\": \"(?-mix:\\\\b(asm|__asm__|enum|struct|union)\\\\b)\",\n              \"name\": \"storage.type.$1.objc\"\n            }\n          ]\n        },\n        \"vararg_ellipses\": {\n          \"match\": \"(?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.)\",\n          \"name\": \"punctuation.vararg-ellipses.objc\"\n        },\n        \"preprocessor-rule-conditional\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"invalid.illegal.stray-$1.objc\"\n                }\n              }\n            }\n          ]\n        },\n        \"preprocessor-rule-conditional-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"invalid.illegal.stray-$1.objc\"\n                }\n              }\n            }\n          ]\n        },\n        \"preprocessor-rule-conditional-line\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\bdefined\\\\b\\\\s*$)|(?:\\\\bdefined\\\\b(?=\\\\s*\\\\(*\\\\s*(?:(?!defined\\\\b)[a-zA-Z_$][\\\\w$]*\\\\b)\\\\s*\\\\)*\\\\s*(?:\\\\n|//|/\\\\*|\\\\?|\\\\:|&&|\\\\|\\\\||\\\\\\\\\\\\s*\\\\n)))\",\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            {\n              \"match\": \"\\\\bdefined\\\\b\",\n              \"name\": \"invalid.illegal.macro-name.objc\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objc\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n              \"name\": \"constant.language.objc\"\n            },\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n              \"name\": \"entity.name.function.preprocessor.objc\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)|(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                      \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                      \"name\": \"meta.preprocessor.objc\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#preprocessor-rule-conditional-line\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.objc\",\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                      \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                      \"name\": \"meta.preprocessor.objc\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#preprocessor-rule-conditional-line\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#block_innards\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.in-block.objc\",\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled-elif\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"contentName\": \"comment.block.preprocessor.elif-branch.objc\",\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                },\n                \"3\": {\n                  \"name\": \"constant.numeric.preprocessor.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.else-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.else-branch.in-block.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.in-block.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#block_innards\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-elif\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-elif-block\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.in-block.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-else\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-else-block\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-contents\": {\n          \"patterns\": [\n            {\n              \"include\": \"#vararg_ellipses\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objc\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objc\"\n                }\n              },\n              \"name\": \"meta.block.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-blocks\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\(\",\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n            },\n            {\n              \"match\": \"\\\\)\",\n              \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\\\s*\\\\()\\n(?=\\n  (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n  |\\n  (?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n              \"end\": \"(?<=\\\\))(?!\\\\w)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"name\": \"meta.function.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#string_placeholder\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.single.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-blocks\": {\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objc\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-blocks\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-define-line-contents\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-functions\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#vararg_ellipses\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.arguments.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.arguments.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        \"function-innards\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#vararg_ellipses\"\n            },\n            {\n              \"name\": \"meta.function.definition.parameters.objc\",\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#probably_a_parameter\"\n                },\n                {\n                  \"include\": \"#function-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-innards\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"function-call-innards\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.arguments.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.arguments.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        \"default_statement\": {\n          \"name\": \"meta.conditional.case.objc\",\n          \"begin\": \"((?<!\\\\w)default(?!\\\\w))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.objc\"\n            }\n          },\n          \"end\": \"(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.case.default.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#conditional_context\"\n            }\n          ]\n        },\n        \"case_statement\": {\n          \"name\": \"meta.conditional.case.objc\",\n          \"begin\": \"((?<!\\\\w)case(?!\\\\w))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.objc\"\n            }\n          },\n          \"end\": \"(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.case.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#conditional_context\"\n            }\n          ]\n        },\n        \"switch_statement\": {\n          \"name\": \"meta.block.switch.objc\",\n          \"begin\": \"(((?<!\\\\w)switch(?!\\\\w)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.head.switch.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.switch.objc\"\n            }\n          },\n          \"end\": \"(?:(?<=\\\\})|(?=[;>\\\\[\\\\]=]))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.head.switch.objc\",\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"((?:\\\\{|(?=;)))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.switch.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#switch_conditional_parentheses\"\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"name\": \"meta.body.switch.objc\",\n              \"begin\": \"(?<=\\\\{)\",\n              \"end\": \"(\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.switch.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#default_statement\"\n                },\n                {\n                  \"include\": \"#case_statement\"\n                },\n                {\n                  \"include\": \"$base\"\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"name\": \"meta.tail.switch.objc\",\n              \"begin\": \"(?<=})[\\\\s\\\\n]*\",\n              \"end\": \"[\\\\s\\\\n]*(?=;)\",\n              \"patterns\": [\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"switch_conditional_parentheses\": {\n          \"name\": \"meta.conditional.switch.objc\",\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#conditional_context\"\n            }\n          ]\n        },\n        \"static_assert\": {\n          \"begin\": \"(static_assert|_Static_assert)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.static_assert.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"meta.static_assert.message.objc\",\n              \"begin\": \"(,)\\\\s*(?=(?:L|u8|u|U\\\\s*\\\\\\\")?)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.delimiter.objc\"\n                }\n              },\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"#string_context_c\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#function_call_context\"\n            }\n          ]\n        },\n        \"conditional_context\": {\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        \"member_access\": {\n          \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?-mix:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*(\\\\b(?!(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t))[a-zA-Z_]\\\\w*\\\\b(?!\\\\())\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#special_variables\"\n                },\n                {\n                  \"name\": \"variable.other.object.access.objc\",\n                  \"match\": \"(.+)\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objc\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#member_access\"\n                },\n                {\n                  \"include\": \"#method_access\"\n                },\n                {\n                  \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#special_variables\"\n                        },\n                        {\n                          \"name\": \"variable.other.object.access.objc\",\n                          \"match\": \"(.+)\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.dot-access.objc\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.pointer-access.objc\"\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.other.member.objc\"\n            }\n          }\n        },\n        \"method_access\": {\n          \"contentName\": \"meta.function-call.member.objc\",\n          \"begin\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?-mix:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*([a-zA-Z_]\\\\w*)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#special_variables\"\n                },\n                {\n                  \"name\": \"variable.other.object.access.objc\",\n                  \"match\": \"(.+)\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objc\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#member_access\"\n                },\n                {\n                  \"include\": \"#method_access\"\n                },\n                {\n                  \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#special_variables\"\n                        },\n                        {\n                          \"name\": \"variable.other.object.access.objc\",\n                          \"match\": \"(.+)\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.dot-access.objc\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.pointer-access.objc\"\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.member.objc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        \"numbers\": {\n          \"begin\": \"(?<!\\\\w)(?=\\\\d|\\\\.\\\\d)\",\n          \"end\": \"(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\G0[xX])(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([pP])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.hexadecimal.objc\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"4\": {\n                  \"name\": \"constant.numeric.hexadecimal.objc\"\n                },\n                \"5\": {\n                  \"name\": \"constant.numeric.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"8\": {\n                  \"name\": \"keyword.other.unit.exponent.hexadecimal.objc\"\n                },\n                \"9\": {\n                  \"name\": \"keyword.operator.plus.exponent.hexadecimal.objc\"\n                },\n                \"10\": {\n                  \"name\": \"keyword.operator.minus.exponent.hexadecimal.objc\"\n                },\n                \"11\": {\n                  \"name\": \"constant.numeric.exponent.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"name\": \"keyword.other.unit.suffix.floating-point.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([eE])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"constant.numeric.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"4\": {\n                  \"name\": \"constant.numeric.decimal.point.objc\"\n                },\n                \"5\": {\n                  \"name\": \"constant.numeric.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"8\": {\n                  \"name\": \"keyword.other.unit.exponent.decimal.objc\"\n                },\n                \"9\": {\n                  \"name\": \"keyword.operator.plus.exponent.decimal.objc\"\n                },\n                \"10\": {\n                  \"name\": \"keyword.operator.minus.exponent.decimal.objc\"\n                },\n                \"11\": {\n                  \"name\": \"constant.numeric.exponent.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"name\": \"keyword.other.unit.suffix.floating-point.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G0[bB])([01](?:(?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.binary.objc\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.binary.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G0)((?:(?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))+)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.octal.objc\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.octal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([pP])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.hexadecimal.objc\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"5\": {\n                  \"name\": \"keyword.other.unit.exponent.hexadecimal.objc\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.operator.plus.exponent.hexadecimal.objc\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.minus.exponent.hexadecimal.objc\"\n                },\n                \"8\": {\n                  \"name\": \"constant.numeric.exponent.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([eE])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"constant.numeric.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"5\": {\n                  \"name\": \"keyword.other.unit.exponent.decimal.objc\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.operator.plus.exponent.decimal.objc\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.minus.exponent.decimal.objc\"\n                },\n                \"8\": {\n                  \"name\": \"constant.numeric.exponent.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?:(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))+\",\n              \"name\": \"invalid.illegal.constant.numeric.objc\"\n            }\n          ]\n        }\n      }\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.objc\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.objc\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.objc\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.objc\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-slash.objc\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n                  \"name\": \"punctuation.separator.continuation.objc\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"disabled\": {\n      \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n      \"comment\": \"eat nested preprocessor if(def)s\",\n      \"end\": \"^\\\\s*#\\\\s*endif\\\\b.*$\",\n      \"patterns\": [\n        {\n          \"include\": \"#disabled\"\n        },\n        {\n          \"include\": \"#pragma-mark\"\n        }\n      ]\n    },\n    \"implementation_innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled-implementation\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled-implementation\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-other-implementation\"\n        },\n        {\n          \"include\": \"#property_directive\"\n        },\n        {\n          \"include\": \"#method_super\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"interface_innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled-interface\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled-interface\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-other-interface\"\n        },\n        {\n          \"include\": \"#properties\"\n        },\n        {\n          \"include\": \"#protocol_list\"\n        },\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"method\": {\n      \"begin\": \"^(-|\\\\+)\\\\s*\",\n      \"end\": \"(?=\\\\{|#)|;\",\n      \"name\": \"meta.function.objc\",\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.begin.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*(\\\\w+\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.end.objc\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.objc\"\n            }\n          },\n          \"name\": \"meta.return-type.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#protocol_list\"\n            },\n            {\n              \"include\": \"#protocol_type_qualifier\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b\\\\w+(?=:)\",\n          \"name\": \"entity.name.function.name-of-parameter.objc\"\n        },\n        {\n          \"begin\": \"((:))\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.name-of-parameter.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.arguments.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.type.begin.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*(\\\\w+\\\\b)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.end.objc\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.function.objc\"\n            }\n          },\n          \"name\": \"meta.argument-type.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#protocol_list\"\n            },\n            {\n              \"include\": \"#protocol_type_qualifier\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"method_super\": {\n      \"begin\": \"^(?=-|\\\\+)\",\n      \"end\": \"(?<=\\\\})|(?=#)\",\n      \"name\": \"meta.function-with-body.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"pragma-mark\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.pragma.objc\"\n        },\n        \"3\": {\n          \"name\": \"meta.toc-list.pragma-mark.objc\"\n        }\n      },\n      \"match\": \"^\\\\s*(#\\\\s*(pragma\\\\s+mark)\\\\s+(.*))\",\n      \"name\": \"meta.section.objc\"\n    },\n    \"preprocessor-rule-disabled-implementation\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0)\\\\b).*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objc\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface_innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"name\": \"comment.block.preprocessor.if-branch.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled-interface\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0)\\\\b).*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objc\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface_innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"name\": \"comment.block.preprocessor.if-branch.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-implementation\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0*1)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objc\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objc\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.else-branch.objc\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#implementation_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-interface\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0*1)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objc\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objc\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.else-branch.objc\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-other-implementation\": {\n      \"begin\": \"^\\\\s*(#\\\\s*(if(n?def)?)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b).*?(?:(?=(?://|/\\\\*))|$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#implementation_innards\"\n        }\n      ]\n    },\n    \"preprocessor-rule-other-interface\": {\n      \"begin\": \"^\\\\s*(#\\\\s*(if(n?def)?)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b).*?(?:(?=(?://|/\\\\*))|$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#interface_innards\"\n        }\n      ]\n    },\n    \"properties\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((@)property)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.property.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.scope.begin.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.scope.end.objc\"\n            }\n          },\n          \"name\": \"meta.property-with-attributes.objc\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(getter|setter|readonly|readwrite|assign|retain|copy|nonatomic|atomic|strong|weak|nonnull|nullable|null_resettable|null_unspecified|class|direct)\\\\b\",\n              \"name\": \"keyword.other.property.attribute.objc\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.property.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.objc\"\n            }\n          },\n          \"match\": \"((@)property)\\\\b\",\n          \"name\": \"meta.property.objc\"\n        }\n      ]\n    },\n    \"property_directive\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(dynamic|synthesize)\\\\b\",\n      \"name\": \"keyword.other.property.directive.objc\"\n    },\n    \"protocol_list\": {\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.objc\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.end.objc\"\n        }\n      },\n      \"name\": \"meta.protocol-list.objc\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\\\\b\",\n          \"name\": \"support.other.protocol.objc\"\n        }\n      ]\n    },\n    \"protocol_type_qualifier\": {\n      \"match\": \"\\\\b(in|out|inout|oneway|bycopy|byref|nonnull|nullable|_Nonnull|_Nullable|_Null_unspecified)\\\\b\",\n      \"name\": \"storage.modifier.protocol.objc\"\n    },\n    \"special_variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b_cmd\\\\b\",\n          \"name\": \"variable.other.selector.objc\"\n        },\n        {\n          \"match\": \"\\\\b(self|super)\\\\b\",\n          \"name\": \"variable.language.objc\"\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3]\\\\d{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n          \"name\": \"constant.character.escape.objc\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unknown-escape.objc\"\n        }\n      ]\n    },\n    \"string_placeholder\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x) %\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n          \"name\": \"constant.other.placeholder.objc\"\n        },\n        {\n          \"match\": \"(%)(?!\\\"\\\\s*(PRI|SCN))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.placeholder.objc\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/ocaml.tmLanguage.json",
    "content": "{\n  \"name\": \"ocaml\",\n  \"scopeName\": \"source.ocaml\",\n  \"fileTypes\": [\".ml\", \".mli\"],\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#pragma\"\n    },\n    {\n      \"include\": \"#decl\"\n    }\n  ],\n  \"repository\": {\n    \"attribute\": {\n      \"begin\": \"(\\\\[)[[:space:]]*((?<![#\\\\-:!?.@*/&%^+<=>|~$])@{1,3}(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributePayload\"\n        }\n      ]\n    },\n    \"attributeIdentifier\": {\n      \"match\": \"((?<![#\\\\-:!?.@*/&%^+<=>|~$])%(?![#\\\\-:!?.@*/&%^+<=>|~$]))((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      }\n    },\n    \"attributePayload\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]%|^%))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"((?<![#\\\\-:!?.@*/&%^+<=>|~$])[:\\\\?](?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?<=[[:space:]])|(?=\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#pathModuleExtended\"\n            },\n            {\n              \"include\": \"#pathRecord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?=\\\\])\",\n          \"patterns\": [\n            {\n              \"include\": \"#signature\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\?|^\\\\?))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?=\\\\])\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\?|^\\\\?))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"(?=\\\\])|\\\\bwhen\\\\b\",\n              \"endCaptures\": {\n                \"1\": {}\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#pattern\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]when|^when))(?![[:word:]]))\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#term\"\n        }\n      ]\n    },\n    \"bindClassTerm\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))\",\n              \"end\": \"(?=(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\\\btype\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.function strong emphasis\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#attributeIdentifier\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#bindTermArgs\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#literalClassType\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindClassType\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))\",\n              \"end\": \"(?=(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\\\btype\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.function strong emphasis\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#attributeIdentifier\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#bindTermArgs\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#literalClassType\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#literalClassType\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindConstructor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]exception|^exception))(?![[:word:]]))|(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\+=|^\\\\+=|[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\||^\\\\|))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(:)|(\\\\bof\\\\b)|((?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\|(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.tag\"\n            },\n            \"3\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"match\": \"\\\\.\\\\.\",\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            {\n              \"match\": \"\\\\b(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\\\\b(?![[:space:]]*(?:\\\\.|\\\\([^\\\\*]))\",\n              \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\|(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindSignature\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModuleExtended\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#signature\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindStructure\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and))(?![[:word:]]))|(?=[[:upper:]])\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(:(?!=))|(:?=)(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"\\\\bmodule\\\\b\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            },\n            {\n              \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"entity.name.function strong emphasis\"\n            },\n            {\n              \"begin\": \"\\\\((?!\\\\))\",\n              \"end\": \"\\\\)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$]):(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n                  \"end\": \"(?=\\\\))\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#signature\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#variableModule\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#literalUnit\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\b(and)\\\\b|((?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:=|^:=|[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\b(?:(and)|(with))\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#structure\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindTerm\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))\",\n          \"end\": \"(\\\\bmodule\\\\b)|(\\\\bopen\\\\b)|(?<![#\\\\-:!?.@*/&%^+<=>|~$])(:)|((?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$]))(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"4\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))\",\n              \"end\": \"(?=\\\\b(?:module|open)\\\\b)|(?=(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(\\\\brec\\\\b)|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function strong emphasis\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#attributeIdentifier\"\n                },\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]rec|^rec))(?![[:word:]]))\",\n              \"end\": \"((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?=[^[:space:][:alpha:]])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.function strong emphasis\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#bindTermArgs\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#bindTermArgs\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#declModule\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]open|^open))(?![[:word:]]))\",\n          \"end\": \"(?=\\\\bin\\\\b)|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#pathModuleSimple\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"\\\\btype\\\\b|(?=[^[:space:]])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n              \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#pattern\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindTermArgs\": {\n      \"patterns\": [\n        {\n          \"begin\": \"~|\\\\?\",\n          \"end\": \":|(?=[^[:space:]])\",\n          \"applyEndPatternLast\": true,\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]~|^~|[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\?|^\\\\?))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?<=\\\\))\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"begin\": \"\\\\((?!\\\\*)\",\n                  \"end\": \"\\\\)\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"begin\": \"(?<=\\\\()\",\n                      \"end\": \":|=\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"keyword\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n                          \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?<=:)\",\n                      \"end\": \"=|(?=\\\\))\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"keyword\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"include\": \"#type\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n                      \"end\": \"(?=\\\\))\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#term\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#pattern\"\n        }\n      ]\n    },\n    \"bindType\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\+=|=(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"include\": \"#pathType\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"entity.name.function strong\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\+=|^\\\\+=|[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#bindConstructor\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#extension\"\n        },\n        {\n          \"include\": \"#commentBlock\"\n        },\n        {\n          \"include\": \"#commentDoc\"\n        }\n      ]\n    },\n    \"commentBlock\": {\n      \"begin\": \"\\\\(\\\\*(?!\\\\*[^\\\\)])\",\n      \"end\": \"\\\\*\\\\)\",\n      \"name\": \"comment constant.regexp meta.separator.markdown\",\n      \"contentName\": \"emphasis\",\n      \"patterns\": [\n        {\n          \"include\": \"#commentBlock\"\n        },\n        {\n          \"include\": \"#commentDoc\"\n        }\n      ]\n    },\n    \"commentDoc\": {\n      \"begin\": \"\\\\(\\\\*\\\\*\",\n      \"end\": \"\\\\*\\\\)\",\n      \"name\": \"comment constant.regexp meta.separator.markdown\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"decl\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declClass\"\n        },\n        {\n          \"include\": \"#declException\"\n        },\n        {\n          \"include\": \"#declInclude\"\n        },\n        {\n          \"include\": \"#declModule\"\n        },\n        {\n          \"include\": \"#declOpen\"\n        },\n        {\n          \"include\": \"#declTerm\"\n        },\n        {\n          \"include\": \"#declType\"\n        }\n      ]\n    },\n    \"declClass\": {\n      \"begin\": \"\\\\bclass\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.class constant.numeric markup.underline\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]class|^class))(?![[:word:]]))\",\n          \"end\": \"\\\\btype\\\\b|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.class constant.numeric markup.underline\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#bindClassTerm\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#bindClassType\"\n            }\n          ]\n        }\n      ]\n    },\n    \"declException\": {\n      \"begin\": \"\\\\bexception\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword markup.underline\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributeIdentifier\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#bindConstructor\"\n        }\n      ]\n    },\n    \"declInclude\": {\n      \"begin\": \"\\\\binclude\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributeIdentifier\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#signature\"\n        }\n      ]\n    },\n    \"declModule\": {\n      \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))|\\\\bmodule\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename markup.underline\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))\",\n          \"end\": \"(\\\\btype\\\\b)|(?=[[:upper:]])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"\\\\brec\\\\b\",\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#bindSignature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=[[:upper:]])\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#bindStructure\"\n            }\n          ]\n        }\n      ]\n    },\n    \"declOpen\": {\n      \"begin\": \"\\\\bopen\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributeIdentifier\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#pathModuleExtended\"\n        }\n      ]\n    },\n    \"declTerm\": {\n      \"begin\": \"\\\\b(?:(external|val)|(method)|(let))\\\\b(!?)\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type markup.underline\"\n        },\n        \"2\": {\n          \"name\": \"storage.type markup.underline\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control markup.underline\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#bindTerm\"\n        }\n      ]\n    },\n    \"declType\": {\n      \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))|\\\\btype\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword markup.underline\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#bindType\"\n        }\n      ]\n    },\n    \"extension\": {\n      \"begin\": \"(\\\\[)((?<![#\\\\-:!?.@*/&%^+<=>|~$])%{1,3}(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributePayload\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#termConstructor\"\n        },\n        {\n          \"include\": \"#literalArray\"\n        },\n        {\n          \"include\": \"#literalBoolean\"\n        },\n        {\n          \"include\": \"#literalCharacter\"\n        },\n        {\n          \"include\": \"#literalList\"\n        },\n        {\n          \"include\": \"#literalNumber\"\n        },\n        {\n          \"include\": \"#literalObjectTerm\"\n        },\n        {\n          \"include\": \"#literalString\"\n        },\n        {\n          \"include\": \"#literalRecord\"\n        },\n        {\n          \"include\": \"#literalUnit\"\n        }\n      ]\n    },\n    \"literalArray\": {\n      \"begin\": \"\\\\[\\\\|\",\n      \"end\": \"\\\\|\\\\]\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#term\"\n        }\n      ]\n    },\n    \"literalBoolean\": {\n      \"match\": \"\\\\bfalse|true\\\\b\",\n      \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n    },\n    \"literalCharacter\": {\n      \"begin\": \"(?<![[:word:]])'\",\n      \"end\": \"'\",\n      \"name\": \"markup.punctuation.quote.beginning\",\n      \"patterns\": [\n        {\n          \"include\": \"#literalCharacterEscape\"\n        }\n      ]\n    },\n    \"literalCharacterEscape\": {\n      \"match\": \"\\\\\\\\(?:[\\\\\\\\\\\"'ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])\"\n    },\n    \"literalClassType\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\bobject\\\\b\",\n          \"end\": \"\\\\bend\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag emphasis\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\binherit\\\\b\",\n              \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\bas\\\\b\",\n                  \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#variablePattern\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#pattern\"\n            },\n            {\n              \"include\": \"#declTerm\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\"\n        }\n      ]\n    },\n    \"literalList\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"literalNumber\": {\n      \"match\": \"(?<![[:alpha:]])[[:digit:]][[:digit:]]*(\\\\.[[:digit:]][[:digit:]]*)?\",\n      \"name\": \"constant.numeric\"\n    },\n    \"literalObjectTerm\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\bobject\\\\b\",\n          \"end\": \"\\\\bend\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag emphasis\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\binherit\\\\b\",\n              \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\bas\\\\b\",\n                  \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#variablePattern\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#pattern\"\n            },\n            {\n              \"include\": \"#declTerm\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\"\n        }\n      ]\n    },\n    \"literalRecord\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\{|;)\",\n          \"end\": \"(:)|(=)|(;)|(with)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixSimple\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"(:)|(=)|(;)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(;)|(=)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \";|(?=\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"literalString\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string beginning.punctuation.definition.quote.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#literalStringEscape\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\{)([_[:lower:]]*?)(\\\\|)\",\n          \"end\": \"(\\\\|)(\\\\2)(\\\\})\",\n          \"name\": \"string beginning.punctuation.definition.quote.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#literalStringEscape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"literalStringEscape\": {\n      \"match\": \"\\\\\\\\(?:[\\\\\\\\\\\"ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])\"\n    },\n    \"literalUnit\": {\n      \"match\": \"\\\\(\\\\)\",\n      \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n    },\n    \"pathModuleExtended\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pathModulePrefixExtended\"\n        },\n        {\n          \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n          \"name\": \"entity.name.class constant.numeric\"\n        }\n      ]\n    },\n    \"pathModulePrefixExtended\": {\n      \"begin\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\.|$|\\\\()\",\n      \"end\": \"(?![[:space:]\\\\.]|$|\\\\()\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.class constant.numeric\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\)))\",\n              \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n            },\n            {\n              \"include\": \"#structure\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\.|$))|((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*(?:$|\\\\()))|((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\)))|(?![[:space:]\\\\.[:upper:]]|$|\\\\()\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword strong\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.class constant.numeric\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function strong\"\n            },\n            \"3\": {\n              \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n            }\n          }\n        }\n      ]\n    },\n    \"pathModulePrefixExtendedParens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\)))\",\n          \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n        },\n        {\n          \"include\": \"#structure\"\n        }\n      ]\n    },\n    \"pathModulePrefixSimple\": {\n      \"begin\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\.)\",\n      \"end\": \"(?![[:space:]\\\\.])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.class constant.numeric\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\.))|((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*))|(?![[:space:]\\\\.[:upper:]])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword strong\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.class constant.numeric\"\n            },\n            \"2\": {\n              \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n            }\n          }\n        }\n      ]\n    },\n    \"pathModuleSimple\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pathModulePrefixSimple\"\n        },\n        {\n          \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n          \"name\": \"entity.name.class constant.numeric\"\n        }\n      ]\n    },\n    \"pathRecord\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n          \"end\": \"(?=[^[:space:]\\\\.])(?!\\\\(\\\\*)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\.|^\\\\.))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n              \"end\": \"((?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$]))|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|mutable|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=\\\\))|(?<=\\\\])\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword strong\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword strong\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#pathModulePrefixSimple\"\n                },\n                {\n                  \"begin\": \"\\\\((?!\\\\*)\",\n                  \"end\": \"\\\\)\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#term\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#pattern\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"pattern\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#patternArray\"\n        },\n        {\n          \"include\": \"#patternLazy\"\n        },\n        {\n          \"include\": \"#patternList\"\n        },\n        {\n          \"include\": \"#patternMisc\"\n        },\n        {\n          \"include\": \"#patternModule\"\n        },\n        {\n          \"include\": \"#patternRecord\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#patternParens\"\n        },\n        {\n          \"include\": \"#patternType\"\n        },\n        {\n          \"include\": \"#variablePattern\"\n        },\n        {\n          \"include\": \"#termOperator\"\n        }\n      ]\n    },\n    \"patternArray\": {\n      \"begin\": \"\\\\[\\\\|\",\n      \"end\": \"\\\\|\\\\]\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#pattern\"\n        }\n      ]\n    },\n    \"patternLazy\": {\n      \"match\": \"lazy\",\n      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n    },\n    \"patternList\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#pattern\"\n        }\n      ]\n    },\n    \"patternMisc\": {\n      \"match\": \"((?<![#\\\\-:!?.@*/&%^+<=>|~$]),(?![#\\\\-:!?.@*/&%^+<=>|~$]))|([#\\\\-:!?.@*/&%^+<=>|~$]+)|\\\\b(as)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.regexp strong\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      }\n    },\n    \"patternModule\": {\n      \"begin\": \"\\\\bmodule\\\\b\",\n      \"end\": \"(?=\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#declModule\"\n        }\n      ]\n    },\n    \"patternParens\": {\n      \"begin\": \"\\\\((?!\\\\))\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$]):(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"(?=\\\\))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#pattern\"\n        }\n      ]\n    },\n    \"patternRecord\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\{|;)\",\n          \"end\": \"(:)|(=)|(;)|(with)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixSimple\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"(:)|(=)|(;)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(;)|(=)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \";|(?=\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#pattern\"\n            }\n          ]\n        }\n      ]\n    },\n    \"patternType\": {\n      \"begin\": \"\\\\btype\\\\b\",\n      \"end\": \"(?=\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#declType\"\n        }\n      ]\n    },\n    \"pragma\": {\n      \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])#(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n      \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#literalNumber\"\n        },\n        {\n          \"include\": \"#literalString\"\n        }\n      ]\n    },\n    \"signature\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#signatureLiteral\"\n        },\n        {\n          \"include\": \"#signatureFunctor\"\n        },\n        {\n          \"include\": \"#pathModuleExtended\"\n        },\n        {\n          \"include\": \"#signatureParens\"\n        },\n        {\n          \"include\": \"#signatureRecovered\"\n        },\n        {\n          \"include\": \"#signatureConstraints\"\n        }\n      ]\n    },\n    \"signatureConstraints\": {\n      \"begin\": \"\\\\bwith\\\\b\",\n      \"end\": \"(?=\\\\))|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"\\\\b(?:(module)|(type))\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            },\n            \"2\": {\n              \"name\": \"keyword\"\n            }\n          }\n        },\n        {\n          \"include\": \"#declModule\"\n        },\n        {\n          \"include\": \"#declType\"\n        }\n      ]\n    },\n    \"signatureFunctor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfunctor\\\\b\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))\",\n              \"end\": \"(\\\\(\\\\))|(\\\\((?!\\\\)))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?<=\\\\()\",\n              \"end\": \"(:)|(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#variableModule\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#signature\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(\\\\()|((?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag\"\n                },\n                \"2\": {\n                  \"name\": \"support.type strong\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#signature\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"name\": \"support.type strong\"\n        }\n      ]\n    },\n    \"signatureLiteral\": {\n      \"begin\": \"\\\\bsig\\\\b\",\n      \"end\": \"\\\\bend\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag emphasis\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#decl\"\n        }\n      ]\n    },\n    \"signatureParens\": {\n      \"begin\": \"\\\\((?!\\\\))\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$]):(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"(?=\\\\))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#signature\"\n        }\n      ]\n    },\n    \"signatureRecovered\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(|(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:|[^#\\\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]include|^include|[^[:word:]]open|^open))(?![[:word:]]))\",\n          \"end\": \"\\\\bmodule\\\\b|(?!$|[[:space:]]|\\\\bmodule\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))\",\n              \"end\": \"\\\\btype\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n              \"end\": \"\\\\bof\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))\",\n              \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#signature\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"structure\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#structureLiteral\"\n        },\n        {\n          \"include\": \"#structureFunctor\"\n        },\n        {\n          \"include\": \"#pathModuleExtended\"\n        },\n        {\n          \"include\": \"#structureParens\"\n        }\n      ]\n    },\n    \"structureFunctor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfunctor\\\\b\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))\",\n              \"end\": \"(\\\\(\\\\))|(\\\\((?!\\\\)))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?<=\\\\()\",\n              \"end\": \"(:)|(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#variableModule\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#signature\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(\\\\()|((?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag\"\n                },\n                \"2\": {\n                  \"name\": \"support.type strong\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#structure\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"name\": \"support.type strong\"\n        }\n      ]\n    },\n    \"structureLiteral\": {\n      \"begin\": \"\\\\bstruct\\\\b\",\n      \"end\": \"\\\\bend\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag emphasis\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#decl\"\n        }\n      ]\n    },\n    \"structureParens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#structureUnpack\"\n        },\n        {\n          \"include\": \"#structure\"\n        }\n      ]\n    },\n    \"structureUnpack\": {\n      \"begin\": \"\\\\bval\\\\b\",\n      \"end\": \"(?=\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      }\n    },\n    \"term\": {\n      \"patterns\": [\n        {\n          \"include\": \"#termLet\"\n        },\n        {\n          \"include\": \"#termAtomic\"\n        }\n      ]\n    },\n    \"termAtomic\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#termConditional\"\n        },\n        {\n          \"include\": \"#termConstructor\"\n        },\n        {\n          \"include\": \"#termDelim\"\n        },\n        {\n          \"include\": \"#termFor\"\n        },\n        {\n          \"include\": \"#termFunction\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#termMatch\"\n        },\n        {\n          \"include\": \"#termMatchRule\"\n        },\n        {\n          \"include\": \"#termPun\"\n        },\n        {\n          \"include\": \"#termOperator\"\n        },\n        {\n          \"include\": \"#termTry\"\n        },\n        {\n          \"include\": \"#termWhile\"\n        },\n        {\n          \"include\": \"#pathRecord\"\n        }\n      ]\n    },\n    \"termConditional\": {\n      \"match\": \"\\\\b(?:if|then|else)\\\\b\",\n      \"name\": \"keyword.control\"\n    },\n    \"termConstructor\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pathModulePrefixSimple\"\n        },\n        {\n          \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      ]\n    },\n    \"termDelim\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\((?!\\\\))\",\n          \"end\": \"\\\\)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\bbegin\\\\b\",\n          \"end\": \"\\\\bend\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"termFor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfor\\\\b\",\n          \"end\": \"\\\\bdone\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]for|^for))(?![[:word:]]))\",\n              \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"support.type strong\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#pattern\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"\\\\b(?:downto|to)\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]to|^to))(?![[:word:]]))\",\n              \"end\": \"\\\\bdo\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))\",\n              \"end\": \"(?=\\\\bdone\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"termFunction\": {\n      \"match\": \"\\\\b(?:(fun)|(function))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type\"\n        },\n        \"2\": {\n          \"name\": \"storage.type\"\n        }\n      }\n    },\n    \"termLet\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?<=;|\\\\())(?=[[:space:]]|\\\\blet\\\\b)|(?:(?<=(?:[^[:word:]]begin|^begin|[^[:word:]]do|^do|[^[:word:]]else|^else|[^[:word:]]in|^in|[^[:word:]]struct|^struct|[^[:word:]]then|^then|[^[:word:]]try|^try))(?![[:word:]]))|(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]@@|^@@))(?![#\\\\-:!?.@*/&%^+<=>|~$]))[[:space:]]+\",\n          \"end\": \"\\\\b(?:(and)|(let))\\\\b|(?=[^[:space:]])(?!\\\\(\\\\*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            },\n            \"2\": {\n              \"name\": \"storage.type markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]let|^let))(?![[:word:]]))|(let)\",\n          \"end\": \"\\\\b(?:(and)|(in))\\\\b|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|class|exception|external|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type markup.underline\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            },\n            \"2\": {\n              \"name\": \"storage.type markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#bindTerm\"\n            }\n          ]\n        }\n      ]\n    },\n    \"termMatch\": {\n      \"begin\": \"\\\\bmatch\\\\b\",\n      \"end\": \"\\\\bwith\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#term\"\n        }\n      ]\n    },\n    \"termMatchRule\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]fun|^fun|[^[:word:]]function|^function|[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(\\\\|)|(->)(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.type strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"include\": \"#pattern\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^\\\\[#\\\\-:!?.@*/&%^+<=>|~$]\\\\||^\\\\|))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\|(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(\\\\|)|(->)(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.type strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#pattern\"\n            },\n            {\n              \"begin\": \"\\\\bwhen\\\\b\",\n              \"end\": \"(?=(?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"termOperator\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])#(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.function\"\n            }\n          }\n        },\n        {\n          \"match\": \"<-\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.control strong\"\n            }\n          }\n        },\n        {\n          \"match\": \"(,|[#\\\\-:!?.@*/&%^+<=>|~$]+)|(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:and|assert|asr|land|lazy|lsr|lxor|mod|new|or)\\\\b\",\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      ]\n    },\n    \"termPun\": {\n      \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\?|~(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n      \"end\": \":|(?=[^[:space:]:])\",\n      \"applyEndPatternLast\": true,\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\?|^\\\\?|[^#\\\\-:!?.@*/&%^+<=>|~$]~|^~))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            }\n          }\n        }\n      ]\n    },\n    \"termTry\": {\n      \"begin\": \"\\\\btry\\\\b\",\n      \"end\": \"\\\\bwith\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#term\"\n        }\n      ]\n    },\n    \"termWhile\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bwhile\\\\b\",\n          \"end\": \"\\\\bdone\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]while|^while))(?![[:word:]]))\",\n              \"end\": \"\\\\bdo\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))\",\n              \"end\": \"(?=\\\\bdone\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"\\\\bnonrec\\\\b\",\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        },\n        {\n          \"include\": \"#pathModulePrefixExtended\"\n        },\n        {\n          \"include\": \"#typeLabel\"\n        },\n        {\n          \"include\": \"#typeObject\"\n        },\n        {\n          \"include\": \"#typeOperator\"\n        },\n        {\n          \"include\": \"#typeParens\"\n        },\n        {\n          \"include\": \"#typePolymorphicVariant\"\n        },\n        {\n          \"include\": \"#typeRecord\"\n        },\n        {\n          \"include\": \"#typeConstructor\"\n        }\n      ]\n    },\n    \"typeConstructor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(_)|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(')((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=[^\\\\*]\\\\)|\\\\])\",\n          \"end\": \"(?=\\\\((?!\\\\*)|\\\\*|:|,|=|\\\\.|>|-|\\\\{|\\\\[|\\\\+|\\\\}|\\\\)|\\\\]|;|\\\\|)|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[:space:]*(?!\\\\(\\\\*|[[:word:]])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"comment constant.regexp meta.separator.markdown\"\n            },\n            \"3\": {\n              \"name\": \"string.other.link variable.language variable.parameter emphasis strong emphasis\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control emphasis\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixExtended\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typeLabel\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\??)((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[[:space:]]*((?<![#\\\\-:!?.@*/&%^+<=>|~$]):(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?=(?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword strong emphasis\"\n            },\n            \"2\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            },\n            \"3\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typeModule\": {\n      \"begin\": \"\\\\bmodule\\\\b\",\n      \"end\": \"(?=\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#pathModuleExtended\"\n        },\n        {\n          \"include\": \"#signatureConstraints\"\n        }\n      ]\n    },\n    \"typeObject\": {\n      \"begin\": \"<\",\n      \"end\": \">\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=<|;)\",\n          \"end\": \"(:)|(?=>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixSimple\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(;)|(?=>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typeOperator\": {\n      \"patterns\": [\n        {\n          \"match\": \",|;|[#\\\\-:!?.@*/&%^+<=>|~$]+\",\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n        }\n      ]\n    },\n    \"typeParens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        },\n        {\n          \"include\": \"#typeModule\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"typePolymorphicVariant\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": []\n    },\n    \"typeRecord\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\{|;)\",\n          \"end\": \"(:)|(=)|(;)|(with)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixSimple\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"(:)|(=)|(;)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(;)|(=)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \";|(?=\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variableModule\": {\n      \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n        }\n      }\n    },\n    \"variablePattern\": {\n      \"match\": \"(\\\\b_\\\\b)|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"comment constant.regexp meta.separator.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/oeabl.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\n    \"p\",\n    \"w\",\n    \"i\",\n    \"cls\"\n  ],\n  \"name\": \"OpenEdge ABL\",\n  \"patterns\": [\n    {\n      \"include\": \"#statements\"\n    }\n  ],\n  \"repository\": {\n    \"trigger-procedure\": {\n      \"begin\": \"(?i)\\\\b(trigger)\\\\s+(proce(?:dure|dur|du|d)?)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=:|\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#primitive-type\"\n        },\n        {\n          \"include\": \"#variable-as\"\n        },\n        {\n          \"include\": \"#variable-like\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#db-dot-table\"\n        },\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"procedure-definition\": {\n      \"name\": \"meta.procedure.abl\",\n      \"comment\": \"Look ahead to the procedure name, quoted or not. It will be resolved in the patterns. 'Names must begin with a letter.' from https://docs.progress.com/bundle/openedge-abl-manage-applications/page/Name-limits.html\",\n      \"begin\": \"(?i)\\\\s*(proce(?:dure|dur|du|d)?)\\\\s+(?=[a-zA-Z_])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=:|\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(private|external|cdecl|pascal|stdcall|ordinal|(persist(?:ent|en|e)?)|thread-safe|in|super)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&\\\\.]+)(?<!\\\\.)\",\n          \"comment\": \"A procedure name may contain a . but cannot end in one, unless the procedure name is in quotes\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.procedure.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#argument-reference\"\n        },\n        {\n          \"include\": \"#preprocessor-reference\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"translation-attribute\": {\n      \"comment\": \"The attribute must have one of L, R, T, or C and/or a U and/or one integer value. For example, R1 as the attribute value for Label.\",\n      \"match\": \"(:[LlRrTtCcUu]\\\\d*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.other.abl\"\n        }\n      }\n    },\n    \"language-functions\": {\n      \"match\": \"(?i)\\\\b(opsys|(provers(?:ion|io|i)?)|guid|generate-uuid)\\\\b\",\n      \"comment\": \"These are functions that do not require parens when called.\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      }\n    },\n    \"function-definition\": {\n      \"name\": \"meta.define.function.abl\",\n      \"begin\": \"(?i)\\\\b(function)\\\\s+([a-zA-Z0-9_][a-zA-Z0-9_#$\\\\-%&]+)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\.|:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(map|to)\\\\s+(?!to\\\\s+)([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\b(returns|private|class|extent|in|super|forward|map)\\\\b\",\n          \"comment\": \"Captures the allowed keywords before the parenthesis. Some keywords are after the 'parens' when there are no parens used\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#function-parameter-definition\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"comment\": \"This captures everything after the parens, which may contain variables and methods\",\n          \"begin\": \"(?i)(?<=\\\\)|in)\",\n          \"end\": \"(?=(\\\\.|:)\\\\s)\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b([Ii][Nn])\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.abl\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\b([Ss][Uu][Pp][Ee][Rr])\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.abl\"\n                }\n              }\n            },\n            {\n              \"include\": \"#type-member-call\"\n            },\n            {\n              \"include\": \"#variable-name\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#preprocessors\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#primitive-type\"\n        },\n        {\n          \"include\": \"#type-name\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        }\n      ]\n    },\n    \"method-definition\": {\n      \"name\": \"meta.define.method.abl\",\n      \"begin\": \"(?i)^\\\\s*(method|constructor|destructor)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"comment\": \"The lookahead on the regex for the closing colon is required to make this scope end properly\",\n      \"end\": \"(?=:|\\\\.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"match\": \"(?i)\\\\s*(void)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)\\\\s*([a-zA-Z0-9_]+[a-zA-Z0-9_\\\\-{}#$%&]*)?\\\\s*(\\\\()\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.abl\"\n            },\n            \"2\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-definition\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter-as\"\n        },\n        {\n          \"include\": \"#string\",\n          \"comment\": \"For the return type\"\n        },\n        {\n          \"include\": \"#extent\",\n          \"comment\": \"For the return type\"\n        },\n        {\n          \"include\": \"#primitive-type\",\n          \"comment\": \"For the return type\"\n        },\n        {\n          \"comment\": \"The last word on the line is assumed to me the method name. Legal ABL can have each word of the method definition on its own line, so this rule may not return the correct values\",\n          \"match\": \"(?i)\\\\b([a-zA-Z0-9_]+[a-zA-Z0-9_\\\\-{}#$%&]*)\\\\b\\\\R\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#dll-type\",\n          \"comment\": \"For the return type\"\n        },\n        {\n          \"include\": \"#type-names\",\n          \"comment\": \"For the return type\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"end-function-procedure-method-block\": {\n      \"match\": \"(?i)\\\\s*(end)\\\\s*(method|procedure|function)?\\\\s*(?=\\\\.)\\\\s*\",\n      \"comment\": \"This regex exists to make sure that END PROCEDURE is not seen as a new procedure block\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"as-type\": {\n      \"begin\": \"\\\\s*([Aa][Ss])\\\\s*([Cc][Ll][Aa][Ss]{2})?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"\\\\s*(\\\\.|\\\\,|\\\\s*)\",\n      \"patterns\": [\n        {\n          \"include\": \"#primitive-type\"\n        },\n        {\n          \"include\": \"#type-names\"\n        }\n      ]\n    },\n    \"parameter-definition\": {\n      \"name\": \"meta.define.parameter.abl\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\s*((input-o(?:utput|utpu|utp|u)?)|input|output|append|bind|by-value|(presel(?:ect|ec|e)?)|buffer|(param(?:eter|ete|et|e)?)|no-undo)\\\\s*\",\n          \"comment\": \"Certain keywords like NO-UNDO are 'gathered' by a DEFINE INPUT PARAMETER statement. \",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\s*(dataset-handle|table-handle)\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\s*(dataset)\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-]*)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"storage.data.dataset.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\s*(table)\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-]*)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#parameter-as\"\n        },\n        {\n          \"match\": \"(?i)\\\\s*((char(?:acter|acte|act|ac|a)?)|com-handle|date|datetime-tz|datetime|(dec(?:imal|ima|im|i)?)|handle|int64|(int(?:eger|ege|eg|e)?)|(log(?:ical|ica|ic|i)?)|(longch(?:ar|a)?)|memptr|raw|recid|rowid|(widget-h(?:andle|andl|and|an|a)?))(?![=a-zA-Z0-9_\\\\-])\\\\s*(,*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.abl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.comma.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s*(,)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.comma.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#buffer-for-table\"\n        },\n        {\n          \"include\": \"#extent\"\n        },\n        {\n          \"include\": \"#property-call\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#decimals\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#abl-system-handles\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#handle-attributes\"\n        },\n        {\n          \"include\": \"#handle-methods\"\n        },\n        {\n          \"include\": \"#type-names\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        }\n      ]\n    },\n    \"function-parameter-definition\": {\n      \"comment\": \"https://docs.progress.com/bundle/abl-reference/page/Parameter-definition-syntax.html\",\n      \"name\": \"meta.function.parameters\",\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-definition\"\n        }\n      ]\n    },\n    \"statements\": {\n      \"name\": \"meta.statements.abl\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#buffer-copy\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#argument-reference\"\n        },\n        {\n          \"include\": \"#trigger-procedure\"\n        },\n        {\n          \"include\": \"#abl-function-variable-arg\"\n        },\n        {\n          \"include\": \"#while-expression\"\n        },\n        {\n          \"include\": \"#rowid-function\"\n        },\n        {\n          \"include\": \"#var-statement\"\n        },\n        {\n          \"include\": \"#input-output-from-to\"\n        },\n        {\n          \"include\": \"#function-definition\"\n        },\n        {\n          \"include\": \"#record-buffer-functions\"\n        },\n        {\n          \"include\": \"#create-statement\"\n        },\n        {\n          \"include\": \"#can-find\"\n        },\n        {\n          \"include\": \"#release\"\n        },\n        {\n          \"include\": \"#copy-lob\"\n        },\n        {\n          \"include\": \"#event-un-subscribe\"\n        },\n        {\n          \"include\": \"#dataset-name\"\n        },\n        {\n          \"include\": \"#buffer-name\"\n        },\n        {\n          \"include\": \"#temp-table-name\"\n        },\n        {\n          \"include\": \"#annotation\"\n        },\n        {\n          \"include\": \"#undo-statement\"\n        },\n        {\n          \"include\": \"#block-statement\"\n        },\n        {\n          \"include\": \"#block-label\"\n        },\n        {\n          \"include\": \"#end-block\"\n        },\n        {\n          \"include\": \"#end-function-procedure-method-block\"\n        },\n        {\n          \"include\": \"#find-record\"\n        },\n        {\n          \"include\": \"#type-argument-function\"\n        },\n        {\n          \"include\": \"#get-class\"\n        },\n        {\n          \"include\": \"#if-then\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#translation-attribute\"\n        },\n        {\n          \"include\": \"#break-group\"\n        },\n        {\n          \"include\": \"#event-un-subscribe\"\n        },\n        {\n          \"include\": \"#property-call\"\n        },\n        {\n          \"include\": \"#handle-attributes\"\n        },\n        {\n          \"include\": \"#handle-methods\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#unqualified-method-call\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        },\n        {\n          \"include\": \"#method-definition\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"match\": \"(?i)\\\\s*(void)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#declarations\"\n        },\n        {\n          \"include\": \"#decimals\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#timestamp-constant\"\n        },\n        {\n          \"include\": \"#break-by\"\n        },\n        {\n          \"include\": \"#new-record\"\n        },\n        {\n          \"include\": \"#type-reference\"\n        },\n        {\n          \"include\": \"#procedure-definition\"\n        },\n        {\n          \"include\": \"#for-join\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#label-variable\"\n        },\n        {\n          \"include\": \"#define-field\"\n        },\n        {\n          \"include\": \"#define-like\"\n        },\n        {\n          \"include\": \"#format-constant\"\n        },\n        {\n          \"include\": \"#escape-endline\"\n        },\n        {\n          \"include\": \"#dll-type\"\n        },\n        {\n          \"include\": \"#parameter-as\"\n        },\n        {\n          \"include\": \"#buffer-for-table\"\n        },\n        {\n          \"include\": \"#primitive-type\"\n        },\n        {\n          \"include\": \"#property-accessor\"\n        },\n        {\n          \"include\": \"#for-each-table\"\n        },\n        {\n          \"include\": \"#for-each-join\"\n        },\n        {\n          \"include\": \"#of-phrase\"\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\",\n          \"comment\": \"this include must be after any type references so that eg get-class(package.type) can continue to work\"\n        },\n        {\n          \"include\": \"#code-block\"\n        },\n        {\n          \"include\": \"#language-functions\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-colon\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        },\n        {\n          \"include\": \"#punctuation-period\"\n        },\n        {\n          \"include\": \"#punctuation-colon\"\n        }\n      ]\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#define\"\n        }\n      ]\n    },\n    \"break-by\": {\n      \"match\": \"(?i)\\\\s*((break)\\\\s+)?(by)\\\\s+(([a-zA-Z][a-zA-Z_\\\\-#$%]*\\\\.)?([a-zA-Z][a-zA-Z_\\\\-#$%]*\\\\.)([a-zA-Z][a-zA-Z_\\\\-#$%]*)(\\\\[\\\\d+\\\\])?)\\\\b\",\n      \"comment\": \"The match needs a space capture before the BREAK, not a word break\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"4\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"preprocessor-directives\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)((&)(elseif|endif|else|then|if))\\\\s*\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.preprocessor.abl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.directive.conditional.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)((&)(message))\\\\s*\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.preprocessor.abl\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.function.abl\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-reference\": {\n      \"patterns\": [\n        {\n          \"comment\": \"https://docs.progress.com/bundle/abl-reference/page/Preprocessor-name-reference.html#Preprocessor-name-reference\",\n          \"match\": \"(?i)\\\\s*(({)(&)(window-system|line-number|batch-mode|file-name|sequence|opsys|process-architecture)\\\\s*(}))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.abl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.abl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.preprocessor.abl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.preprocessor.abl\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s*(({)(&)([a-zA-Z0-9_\\\\-#$%\\\\s\\\\(\\\\)]+)\\\\s*(}))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.abl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.abl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.preprocessor.abl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.preprocessor.abl\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.abl\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessors\": {\n      \"patterns\": [\n        {\n          \"include\": \"#analyze-suspend-resume\"\n        },\n        {\n          \"include\": \"#global-scoped-define\"\n        },\n        {\n          \"include\": \"#preprocessor-directives\"\n        },\n        {\n          \"include\": \"#preprocessor-functions\"\n        },\n        {\n          \"include\": \"#preprocessor-reference\"\n        }\n      ]\n    },\n    \"type-names\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-name-generic\"\n        },\n        {\n          \"include\": \"#type-name\"\n        }\n      ]\n    },\n    \"type-reference\": {\n      \"patterns\": [\n        {\n          \"include\": \"#define-type\"\n        },\n        {\n          \"include\": \"#get-class\"\n        },\n        {\n          \"include\": \"#new-class\"\n        },\n        {\n          \"include\": \"#using\"\n        },\n        {\n          \"include\": \"#type-argument-function\"\n        }\n      ]\n    },\n    \"using\": {\n      \"name\": \"meta.using.abl\",\n      \"begin\": \"\\\\s*([Uu][Ss][Ii][Nn][Gg])\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"Captures USING foo.bar.* . Since package names are filesystem names, needs unicode\",\n          \"match\": \"(?i)\\\\s*((([\\\\w#$%]+|progress)(\\\\.[\\\\w#$%]+)*)\\\\.\\\\*)\\\\s*\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"entity.name.package.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s*([Ff][Rr][Oo][Mm]|[Pp][Rr][Oo][Pp][Aa][Tt][Hh]|[Aa][Ss][Ss][Ee][Mm][Bb][Ll][Yy])\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-name\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"define-type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#define-class\"\n        },\n        {\n          \"include\": \"#define-interface\"\n        },\n        {\n          \"include\": \"#define-enum-type\"\n        }\n      ]\n    },\n    \"type-name-generic\": {\n      \"comment\": \"Scope names from https://www.sublimetext.com/docs/scope_naming.html . Types are files, so support unicode\",\n      \"name\": \"meta.generic.abl\",\n      \"begin\": \"(?i)\\\\s*(([\\\\w#$%\\\\-]+)(\\\\.[\\\\w#$%\\\\-]+)*\\\\s*)\\\\s*(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.abl\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.generic.begin.abl\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.generic.end.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-name-generic\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#type-name\"\n        }\n      ]\n    },\n    \"type-name\": {\n      \"comment\": \"Type names are files, so support unicode\",\n      \"match\": \"(?i)\\\\b([\\\\w#$%\\\\-]+(\\\\.[\\\\w#$%\\\\-]+)*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.abl\"\n        }\n      }\n    },\n    \"define-class\": {\n      \"comment\": \"Type names are files, so support unicode\",\n      \"name\": \"meta.define.class.abl\",\n      \"begin\": \"\\\\b(?<![#$\\\\-_%&])([Cc][Ll][Aa][Ss]{2})\\\\b(?![#$\\\\-_%&])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"\\\\s*(:)\\\\s*\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(serializable|abstract|final|use-widget-pool|inherits|implements)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-names\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"define-interface\": {\n      \"comment\": \"Type names are files, so support unicode\",\n      \"name\": \"meta.define.interface.abl\",\n      \"begin\": \"(?i)\\\\b(interface)\\\\s+([\\\\w#$%]+[\\\\w#$%\\\\.]*(\\\\s*<\\\\s*[\\\\w#$%\\\\.]+\\\\s*\\\\>)?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.abl\"\n        }\n      },\n      \"end\": \"\\\\s*(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\s*(inherits|implements)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-names\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"inherits-implements-type\": {\n      \"comment\": \"Type names are files, so support unicode\",\n      \"name\": \"meta.define-type.implements.abl\",\n      \"begin\": \"(?i)\\\\s*(implements|inherits)\\\\s*(([\\\\w#$%]+|progress)(\\\\.[\\\\w#$%]+)*(?<!\\\\.))\\\\s*\",\n      \"end\": \"(?i)\\\\s*(serializable|abstract|final|use-widget-pool|inherits|implements+?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.abl\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-names\"\n        }\n      ]\n    },\n    \"define-enum-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.define.enum.abl\",\n          \"comment\": \"Type names are files, so support unicode\",\n          \"match\": \"(?i)\\\\b(enum)\\\\s+([\\\\w#$%\\\\.]+)\\\\s*(flags)?\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.abl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.terminator.abl\"\n            }\n          }\n        }\n      ]\n    },\n    \"define-enum-member\": {\n      \"begin\": \"(?i)\\\\b(enum)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z][a-zA-Z0-9_#$%]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.abl\"\n            }\n          }\n        }\n      ]\n    },\n    \"attribute-access\": {\n      \"begin\": \":\",\n      \"end\": \"(?=:)|(?=\\\\s*)\",\n      \"comment\": \"\",\n      \"patterns\": []\n    },\n    \"parens\": {\n      \"match\": \"\\\\(|\\\\)\",\n      \"name\": \"meta.brace.round.js\"\n    },\n    \"new-class\": {\n      \"comment\": \"A dash/minus is not a word boundary, so we need to make sure we don't capture constructs like new-variable\",\n      \"begin\": \"(?i)\\\\b(new)\\\\b(?!\\\\-)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\()\",\n      \"patterns\": [\n        {\n          \"include\": \"#type-names\"\n        },\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"abl-function-variable-arg\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(set-size)\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#type-member-call\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"get-class\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(get-class)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#type-names\"\n        }\n      ]\n    },\n    \"find-record\": {\n      \"match\": \"(?i)\\\\s*(find)\\\\s+(first|last|next|prev|current)?\\\\s*([a-zA-Z_][a-zA-Z0-9#$\\\\-_%&]+(\\\\.[a-zA-Z_][a-zA-Z0-9#$\\\\-_%&]*)?)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"field-name\": {\n      \"comment\": \"Just a field name\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)?\\\\s*(\\\\[\\\\d+\\\\]))\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s*([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        }\n      ]\n    },\n    \"db-dot-table-dot-field\": {\n      \"match\": \"(?i)(?<=^|\\\\s|\\\\(|,)(([a-zA-Z][a-zA-Z0-9#$\\\\-_%&]*\\\\.)?([a-zA-Z_][a-zA-Z0-9#$\\\\-_%&]*\\\\.)([a-zA-Z_][a-zA-Z0-9#$\\\\-_%&]*)(\\\\[\\\\d+\\\\])?)\",\n      \"comment\": \"Looks for format of 'table.field', with an optional preceding 'db.'. This pattern may conflict with type names\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"db-dot-table\": {\n      \"match\": \"(?i)\\\\b([a-zA-Z_][a-zA-Z0-9#$\\\\-_%&]*(\\\\.[a-zA-Z_][a-zA-Z0-9#$\\\\-_%&]*)?)(?=[^a-zA-Z0-9#$\\\\-_%&])\",\n      \"comment\": \"Looks for format of 'table', with an optional preceding 'db.'. This pattern may conflict with type names. The last option must not be a word boundary since that includes dashes\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"break-group\": {\n      \"match\": \"(?i)\\\\s*(first-of|first|last-of|last)\\\\s*(\\\\()\\\\s*([a-zA-Z][a-zA-Z#$\\\\-_%&]*\\\\.[a-zA-Z_][a-zA-Z#$\\\\-_%&]*(\\\\.[a-zA-Z_][a-zA-Z#$\\\\-_%&]*)?)\\\\s*(\\\\))\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.round.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"4\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      }\n    },\n    \"of-phrase\": {\n      \"patterns\": [\n        {\n          \"comment\": \" This matches OF <table>\",\n          \"match\": \"\\\\s*([Oo][Ff])\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z_][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        },\n        {\n          \"comment\": \" This matches <table> OF <table>\",\n          \"match\": \"(?i)\\\\s*([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z_][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s+(of)\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z_][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.data.table.abl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"4\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        }\n      ]\n    },\n    \"for-join\": {\n      \"comment\": \"Captures something like ', salesrep where' or 'salesrep where', when the latter is at the beginning of a line. 'OF' phrases handled by of-phrase\",\n      \"match\": \"(?i)(?<=,|^)\\\\s*([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z_][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s+(?=where|no-lock|(exclusive-l(?:ock|oc|o)?)|(share(?:-lock|-loc|-lo|-l|-)?)|tenant-where|use-index|table-scan|using|(no-prefe(?:tch|tc|t)?)|left|outer-join|break|by|(transact(?:ion|io|i)?))\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"for-each-join\": {\n      \"begin\": \"(?i)\\\\b(each|first|last)\\\\b(?<!\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      },\n      \"end\": \"(?i)\\\\s*(?=where|no-lock|(exclusive-l(?:ock|oc|o)?)|(share(?:-lock|-loc|-lo|-l|-)?)|tenant-where|use-index|table-scan|using|(no-prefe(?:tch|tc|t)?)|left|outer-join|break|by|(transact(?:ion|io|i)?)|,|:)\\\\s*\",\n      \"patterns\": [\n        {\n          \"include\": \"#fields-except-list\"\n        },\n        {\n          \"include\": \"#of-phrase\"\n        },\n        {\n          \"comment\": \"Intended to catch joins like ', table of table2', since the first table name is matched by the begin\",\n          \"match\": \"(?i)\\\\s*(of)\\\\s+([a-zA-Z][a-zA-Z_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z_\\\\-#$%]*)?)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s*([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s*\",\n          \"comment\": \"Matches the table name in the case of eg ',each table' \",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        }\n      ]\n    },\n    \"for-each-table\": {\n      \"begin\": \"(?i)(?<=\\\\s|\\\\b|^)(for|(presel(?:ect|ec|e)?))[\\\\s+|$]\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?i)\\\\s*(?=where|no-lock|(exclusive-l(?:ock|oc|o)?)|(share(?:-lock|-loc|-lo|-l|-)?)|tenant-where|use-index|table-scan|using|(no-prefe(?:tch|tc|t)?)|left|outer-join|break|by|(transact(?:ion|io|i)?)|,|:|on)\\\\s*\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\s*(each|first|last|of)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#fields-except-list\"\n        },\n        {\n          \"include\": \"#of-phrase\"\n        },\n        {\n          \"include\": \"#field-name\"\n        },\n        {\n          \"include\": \"#db-dot-table\"\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        },\n        {\n          \"include\": \"#while-expression\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"fields-except-list\": {\n      \"begin\": \"(?i)\\\\s*(fields|except)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        },\n        {\n          \"include\": \"#field-name\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"record-buffer-functions\": {\n      \"comment\": \"this capture does not include the NOT function since it is impossible to determine whether this is a new class or a new record.\",\n      \"match\": \"(?i)\\\\b((?:avail(?:able|abl|ab|a)?)|locked|ambiguous)\\\\s*(\\\\()?\\\\s*([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s*(\\\\))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.round.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"5\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      }\n    },\n    \"copy-lob\": {\n      \"comment\": \"Has its own rule because of the 'FOR length' option, which is parsed as a 'FOR EACH' type statement\",\n      \"begin\": \"(?i)\\\\b(copy-lob)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#code-block\"\n        }\n      ]\n    },\n    \"type-argument-function\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"\\\\s*([Cc][Aa][Ss][Tt]|[Tt][Yy][Pp][Ee]-[Oo][Ff])\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\()\",\n          \"end\": \"(,)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.comma.abl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-arguments-no-parens\"\n            },\n            {\n              \"include\": \"#parens\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-names\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        }\n      ]\n    },\n    \"code-block\": {\n      \"patterns\": [\n        {\n          \"include\": \"#create-statement\"\n        },\n        {\n          \"include\": \"#record-buffer-functions\"\n        },\n        {\n          \"include\": \"#can-find\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#break-group\"\n        },\n        {\n          \"include\": \"#block-undo-leave-next-retry\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#language-functions\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#include-file\"\n        },\n        {\n          \"include\": \"#run-statement\"\n        },\n        {\n          \"include\": \"#define\"\n        },\n        {\n          \"include\": \"#block-statement\"\n        },\n        {\n          \"include\": \"#end-block\"\n        },\n        {\n          \"include\": \"#property-call\"\n        },\n        {\n          \"include\": \"#new-record\"\n        },\n        {\n          \"include\": \"#type-reference\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#abl-system-handles\"\n        },\n        {\n          \"include\": \"#handle-methods\"\n        },\n        {\n          \"include\": \"#handle-attributes\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        },\n        {\n          \"include\": \"#static-object-property-call\"\n        },\n        {\n          \"include\": \"#punctuation-period\"\n        },\n        {\n          \"include\": \"#punctuation-colon\"\n        }\n      ]\n    },\n    \"property-accessor\": {\n      \"patterns\": [\n        {\n          \"include\": \"#property-get-set-super\"\n        },\n        {\n          \"include\": \"#property-get-set-empty\"\n        },\n        {\n          \"include\": \"#property-get-set-block\"\n        }\n      ]\n    },\n    \"property-get-set-super\": {\n      \"match\": \"(?i)\\\\b(get|set)\\\\s+(super)\\\\s*(?=\\\\.)\",\n      \"comment\": \"This is a call to the parent class' property getter or setter\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"property-get-set-empty\": {\n      \"comment\": \"This rule is needed since for 'plain' gets and sets, there's no END\",\n      \"match\": \"\\\\b([Gg][Ee][Tt]|[Ss][Ee][Tt])\\\\s*(?=\\\\.)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"property-get-set-block\": {\n      \"begin\": \"\\\\s*(?<!:)\\\\s*([Gg][Ee][Tt]|[Ss][Ee][Tt])\\\\b(?![#$\\\\-_%&])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"\\\\s*([Ee][Nn][Dd])\\\\s*([Gg][Ee][Tt]|[Ss][Ee][Tt])?\\\\s*(?=\\\\.)\\\\s*\",\n      \"comment\": \"The end capture does a lookahead on . so that the 'define' capture can end \",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameter-definition\"\n        },\n        {\n          \"include\": \"#code-block\"\n        },\n        {\n          \"include\": \"#punctuation-colon\"\n        }\n      ]\n    },\n    \"parameter-as\": {\n      \"begin\": \"\\\\s*([a-zA-Z0-9_\\\\-#$%]+)\\\\s+([Aa][Ss])\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\s|\\\\)|\\\\.|,)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*([Cc][Ll][Aa][Ss]{2})\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#primitive-type\"\n        },\n        {\n          \"include\": \"#dll-type\"\n        },\n        {\n          \"include\": \"#type-names\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#punctuation-period\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"input-output-from-to\": {\n      \"begin\": \"(?i)\\\\b(input|output)\\\\s+((stream|stream-handle)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\s+)?(from|to)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#variable-name\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?i)(?=\\\\.|target|source)\",\n      \"comment\": \"End with TARGET or SOURCE since these are the only options that take variables as arguments, and they must be the last options\",\n      \"patterns\": [\n        {\n          \"include\": \"#type-member-call\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#abl-system-handles\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#opsys-device-name\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"opsys-device-name\": {\n      \"match\": \"([_\\\\w\\\\/\\\\-\\\\\\\\$:\\\\.]+)(?<!\\\\.)\",\n      \"comment\": \"For this regex to work, a device name may have periods in its name, but cannot end in one. File names support unicode\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.other.opsys-device.abl\"\n        }\n      }\n    },\n    \"define-variable-name\": {\n      \"match\": \"(?i)(var(?:iable|iabl|iab|ia|i)?)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.abl\"\n        }\n      }\n    },\n    \"variable-as\": {\n      \"match\": \"\\\\s*([a-zA-Z0-9_\\\\-#$%\\\\-]+)\\\\s+([Aa][Ss])\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"variable-like\": {\n      \"match\": \"(?i)\\\\s*([a-zA-Z0-9_\\\\-#$%\\\\-]+)\\\\s+(?=like)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.abl\"\n        }\n      }\n    },\n    \"property-as\": {\n      \"match\": \"\\\\s*([a-zA-Z0-9_\\\\-#$%]+)\\\\s+([Aa][Ss])\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"field-as-object\": {\n      \"comment\": \"This is to capture 'FIELD x AS Object'. As of OE 12.7 only Progress.Lang.Object is allowed as a type name. If/when this changes, this regex becomes trickier\",\n      \"match\": \"(?i)\\\\s*((progress\\\\.lang\\\\.)?object)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.abl\"\n        }\n      }\n    },\n    \"annotation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#annotation-attributes\"\n        },\n        {\n          \"include\": \"#annotation-simple\"\n        }\n      ]\n    },\n    \"annotation-simple\": {\n      \"name\": \"meta.declaration.annotation.abl\",\n      \"match\": \"(^|\\\\s*)(\\\\@[a-zA-Z_][a-zA-Z0-9_#$\\\\-%&\\\\.]+)\\\\s*(?=\\\\.)\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.abl\"\n        }\n      }\n    },\n    \"annotation-attributes\": {\n      \"name\": \"meta.declaration.annotation.abl\",\n      \"begin\": \"(^|\\\\s+)(\\\\@[a-zA-Z_][a-zA-Z0-9_#$\\\\-%&\\\\.]*)\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"match\": \"\\\\s*([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]+)(?=[\\\\=\\\\s$])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#operator-no-space\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"define\": {\n      \"name\": \"meta.define.abl\",\n      \"begin\": \"(?i)\\\\s*(def(?:ine|in|i)?)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(\\\\.)(?!\\\\w)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\s*(new|(glob(?:al|a|)?)|shared)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#serializable\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#define-enum-member\"\n        },\n        {\n          \"include\": \"#define-variable\"\n        },\n        {\n          \"include\": \"#define-parameter\"\n        },\n        {\n          \"include\": \"#define-button\"\n        },\n        {\n          \"include\": \"#define-dataset\"\n        },\n        {\n          \"include\": \"#define-query\"\n        },\n        {\n          \"include\": \"#define-browse\"\n        },\n        {\n          \"include\": \"#fields-except-list\"\n        },\n        {\n          \"include\": \"#define-event\"\n        },\n        {\n          \"include\": \"#define-property\"\n        },\n        {\n          \"include\": \"#property-accessor\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#define-field\"\n        },\n        {\n          \"include\": \"#parameter-as\"\n        },\n        {\n          \"include\": \"#define-stream\"\n        },\n        {\n          \"include\": \"#define-buffer\"\n        },\n        {\n          \"include\": \"#define-frame\"\n        },\n        {\n          \"include\": \"#for-table\"\n        },\n        {\n          \"include\": \"#buffer-for-table\"\n        },\n        {\n          \"include\": \"#define-table\"\n        },\n        {\n          \"include\": \"#define-index\"\n        },\n        {\n          \"include\": \"#define-like\"\n        },\n        {\n          \"include\": \"#field-as-object\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#extent\"\n        },\n        {\n          \"include\": \"#decimals\"\n        },\n        {\n          \"include\": \"#format-constant\"\n        },\n        {\n          \"include\": \"#timestamp-constant\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#primitive-type\"\n        },\n        {\n          \"include\": \"#dll-type\"\n        },\n        {\n          \"include\": \"#abl-system-handles\"\n        },\n        {\n          \"include\": \"#property-call\"\n        },\n        {\n          \"include\": \"#handle-attributes\"\n        },\n        {\n          \"include\": \"#handle-methods\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#function-parameter-definition\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#label-variable\"\n        },\n        {\n          \"include\": \"#type-names\"\n        }\n      ]\n    },\n    \"define-field\": {\n      \"match\": \"(?i)\\\\s*(field)\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"cache-value\": {\n      \"match\": \"\\\\b([Cc][Aa][Cc][Hh][Ee])\\\\s+(0[xX]\\\\h+)?|(\\\\-?[0-9]+(\\\\.[0-9]+)?)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.source.abl\"\n        }\n      }\n    },\n    \"define-query\": {\n      \"begin\": \"(?i)\\\\b(query)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.abl\"\n        }\n      },\n      \"end\": \"(?i)(?=\\\\.\\\\s*)\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(for|scrolling|(rcode-info(?:rmation|rmatio|rmati|rmat|rma|rm|r)?))\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#cache-value\"\n        },\n        {\n          \"include\": \"#db-dot-table\"\n        },\n        {\n          \"include\": \"#fields-except-list\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"define-browse\": {\n      \"begin\": \"(?i)\\\\b(browse)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.abl\"\n        }\n      },\n      \"end\": \"(?i)\\\\b(?=\\\\.)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([Qq][Uu][Ee][Rr][Yy])\\\\s+([a-zA-Z][a-zA-Z0-9\\\\-_#$%\\\\&]+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\b((share(?:-lock|-loc|-lo|-l|-)?)|(exclusive-l(?:ock|oc|o)?)|no-lock|no-wait|(disp(?:lay|la|l)?))\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"define-parameter\": {\n      \"begin\": \"(?i)\\\\b(param(?:eter|ete|et|e)?)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?i)(?=\\\\.)|\\\\b(?=(bgc(?:olor|olo|ol|o)?)|(column-lab(?:el|e)?)|context-help-id|dcolor|decimals|drop-target|extent|font|(fgc(?:olor|olo|ol|o)?)|(form(?:at|a)?)|initial|label|(mouse-p(?:ointer|ointe|oint|oin|oi|o)?)|no-undo|not|(case-sen(?:sitive|sitiv|siti|sit|si|s)?)|(pfc(?:olor|olo|ol|o)?)|view-as|triggers)\\\\b\",\n      \"comment\": \"The end capture does a lookahead on . so that the 'define' capture can end \",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(table)\\\\s+(for)\\\\s+([a-zA-Z][a-zA-Z_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z_\\\\-#$%]*)?)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"3\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\b(table-handle|dataset-handle)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\b(dataset)\\\\s+(for)\\\\s+([a-zA-Z_\\\\-#$%]+(\\\\.[a-zA-Z_\\\\-#$%]+)?)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"3\": {\n              \"name\": \"storage.data.dataset.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#parameter-as\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"define-property\": {\n      \"begin\": \"(?i)\\\\b(property)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"comment\": \"This match just gets the definition of the property; the getter and setter are handled separately\",\n      \"end\": \"\\\\s*(?=[Gg][Ee][Tt]|[Ss][Ee][Tt])\",\n      \"patterns\": [\n        {\n          \"include\": \"#property-as\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#primitive-type\"\n        },\n        {\n          \"include\": \"#extent\"\n        },\n        {\n          \"include\": \"#decimals\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#timestamp-constant\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#type-names\"\n        }\n      ]\n    },\n    \"dataset-name\": {\n      \"match\": \"(?i)\\\\s*(dataset)\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.dataset.abl\"\n        }\n      }\n    },\n    \"buffer-name\": {\n      \"match\": \"(?i)\\\\b(buffer)\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"temp-table-name\": {\n      \"match\": \"(?i)\\\\b(temp-table)\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"create-widget\": {\n      \"match\": \"(?i)\\\\s*(create)\\\\s+(button|combo-box|(?:control-fram(?:e)?)|dialog-box|editor|fill-in|(?:fram(?:e)?)|image|menu|menu-item|radio-set|(?:rect(?:angle|angl|ang|an|a)?)|selection-list|slider|sub-menu|text|toggle-box|window)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.abl\"\n        }\n      }\n    },\n    \"create-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#create-buffer\"\n        },\n        {\n          \"include\": \"#create-alias\"\n        },\n        {\n          \"include\": \"#create-widget\"\n        },\n        {\n          \"include\": \"#create-with-expression\"\n        },\n        {\n          \"include\": \"#create-record\"\n        }\n      ]\n    },\n    \"create-record\": {\n      \"match\": \"(?i)\\\\s*(create)\\\\s+([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s*((for)\\\\s+(tenant))?\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"5\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"6\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"create-alias\": {\n      \"begin\": \"(?i)\\\\s*(create)\\\\s+(alias)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z0-9][a-zA-Z0-9_\\\\-]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.data.database.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"create-with-expression\": {\n      \"comment\": \"The variable, temp-table field, etc used to store the created expression, will be dealt with by other scopes\",\n      \"match\": \"(?i)\\\\s*(create)\\\\s+(browse|call|client-principal|database|dataset|data-source|query|sax-attributes|sax-reader|sax-writer|server|server-socket|soap-header|soap-header-entryref|socket|temp-table|widget-pool|x-document|x-noderef)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"create-buffer\": {\n      \"comment\": \"https://docs.progress.com/bundle/abl-reference/page/CREATE-BUFFER-statement.html\",\n      \"begin\": \"\\\\s*([Cc][Rr][Ee][Aa][Tt][Ee])\\\\s+([Bb][Uu][Ff][Ff][Ee][Rr])\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?i)(((buffer-n(?:ame|am|a)?)|in)\\\\b)|(?=\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\s*(for|table|no-error)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#define-table\"\n        },\n        {\n          \"include\": \"#buffer-name\"\n        },\n        {\n          \"include\": \"#temp-table-name\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessor-reference\"\n        },\n        {\n          \"include\": \"#handle-attributes\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"define-index\": {\n      \"begin\": \"(?i)\\\\s*(index)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      },\n      \"end\": \"(?i)(?=\\\\bindex\\\\b|\\\\.)\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(AS|IS|UNIQUE|PRIMARY|WORD-INDEX|(asc(?:ending|endin|endi|end|en|e)?)|(desc(?:ending|endin|endi|end|en|e)?))\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"define-dataset\": {\n      \"begin\": \"(?i)\\\\b(dataset)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.dataset.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\.)\",\n      \"comment\": \"The end capture does a lookahead on . so that the 'define' capture can end \",\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((?:data-rel(?:ation|atio|ati|at|a)?)|parent-id-relation)\\\\s*([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\",\n          \"comment\": \"Manually capture these so that we can name the relation name properly\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"storage.data.dataset.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\b(relation-fi(?:elds|eld|el|e)?)\\\\b\",\n          \"comment\": \"This ABL function is handled manually, because we know that the arguments are only table.field names, and the standard abl-function scopes assign these values to variable scopes\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#db-dot-table\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"define-event\": {\n      \"match\": \"(?i)\\\\b(event)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"define-button\": {\n      \"begin\": \"(?i)\\\\s*(button)\\\\s+([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#from-x-and-y\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"from-x-and-y\": {\n      \"match\": \"(?i)\\\\b(from)\\\\s+(X)\\\\s+((0(x)[\\\\h]+)|(\\\\-?[[0-9]]+(\\\\.[[0-9]]+)?))\\\\s+(y)\\\\s+((0(x)[\\\\h]+)|(\\\\-?[[0-9]]+(\\\\.[[0-9]]+)?))\\\\s+ \",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"6\": {\n          \"name\": \"constant.numeric.source.abl\"\n        },\n        \"8\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"12\": {\n          \"name\": \"constant.numeric.source.abl\"\n        }\n      }\n    },\n    \"define-buffer\": {\n      \"begin\": \"(?i)\\\\s*(buffer)\\\\b(?![#$\\\\-_%&])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#for-table\"\n        },\n        {\n          \"include\": \"#buffer-for-table\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"define-frame\": {\n      \"begin\": \"(?i)\\\\s*((?:fram(?:e)?))\\\\s*([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.abl\"\n        }\n      },\n      \"end\": \"(?=[Ww][Ii][Tt][Hh]|\\\\.(?!\\\\w))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"define-variable\": {\n      \"comment\": \"This rule captures just the variable name and the data type. Based on https://docs.progress.com/bundle/abl-reference/page/DEFINE-VARIABLE-statement.html\",\n      \"begin\": \"(?i)\\\\s*(var(?:iable|iabl|iab|ia|i)?)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?i)(?=\\\\.)|\\\\b(?=(bgc(?:olor|olo|ol|o)?)|(column-lab(?:el|e)?)|context-help-id|dcolor|decimals|drop-target|extent|font|(fgc(?:olor|olo|ol|o)?)|(form(?:at|a)?)|(init(?:ial|ia|i)?)|label|(mouse-p(?:ointer|ointe|oint|oin|oi|o)?)|no-undo|not|(case-sen(?:sitive|sitiv|siti|sit|si|s)?)|(pfc(?:olor|olo|ol|o)?)|view-as|triggers)\\\\b\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([Cc][Ll][Aa][Ss][Ss])\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#variable-as\"\n        },\n        {\n          \"include\": \"#variable-like\"\n        },\n        {\n          \"include\": \"#primitive-type\"\n        },\n        {\n          \"include\": \"#define-like\"\n        },\n        {\n          \"comment\": \"needs to be before the #keywords include\",\n          \"include\": \"#type-names\"\n        },\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"label-variable\": {\n      \"match\": \"(?i)\\\\s*([a-zA-Z0-9_\\\\-#$%]+)\\\\s+(label)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"format-constant\": {\n      \"comment\": \"DATE/TIME/TZ fields can have an unquoted format if it's something like 99/99/9999\",\n      \"match\": \"(?i)\\\\b((?:form(?:at|a)?))\\\\s+(9+/9+/9+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"constant.language.source.abl\"\n        }\n      }\n    },\n    \"define-table\": {\n      \"match\": \"(?i)(?<=\\\\b)(temp-table|before-table)\\\\s*([a-zA-Z_][a-zA-Z0-9_\\\\-#$%]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"buffer-for-table\": {\n      \"comment\": \"1 to 32 characters; can consist of any combination of letters (a-z or A-Z), numbers (0-9), and these special characters: # $ - _ % & Names must begin with a letter.\",\n      \"match\": \"(?i)\\\\s*(?!do|repeat|for)([a-zA-Z][a-zA-Z_0-9\\\\-#$%]*)\\\\s+(for)\\\\s+((temp-table)\\\\s+)?([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"5\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"double-colon-field-name\": {\n      \"match\": \"\\\\s*::([a-zA-Z_\\\\-#$%]+)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"for-table\": {\n      \"match\": \"(?i)\\\\s*(for)\\\\s+((temp-table)\\\\s+)?([a-zA-Z_\\\\-#$%]+)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"4\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"can-find\": {\n      \"comment\": \"This captures CAN-FIND( until either the closing brace, or a keyword like WHERE or a lock status. Based on the doc at https://docs.progress.com/bundle/abl-reference/page/CAN-FIND-function.html\",\n      \"begin\": \"(?i)\\\\s*(can-find)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"(?i)\\\\b(?=\\\\)|where|no-lock|(share(?:-lock|-loc|-lo|-l|-)?)|using|(no-prefe(?:tch|tc|t)?)|no-wait)\\\\s*\",\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(first|last)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#use-index\"\n        },\n        {\n          \"include\": \"#of-phrase\"\n        },\n        {\n          \"include\": \"#db-dot-table\"\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        }\n      ]\n    },\n    \"use-index\": {\n      \"match\": \"(?i)\\\\b(use-index)\\\\s+([a-zA-Z_][a-zA-Z0-9_\\\\-$]*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"access-modifier\": {\n      \"match\": \"(?i)\\\\s*(package-private|private|package-protected|protected|public|static|override|abstract|final)\\\\s+\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"serializable\": {\n      \"match\": \"(?i)\\\\b(non-serializable|serializable)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"var-statement\": {\n      \"name\": \"meta.define.abl\",\n      \"begin\": \"^\\\\s*(var)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(\\\\s([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*))\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"variable.other.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#serializable\"\n        },\n        {\n          \"comment\": \"This capture must use spaces and not word boundaries because the 'end' is on a space. This also captures class names that are ABL primitive type names, for example OpenEdge.Core.Memptr in its short form\",\n          \"match\": \"(?i)\\\\s*(class)\\\\s*(blob|character|char|clob|com-handle|date|datetime|datetime-tz|decimal|handle|int64|integer|int|logical|longchar|memptr|raw|recid|rowid|widget-handle)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#primitive-type\"\n        },\n        {\n          \"include\": \"#type-names\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        }\n      ]\n    },\n    \"define-stream\": {\n      \"name\": \"meta.define.stream.abl\",\n      \"match\": \"(?i)\\\\s*(stream)\\\\s*([a-zA-Z][a-zA-Z0-9_\\\\-#$%\\\\-]*)\",\n      \"comment\": \"https://docs.progress.com/bundle/abl-reference/page/DEFINE-STREAM-statement.html\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#variable-name\"\n            }\n          ]\n        }\n      }\n    },\n    \"define-like\": {\n      \"match\": \"(?i)\\\\s*(like|like-sequential)\\\\s+(([a-zA-Z][a-zA-Z_\\\\-#$%]*\\\\.)?([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*\\\\.)?([a-zA-Z][a-zA-Z0-9_\\\\-#$%]*))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"block-label\": {\n      \"match\": \"(?i)^\\\\s*(?!((?:transact(?:ion|io|i)?)|no-lock|(?:exclusive-l(?:ock|oc|o)?)|(?:share(?:-lock|-loc|-lo|-l|-)?)):)([a-zA-Z][a-zA-Z0-9_\\\\-#$%\\\\-$#]*)(:)\\\\s\",\n      \"comment\": \"A colon followed by a space is only legal is for block labels. Block labels must also be at the beginning of a line. Scope name is per https://www.sublimetext.com/docs/scope_naming.html\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.label.abl\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      }\n    },\n    \"end-block\": {\n      \"comment\": \"Certain blocks have the option of END <block name>\",\n      \"match\": \"(?i)\\\\s*(end)\\\\s+(CASE|CATCH|CLASS|CONSTRUCTOR|DESTRUCTOR|ENUM|FINALLY|FUNCTION|GET|INTERFACE|METHOD|PROCEDURE|SET|TRIGGERS)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"block-statement\": {\n      \"begin\": \"(?i)(?<!end)\\\\s*(do|repeat|finally)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"comment\": \"The end condition is look forward AND backward for the colon, since contained conditions may terminate on a line-ending, which may contain the colon\",\n      \"end\": \"\\\\s*(?=:)|(?<=:)|(?=\\\\.)|(?<=\\\\.)\\\\s*\",\n      \"name\": \"meta.block.abl\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b((transact(?:ion|io|i)?)|stop-after|and|or)\\\\b\",\n          \"name\": \"keyword.other.abl\"\n        },\n        {\n          \"include\": \"#logical-expression\"\n        },\n        {\n          \"include\": \"#while-expression\"\n        },\n        {\n          \"include\": \"#for-record\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((transact(?:ion|io|i)?)|stop-after)\\\\b\",\n          \"name\": \"keyword.other.abl\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#type-member-call\"\n        },\n        {\n          \"include\": \"#language-functions\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-colon\"\n        },\n        {\n          \"include\": \"#branch-options\"\n        }\n      ]\n    },\n    \"from-to-by\": {\n      \"begin\": \"\\\\s*([a-zA-Z0-9_\\\\-#$%$\\\\-_%&]+)\\\\s+(=)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.source.abl\"\n        }\n      },\n      \"end\": \"(?i)(?=(transact(?:ion|io|i)?)|on|:|with|while)\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\s+(to|by)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#branch-options\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"event-un-subscribe\": {\n      \"begin\": \"(?i)((\\\\?:)|(:))(unsubscribe|subscribe)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.operator.source.abl\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.function.abl\"\n        },\n        \"5\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"Captures the static class before the : of Subscribe ( [ subscriber : ] handler-method ). Type names are files, so support unicode\",\n          \"match\": \"\\\\s*([\\\\w#$%\\\\-]+(\\\\.[\\\\w#$%\\\\-]+)+)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.abl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.abl\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Captures the variable before the : or , of Subscribe( [ subscriber-handle , ] handler-procedure ) or Subscribe ( [ subscriber : ] handler-method )\",\n          \"match\": \"\\\\s*([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\s*((,)|(:))\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.abl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.comma.abl\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.colon.abl\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Subscribe( handler-procedure or handler-method)\",\n          \"match\": \"\\\\s*([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"release\": {\n      \"begin\": \"(?i)\\\\s*(release)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"(?i)\\\\s*(object)\\\\s+(.*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#db-dot-table\"\n        }\n      ]\n    },\n    \"for-record\": {\n      \"comment\": \"this regex just tries to capture a bunch (6) of tables\",\n      \"match\": \"(?i)\\\\s*(for)\\\\s+([a-zA-Z_\\\\-#$%]*)\\\\s*(,)?\\\\s*([a-zA-Z_\\\\-#$%]*)?\\\\s*(,)?\\\\s*([a-zA-Z_\\\\-#$%]*)?\\\\s*(,)?\\\\s*([a-zA-Z_\\\\-#$%]*)?\\\\s*(,)?\\\\s*([a-zA-Z_\\\\-#$%]*)?\\\\s*(,)?\\\\s*([a-zA-Z_\\\\-#$%]*)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.comma.abl\"\n        },\n        \"4\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.comma.abl\"\n        },\n        \"6\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.comma.abl\"\n        },\n        \"8\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.separator.comma.abl\"\n        },\n        \"10\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.separator.comma.abl\"\n        },\n        \"12\": {\n          \"name\": \"storage.data.table.abl\"\n        }\n      }\n    },\n    \"on-error-endkey-stop\": {\n      \"match\": \"(?i)\\\\s*(on)\\\\s+(endkey|error|stop|quit)\\\\s+(undo)\\\\s*(?!leave|next|retry|return|throw)([a-zA-Z0-9_\\\\-#$%\\\\-$]*)?\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.label.abl\"\n        }\n      }\n    },\n    \"block-undo-leave-next-retry\": {\n      \"comment\": \"Covers NEXT, LEAVE, RETRY and UNDO with block labels that are not preceded by UNDO, \",\n      \"match\": \"(?i)\\\\s*(?<!,)\\\\s*(leave|next|retry|undo)\\\\b(?!on)(\\\\s+([a-zA-Z0-9_\\\\-#$%\\\\-$]*))?\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.label.abl\"\n        }\n      }\n    },\n    \"branch-leave-next-retry-throw\": {\n      \"match\": \"(?i)\\\\s*(?<=,)\\\\s*(leave|next|retry|throw)\\\\s*(?!on)([a-zA-Z0-9_\\\\-#$%\\\\-$]*)?\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.label.abl\"\n        }\n      }\n    },\n    \"branch-return-value-single\": {\n      \"comment\": \"RETURN 'return-value'\",\n      \"begin\": \"(?i)\\\\s*(return)(\\\\s+(error))?\\\\s+(')\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.abl\"\n        }\n      },\n      \"name\": \"string.quoted.single.abl\",\n      \"end\": \"(')\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#escape-char\"\n        }\n      ]\n    },\n    \"escape-char\": {\n      \"match\": \"~.\",\n      \"name\": \"constant.character.escape.abl\"\n    },\n    \"escape-endline\": {\n      \"match\": \"(~)\\\\s*$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.continuation\"\n        }\n      }\n    },\n    \"branch-return-value-double\": {\n      \"comment\": \"RETURN \\\"return-value\\\"\",\n      \"begin\": \"(?i)\\\\s*(return)(\\\\s+(error))?\\\\s+(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.abl\"\n        }\n      },\n      \"end\": \"(\\\")\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#escape-char\"\n        }\n      ]\n    },\n    \"branch-return-no-apply\": {\n      \"comment\": \"RETURN NO-APPLY\",\n      \"match\": \"(?i)\\\\s*(return)\\\\s+(no-apply)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"branch-return-error-expression\": {\n      \"begin\": \"(?i)\\\\s*(return)\\\\s+(error)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"comment\": \" This regex captures to the end of the line, or the colon, whichever comes first\",\n      \"end\": \"(?=:|$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#new-class\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#property-call\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"undo-statement\": {\n      \"comment\": \"https://docs.progress.com/bundle/abl-reference/page/UNDO-statement.html\",\n      \"begin\": \"(?i)\\\\s*(undo)\\\\s*([a-zA-Z0-9_\\\\-#$%\\\\-$]*)?\\\\s*(,)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.label.abl\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.comma.abl\"\n        }\n      },\n      \"end\": \"(?=[\\\\.:](?![a-zA-Z0-9_\\\\-#$%]))\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"(?i)\\\\s*(leave|next|retry)\\\\s([a-zA-Z0-9_\\\\-#$%\\\\-$]*)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.label.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#new-class\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#code-block\"\n        },\n        {\n          \"include\": \"#property-call\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        },\n        {\n          \"include\": \"#function-arguments-no-parens\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-colon\"\n        }\n      ]\n    },\n    \"branch-options\": {\n      \"patterns\": [\n        {\n          \"include\": \"#on-error-endkey-stop\"\n        },\n        {\n          \"include\": \"#branch-leave-next-retry-throw\"\n        },\n        {\n          \"include\": \"#branch-return-value-double\"\n        },\n        {\n          \"include\": \"#branch-return-value-single\"\n        },\n        {\n          \"include\": \"#branch-return-no-apply\"\n        },\n        {\n          \"include\": \"#branch-return-error-expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"while-expression\": {\n      \"begin\": \"(?i)\\\\s*(while)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?i)(?=(transact(?:ion|io|i)?)|on|:|with)\",\n      \"patterns\": [\n        {\n          \"include\": \"#logical-expression\"\n        },\n        {\n          \"include\": \"#branch-options\"\n        }\n      ]\n    },\n    \"analyze-suspend-resume\": {\n      \"begin\": \"(?i)(&analyze-suspend|&analyze-resume)\\\\s*\",\n      \"end\": \"(?=(?://|/\\\\*))|$\",\n      \"name\": \"comment.preprocessor.analyze-suspend.abl\"\n    },\n    \"global-scoped-define\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)^\\\\s*((&)(scop(?:ed-define|ed-defin|ed-defi|ed-def|ed-de|ed-d|ed-|ed|e)?))\\\\s*\",\n          \"name\": \"meta.preprocessor.abl\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.preprocessor.abl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.directive.define.abl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.preprocessor.abl\"\n            }\n          },\n          \"end\": \"([\\\\.a-zA-Z0-9_\\\\-#$%\\\\/]+)\\\\s*\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.preprocessor.abl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escape-endline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)^\\\\s*((&)(glob(?:al-define|al-defin|al-defi|al-def|al-de|al-d|al-|al|a)?))\\\\s*\",\n          \"name\": \"meta.preprocessor.abl\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.preprocessor.abl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.directive.define.abl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.preprocessor.abl\"\n            }\n          },\n          \"end\": \"([\\\\.a-zA-Z0-9_\\\\-#$%\\\\/]+)\\\\s*\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.preprocessor.abl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escape-endline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((&)(undef(?:ine|in|i)?))\\\\s*([\\\\.a-zA-Z0-9_\\\\-#$%\\\\/]*)\\\\s*\",\n          \"name\": \"meta.preprocessor.abl\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.preprocessor.abl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.directive.define.abl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.preprocessor.abl\"\n            }\n          },\n          \"end\": \"([\\\\.a-zA-Z0-9_\\\\-#$%\\\\/]+)\\\\s*\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.preprocessor.abl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escape-char\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-functions\": {\n      \"begin\": \"\\\\s*([Dd][Ee][Ff][Ii][Nn][Ee][Dd])\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"([a-zA-Z0-9_\\\\-#$%]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.preprocessor.abl\"\n            }\n          }\n        }\n      ],\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      }\n    },\n    \"if-then\": {\n      \"begin\": \"\\\\b([Ii][Ff])\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#logical-expression\"\n        }\n      ],\n      \"end\": \"\\\\b(?=[Tt][Hh][Ee][Nn])\\\\b\"\n    },\n    \"logical-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([Aa][Nn][Dd]|[Oo][Rr])\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        },\n        {\n          \"include\": \"#type-member-call\"\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#code-block\"\n        },\n        {\n          \"include\": \"#handle-attributes\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#language-functions\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#abl-system-handles\"\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"function-arguments\": {\n      \"name\": \"meta.function.arguments.abl\",\n      \"comment\": \"Captures what's between ( and ) when calling a function, excluding the braces \",\n      \"begin\": \"(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"(?=\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#function-arguments-no-parens\"\n        }\n      ]\n    },\n    \"function-arguments-no-parens\": {\n      \"name\": \"meta.function.arguments.abl\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\s*((input-o(?:utput|utpu|utp|u)?)|output|input|table-handle|dataset-handle|append|by-value|by-reference|bind)\\\\b(?![#$\\\\-_%&])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\b(dataset)\\\\s+([a-zA-Z_\\\\-#$%]+(\\\\.[a-zA-Z_\\\\-#$%]+)?)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"storage.data.dataset.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\b(temp-table|table|buffer)\\\\s+([a-zA-Z_\\\\-#$%]+(\\\\.[a-zA-Z_\\\\-#$%]+)?)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            },\n            \"2\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#function-arguments\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#timestamp-constant\"\n        },\n        {\n          \"include\": \"#type-reference\"\n        },\n        {\n          \"include\": \"#abl-system-handles\"\n        },\n        {\n          \"include\": \"#can-find\"\n        },\n        {\n          \"include\": \"#language-functions\"\n        },\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#type-member-call\"\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        },\n        {\n          \"include\": \"#handle-attributes\"\n        },\n        {\n          \"include\": \"#handle-methods\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        }\n      ]\n    },\n    \"static-object-property-call\": {\n      \"comment\": \"This rule only captures dotted type name and not single class names. Type names are files, so support unicode.\",\n      \"match\": \"(?i)\\\\s*(([\\\\w#$%\\\\-]+|progress)(\\\\.[\\\\w#$%\\\\-]+)+)\\\\s*((\\\\?:)|(:))([\\\\w\\\\-]+)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.abl\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"unqualified-method-call\": {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\b(?=\\\\()\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"property-call\": {\n      \"match\": \"((\\\\?:)|(:))([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)\\\\b\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"keyword.operator.source.abl\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"type-member-call\": {\n      \"patterns\": [\n        {\n          \"include\": \"#property-call\"\n        },\n        {\n          \"include\": \"#unqualified-method-call\"\n        },\n        {\n          \"include\": \"#static-object-property-call\"\n        }\n      ]\n    },\n    \"variable-name\": {\n      \"comment\": \"1 to 128 characters; can consist of any combination of letters (a-z or A-Z), numbers (0-9), and these special characters: #$-_%& Names must begin with a letter (from https://docs.progress.com/bundle/openedge-abl-manage-applications/page/Name-limits.html)\",\n      \"match\": \"(?<=^|\\\\s|\\\\[|\\\\(|,)([a-zA-Z_][a-zA-Z0-9_#$\\\\-%&]*)(?=\\\\.\\\\s|\\\\.$|,|:|\\\\?:|\\\\s|\\\\)|\\\\]|\\\\[|$)\",\n      \"name\": \"variable.other.abl\"\n    },\n    \"extent\": {\n      \"match\": \"(?i)\\\\s*(extent)\\\\s*((0x)?\\\\h+\\\\b)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.source.abl\"\n        }\n      }\n    },\n    \"decimals\": {\n      \"match\": \"(?i)\\\\s*(decimals)\\\\s((0x)?\\\\h+)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.source.abl\"\n        }\n      }\n    },\n    \"ordinal\": {\n      \"match\": \"(?i)\\\\s*(ordinal)\\\\s((0x)?\\\\h+)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.source.abl\"\n        }\n      }\n    },\n    \"array-literal\": {\n      \"name\": \"meta.array.literal.abl\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.bracket.square.begin.abl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.bracket.square.end.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"See https://docs.progress.com/bundle/abl-reference/page/Array-reference.html for array ranges\",\n          \"match\": \"(?i)\\\\s+(for)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"array-use\": {\n      \"name\": \"meta.array.literal.abl\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.bracket.square.begin.abl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.bracket.square.end.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#timestamp-constant\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        },\n        {\n          \"include\": \"#double-colon-field-name\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"match\": \"(?<=^|\\\\s)(a-zA-Z0-9_\\\\-#$%|-)+(?=\\\\s)\",\n      \"name\": \"variable.parameter.abl\"\n    },\n    \"run-statement\": {\n      \"begin\": \"\\\\b([Rr][Uu][Nn])\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?i)(?=\\\\.|value|set|persistent|single-run|singleton|on|no-error|in|asynchronous|\\\\()\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#preprocessor-reference\"\n        },\n        {\n          \"include\": \"#argument-reference\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#procedure-name\"\n        }\n      ]\n    },\n    \"procedure-name\": {\n      \"comment\": \"(External) Program names are files, so need to support unicode.\",\n      \"match\": \"([\\\\w\\\\-\\\\$\\\\@\\\\/\\\\\\\\\\\\.]{1,256})(?=\\\\b|\\\\.$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.procedure.abl\"\n        }\n      }\n    },\n    \"include-file\": {\n      \"name\": \"meta.include.abl\",\n      \"comment\": \"https://docs.progress.com/bundle/abl-reference/page/Include-file-reference.html. Filesystem names can be unicode\",\n      \"begin\": \"({)\\\\s*(?!&)(([\\\"]?)([\\\\\\\\\\/\\\\w$\\\\-\\\\.]+)([\\\"]?))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.abl\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.abl\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.include.abl\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.end.abl\"\n        }\n      },\n      \"end\": \"\\\\s*(\\\\s*})\\\\s*\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.abl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-reference\"\n        },\n        {\n          \"include\": \"#argument-reference\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)(&[a-zA-Z0-9][a-zA-Z0-9_\\\\-#$%#$\\\\-%\\\\.]+)\\\\s*(=)?\",\n          \"name\": \"meta.include.argument.abl\",\n          \"comment\": \"This is intended to catch '&arg' and '&arg=' \",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.other.argument.abl\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.source.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"([a-zA-Z0-9][a-zA-Z0-9_\\\\-#$%#$\\\\-%\\\\.:]+)\\\\b\",\n          \"comment\": \"non-string argument values\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.other.argument.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=\\\\=)(/\\\\*+)|(\\\\*+/)|(//)\",\n          \"comment\": \"Comment start/stop argument values\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.other.argument.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#preprocessor-reference\"\n        },\n        {\n          \"comment\": \"Argument references can be passed into includes as arguments\",\n          \"include\": \"#argument-reference\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"argument-reference\": {\n      \"comment\": \"ONly unnamed arguments are captured here. Names arguments are treated as preprocessors, since its impossible to tell them apart https://docs.progress.com/bundle/abl-reference/page/Argument-reference.html\",\n      \"match\": \"\\\\s*(({)([0-9]+|\\\\*\\\\s*)(}))\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.argument.abl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.abl\"\n        },\n        \"3\": {\n          \"name\": \"support.other.argument.abl\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.section.abl\"\n        }\n      }\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#singlelinecomment\"\n        },\n        {\n          \"include\": \"#multilinecomment\"\n        }\n      ]\n    },\n    \"singlelinecomment\": {\n      \"match\": \"//.*$\",\n      \"comment\": \"Was comment.source.abl but should be changed, per https://macromates.com/manual/en/language_grammars\",\n      \"name\": \"comment.line.double-slash.abl\"\n    },\n    \"multilinecomment\": {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"contentName\": \"comment\",\n      \"name\": \"comment.block.source.abl\",\n      \"patterns\": [\n        {\n          \"include\": \"#multilinecomment\",\n          \"name\": \"comment.block.source.abl\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#singlequotedstring\"\n        },\n        {\n          \"include\": \"#doublequotedstring\"\n        },\n        {\n          \"include\": \"#translation-attribute\"\n        }\n      ]\n    },\n    \"singlequotedstring\": {\n      \"begin\": \"(')\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.abl\"\n        }\n      },\n      \"end\": \"(?i)(')(:[L|R|T|C|U]\\\\d*\\\\b)?\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.other.abl\"\n        }\n      },\n      \"name\": \"string.quoted.single.abl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-char\"\n        }\n      ]\n    },\n    \"doublequotedstring\": {\n      \"begin\": \"(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.abl\"\n        }\n      },\n      \"end\": \"(?i)(\\\")(:[LlRrTtCcUu]\\\\d*\\\\b)?\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.other.abl\"\n        }\n      },\n      \"name\": \"string.quoted.double.abl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-char\"\n        }\n      ]\n    },\n    \"dll-type\": {\n      \"match\": \"(?i)\\\\b(byte|unsigned-short|short|unsigned-long|long|int64|float)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.abl\"\n        }\n      },\n      \"comment\": \"https://docs.progress.com/bundle/abl-reference/page/Data-types.html\"\n    },\n    \"primitive-type\": {\n      \"match\": \"(?i)(?<=^|\\\\s)(blob|(ch(?:aracter|aracte|aract|arac|ara|ar|a)?)|c|clob|com-handle|(da(?:tetime-tz|tetime|te|t)?)|(de(?:cimal|cima|cim|ci|c)?)|handle|int64|(int(?:eger|ege|eg|e)?)|in|i|(log(?:ical|ica|ic|i)?)|lo|l|(longch(?:ar|a)?)|memptr|raw|recid|rowid|widget-handle)(?![=a-zA-Z0-9_\\\\-#$%\\\\-])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.abl\"\n        }\n      },\n      \"comment\": \"https://docs.progress.com/bundle/abl-reference/page/Data-types.html\"\n    },\n    \"numeric\": {\n      \"match\": \"(?<![a-zA-Z0-9_\\\\-#$%-])(0[xX]\\\\h+)|([+\\\\-]?\\\\.?(0|[1-9][0-9]*)(\\\\.[0-9]+)?([eE][+\\\\-]?[0-9]+)?)\",\n      \"name\": \"constant.numeric.source.abl\"\n    },\n    \"abl-system-handles\": {\n      \"match\": \"(?i)\\\\b(active-window|audit-control|audit-policy|clipboard|codebase-locator|color-table|compiler|current-window|debugger|default-window|dslog-manager|(error-stat(?:us|u)?)|(file-info(?:rmation|rmatio|rmati|rmat|rma|rm|r)?)|font-table|(last-even(?:t)?)|log-manager|profiler|(rcode-info(?:rmation|rmatio|rmati|rmat|rma|rm|r)?)|security-policy|self|session|source-procedure|super|target-procedure|this-object|this-procedure|web-context)\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.language.abl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        }\n      }\n    },\n    \"timestamp-constant\": {\n      \"match\": \"(?i)(?<=^|\\\\s|\\\\b)(today|now)(?!a-zA-Z0-9_\\\\-#$%|-)\",\n      \"comment\": \"These are constants that can be used in initial values. This excludes MTIME and ETIME\",\n      \"name\": \"constant.language.abl\"\n    },\n    \"constant\": {\n      \"match\": \"(?i)(?<=^|\\\\b|\\\\s|\\\\()(true|false|yes|no|\\\\?)(?![a-zA-Z0-9_\\\\-#$%:])\",\n      \"name\": \"constant.language.abl\"\n    },\n    \"punctuation-colon\": {\n      \"match\": \":\",\n      \"name\": \"punctuation.terminator.abl\"\n    },\n    \"punctuation-separator\": {\n      \"name\": \"punctuation.separator.abl\",\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"match\": \"(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.colon.abl\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\.)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.period.abl\"\n            }\n          }\n        }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.comma.abl\"\n        }\n      },\n      \"match\": \"(,)\"\n    },\n    \"punctuation-semicolon\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      },\n      \"match\": \"(;)\"\n    },\n    \"punctuation-period\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.abl\"\n        }\n      },\n      \"match\": \"(\\\\.)\"\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"include\": \"#operator-no-space\"\n        },\n        {\n          \"include\": \"#operator-with-space\"\n        },\n        {\n          \"include\": \"#operator-with-trailing-space\"\n        }\n      ]\n    },\n    \"operator-no-space\": {\n      \"match\": \"(\\\\+=|-=|\\\\\\\\=|\\\\*=|<=|<>|>=|=|<|>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.source.abl\"\n        }\n      }\n    },\n    \"operator-with-space\": {\n      \"match\": \"(?i)(?<=\\\\s)(contains|begins|matches|eq|le|lt|ge|gt|ne|\\\\+|-|\\\\*|/)(?=\\\\s|\\\\()\",\n      \"comment\": \"Lookahead and -behind for the spaces\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.source.abl\"\n        }\n      }\n    },\n    \"operator-with-trailing-space\": {\n      \"match\": \"\\\\b([Nn][Oo][Tt])(?=\\\\s|\\\\()\",\n      \"comment\": \"Lookahead only for the spaces, so that in particular the NOT is captured properly\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.source.abl\"\n        }\n      }\n    },\n    \"rowid-function\": {\n      \"match\": \"(?i)\\\\s*(rowid)\\\\s*(\\\\()\\\\s*([a-zA-Z_][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s*(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.round.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.data.table.abl\"\n        },\n        \"5\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      }\n    },\n    \"new-record\": {\n      \"comment\": \"This scope MUST be called after before type-reference (especially new-class) to avoid types being captured as tables\",\n      \"patterns\": [\n        {\n          \"comment\": \" NEW\\\\s+( <buffer> )\",\n          \"match\": \"(?i)\\\\s*(new)\\\\s+(\\\\()\\\\s*([a-zA-Z_][a-zA-Z0-9_\\\\-#$%]*(\\\\.[a-zA-Z][a-zA-Z0-9_\\\\-#$%]*)?)\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.abl\"\n            },\n            \"2\": {\n              \"name\": \"meta.brace.round.js\"\n            },\n            \"3\": {\n              \"name\": \"storage.data.table.abl\"\n            },\n            \"5\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          }\n        },\n        {\n          \"comment\": \" NEW <buffer>. The position of the negative lookahead (?!...) is very important\",\n          \"match\": \"(?i)\\\\s*((new)\\\\s+(?!.*\\\\()([a-zA-Z_{][a-zA-Z0-9_\\\\-#$%\\\\.{&}]*))\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"support.function.abl\"\n            },\n            \"3\": {\n              \"name\": \"storage.data.table.abl\"\n            }\n          }\n        }\n      ]\n    },\n    \"assign-statment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#abl-functions\"\n        },\n        {\n          \"include\": \"#language-functions\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#argument-reference\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"include\": \"#attribute-access\"\n        },\n        {\n          \"include\": \"#buffer-name\"\n        },\n        {\n          \"include\": \"#can-find\"\n        },\n        {\n          \"include\": \"#abl-system-handles\"\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        },\n        {\n          \"include\": \"#extent\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        },\n        {\n          \"include\": \"#get-class\"\n        },\n        {\n          \"include\": \"#handle-attributes\"\n        },\n        {\n          \"include\": \"#handle-methods\"\n        },\n        {\n          \"include\": \"#if-then\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#type-member-call\"\n        },\n        {\n          \"include\": \"#include-file\"\n        },\n        {\n          \"include\": \"#new-record\"\n        },\n        {\n          \"include\": \"#new-class\"\n        },\n        {\n          \"include\": \"#record-buffer-functions\"\n        },\n        {\n          \"include\": \"#rowid-function\"\n        },\n        {\n          \"include\": \"#type-names\"\n        }\n      ]\n    },\n    \"buffer-copy\": {\n      \"begin\": \"(?i)\\\\s*(buffer-copy)\\\\s*(?!\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?=\\\\s*[Aa][Ss][Ss][Ii][Gg][Nn]|\\\\.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        },\n        {\n          \"match\": \"(?i)\\\\s*(using|except|to|no-lobs|no-error)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.abl\"\n            }\n          }\n        },\n        {\n          \"include\": \"#db-dot-table-dot-field\"\n        },\n        {\n          \"include\": \"#db-dot-table\"\n        },\n        {\n          \"include\": \"#field-name\"\n        }\n      ]\n    },\n    \"using-except\": {\n      \"begin\": \"(?i)\\\\b(using|except)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      },\n      \"end\": \"(?i)\\\\s*(?=to|using|except)\\\\b\",\n      \"patterns\": [\n        {\n          \"include\": \"#field-name\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessors\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"comment\": \"These scopes contain statements, not all the keywords. Methods, attributes and functions have their own scopes.\",\n      \"patterns\": [\n        {\n          \"include\": \"#keywords-A\"\n        },\n        {\n          \"include\": \"#keywords-B\"\n        },\n        {\n          \"include\": \"#keywords-C\"\n        },\n        {\n          \"include\": \"#keywords-D\"\n        },\n        {\n          \"include\": \"#keywords-E\"\n        },\n        {\n          \"include\": \"#keywords-F\"\n        },\n        {\n          \"include\": \"#keywords-G\"\n        },\n        {\n          \"include\": \"#keywords-H\"\n        },\n        {\n          \"include\": \"#keywords-I\"\n        },\n        {\n          \"include\": \"#keywords-J\"\n        },\n        {\n          \"include\": \"#keywords-K\"\n        },\n        {\n          \"include\": \"#keywords-L\"\n        },\n        {\n          \"include\": \"#keywords-M\"\n        },\n        {\n          \"include\": \"#keywords-N\"\n        },\n        {\n          \"include\": \"#keywords-O\"\n        },\n        {\n          \"include\": \"#keywords-P\"\n        },\n        {\n          \"include\": \"#keywords-Q\"\n        },\n        {\n          \"include\": \"#keywords-R\"\n        },\n        {\n          \"include\": \"#keywords-S\"\n        },\n        {\n          \"include\": \"#keywords-T\"\n        },\n        {\n          \"include\": \"#keywords-U\"\n        },\n        {\n          \"include\": \"#keywords-V\"\n        },\n        {\n          \"include\": \"#keywords-W\"\n        },\n        {\n          \"include\": \"#keywords-X\"\n        },\n        {\n          \"include\": \"#keywords-Y\"\n        }\n      ]\n    },\n    \"keywords-A\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(a(?:bort|bstract|ccumulate?|ccumula?|ccumu?|cross|ctive-form|ctive-window|dd|dvise|ggregate|lert-box|ll|llow-replication|lter|lternate-key|mbiguous?|mbiguo?|mbig|nd|nsi-only|ny|ny-key|ny-printable|nywhere|ppend|ppend-line|pplication|pply|rray-message?|rray-messa?|rray-mes?|rray-m|s|s-cursor|scending?|scendi?|scen?|sc|sk-overwrite|ssembly|ssign|t|ttach|ttachment|ttribute-type|udit-control|udit-policy|uthorization|uto-endkey|uto-go|utomatic|vailable?|vailab?|vail|verage?|vera?|ve|vg))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-B\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(b(?:ack-tab|ackspace|ackwards?|ase-key|ase64|atch|efore-hide?|efore-hi?|egins|ell|etween|gcolor?|gcol?|gc|ig-endian|inary|ind|ind-where|lob|lock|lock-level?|lock-lev|order-bottom?|order-bott?|order-bo?|order-left?|order-le?|order-right?|order-rig?|order-r|order-top?|order-t|oth|ottom|ottom-column|reak|reak-line|rowse|rowse-column-data-types|rowse-column-formats|rowse-column-labels|rowse-header|tos|uffer|uffer-compare?|uffer-compa?|uffer-copy|uttons?|uttons?|y|y-pointer|y-reference|y-value|y-variant-pointer?|y-variant-point|yte))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-C\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(c(?:ache|ache-size|all|ancel-pick|ase|atch|decl|entered?|enter|hained|haracter_length|haracter?|haract?|hara?|heck|heck-mem-stomp|hoices|hoose|lass|lear|lient-principal|lipboard|lob|lose|odebase-locator|ol|ol-of|ollate|olon|olon-aligned?|olon-align|olor|olor-table|olumn-codepage|olumn-label-bgcolor?|olumn-label-bgcol?|olumn-label-bgc|olumn-label-dcolor|olumn-label-fgcolor?|olumn-label-fgcol?|olumn-label-fgc|olumn-label-font|olumn-label-height-chars?|olumn-label-height-cha?|olumn-label-height-c|olumn-label-height-pixels?|olumn-label-height-pixe?|olumn-label-height-pi?|olumn-label?|olumn-lab|olumn-of|olumns?|om-self|ombo-box|ommand|ompares?|ompiler??|omponent-handle|omponent-self|onnect|onstrained|onstructor|ontainer-event|ontains|ontents|ontext|ontext-help-id|ontext-popup?|ontext-pop|ontrol|ontrol-container?|ontrol-contain?|ontrol-conta?|ontrol-frame?|onvert|opy|opy-lob|ount|reate|reate-on-add|reate-test-file|tos|urrent|urrent-language?|urrent-langua?|urrent-lang|urrent-value|urrent_date|ursor-down|ursor-left|ursor-right|ursor-up|ursor?|urs|ut))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-D\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(d(?:ata-bind?|ata-bi?|ata-refresh-line|ata-refresh-page|ata-relation?|ata-relati?|ata-rela?|ata-source|atabase|ataset|ataset-handle|color|de|de-notify|ebug-list|ebug-set-tenant|ebugger|eclare|efault|efault-action|efault-button?|efault-butt?|efault-extension?|efault-extensi?|efault-exten?|efault-ext?|efault-pop-up|efault-untranslatable|efault-window|efer-lob-fetch|efine-user-event-manager|efine?|efi?|el|elegate|elete|elete-character|elete-column|elete-end-line|elete-field|elete-word|elimiter|escending?|escendi?|escen?|esc|eselect|eselect-extend|eselection|eselection-extend|estructor|etach|ialog-box|ialog-help|ictionary?|ictiona?|ictio?|ict|ir|isabled??|isconnect?|isconne?|iscon|ismiss-menu|isplay?|ispl?|istinct|ll-call-type|os??|os-end|otnet-clr-loaded|ouble|own|rop|rop-down|rop-down-list|rop-file-notify|rop-target|slog-manager|ump|ynamic-current-value|ynamic-new|ynamic-property))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-E\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(e(?:ach|cho|dge|dge-pixels?|dge-pixe?|dge-pi?|diting|ditor|ditor-backtab|ditor-tab|lse|mpty|mpty-selection|nable|nd|nd-box-selection|nd-error|nd-key|nd-move|nd-resize|nd-row-resize|nd-search|ndkey|nter-menubar|ntry|num|q|rror|rror-status?|rror-stat|scape|vent|vent-handler-context|vents|xcept|xclusive|xclusive-lock?|xclusive-lo?|xclusive-web-user?|xclusive-web-us?|xclusive-web-?|xecute|xists|xit|xpire|xplicit|xport|xtended|xtent|xternal|xtract))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-F\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(f(?:alse|alse-leaks|etch|gcolor?|gcol?|gc|ields?|ile|ile-access-date?|ile-access-da?|ile-access-time?|ile-access-ti?|ile-information?|ile-informati?|ile-informa?|ile-infor?|ilename|ill-in|ilters|inal|inally|ind|ind-case-sensitive|ind-global|ind-next|ind-next-occurrence|ind-prev-occurrence|ind-previous|ind-select|ind-wrap-around|inder|irehose-cursor|irst|ix-codepage|ixed-only|lags|lat-button|loat|ocus|ocus-in|ont|ont-table|or|orce-file|oreign-key-hidden|ormat?|orm|ormat?|orm|orwards?|rame-value?|rame-val|rame?|rom|rom-chars?|rom-cha?|rom-c|rom-current?|rom-curre?|rom-cur|rom-pixels?|rom-pixe?|rom-pi?|romnoreorder|ull-height|unction|unction-call-type))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-G\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(g(?:e|enerate-md5|et|et-attr-call-type|et-dir|et-file|et-key-value?|et-key-val|et-text-height|et-text-width|etbyte|lobal?|lob|o|o-on|oto|rant|rant-archive|raphic-edge?|raphic-ed?|rayed|rid-set|rid-unit-height|rid-unit-width|roup|t))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-H\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(h(?:aving|eader|eight|elp|elp-context?|elp-conte?|elp-con|elp-topic|elpfile-name?|elpfile-na?|idden|ide|int|ome|oriz-end|oriz-home|oriz-scroll-drag|ost-byte-order))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-I\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(i(?:f|mage|mage-down|mage-insensitive|mage-size|mage-size-chars?|mage-size-cha?|mage-size-c|mage-size-pixels?|mage-size-pixe?|mage-size-pi?|mage-up|mplements|mport|n|ndex-hint|ndexed-reposition|ndicator|nformation?|nformati?|nforma?|nfor?|nherit-color-mode|nherits|nit|nitial|nitial-dir|nitial-filter|nitiate|nner|nput|nput-output?|nput-outp?|nput-ou?|nsert|nsert-column|nsert-field|nsert-field-data|nsert-field-label|nsert-mode|nterface|nto|s|tem|teration-changed))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-J\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(join(?:|-by-sqldb|-on-select))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-K\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(ke(?:ep-frame-z-order?|ep-frame-z-ord?|ep-frame-z-o?|ep-frame-z|ep-messages|ep-tab-order|y-code|y-function?|y-functi?|y-func|y-label|ycache-join))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-L\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(l(?:abel|abel-pfcolor?|abel-pfcol?|abel-pfc|andscape|ast-event?|ast-key|e|eading|eak-detection|eave|eft|eft-aligned?|eft-align|eft-end|ength|ike|ike-sequential|ine-down|ine-left|ine-right|ine-up|isting?|isti|ittle-endian|oad|oad-from|oad-picture|oad-result-into|ob-dir|ocked|og-id|og-manager|ong|ongchar?|ongch|ookahead|ower|t))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-M\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(m(?:achine-class|ain-menu|ap|argin-extra|argin-height|argin-height-chars?|argin-height-cha?|argin-height-c|argin-height-pixels?|argin-height-pixe?|argin-height-pi?|argin-width|argin-width-chars?|argin-width-cha?|argin-width-c|argin-width-pixels?|argin-width-pixe?|argin-width-pi?|atches|ax|ax-button|ax-height|ax-rows|ax-size|ax-width|aximize|d5-value|emptr|enu|enu-drop|enu-item|enubar|essage|essage-area|essage-area-msg|essage-line|ethod|in-height|in-schema-marshall?|in-size|in-width|od|odulo|ouse|ouse-pointer?|ouse-point?|ouse-poi?|ouse-p|ove|pe|ultiple-key|ust-exist))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-N\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(n(?:amespace-prefix|amespace-uri|ative|e|ested|ew|ew-instance|ew-line|ext|ext-error|ext-frame|ext-prompt|ext-word|o|o-apply|o-array-message?|o-array-messa?|o-array-mes?|o-array-m|o-assign|o-attr|o-attr-list?|o-attr-li?|o-attr-space?|o-attr-spa?|o-attr-s|o-auto-trim?|o-auto-validate|o-bind-where|o-box|o-column-scrolling?|o-column-scrolli?|o-column-scrol?|o-column-scr?|o-console|o-convert|o-convert-3d-colors?|o-convert-3d-colo?|o-convert-3d-co?|o-convert-3d-?|o-debug|o-drag|o-echo|o-error|o-fill?|o-fi?|o-firehose-cursor|o-focus|o-help|o-hide|o-index-hint|o-inherit-bgcolor?|o-inherit-bgcol?|o-inherit-bgc|o-inherit-fgcolor?|o-inherit-fgcol?|o-inherit-fgc|o-join-by-sqldb|o-keycache-join|o-labels?|o-lobs|o-lock|o-lookahead|o-map|o-message?|o-messa?|o-mes|o-pause|o-prefetch?|o-prefet?|o-query-order-added?|o-query-order-add?|o-query-order-a?|o-query-order?|o-query-ord?|o-query-o|o-query-unique-added?|o-query-unique-add?|o-query-unique-a?|o-query-unique?|o-query-uniq?|o-query-un?|o-return-value?|o-return-val|o-row-markers|o-schema-marshall?|o-scrollbar-vertical?|o-scrollbar-vertic?|o-scrollbar-vert?|o-scrollbar-ve?|o-scrolling|o-separate-connection|o-separators|o-tab-stop?|o-tab-st?|o-tab-?|o-underline?|o-underli?|o-under?|o-undo??|o-wait|o-word-wrap|ode-type|on-serializable|one|ot-active|ull|um-copies|um-selected|umeric))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-O\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(o(?:bject|ctet_length|ff??|ff-end|ff-home|k|k-cancel|ld|le-invoke-locale?|le-invoke-loca|le-names-locale?|le-names-loca|n|pen|pen-line-above|ption|ptions-file|r|rdered-join|rientation|s-append|s-command|s-copy|s-create-dir|s-delete|s-dir|s-rename|s2|s400|therwise|ut-of-data|uter|uter-join|utput|verlay|verride))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-P\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(p(?:ackage-private|ackage-protected|age|age-bottom?|age-bott?|age-down|age-left|age-right|age-right-text|age-up|age-width?|age-wid|aged|arameter?|aramet?|aram|arent-id-field|arent-window-close|artial-key|ascal|aste|ause|erformance?|erforman?|erform?|erfo?|fcolor?|fcol?|fc|ick|ick-area|ick-both|ixels|ortrait|recision|reprocess?|reproce?|reselect?|resele?|rev|rev-frame|rev-word|rinter|rinter-setup|rivate|rivileges|rocedure-call-type|rocedure-complete|rocedure?|rocedu?|roce|rocess|rofile-file|rofiler|rompt|rompt-for?|rompt-f|romsgs|ropath|roperty|rotected|ublic|ublish|ut|ut-bits|ut-bytes??|ut-double|ut-float|ut-int64|ut-key-value?|ut-key-val|ut-long|ut-short|ut-string|ut-unsigned-long|ut-unsigned-short|utbyte))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-Q\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(qu(?:ery|ery-tuning|estion|it))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-R\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(r(?:adio-set|aw|aw-transfer|code-information?|code-informati?|code-informa?|code-infor?|ead-available|ead-exact-num|ead-response|eadkey|eal|ecall|ectangle?|ectang?|ecta?|ecursive|eference-only|einstate|elease|epeat|eplication-create|eplication-delete|eplication-write|eports|eposition|eposition-backwards?|eposition-backwar?|eposition-backw?|eposition-forwards?|eposition-forwar?|eposition-forw|eposition-parent-relation?|eposition-parent-relati?|eposition-parent-rela?|equest|esize|esult|esume-display|etain|etry-cancel|eturn|eturn-to-start-dir?|eturn-value?|eturn-val|eturns|everse-from|evert|evoke|ight|ight-aligned?|ight-align|ight-end|outine-level|ow|ow-created|ow-deleted|ow-display|ow-entry|ow-height|ow-leave|ow-modified|ow-of|ow-unmodified|ule|ule-row|ule-y|un|un-procedure?|un-procedu?|un-proce?))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-S\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(s(?:ave|ave-as|ax-attributes|ax-complete?|ax-comple|ax-parser-error|ax-reader|ax-running|ax-uninitialized|ax-write-begin|ax-write-complete|ax-write-content|ax-write-element|ax-write-error|ax-write-idle|ax-write-tag|ax-writer|ax-xml|chema|creen|creen-io|croll|croll-bars|croll-horizontal|croll-left|croll-mode|croll-notify|croll-right|croll-vertical|crollable|crollbar-drag|crolled-row-position?|crolled-row-positi?|crolled-row-posi?|crolling|earch-self|earch-target|ection|ecurity-policy|eek|elect|elect-extend|elect-on-join|elect-repositioned-row|elected-items|election|election-extend|election-list|elf|end|ensitive|eparate-connection|eparators|erializable|erialize-hidden|erialize-name|erver|erver-socket|ession|et|et-attr-call-type|et-byte-order|et-cell-focus|et-contents|et-db-logging|et-event-manager-option|et-option|et-pointer-value?|et-pointer-val|et-state|ettings|hare-lock?|hare-lo?|hare-?|hared|hort|how-in-taskbar?|how-in-taskb?|how-stats?|ide-labels?|ide-labe?|ignature|ilent|imple|ingle|ingle-character|ingle-run|ize|ize-chars?|ize-cha?|ize-c|ize-pixels?|ize-pixe?|ize-pi?|kip|kip-group-duplicates|kip-schema-check|lider|mallint|oap-fault|oap-header|oap-header-entryref|ocket|ome|ource|ource-procedure|pace|ql|tart|tart-box-selection|tart-extend-box-selection|tart-mem-check|tart-move|tart-resize|tart-row-resize|tart-search|tarting|tatic|tatus|tatus-area|tatus-area-msg|tdcall|tomp-detection|tomp-frequency|top|top-after|top-display|top-mem-check|tored-procedure?|tored-procedu?|tored-proce?|tream|tream-handle|tream-io|tring-xref|ub-average?|ub-avera?|ub-ave|ub-count|ub-maximum?|ub-maxim?|ub-max|ub-menu|ub-menu-help|ub-minimum?|ub-minim?|ub-min|ub-total|ubscribe|ubstring?|ubstri?|um|ummary|uper|uspend|ystem-dialog|ystem-help))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-T\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(t(?:ab|able-scan|arget|arget-procedure|emp-table|enant|enant-where|erm|erminal|erminate|ext|ext-cursor|ext-seg-growth?|ext-seg-grow?|ext-seg-gr?|ext-seg-?|hen|his-object|his-procedure|hree-d|hrough|hrow|hru|itle|o|ooltip|op|op-column|opic|otal|railing|rans|ransaction-mode|ransaction?|ransacti?|riggers??|rue|tcodepage))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-U\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(u(?:nbuffered?|nbuffer?|nbuff|nderline?|nderli?|ndo|nformatted?|nformatt?|nforma?|nion|nique|nix|nix-end|nless-hidden|nload|nsigned-byte|nsigned-int64|nsigned-integer|nsigned-long|nsigned-short|nsubscribe|p|pdate|pper|se|se-dict-exps?|se-dict-ex?|se-dict-?|se-dic|se-filename|se-index|se-revvideo|se-text|se-underline|se-widget-pool|ser|sing|tc-offset))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-V\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(v(?:6frame|alidate|alue|alue-changed|alues|ar|ariable?|ariab?|ari?|erbose?|erbo?|ertical?|ertic?|ert|iew|iew-as|irtual-height|irtual-width|ms|oid))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-W\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(w(?:ait|ait-for|arning|eb-context?|eb-conte?|eb-con|eb-notify|hen|here|hile|idget|idget-id|idget-pool|idth|indow-close|indow-delayed-minimize?|indow-delayed-minimi?|indow-delayed-mini?|indow-maximized?|indow-maximiz?|indow-maxim|indow-minimized?|indow-minimiz?|indow-minim|indow-name|indow-normal|indow-resized|indow-restored|ith|ord-index|ork-table?|ork-tab|orkfile|rite))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-X\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(x(?:-document|-noderef|-of|code|ml-data-type|ml-node-name|ml-node-type|or|ref|ref-xml))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"keywords-Y\": {\n      \"comment\": \"The keyword must not have a trailing variable character (one of #$-_%&)\",\n      \"match\": \"(?i)\\\\b(y(?:-of|ear|ear-offset|es|es-no|es-no-cancel))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.abl\"\n        }\n      }\n    },\n    \"handle-attributes\": {\n      \"patterns\": [\n        {\n          \"include\": \"#handle-attributes-A\"\n        },\n        {\n          \"include\": \"#handle-attributes-B\"\n        },\n        {\n          \"include\": \"#handle-attributes-C\"\n        },\n        {\n          \"include\": \"#handle-attributes-D\"\n        },\n        {\n          \"include\": \"#handle-attributes-E\"\n        },\n        {\n          \"include\": \"#handle-attributes-F\"\n        },\n        {\n          \"include\": \"#handle-attributes-G\"\n        },\n        {\n          \"include\": \"#handle-attributes-H\"\n        },\n        {\n          \"include\": \"#handle-attributes-I\"\n        },\n        {\n          \"include\": \"#handle-attributes-K\"\n        },\n        {\n          \"include\": \"#handle-attributes-L\"\n        },\n        {\n          \"include\": \"#handle-attributes-M\"\n        },\n        {\n          \"include\": \"#handle-attributes-N\"\n        },\n        {\n          \"include\": \"#handle-attributes-O\"\n        },\n        {\n          \"include\": \"#handle-attributes-P\"\n        },\n        {\n          \"include\": \"#handle-attributes-Q\"\n        },\n        {\n          \"include\": \"#handle-attributes-R\"\n        },\n        {\n          \"include\": \"#handle-attributes-S\"\n        },\n        {\n          \"include\": \"#handle-attributes-T\"\n        },\n        {\n          \"include\": \"#handle-attributes-U\"\n        },\n        {\n          \"include\": \"#handle-attributes-V\"\n        },\n        {\n          \"include\": \"#handle-attributes-W\"\n        },\n        {\n          \"include\": \"#handle-attributes-X\"\n        },\n        {\n          \"include\": \"#handle-attributes-Y\"\n        }\n      ]\n    },\n    \"handle-attributes-A\": {\n      \"match\": \"(?i)(:)(a(?:ccelerator|ctive|ctor|dm-data|fter-buffer|fter-rowid|fter-table|llow-column-searching|llow-prev-deserialization|lways-on-top|mbiguous?|mbiguo?|mbig|ppl-alert-boxes?|ppl-alert-box?|ppl-alert-b?|ppl-alert|ppl-context-id|ppserver-info|ppserver-password|ppserver-userid|sync-request-count|sync-request-handle|synchronous|ttached-pairlist|ttr-space?|ttr-spa?|ttr-s?|ttr|ttribute-names|udit-event-context|uto-completion?|uto-completi?|uto-comple?|uto-comp|uto-delete|uto-delete-xml|uto-end-key|uto-go|uto-indent?|uto-inde?|uto-resize|uto-return?|uto-retu?|uto-synchronize|uto-validate?|uto-valida?|uto-vali?|uto-zap?|uto-z|vailable-formats|vailable?|vailab?|vail))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-B\": {\n      \"match\": \"(?i)(:)(b(?:ackground?|ackgrou?|ackgr?|ack|ase-ade|asic-logging|atch-mode|atch-size|efore-buffer|efore-rowid|efore-table|gcolor?|gcol?|gc|lank|lock-iteration-display|order-bottom-chars?|order-bottom-cha?|order-bottom-c|order-bottom-pixels?|order-bottom-pixe?|order-bottom-pi?|order-left-chars?|order-left-cha?|order-left-c|order-left-pixels?|order-left-pixe?|order-left-pi?|order-right-chars?|order-right-cha?|order-right-c|order-right-pixels?|order-right-pixe?|order-right-pi?|order-top-chars?|order-top-cha?|order-top-c|order-top-pixels?|order-top-pixe?|order-top-pi?|ox|ox-selectable?|ox-selectab?|ox-select|uffer-chars|uffer-field|uffer-group-id|uffer-group-name|uffer-handle|uffer-lines|uffer-name?|uffer-na?|uffer-partition-id|uffer-tenant-id|uffer-tenant-name|ytes-read|ytes-written))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-C\": {\n      \"match\": \"(?i)(:)(c(?:ache|all-name|all-type|an-create?|an-crea|an-delete?|an-dele|an-do-domain-support|an-read|an-write?|ancel-button|ancelled|areful-paint|ase-sensitive?|ase-sensiti?|ase-sensi?|ase-sen|entered?|enter|harset|hecked|hild-buffer|hild-num|lass-type|lient-connection-id|lient-tty|lient-type|lient-workstation|ode|odepage|olumn-bgcolor?|olumn-bgcol?|olumn-bgc|olumn-dcolor|olumn-fgcolor?|olumn-fgcol?|olumn-fgc|olumn-font|olumn-label?|olumn-lab|olumn-movable|olumn-pfcolor?|olumn-pfcol?|olumn-pfc|olumn-read-only|olumn-resizable|olumn-scrolling?|olumn-scrolli?|olumn-scrol?|olumn-scr?|olumns?|om-handle|omplete|onfig-name|ontext-help|ontext-help-file|ontext-help-id|ontrol-box|onvert-3d-colors?|onvert-3d-colo?|onvert-3d-co?|onvert-3d-?|overage|pcase|pcoll|pinternal?|pintern?|pinte?|plog|pprint|prcodein|prcodeout|pstream|pterm|rc-value?|rc-val|urrent-changed|urrent-column|urrent-environment?|urrent-environme?|urrent-environ?|urrent-envir?|urrent-env|urrent-iteration|urrent-request-info|urrent-response-info|urrent-result-row|urrent-row-modified|urrent-window|ursor-char|ursor-line|ursor-offset))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-D\": {\n      \"match\": \"(?i)(:)(d(?:ata-entry-return?|ata-entry-retu?|ata-source|ata-source-complete-map|ata-source-modified|ata-source-rowid|ata-type?|ata-ty?|ataset|ate-format?|ate-form?|ate-fo?|b-context|b-list|b-references|bname|color|de-error|de-id?|de-item|de-name|de-topic|eblank|ebug-alert|ecimals|efault|efault-buffer-handle|efault-button?|efault-butt?|efault-commit|efault-string|efault-value|elimiter|escription?|escripti?|irectory|isable-auto-zap|isplay-timezone|isplay-type?|isplay-ty?|omain-description|omain-name|omain-type|own|rag-enabled|rop-target|ynamic))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-E\": {\n      \"match\": \"(?i)(:)(e(?:dge-chars?|dge-cha?|dge-c|dge-pixels?|dge-pixe?|dge-pi?|dit-can-paste|dit-can-undo|mpty|nabled|ncoding|ncryption-salt|nd-user-prompt|ntity-expansion-limit|ntry-types-list|rror|rror-column?|rror-colu?|rror-object|rror-object-detail|rror-row|rror-stack-trace|rror-string|vent-group-id|vent-handler|vent-handler-object|vent-procedure|vent-procedure-context|vent-type?|vent-ty?|xclusive-id|xecution-log|xit-code|xpand|xpandable|xtent))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-F\": {\n      \"match\": \"(?i)(:)(f(?:gcolor?|gcol?|gc|ile-create-date?|ile-create-da?|ile-create-time?|ile-create-ti?|ile-mod-date?|ile-mod-da?|ile-mod-time?|ile-mod-ti?|ile-name|ile-offset?|ile-offs?|ile-size|ile-type|ill-mode|ill-where-string|illed|irst-async-request?|irst-async-reque?|irst-async-req?|irst-async-r?|irst-async|irst-buffer|irst-child|irst-column|irst-data-source|irst-dataset|irst-form|irst-object|irst-procedure?|irst-procedu?|irst-proce?|irst-query|irst-server-socket|irst-server?|irst-serv|irst-socket|irst-tab-item?|irst-tab-it?|it-last-column|lat-button|ocused-row|ocused-row-selected|ont|oreground?|oregrou?|oregr?|ore|oreign-key-hidden|orm-input|orm-long-input|ormatted?|ormat?|orm|orward-only|ragment?|rame-col|rame-name|rame-row|rame-spacing?|rame-spaci?|rame-spa|rame-x|rame-y|rame?|requency|ull-height-chars?|ull-height-cha?|ull-height-c|ull-height-pixels?|ull-height-pixe?|ull-height-pi?|ull-pathname?|ull-pathna?|ull-width-chars?|ull-width-cha?|ull-width-c?|ull-width|ull-width-pixels?|ull-width-pixe?|ull-width-pi?|unction))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-G\": {\n      \"match\": \"(?i)(:)(gr(?:aphic-edge?|aphic-ed?|id-factor-horizontal?|id-factor-horizont?|id-factor-horizo?|id-factor-hori?|id-factor-ho?|id-factor-vertical?|id-factor-vertic?|id-factor-vert?|id-factor-ve?|id-snap|id-unit-height-chars?|id-unit-height-cha?|id-unit-height-c|id-unit-height-pixels?|id-unit-height-pixe?|id-unit-height-pi?|id-unit-width-chars?|id-unit-width-cha?|id-unit-width-c|id-unit-width-pixels?|id-unit-width-pixe?|id-unit-width-pi?|id-visible|oup-box))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-H\": {\n      \"match\": \"(?i)(:)(h(?:andler??|as-lobs|as-records|eight-chars?|eight-cha?|eight-c|eight-pixels?|eight-pixe?|eight-pi?|elp|idden|orizontal?|orizont?|orizo?|ori|tml-charset|tml-end-of-line|tml-end-of-page|tml-frame-begin|tml-frame-end|tml-header-begin|tml-header-end|tml-title-begin|tml-title-end|wnd))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-I\": {\n      \"match\": \"(?i)(:)(i(?:cfparameter?|cfparamet?|cfparam|con|gnore-current-modified?|gnore-current-modifi?|gnore-current-modi?|mage|mage-down|mage-insensitive|mage-up|mmediate-display|n-handle|ndex|ndex-information?|ndex-informati?|ndex-informa?|ndex-infor?|nherit-bgcolor?|nherit-bgcol?|nherit-bgc|nherit-fgcolor?|nherit-fgcol?|nherit-fgc|nitial|nner-chars|nner-lines|nput-value|nstantiating-procedure|nternal-entries|s-class?|s-json|s-multi-tenant|s-open|s-parameter-set|s-partitioned?|s-xml|tems-per-row))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-K\": {\n      \"match\": \"(?i)(:)(ke(?:ep-connection-open|ep-frame-z-order?|ep-frame-z-ord?|ep-frame-z-o?|ep-frame-z|ep-security-cache|ys??))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-L\": {\n      \"match\": \"(?i)(:)(l(?:abel|abel-bgcolor?|abel-bgcol?|abel-bgc|abel-dcolor?|abel-dcol?|abel-dc|abel-fgcolor?|abel-fgcol?|abel-fgc|abel-font|abels|abels-have-colons|anguages?|arge|arge-to-small|ast-async-request?|ast-async-reque?|ast-async-req?|ast-async-r?|ast-async|ast-batch|ast-child|ast-form|ast-object|ast-procedure?|ast-procedu?|ast-proce|ast-server-socket|ast-server?|ast-serv|ast-socket|ast-tab-item?|ast-tab-it?|ength|ibrary|ibrary-calling-convention|ine|ist-item-pairs|ist-items|istings|iteral-question|ocal-host|ocal-name|ocal-port|ocal-version-info|ocator-column-number|ocator-line-number|ocator-public-id|ocator-system-id|ocator-type|ocked|og-entry-types|og-threshold|ogfile-name|ogging-level|ogin-expiration-timestamp|ogin-host|ogin-state))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-M\": {\n      \"match\": \"(?i)(:)(m(?:andatory|anual-highlight|ax-button|ax-chars|ax-data-guess|ax-height-chars?|ax-height-cha?|ax-height-c|ax-height-pixels?|ax-height-pixe?|ax-height-pi?|ax-value?|ax-val|ax-width-chars?|ax-width-cha?|ax-width-c|ax-width-pixels?|ax-width-pixe?|ax-width-pi?|aximum-level|enu-bar|enu-key?|enu-k|enu-mouse?|enu-mou?|enu-m|erge-by-field|essage-area|essage-area-font|in-button|in-column-width-chars?|in-column-width-cha?|in-column-width-c|in-column-width-pixels?|in-column-width-pixe?|in-column-width-pi?|in-height-chars?|in-height-cha?|in-height-c|in-height-pixels?|in-height-pixe?|in-height-pi?|in-schema-marshall?|in-value?|in-val|in-width-chars?|in-width-cha?|in-width-c|in-width-pixels?|in-width-pixe?|in-width-pi?|odified|ouse-pointer?|ouse-point?|ouse-poi?|ouse-p|ovable|ulti-compile|ultiple|ultitasking-interval|ust-understand))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-N\": {\n      \"match\": \"(?i)(:)(n(?:ame|amespace-prefix|amespace-uri|eeds-appserver-prompt|eeds-prompt|ested|ew|ew-row|ext-column?|ext-colu?|ext-rowid|ext-sibling|ext-tab-item?|o-current-value|o-empty-space|o-focus|o-schema-marshall?|o-validate?|o-valida?|o-vali?|ode-value|onamespace-schema-location|um-buffers|um-buttons?|um-butto?|um-but|um-child-relations|um-children|um-columns?|um-colum?|um-col|um-dropped-files|um-entries|um-fields|um-formats|um-header-entries|um-items|um-iterations|um-lines|um-locked-columns?|um-locked-colum?|um-locked-col|um-log-files|um-messages|um-parameters|um-references|um-relations|um-replaced?|um-replac?|um-repl|um-results|um-selected-rows|um-selected-widgets|um-source-buffers|um-tabs|um-to-retain|um-top-buffers|um-visible-columns?|um-visible-colum?|um-visible-col|umeric-decimal-point?|umeric-decimal-poi?|umeric-decimal-p?|umeric-decimal?|umeric-decim?|umeric-dec|umeric-format?|umeric-form?|umeric-fo?|umeric-separator?|umeric-separat?|umeric-separ?|umeric-sep))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-O\": {\n      \"match\": \"(?i)(:)(o(?:n-frame-border?|n-frame-bord?|n-frame-bo?|n-frame-?|ptions|rdinal|rigin-handle|rigin-rowid|verlay|wner|wner-document))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-P\": {\n      \"match\": \"(?i)(:)(p(?:age-bottom?|age-bott?|age-top|arameter?|aramet?|aram|arent|arent-buffer|arent-fields-after|arent-fields-before|arent-id-relation|arent-relation?|arent-relati?|arent-rela?|arse-status|assword-field|athname|be-hash-algorithm?|be-hash-algorit?|be-hash-algor?|be-hash-alg|be-key-rounds|ersistent-cache-disabled|ersistent-procedure|ersistent?|ersiste?|fcolor?|fcol?|fc|ixels-per-column?|ixels-per-colu?|ixels-per-row|opup-menu?|opup-me?|opup-only?|opup-on?|osition|refer-dataset|repare-string|repared|rev-column?|rev-colu?|rev-sibling|rev-tab-item?|rev-tab-it?|rimary|rimary-passphrase|rinter-control-handle|rinter-hdc|rinter-name|rinter-port|rivate-data?|rivate-da?|rocedure-name|rocedure-type|rofiling|rogress-source?|rogress-sour?|rogress-so?|roxy|roxy-password|roxy-userid|ublic-id|ublished-events))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-Q\": {\n      \"match\": \"(?i)(:)(qu(?:alified-user-id|ery|ery-off-end|it))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-R\": {\n      \"match\": \"(?i)(:)(r(?:adio-buttons|ead-only|ecid|ecord-length?|ecord-leng?|ecursive|efreshable|ejected|elation-fields?|elation-fiel?|elation-fi|elations-active|emote|emote-host|emote-port|eposition|equest-info|esizable?|esizab?|esize|esponse-info|estart-row|estart-rowid|etain-shape?|etain-sha?|etain-s|eturn-inserted?|eturn-insert?|eturn-inse?|eturn-value-data-type|eturn-value-dll-type|eturn-value?|eturn-val|oles??|ounded|ow|ow-height-chars?|ow-height-cha?|ow-height-c|ow-height-pixels?|ow-height-pixe?|ow-height-pi?|ow-markers?|ow-marke?|ow-mar?|ow-resizable|ow-state|owid))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-S\": {\n      \"match\": \"(?i)(:)(s(?:ave-where-string|chema-change|chema-location|chema-marshal|chema-path|creen-lines|creen-value?|creen-val|croll-bars|crollable|crollbar-horizontal?|crollbar-horizont?|crollbar-horizo?|crollbar-hori?|crollbar-ho?|crollbar-vertical?|crollbar-vertic?|crollbar-vert?|crollbar-ve?|eal-timestamp|electable|elected|election-end|election-start|election-text|ensitive|eparator-fgcolor?|eparator-fgcol?|eparator-fgc|eparators|erialize-hidden|erialize-name|erver|erver-connection-bound-request?|erver-connection-bound-reque?|erver-connection-bound-req?|erver-connection-bound?|erver-connection-bou?|erver-connection-context?|erver-connection-conte?|erver-connection-con?|erver-connection-id|erver-operating-mode|ession-end|ession-id|how-in-taskbar?|how-in-taskb?|ide-label-handle?|ide-label-hand?|ide-label-ha?|ide-labels|ignature-value|ingle-run|ingleton|kip-deleted-record?|kip-deleted-reco?|mall-icon|mall-title|oap-fault-actor|oap-fault-code|oap-fault-detail|oap-fault-misunderstood-header|oap-fault-node|oap-fault-role|oap-fault-string|oap-fault-subcode|oap-version|ort|ort-ascending|ort-number|sl-server-name|tandalone|tartup-parameters|tate-detail|tatistics|tatus-area|tatus-area-font|top|top-object|topped?|tream|tretch-to-fit|trict|trict-entity-resolution|ubtype|uper-procedures?|uper-procedur?|uper-proced?|uper-proc|uppress-namespace-processing|uppress-warnings-list|uppress-warnings?|uppress-warnin?|uppress-warn?|uppress-wa?|ymmetric-encryption-aad|ymmetric-encryption-algorithm|ymmetric-encryption-iv|ymmetric-encryption-key|ymmetric-support|ystem-alert-boxes?|ystem-alert-box?|ystem-alert-b?|ystem-alert|ystem-id))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-T\": {\n      \"match\": \"(?i)(:)(t(?:ab-position|ab-stop|able|able-crc-list|able-handle|able-list|able-number?|able-numb?|emp-directory?|emp-directo?|emp-direc?|emp-dir|ext-selected|hread-safe|hree-d|ic-marks|ime-source|imezone|itle|itle-bgcolor?|itle-bgcol?|itle-bgc|itle-dcolor?|itle-dcol?|itle-dc|itle-fgcolor?|itle-fgcol?|itle-fgc|itle-font?|itle-fo|oggle-box|ooltips??|op-nav-query|op-only|race-filter|racing|racking-changes|rans-init-procedure?|rans-init-procedu?|rans-init-proce?|ransaction?|ransacti?|ransparent?|ranspare?|ype))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-U\": {\n      \"match\": \"(?i)(:)(u(?:ndo|ndo-throw-scope|nique-id|nique-match|rl|rl-password|rl-userid|ser-id))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-V\": {\n      \"match\": \"(?i)(:)(v(?:6display|alidate-expression?|alidate-message|alidate-xml|alidation-enabled|alue|ersion|iew-as|iew-first-column-on-reopen|irtual-height-chars?|irtual-height-cha?|irtual-height-c|irtual-height-pixels?|irtual-height-pixe?|irtual-height-pi?|irtual-width-chars?|irtual-width-cha?|irtual-width-c|irtual-width-pixels?|irtual-width-pixe?|irtual-width-pi?|isible))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-W\": {\n      \"match\": \"(?i)(:)(w(?:arning|c-admin-app|here-string|idget-enter?|idget-ent?|idget-e|idget-id|idget-leave?|idget-lea?|idget-l|idth-chars?|idth-cha?|idth-c|idth-pixels?|idth-pixe?|idth-pi?|indow|indow-state?|indow-sta|indow-system?|indow-syst?|ord-wrap|ork-area-height-pixels?|ork-area-height-pixe?|ork-area-height-pi?|ork-area-width-pixels?|ork-area-width-pixe?|ork-area-width-pi?|ork-area-x|ork-area-y|rite-status))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-X\": {\n      \"match\": \"(?i)(:)(x(?:|-document|code-session-key|ml-data-type|ml-entity-expansion-limit|ml-node-name|ml-node-type|ml-schema-path?|ml-strict-entity-resolution|ml-suppress-namespace-processing))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-attributes-Y\": {\n      \"match\": \"(?i)(:)(y(?:|ear-offset))\\\\b(?![#$\\\\-_%&])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.abl\"\n        }\n      }\n    },\n    \"handle-methods\": {\n      \"patterns\": [\n        {\n          \"include\": \"#handle-methods-A\"\n        },\n        {\n          \"include\": \"#handle-methods-B\"\n        },\n        {\n          \"include\": \"#handle-methods-C\"\n        },\n        {\n          \"include\": \"#handle-methods-D\"\n        },\n        {\n          \"include\": \"#handle-methods-E\"\n        },\n        {\n          \"include\": \"#handle-methods-F\"\n        },\n        {\n          \"include\": \"#handle-methods-G\"\n        },\n        {\n          \"include\": \"#handle-methods-I\"\n        },\n        {\n          \"include\": \"#handle-methods-L\"\n        },\n        {\n          \"include\": \"#handle-methods-M\"\n        },\n        {\n          \"include\": \"#handle-methods-N\"\n        },\n        {\n          \"include\": \"#handle-methods-Q\"\n        },\n        {\n          \"include\": \"#handle-methods-R\"\n        },\n        {\n          \"include\": \"#handle-methods-S\"\n        },\n        {\n          \"include\": \"#handle-methods-T\"\n        },\n        {\n          \"include\": \"#handle-methods-U\"\n        },\n        {\n          \"include\": \"#handle-methods-V\"\n        },\n        {\n          \"include\": \"#handle-methods-W\"\n        }\n      ]\n    },\n    \"handle-methods-A\": {\n      \"begin\": \"(?i)(:)(a(?:ccept-changes|ccept-row-changes|dd-buffer|dd-calc-column?|dd-calc-colu?|dd-columns-from|dd-events-procedure?|dd-events-procedu?|dd-events-proce?|dd-fields-from|dd-first|dd-header-entry|dd-index-field|dd-last|dd-like-column?|dd-like-colu?|dd-like-field|dd-like-index|dd-new-field|dd-new-index|dd-parent-id-relation|dd-relation?|dd-relati?|dd-rela?|dd-schema-location|dd-source-buffer|dd-super-procedure?|dd-super-procedu?|dd-super-proce?|ppend-child|pply-callback|ttach-data-source|uthentication-failed))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-B\": {\n      \"begin\": \"(?i)(:)(b(?:egin-event-group|uffer-compare?|uffer-compa?|uffer-copy|uffer-create|uffer-delete|uffer-export|uffer-export-fields|uffer-field|uffer-import|uffer-import-fields|uffer-release?|uffer-validate|uffer-value))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-C\": {\n      \"begin\": \"(?i)(:)(c(?:ancel-break|ancel-requests|ancel-requests-after|lear|lear-appl-context|lear-log|lear-selection?|lear-selecti?|lear-sort-arrows?|lone-node|lose-log|onnect|onnected|onvert-to-offset?|onvert-to-offs|opy-dataset|opy-sax-attributes|opy-temp-table|reate-like|reate-like-sequential|reate-node|reate-node-namespace|reate-result-list-entry|urrent-query))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-D\": {\n      \"begin\": \"(?i)(:)(d(?:ebug?|eclare-namespace|elete|elete-char|elete-current-row|elete-header-entry|elete-line|elete-node|elete-result-list-entry|elete-selected-rows??|eselect-focused-row|eselect-rows|eselect-selected-row|etach-data-source|isable|isable-connections|isable-dump-triggers|isable-load-triggers|isconnect?|isconne?|iscon|isplay-message|ump-logging-now))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-E\": {\n      \"begin\": \"(?i)(:)(e(?:dit-clear|dit-copy|dit-cut|dit-paste|dit-undo|mpty-dataset|mpty-temp-table|nable|nable-connections|ncode-domain-access-code|ncrypt-audit-mac-key|nd-document|nd-element|nd-event-group|nd-file-drop|ntry|xport|xport-principal))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-F\": {\n      \"begin\": \"(?i)(:)(f(?:etch-selected-row|ill|ind-by-rowid|ind-current|ind-first|ind-last|ind-unique|irst-of))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-G\": {\n      \"begin\": \"(?i)(:)(get-(?:attribute|attribute-node|binary-data|blue-value?|blue-val?|blue-v?|blue|browse-column?|browse-colu?|buffer-handle|bytes-available|callback-proc-context|callback-proc-name|cgi-list|cgi-long-value|cgi-value|changes|child|child-relation?|child-relati?|child-rela?|client|column|config-value|current?|curre?|dataset-buffer|document-element|dropped-file|dynamic|error-column|error-row|file-name|file-offset?|first?|green-value?|green-val?|green-v?|green|header-entry?|index-by-namespace-name|index-by-qname|iteration|last|localname-by-index|message|message-type|next|node|number|parent|prev|printers|property|qname-by-index|red-value?|red-val?|red-v?|red|relation?|relati?|rela?|repositioned-row|rgb-value?|rgb-val?|rgb-v?|rgb|row|safe-user|selected-widget?|selected-widg?|selected-wi?|selected-?|serialized|signature|socket-option|source-buffer|tab-item|text-height-chars?|text-height-cha?|text-height-c|text-height-pixels?|text-height-pixe?|text-height-pi?|text-width-chars?|text-width-cha?|text-width-c|text-width-pixels?|text-width-pixe?|text-width-pi?|top-buffer|type-by-index|type-by-namespace-name|type-by-qname|uri-by-index|value-by-index|value-by-namespace-name|value-by-qname|wait-state?|wait-sta?|wait-s?|wait))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-I\": {\n      \"begin\": \"(?i)(:)(i(?:mport-node|mport-principal|ncrement-exclusive-id|ndex-information?|ndex-informati?|ndex-informa?|ndex-infor?|nitialize|nitialize-document-type|nitiate|nsert|nsert-attribute|nsert-backtab?|nsert-backt?|nsert-bac?|nsert-b|nsert-before|nsert-file|nsert-row|nsert-string|nsert-tab?|nsert-t|nvoke|s-row-selected|s-selected))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-L\": {\n      \"begin\": \"(?i)(:)(l(?:ast-of|ist-property-names|oad|oad-domains|oad-icon|oad-image|oad-image-down|oad-image-insensitive|oad-image-up|oad-mouse-pointer?|oad-mouse-point?|oad-mouse-poi?|oad-mouse-p|oad-small-icon|ock-registration|og-audit-event|ogout|ongchar-to-node-value|ookup))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-M\": {\n      \"begin\": \"(?i)(:)(m(?:ark-new|ark-row-state|emptr-to-node-value|erge-changes|erge-row-changes|ove-after-tab-item?|ove-after-tab-it?|ove-after-tab-?|ove-after-ta?|ove-after-?|ove-before-tab-item?|ove-before-tab-it?|ove-before-tab-?|ove-before-ta?|ove-before-?|ove-befor|ove-column?|ove-colu?|ove-to-bottom?|ove-to-bott?|ove-to-bo?|ove-to-eof|ove-to-top?|ove-to-t))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-N\": {\n      \"begin\": \"(?i)(:)(no(?:de-value-to-longchar|de-value-to-memptr|rmalize))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-Q\": {\n      \"begin\": \"(?i)(:)(query-(?:close|open|prepare))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-R\": {\n      \"begin\": \"(?i)(:)(r(?:aw-transfer|ead|ead-file|ead-json|ead-xml|ead-xmlschema|efresh|efresh-audit-policy|egister-domain|eject-changes|eject-row-changes|emove-attribute|emove-child|emove-events-procedure?|emove-events-procedu?|emove-events-proce?|emove-super-procedure?|emove-super-procedu?|emove-super-proce?|eplace|eplace-child|eplace-selection-text|eposition-to-row|eposition-to-rowid|eset))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-S\": {\n      \"begin\": \"(?i)(:)(s(?:ave|ave-file|ave-row-changes|ax-parse|ax-parse-first|ax-parse-next|croll-to-current-row|croll-to-item?|croll-to-it?|croll-to-selected-row|eal|earch|elect-all|elect-focused-row|elect-next-row|elect-prev-row|elect-row|erialize-row|et-actor|et-appl-context|et-attribute|et-attribute-node|et-blue-value?|et-blue-val?|et-blue-v?|et-blue|et-break|et-buffers|et-callback|et-callback-procedure|et-client|et-commit|et-connect-procedure|et-dynamic|et-green-value?|et-green-val?|et-green-v?|et-green|et-input-source|et-must-understand|et-node|et-numeric-format?|et-numeric-form|et-output-destination|et-parameter|et-property|et-read-response-procedure|et-red-value?|et-red-val?|et-red-v?|et-red|et-repositioned-row|et-rgb-value?|et-rgb-val?|et-rgb-v?|et-rgb|et-role|et-rollback|et-safe-user|et-selection|et-serialized|et-socket-option|et-sort-arrow|et-wait-state?|et-wait-sta?|et-wait-s?|et-wait|tart-document|tart-element|top-parsing|tring-value|ynchronize))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-T\": {\n      \"begin\": \"(?i)(:)(te(?:mp-table-prepare?|nant-id|nant-name))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-U\": {\n      \"begin\": \"(?i)(:)(u(?:pdate-attribute|rl-decode|rl-encode|ser-data))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-V\": {\n      \"begin\": \"(?i)(:)(validate(?:|-domain-access-code|-seal))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"handle-methods-W\": {\n      \"begin\": \"(?i)(:)(write(?:|-cdata|-characters|-comment|-data|-data-element|-empty-element|-entity-ref|-external-dtd|-fragment|-json|-message|-processing-instruction|-xml|-xmlschema))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.abl\"\n        },\n        \"2\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#abl-functions-A\"\n        },\n        {\n          \"include\": \"#abl-functions-B\"\n        },\n        {\n          \"include\": \"#abl-functions-C\"\n        },\n        {\n          \"include\": \"#abl-functions-D\"\n        },\n        {\n          \"include\": \"#abl-functions-E\"\n        },\n        {\n          \"include\": \"#abl-functions-F\"\n        },\n        {\n          \"include\": \"#abl-functions-G\"\n        },\n        {\n          \"include\": \"#abl-functions-H\"\n        },\n        {\n          \"include\": \"#abl-functions-I\"\n        },\n        {\n          \"include\": \"#abl-functions-K\"\n        },\n        {\n          \"include\": \"#abl-functions-L\"\n        },\n        {\n          \"include\": \"#abl-functions-M\"\n        },\n        {\n          \"include\": \"#abl-functions-N\"\n        },\n        {\n          \"include\": \"#abl-functions-O\"\n        },\n        {\n          \"include\": \"#abl-functions-P\"\n        },\n        {\n          \"include\": \"#abl-functions-Q\"\n        },\n        {\n          \"include\": \"#abl-functions-R\"\n        },\n        {\n          \"include\": \"#abl-functions-S\"\n        },\n        {\n          \"include\": \"#abl-functions-T\"\n        },\n        {\n          \"include\": \"#abl-functions-U\"\n        },\n        {\n          \"include\": \"#abl-functions-V\"\n        },\n        {\n          \"include\": \"#abl-functions-W\"\n        },\n        {\n          \"include\": \"#abl-functions-Y\"\n        }\n      ]\n    },\n    \"abl-functions-A\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(a(?:bsolute?|bsolu?|bso?|ccumulate?|ccumula?|ccumu?|dd-interval|lias|mbiguous?|mbiguo?|mbig|scending?|scendi?|scen?|sc|udit-enabled|vailable?|vailab?|vail))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-B\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(b(?:ase64-decode|ase64-encode|ox|uffer-group-id|uffer-group-name|uffer-partition-id|uffer-tenant-id|uffer-tenant-name))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-C\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(c(?:an-do|an-find|an-query|an-set|aps|ast|hr|odepage-convert|ompares?|onnected|ount-of|urrent-changed|urrent-language?|urrent-langua?|urrent-lang|urrent-result-row|urrent-value))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-D\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(d(?:ata-source-modified|ataservers|ate|atetime|atetime-tz|ay|b-remote-host|bcodepage|bcollation|bname|bparam|brestrictions?|brestrictio?|brestrict?|brestri?|brest|btaskid|btype|bversion?|bversi?|ecimal?|ecim?|ec|ecrypt|efined|ynamic-cast|ynamic-current-value|ynamic-enum|ynamic-function?|ynamic-functi?|ynamic-func|ynamic-invoke|ynamic-next-value|ynamic-property))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-E\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(e(?:ncode|ncrypt|ntered|ntry|rror|time|xp|xtent))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-F\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(f(?:ill|irst|irst-of|rame-col|rame-db|rame-down|rame-field|rame-file|rame-index?|rame-line|rame-name|rame-row|rame-value?|rame-val))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-G\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(g(?:ateways?|enerate-pbe-key|enerate-pbe-salt|enerate-random-key|enerate-uuid|et-bits|et-byte|et-byte-order|et-bytes|et-class|et-codepages?|et-codepages?|et-collations??|et-collation?|et-collati?|et-colla?|et-db-client|et-double|et-effective-tenant-id|et-effective-tenant-name|et-float|et-int64|et-long|et-pointer-value|et-short|et-size|et-string|et-unsigned-long|et-unsigned-short|o-pending?|o-pendi?|uid))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-H\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(h(?:andle|ash-code|ex-decode|ex-encode))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-I\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(i(?:ndex|nput|nt64|nteger?|nteg?|nt|nterval|s-attr-space?|s-attr-spa?|s-attr-s?|s-attr|s-codepage-fixed|s-column-codepage|s-db-multi-tenant|s-lead-byte|so-date))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-K\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(k(?:blabel|eycode|eyfunction?|eyfuncti?|eyfunc|eylabel|eyword|eyword-all))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-L\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(l(?:ast|ast-of|astkey|c|dbname|eft-trim|ength|ibrary|ine-counter?|ine-count|ist-events|ist-query-attrs|ist-set-attrs|ist-widgets|ocked|og|ogical?|ogic?|og?|ookup|ower))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-M\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(m(?:aximum|d5-digest|ember|essage-digest|essage-lines|inimum?|inim?|in|onth|time))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-N\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(n(?:ew|ext-value|ormalize|ot|ow|um-aliases?|um-alias?|um-ali|um-dbs|um-entries|um-results))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-O\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(o(?:psys|s-dir|s-drives?|s-error|s-getenv))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-P\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(p(?:age-number?|age-numb?|age-size|dbname|roc-handle?|roc-hand?|roc-ha|roc-status?|roc-stat?|roc-st|rocess-architecture|rogram-name|rogress|romsgs|ropath|roversion?|roversi?))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-Q\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(qu(?:ery-off-end|oter))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-R\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(r(?:-index|andom|aw|ecid|ecord-length?|ecord-leng?|ejected|elation-fields?|elation-fiel?|elation-fi|eplace|etry|eturn|eturn-value?|eturn-val|gb-value?|gb-val?|gb-v|ight-trim|ound|ow-state|owid))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-S\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(s(?:creen-lines|dbname|earch|eek|et-db-client|et-effective-tenant|et-size|etuserid?|etuser|ha1-digest|kip|pace|qrt|sl-server-name|tring|ubstitute?|ubstitu?|ubsti?|ubstring?|ubstri?|uper))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-T\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(t(?:enant-id|enant-name|enant-name-to-id|erminal|his-object|ime|imezone|o-rowid|oday|ransaction?|ransacti?|rim|runcate?|runca?|ype-of))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-U\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(u(?:nbox|serid))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-V\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(val(?:id-event|id-handle|id-object|ue))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-W\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(w(?:eekday|idget-handle?|idget-hand?|idget-ha?))\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"abl-functions-Y\": {\n      \"name\": \"meta.function-call.abl\",\n      \"begin\": \"(?i)\\\\s*(year)\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.abl\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.abl\",\n  \"uuid\": \"075bb86e-03ea-4fea-bac0-e11b9dc73e03\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/pascal.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"pas\", \"p\", \"pp\", \"dfm\", \"fmx\", \"dpr\", \"dpk\", \"lfm\", \"lpr\"],\n  \"keyEquivalent\": \"^~P\",\n  \"name\": \"pascal\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(?i:(absolute|abstract|all|and_then|array|as|asm|attribute|begin|bindable|case|class|const|contains|default|div|else|end|except|export|exports|external|far|file|finalization|finally|forward|generic|goto|if|implements|import|in|index|inherited|initialization|interrupt|is|label|library|mod|module|name|near|not|object|of|on|only|operator|or_else|otherwise|out|override|package|packed|pow|private|program|protected|public|published|interface|implementation|qualified|read|record|resident|requires|resourcestring|restricted|segment|set|shl|shr|specialize|stored|strict|then|threadvar|to|try|type|unit|uses|var|view|virtual|dynamic|overload|reintroduce|with|write|xor))\\\\b\",\n      \"name\": \"keyword.pascal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.prototype.pascal\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.prototype.pascal\"\n        }\n      },\n      \"match\": \"\\\\b(?i:(function|procedure|constructor|destructor))\\\\b\\\\s+(\\\\w+(\\\\.\\\\w+)?)(\\\\(.*?\\\\))?;\\\\s*(?=(?i:attribute|forward|external))\",\n      \"name\": \"meta.function.prototype.pascal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pascal\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.pascal\"\n        }\n      },\n      \"match\": \"\\\\b(?i:(function|procedure|constructor|destructor|property|read|write))\\\\b\\\\s+(\\\\w+(\\\\.\\\\w+)?)\",\n      \"name\": \"meta.function.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(self|result))\\\\b\",\n      \"name\": \"token.variable\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(and|or))\\\\b\",\n      \"name\": \"keyword.operator.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(break|continue|exit|abort|while|do|downto|for|raise|repeat|until))\\\\b\",\n      \"name\": \"keyword.control.pascal\"\n    },\n    {\n      \"begin\": \"\\\\{\\\\$\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"string.regexp\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"string.regexp\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(ansichar|ansistring|boolean|byte|cardinal|char|comp|currency|double|dword|extended|file|integer|int64|longint|longword|nativeint|nativeuint|olevariant|pansichar|pchar|pwidechar|pointer|real|shortint|shortstring|single|smallint|string|uint64|variant|widechar|widestring|word|wordbool))\\\\b\",\n      \"name\": \"storage.support.type.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(\\\\d+)|(\\\\d*\\\\.\\\\d+([eE][\\\\-+]?\\\\d+)?)\\\\b\",\n      \"name\": \"constant.numeric.pascal\"\n    },\n    {\n      \"match\": \"\\\\$[0-9a-fA-F]{1,16}\\\\b\",\n      \"name\": \"constant.numeric.hex.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(true|false|nil))\\\\b\",\n      \"name\": \"constant.language.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(Assert))\\\\b\",\n      \"name\": \"keyword.control\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.pascal\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"//\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.pascal\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.double-slash.pascal.two\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\(\\\\*\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.pascal\"\n        }\n      },\n      \"end\": \"\\\\*\\\\)\",\n      \"name\": \"comment.block.pascal.one\"\n    },\n    {\n      \"begin\": \"\\\\{(?!\\\\$)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.pascal\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"comment.block.pascal.two\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.pascal\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.pascal\"\n        }\n      },\n      \"name\": \"string.quoted.single.pascal\",\n      \"patterns\": [\n        {\n          \"match\": \"''\",\n          \"name\": \"constant.character.escape.apostrophe.pascal\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\#\\\\d+\",\n      \"name\": \"string.other.pascal\"\n    }\n  ],\n  \"scopeName\": \"source.pascal\",\n  \"uuid\": \"F42FA544-6B1C-11D9-9517-000D93589AF6\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/perl.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/perl.tmbundle/blob/master/Syntaxes/Perl.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/perl.tmbundle/commit/a85927a902d6e5d7805f56a653f324d34dfad53a\",\n  \"name\": \"perl\",\n  \"scopeName\": \"source.perl\",\n  \"comment\": \"\\n\\tTODO:\\tInclude RegExp syntax\\n\",\n  \"patterns\": [\n    {\n      \"include\": \"#line_comment\"\n    },\n    {\n      \"begin\": \"^(?==[a-zA-Z]+)\",\n      \"end\": \"^(=cut\\\\b.*$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#pod\"\n            }\n          ]\n        }\n      },\n      \"name\": \"comment.block.documentation.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#pod\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\b(?=qr\\\\s*[^\\\\s\\\\w])\",\n      \"comment\": \"string.regexp.compile.perl\",\n      \"end\": \"((([egimosxradlupcn]*)))(?=(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\#\\\\{\\\\}\\\\)]|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.compile.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(qr)\\\\s*\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"string.regexp.compile.nested_braces.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_braces_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*\\\\[\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.compile.nested_brackets.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_brackets_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*<\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"string.regexp.compile.nested_ltgt.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_ltgt_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"string.regexp.compile.nested_parens.perl\",\n          \"patterns\": [\n            {\n              \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n              \"match\": \"\\\\$(?=[^\\\\s\\\\w\\\\\\\\'\\\\{\\\\[\\\\(\\\\<])\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"string.regexp.compile.single-quote.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*([^\\\\s\\\\w'\\\\{\\\\[\\\\(\\\\<])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\2\",\n          \"name\": \"string.regexp.compile.simple-delimiter.perl\",\n          \"patterns\": [\n            {\n              \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n              \"match\": \"\\\\$(?=[^\\\\s\\\\w'\\\\{\\\\[\\\\(\\\\<])\",\n              \"name\": \"keyword.control.anchor.perl\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"(?<!\\\\{|\\\\+|\\\\-)\\\\b(?=m\\\\s*[^\\\\sa-zA-Z0-9])\",\n      \"comment\": \"string.regexp.find-m.perl\",\n      \"end\": \"((([egimosxradlupcn]*)))(?=(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\#\\\\{\\\\}\\\\)]|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.find-m.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(m)\\\\s*\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"string.regexp.find-m.nested_braces.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_braces_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(m)\\\\s*\\\\[\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.find-m.nested_brackets.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_brackets_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(m)\\\\s*<\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"string.regexp.find-m.nested_ltgt.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_ltgt_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(m)\\\\s*\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"string.regexp.find-m.nested_parens.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(m)\\\\s*'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"string.regexp.find-m.single-quote.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?<!\\\\{|\\\\+|\\\\-)(m)(?!_)\\\\s*([^\\\\sa-zA-Z0-9'\\\\{\\\\[\\\\(\\\\<])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\2\",\n          \"name\": \"string.regexp.find-m.simple-delimiter.perl\",\n          \"patterns\": [\n            {\n              \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n              \"match\": \"\\\\$(?=[^\\\\sa-zA-Z0-9'\\\\{\\\\[\\\\(\\\\<])\",\n              \"name\": \"keyword.control.anchor.perl\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"begin\": \"\\\\[\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.character-class.begin.perl\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.character-class.end.perl\"\n                }\n              },\n              \"name\": \"constant.other.character-class.set.perl\",\n              \"patterns\": [\n                {\n                  \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n                  \"match\": \"\\\\$(?=[^\\\\s\\\\w'\\\\{\\\\[\\\\(\\\\<])\",\n                  \"name\": \"keyword.control.anchor.perl\"\n                },\n                {\n                  \"include\": \"#escaped_char\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\b(?=(?<!\\\\&)(s)(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\{\\\\}\\\\(\\\\)\\\\[<]|$))\",\n      \"comment\": \"string.regexp.replace.perl\",\n      \"end\": \"((([egimosxradlupcn]*)))(?=(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\{\\\\}\\\\)\\\\]>]|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.replace.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(s)\\\\s*\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"string.regexp.nested_braces.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#nested_braces\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(s)\\\\s*\\\\[\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.nested_brackets.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#nested_brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(s)\\\\s*<\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"string.regexp.nested_ltgt.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#nested_ltgt\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(s)\\\\s*\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"string.regexp.nested_parens.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#nested_parens\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"string.regexp.format.nested_braces.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_braces_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.format.nested_brackets.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_brackets_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"string.regexp.format.nested_ltgt.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_ltgt_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"string.regexp.format.nested_parens.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"string.regexp.format.single_quote.perl\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\['\\\\\\\\]\",\n              \"name\": \"constant.character.escape.perl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([^\\\\s\\\\w\\\\[({<;])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\1\",\n          \"name\": \"string.regexp.format.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\s+\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(?=s([^\\\\sa-zA-Z0-9\\\\[({<]).*\\\\1([egimosxradlupcn]*)([\\\\}\\\\)\\\\;\\\\,]|\\\\s+))\",\n      \"comment\": \"string.regexp.replaceXXX\",\n      \"end\": \"((([egimosxradlupcn]*)))(?=([\\\\}\\\\)\\\\;\\\\,]|\\\\s+|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.replace.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(s\\\\s*)([^\\\\sa-zA-Z0-9\\\\[({<])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"(?=\\\\2)\",\n          \"name\": \"string.regexp.replaceXXX.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"string.regexp.replaceXXX.format.single_quote.perl\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\['\\\\\\\\]\",\n              \"name\": \"constant.character.escape.perl.perl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([^\\\\sa-zA-Z0-9\\\\[({<])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\1\",\n          \"name\": \"string.regexp.replaceXXX.format.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(?=(?<!\\\\\\\\)s\\\\s*([^\\\\s\\\\w\\\\[({<>]))\",\n      \"comment\": \"string.regexp.replace.extended\",\n      \"end\": \"((([egimosradlupc]*x[egimosradlupc]*)))\\\\b\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.replace.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(s)\\\\s*(.)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"(?=\\\\2)\",\n          \"name\": \"string.regexp.replace.extended.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"'(?=[egimosradlupc]*x[egimosradlupc]*)\\\\b\",\n          \"name\": \"string.regexp.replace.extended.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(.)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\1(?=[egimosradlupc]*x[egimosradlupc]*)\\\\b\",\n          \"name\": \"string.regexp.replace.extended.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<=\\\\(|\\\\{|~|&|\\\\||if|unless|^)\\\\s*((\\\\/))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.find.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        }\n      },\n      \"contentName\": \"string.regexp.find.perl\",\n      \"end\": \"((\\\\1([egimosxradlupcn]*)))(?=(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\#\\\\{\\\\}\\\\)]|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.find.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"This is to prevent thinks like /foo$/ to treat $/ as a variable\",\n          \"match\": \"\\\\$(?=\\\\/)\",\n          \"name\": \"keyword.control.anchor.perl\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.key.perl\"\n        }\n      },\n      \"match\": \"\\\\b(\\\\w+)\\\\s*(?==>)\"\n    },\n    {\n      \"match\": \"(?<={)\\\\s*\\\\w+\\\\s*(?=})\",\n      \"name\": \"constant.other.bareword.perl\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.perl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.perl\"\n        }\n      },\n      \"match\": \"^\\\\s*(package)\\\\s+([^\\\\s;]+)\",\n      \"name\": \"meta.class.perl\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.sub.perl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.perl\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.method.perl\"\n        }\n      },\n      \"match\": \"\\\\b(sub)(?:\\\\s+([-a-zA-Z0-9_]+))?\\\\s*(?:\\\\([\\\\$\\\\@\\\\*;]*\\\\))?[^\\\\w\\\\{]\",\n      \"name\": \"meta.function.perl\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.perl\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.function.perl\"\n        }\n      },\n      \"match\": \"^\\\\s*(BEGIN|UNITCHECK|CHECK|INIT|END|DESTROY)\\\\b\",\n      \"name\": \"meta.function.perl\"\n    },\n    {\n      \"begin\": \"^(?=(\\\\t| {4}))\",\n      \"end\": \"(?=[^\\\\t\\\\s])\",\n      \"name\": \"meta.leading-tabs\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.odd-tab\"\n            },\n            \"2\": {\n              \"name\": \"meta.even-tab\"\n            }\n          },\n          \"match\": \"(\\\\t| {4})(\\\\t| {4})?\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        }\n      },\n      \"match\": \"\\\\b(tr|y)\\\\s*([^A-Za-z0-9\\\\s])(.*?)(?<!\\\\\\\\)(\\\\\\\\{2})*(\\\\2)(.*?)(?<!\\\\\\\\)(\\\\\\\\{2})*(\\\\2)\",\n      \"name\": \"string.regexp.replace.perl\"\n    },\n    {\n      \"match\": \"\\\\b(__FILE__|__LINE__|__PACKAGE__|__SUB__)\\\\b\",\n      \"name\": \"constant.language.perl\"\n    },\n    {\n      \"begin\": \"\\\\b(__DATA__|__END__)\\\\n?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language.perl\"\n        }\n      },\n      \"contentName\": \"comment.block.documentation.perl\",\n      \"end\": \"\\\\z\",\n      \"patterns\": [\n        {\n          \"include\": \"#pod\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?<!->)\\\\b(continue|default|die|do|else|elsif|exit|for|foreach|given|goto|if|last|next|redo|return|select|unless|until|wait|when|while|switch|case|require|use|eval)\\\\b\",\n      \"name\": \"keyword.control.perl\"\n    },\n    {\n      \"match\": \"\\\\b(my|our|local)\\\\b\",\n      \"name\": \"storage.modifier.perl\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)\\\\-[rwxoRWXOezsfdlpSbctugkTBMAC]\\\\b\",\n      \"name\": \"keyword.operator.filetest.perl\"\n    },\n    {\n      \"match\": \"\\\\b(and|or|xor|as|not)\\\\b\",\n      \"name\": \"keyword.operator.logical.perl\"\n    },\n    {\n      \"match\": \"(<=>|=>|->)\",\n      \"name\": \"keyword.operator.comparison.perl\"\n    },\n    {\n      \"include\": \"#heredoc\"\n    },\n    {\n      \"begin\": \"\\\\bqq\\\\s*([^\\\\(\\\\{\\\\[\\\\<\\\\w\\\\s])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\1\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*([^'\\\\(\\\\{\\\\[\\\\<\\\\w\\\\s])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\1\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx.single-quote.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.double.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<!->)\\\\bqw?\\\\s*([^\\\\(\\\\{\\\\[\\\\<\\\\w\\\\s])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\1\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q.perl\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.single.perl\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\['\\\\\\\\]\",\n          \"name\": \"constant.character.escape.perl\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<!->)\\\\bqq\\\\s*\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq-paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_parens_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqq\\\\s*\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq-brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_braces_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqq\\\\s*\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq-bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_brackets_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqq\\\\s*\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq-ltgt.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_ltgt_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<!->)\\\\bqx\\\\s*\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx-paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_parens_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx-brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_braces_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx-bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_brackets_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx-ltgt.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_ltgt_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<!->)\\\\bqw?\\\\s*\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q-paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_parens\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqw?\\\\s*\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q-brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_braces\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqw?\\\\s*\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q-bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_brackets\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqw?\\\\s*\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q-ltgt.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_ltgt\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^__\\\\w+__\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.unquoted.program-block.perl\"\n    },\n    {\n      \"begin\": \"\\\\b(format)\\\\s+(\\\\w+)\\\\s*=\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.perl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.format.perl\"\n        }\n      },\n      \"end\": \"^\\\\.\\\\s*$\",\n      \"name\": \"meta.format.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.perl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.perl\"\n        }\n      },\n      \"match\": \"\\\\b(x)\\\\s*(\\\\d+)\\\\b\"\n    },\n    {\n      \"match\": \"\\\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|quotemeta|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y)\\\\b\",\n      \"name\": \"support.function.perl\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.scope.end.perl\"\n        }\n      },\n      \"comment\": \"Match empty brackets for ↩ snippet\",\n      \"match\": \"(\\\\{)(\\\\})\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.scope.end.perl\"\n        }\n      },\n      \"comment\": \"Match empty parenthesis for ↩ snippet\",\n      \"match\": \"(\\\\()(\\\\))\"\n    }\n  ],\n  \"repository\": {\n    \"escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\d+\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\c[^\\\\s\\\\\\\\]\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\g(?:\\\\{(?:\\\\w*|-\\\\d+)\\\\}|\\\\d+)\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\k(?:\\\\{\\\\w*\\\\}|<\\\\w*>|'\\\\w*')\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\N\\\\{[^\\\\}]*\\\\}\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\o\\\\{\\\\d*\\\\}\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\(?:p|P)(?:\\\\{\\\\w*\\\\}|P)\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\x(?:[0-9a-zA-Z]{2}|\\\\{\\\\w*\\\\})?\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.perl\"\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((((<<(~)?) *')(HTML)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.html.basic\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.basic\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(XML)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.xml\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.xml\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(CSS)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(JAVASCRIPT)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.js\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(SQL)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.sql\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.sql\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.sql\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(POSTSCRIPT)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.postscript\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.postscript\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.postscript\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')([^']*)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\\\\\\)((?![=\\\\d\\\\$\\\\( ])[^;,'\\\"`\\\\s\\\\)]*)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(HTML)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.html.basic\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"text.html.basic\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(XML)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.xml\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"text.xml\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(CSS)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(JAVASCRIPT)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.js\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(SQL)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.sql\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.sql\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.sql\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(POSTSCRIPT)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.postscript\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.postscript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.postscript\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")([^\\\"]*)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(HTML)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.html.basic\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"text.html.basic\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(XML)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.xml\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"text.xml\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(CSS)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(JAVASCRIPT)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.js\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(SQL)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.sql\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.sql\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.sql\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(POSTSCRIPT)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.postscript\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.postscript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.postscript\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)((?![=\\\\d\\\\$\\\\( ])[^;,'\\\"`\\\\s\\\\)]*)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *`)([^`]*)(`)))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.shell.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        }\n      ]\n    },\n    \"line_comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.perl\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.perl\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.number-sign.perl\"\n            }\n          ]\n        }\n      ]\n    },\n    \"nested_braces\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_braces\"\n        }\n      ]\n    },\n    \"nested_braces_interpolated\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_braces_interpolated\"\n        }\n      ]\n    },\n    \"nested_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_brackets\"\n        }\n      ]\n    },\n    \"nested_brackets_interpolated\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_brackets_interpolated\"\n        }\n      ]\n    },\n    \"nested_ltgt\": {\n      \"begin\": \"<\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \">\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_ltgt\"\n        }\n      ]\n    },\n    \"nested_ltgt_interpolated\": {\n      \"begin\": \"<\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \">\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_ltgt_interpolated\"\n        }\n      ]\n    },\n    \"nested_parens\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_parens\"\n        }\n      ]\n    },\n    \"nested_parens_interpolated\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n          \"match\": \"\\\\$(?=[^\\\\s\\\\w'\\\\{\\\\[\\\\(\\\\<])\",\n          \"name\": \"keyword.control.anchor.perl\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_parens_interpolated\"\n        }\n      ]\n    },\n    \"pod\": {\n      \"patterns\": [\n        {\n          \"match\": \"^=(pod|back|cut)\\\\b\",\n          \"name\": \"storage.type.class.pod.perl\"\n        },\n        {\n          \"begin\": \"^(=begin)\\\\s+(html)\\\\s*$\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.pod.perl\"\n            }\n          },\n          \"contentName\": \"text.embedded.html.basic\",\n          \"end\": \"^(=end)\\\\s+(html)|^(?==cut)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.pod.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.pod.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.pod.perl\",\n              \"patterns\": [\n                {\n                  \"include\": \"#pod-formatting\"\n                }\n              ]\n            }\n          },\n          \"match\": \"^(=(?:head[1-4]|item|over|encoding|begin|end|for))\\\\b\\\\s*(.*)\"\n        },\n        {\n          \"include\": \"#pod-formatting\"\n        }\n      ]\n    },\n    \"pod-formatting\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.italic.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"markup.italic.pod.perl\"\n            }\n          },\n          \"match\": \"I(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.bold.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"markup.bold.pod.perl\"\n            }\n          },\n          \"match\": \"B(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.raw.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"markup.raw.pod.perl\"\n            }\n          },\n          \"match\": \"C(?:<([^<>]+)>|<+(\\\\\\\\s+(?:(?<!\\\\\\\\s)>|[^>])+\\\\\\\\s+)>+)\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.underline.link.hyperlink.pod.perl\"\n            }\n          },\n          \"match\": \"L<([^>]+)>\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        },\n        {\n          \"match\": \"[EFSXZ]<[^>]*>\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)&(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.regexp.match.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)`(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.regexp.pre-match.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)'(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.regexp.post-match.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)\\\\+(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.regexp.last-paren-match.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)\\\"(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.readwrite.list-separator.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)0(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.predefined.program-name.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)[_ab\\\\*\\\\.\\\\/\\\\|,\\\\\\\\;#%=\\\\-~^:?!\\\\$<>\\\\(\\\\)\\\\[\\\\]@](?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.predefined.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)[0-9]+(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.subpattern.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"([\\\\$\\\\@\\\\%](#)?)([a-zA-Zx7f-xff\\\\$]|::)([a-zA-Z0-9_x7f-xff\\\\$]|::)*\\\\b\",\n          \"name\": \"variable.other.readwrite.global.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$\\\\{)(?:[a-zA-Zx7f-xff\\\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\\\$]|::)*(\\\\})\",\n          \"name\": \"variable.other.readwrite.global.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"([\\\\$\\\\@\\\\%](#)?)[0-9_]\\\\b\",\n          \"name\": \"variable.other.readwrite.global.special.perl\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/pgsql.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"^\\\\s*\\\\)\",\n  \"foldingStartMarker\": \"\\\\s*\\\\(\\\\s*$\",\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"(--).*$\\\\n?\",\n          \"name\": \"comment.line.double-dash.pgsql\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.pgsql\" }\n          }\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.c\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.pgsql\" }\n          }\n        }\n      ]\n    },\n    \"statement_create_other\": {\n      \"begin\": \"(?i:^\\\\s*(create)\\\\s+(aggregate|collation|(?:default\\\\s+)?conversion|database|domain|extension(?:\\\\s+if\\\\s+not\\\\s+exists)?|foreign\\\\s+data\\\\s+wrapper|foreign\\\\s+table(?:\\\\s+if\\\\s+not\\\\s+exists)?|group|(?:unique\\\\s+)?index(?!\\\\s+on)(?:\\\\s+concurrently)?(?:\\\\s+if\\\\s+not\\\\s+exists)?|(?:or\\\\s+replace\\\\s+)?(?:trusted\\\\s+)?(?:procedural\\\\s+)?language|operator\\\\s+class|operator\\\\s+family|operator|policy|role|(?:or\\\\s+replace\\\\s+)?rule|schema(?:\\\\s+if\\\\s+not\\\\s+exists)?(?:\\\\s+authorization)?|(?:(?:temporary|temp)\\\\s+)?sequence(?:\\\\s+if\\\\s+not\\\\s+exists)?|server|(?:(?:global|local)\\\\s+)?(?:(?:temporary|temp)\\\\s+)?(?:unlogged\\\\s+)?table(?:\\\\s+if\\\\s+not\\\\s+exists)?|tablespace|text\\\\s+search\\\\s+configuration|text\\\\s+search\\\\s+dictionary|text\\\\s+search\\\\s+parser|text\\\\s+search\\\\s+template|(?:(?:constraint|event)\\\\s+)?trigger|type|user\\\\s+mapping\\\\s+for|user|materialized\\\\s+view(?:\\\\s+if\\\\s+not\\\\s+exists)?|(?:or\\\\s+replace\\\\s+)?(?:(?:temporary|temp)\\\\s+)?(?:recursive\\\\s+)?view)\\\\s+)(?:([\\\\w]+|\\\".+\\\")\\\\.)?([\\\\w]+|\\\".+\\\")(?=[\\\\(|\\\\s|\\\\;)])\",\n      \"end\": \";\\\\s*\",\n      \"patterns\": [\n        { \"include\": \"#dollar_quotes\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#keywords\" },\n        { \"include\": \"#misc\" }\n      ],\n      \"name\": \"meta.statement.create.pgsql\",\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"entity.other.inherited-class.pgsql\" },\n        \"1\": { \"name\": \"keyword.other.create.pgsql\" },\n        \"4\": { \"name\": \"entity.name.function.pgsql\" },\n        \"2\": { \"name\": \"keyword.other.pgsql\" }\n      }\n    },\n    \"statement_create_function_view\": {\n      \"begin\": \"(?i)^\\\\s*(create)\\\\s+(or\\\\s+replace\\\\s+)?(function|view)\\\\s+(?:([\\\\w]+|\\\".+\\\")\\\\.)?([\\\\w]+|\\\".+\\\")(?:[\\\\(|\\\\s)])\",\n      \"end\": \";\\\\s*\",\n      \"patterns\": [\n        { \"include\": \"#dollar_quotes\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#keywords\" },\n        { \"include\": \"#misc\" },\n        { \"include\": \"#vars\" },\n        { \"include\": \"#proc\" }\n      ],\n      \"name\": \"meta.statement.create.pgsql\",\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"keyword.other.pgsql\" },\n        \"1\": { \"name\": \"keyword.other.create.pgsql\" },\n        \"4\": { \"name\": \"entity.other.inherited-class.pgsql\" },\n        \"2\": { \"name\": \"keyword.other.pgsql\" },\n        \"5\": { \"name\": \"entity.name.function.pgsql\" }\n      }\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\\\b(coalesce|nullif|greatest|least|abs|cbrt|ceil|ceiling|degrees|div|exp|floor|ln|log|mod|pi|power|radians|random|round|setseed|sign|sqrt|trunc|width_bucket|acos|asin|atan|atan2|cos|cot|sin|tan|bit_length|char_length|lower|octet_length|overlay|position|substring|trim|upper|ascii|btrim|chr|concat|concat_ws|convert|convert_from|convert_to|decode|encode|format|initcap|length|lpad|ltrim|md5|pg_client_encoding|quote_ident|quote_literal|quote_nullable|regexp_matches|regexp_replace|regexp_split_to_array|regexp_split_to_table|repeat|replace|reverse|rpad|rtrim|split_part|strpos|substr|to_ascii|to_hex|translate|get_bit|get_byte|set_bit|set_byte|to_char|to_date|to_number|to_timestamp|age|clock_timestamp|date_part|date_trunc|extract|isfinite|justify_days|justify_hours|justify_interval|make_date|make_interval|make_time|make_timestamp|make_timestamptz|now|statement_timestamp|timeofday|transaction_timestamp|enum_first|enum_last|enum_range|area|box|center|circle|diameter|height|isclosed|isopen|lseg|npoints|path|pclose|point|polygon|popen|radius|width|abbrev|abbrev|broadcast|family|host|hostmask|masklen|netmask|network|set_masklen|set_masklen|text|trunc|get_current_ts_config|numnode|plainto_tsquery|querytree|setweight|strip|to_tsquery|to_tsvector|ts_headline|ts_rank|ts_rank_cd|ts_rewrite|ts_rewrite|tsvector_update_trigger|tsvector_update_trigger_column|xmlattributes|xmlparse|xmlroot|xmlserialize|xmlcomment|xmlconcat|xmlelement|xmlforest|xmlpi|xmlexists|xml_is_well_formed|xml_is_well_formed_document|xml_is_well_formed_content|xpath|xpath_exists|table_to_xml|query_to_xml|cursor_to_xml|array_to_json|row_to_json|to_json|to_jsonb|json_array_length|jsonb_array_length|json_build_array|jsonb_build_array|json_build_object|jsonb_build_object|json_each|jsonb_each|json_each_text|jsonb_each_text|json_extract_path|jsonb_extract_path|json_extract_path_text|jsonb_extract_path_text|json_object|jsonb_object|json_object_keys|jsonb_object_keys|json_populate_record|jsonb_populate_record|json_populate_recordset|jsonb_populate_recordset|json_array_elements|jsonb_array_elements|json_array_elements_text|jsonb_array_elements_text|json_typeof|jsonb_typeof|json_to_record|jsonb_to_record|json_to_recordset|jsonb_to_recordset|json_strip_nulls|jsonb_strip_nulls|jsonb_pretty|jsonb_set|currval|lastval|nextval|setval|array_append|array_cat|array_ndims|array_dims|array_fill|array_length|array_lower|array_prepend|array_position|array_positions|array_remove|array_replace|array_to_string|array_upper|string_to_array|cardinality|unnest|isempty|lower_inc|upper_inc|lower_inf|upper_inf|generate_series|generate_subscripts|current_database|current_query|current_schema|current_schemas)\\\\b\\\\s*\\\\(\",\n          \"captures\": { \"1\": { \"name\": \"support.function.pgsql\" } }\n        },\n        {\n          \"match\": \"(?xi)\\\\b(pg_sleep|pg_sleep_for|pg_sleep_until|inet_client_addr|inet_client_port|inet_server_addr|inet_server_port|pg_backend_pid|pg_conf_load_time|pg_is_other_temp_schema|pg_listening_channels|pg_my_temp_schema|pg_postmaster_start_time|pg_trigger_depth|version|txid_current|txid_current_snapshot|txid_snapshot_xip|txid_snapshot_xmax|txid_snapshot_xmin|txid_visible_in_snapshot|current_setting|set_config|pg_cancel_backend|pg_reload_conf|pg_replication_origin_create|pg_replication_origin_drop|pg_replication_origin_session_setup|pg_replication_origin_xact_setup|pg_replication_origin_progress|pg_replication_origin_session_progress|pg_rotate_logfile|pg_terminate_backend|pg_create_restore_point|pg_current_xlog_insert_location|pg_current_xlog_location|pg_start_backup|pg_stop_backup|pg_is_in_backup|pg_backup_start_time|pg_switch_xlog|pg_xact_commit_timestamp|pg_xlogfile_name|pg_xlogfile_name_offset|pg_xlog_location_diff|has_any_column_privilege|has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|has_function_privilege|has_language_privilege|has_schema_privilege|has_sequence_privilege|has_server_privilege|has_table_privilege|has_tablespace_privilege|pg_has_role|pg_collation_is_visible|pg_conversion_is_visible|pg_function_is_visible|pg_opclass_is_visible|pg_operator_is_visible|pg_opfamily_is_visible|pg_table_is_visible|pg_ts_config_is_visible|pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|pg_type_is_visible|format_type|pg_describe_object|pg_identify_object|pg_identify_object_as_address|pg_get_constraintdef|pg_get_expr|pg_get_functiondef|pg_get_function_arguments|pg_get_function_identity_arguments|pg_get_function_result|pg_get_indexdef|pg_get_keywords|pg_get_object_address|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|pg_get_userbyid|pg_get_viewdef|pg_options_to_table|pg_tablespace_databases|pg_tablespace_location|pg_typeof|to_regclass|to_regproc|to_regprocedure|to_regoper|to_regoperator|to_regtype|col_description|obj_description|shobj_description|pg_is_in_recovery|pg_last_committed_xact|pg_last_xlog_receive_location|pg_last_xlog_replay_location|pg_last_xact_replay_timestamp|pg_is_xlog_replay_paused|pg_xlog_replay_pause|pg_xlog_replay_resume|pg_export_snapshot|pg_column_size|pg_database_size|pg_indexes_size|pg_relation_size|pg_size_pretty|pg_table_size|pg_tablespace_size|pg_total_relation_size|pg_relation_filenode|pg_relation_filepath|pg_filenode_relation|pg_ls_dir|pg_read_file|pg_read_binary_file|pg_stat_file|pg_stat_get_snapshot_timestamp|pg_advisory_lock|pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|pg_try_advisory_lock|pg_try_advisory_lock_shared|pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|suppress_redundant_updates_trigger|pg_event_trigger_ddl_commands|pg_event_trigger_dropped_objects)\\\\b\\\\s*\\\\(\",\n          \"captures\": { \"1\": { \"name\": \"support.function.pgsql\" } }\n        },\n        {\n          \"match\": \"(?xi)\\\\b(array_agg|avg|bit_and|bit_or|bool_and|bool_or|count|every|json_agg|jsonb_agg|json_object_agg|jsonb_object_agg|max|min|string_agg|sum|xmlagg|corr|covar_pop|covar_samp|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|regr_slope|regr_sxx|regr_sxy|regr_syy|stddev|stddev_pop|stddev_samp|variance|var_pop|var_samp|mode|percentile_cont|percentile_disc|row_number|rank|dense_rank|percent_rank|cume_dist|ntile|lag|lead|first_value|last_value|nth_value)\\\\b\\\\s*\\\\(\",\n          \"captures\": { \"1\": { \"name\": \"support.function.pgsql\" } }\n        },\n        {\n          \"match\": \"(?i)\\\\b(current_catalog|current_date|current_role|current_schema|current_time|current_timestamp|current_user|session_user|localtime|localtimestamp)\\\\b\",\n          \"name\": \"support.function.pgsql\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(aclitem|anyelement|anyarray|anynonarray|anyenum|anyrange|cstring|internal|language_handler|fdw_handler|void|opaque|smallint|integer|int|bigint|int2|int4|int8|numeric|decimal|dec|double(?:\\\\s+precision)?|real|float|float4|float8|smallserial|serial|bigserial|text|varchar|character\\\\s+varying|char|character|bpchar|name|bytea|bool|boolean|date|time|timestamp|with(out)?\\\\s+time\\\\s+zone|timetz|timestamptz|tinterval|interval|point|lseg|box|line|path|polygon|circle|cidr|inet|macaddr|bit|varbit|bit\\\\s+varying|tsvector|tsquery|uuid|xml|json|jsonb|txid_snapshot|money|oid|oidvector|int2range|int4range|int8range|numrange|tsrange|tstzrange|daterange|event_trigger|cid|xid|tid|regclass|regconfig|regdictionary|regoper|regoperator|regproc|regprocedure|reltime|abstime|record)\\\\b\",\n          \"name\": \"storage.type.pgsql\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b(abort|access\\\\s+share|access\\\\s+exclusive|add|admin|after|aggregate|all|also|alter|always|analyse|analyze|and|any|array|as|as\\\\s+assignment|as\\\\s+implicit|asc|asymmetric|at|at\\\\s+time\\\\s+zone|attribute|authorization|before|begin|between|by|bypassrls|cache|called\\\\s+on\\\\s+null\\\\s+input|null\\\\s+on\\\\s+null\\\\s+input|strict|is\\\\s+null|not\\\\s+null|is\\\\s+true|is\\\\s+not\\\\s+true|is\\\\s+false|is\\\\s+not\\\\s+false|cascade|case|cast|characteristics|check|checkpoint|close|cluster|collate|collation|column|comment|comments|commit|concurrently|configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|create|createdb|createrole|createuser|cross\\\\s+join|csv|cube|current|cursor|cycle|data|database|day|ddl_command_start|ddl_command_end|deallocate|declare|default|defaults|deferrable|deferred|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|domain|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|except|exclude|excluding|exclusive|execute|exists|explain|extension|external|family|absolute|relative|prior|backward|forward|fetch|fillfactor|first|following|for|force|foreign|freeze|from|full|function|all\\\\s+functions|on\\\\s+functions|global|grant|group|grouping\\\\s+sets|handler|having|header|hold|hour|identity|if|ilike|immediate|immutable|in|including|increment|index|indexes|inherit|inherits|initially\\\\s+deferred|initially\\\\s+immediate|inline|inner|inout|input|insensitive|insert|instead|intersect|into|is|isnull|isolation\\\\s+level|join|key|label|language|last|lateral|lc_collate|lc_ctype|left|like|limit|listen|load|local|locale|location|lock|logged|login|mapping|match|materialized|maxvalue|minute|minvalue|mode|month|move|names|natural|next|no\\\\s+action|no|none|nobypassrls|nocreatedb|nocreaterole|nocreateuser|noinherit|nologin|noreplication|nosuperuser|not|nothing|notify|notnull|nowait|nullif|nulls|of|off|offset|oids|on\\\\s+conflict|on|only|operator\\\\s+class|operator|option|options|or|order|out|outer\\\\s+join|over|overlaps|owned|owner|parser|partial|partition|password|plans|plpgsql|policy|position|preceding|prepare|prepared|preserve\\\\s+rows|primary|privileges|procedural|procedure|program|quote|range|read\\\\s+committed|read\\\\s+uncommitted|read|reassign|recheck|recursive|refcursor|references|refresh|reindex|release|rename|repeatable|replace|replica|replication|reset|restart|restrict|returning|returns|revoke|right|role|rollback|rollup|row\\\\s+level|row|rows|rule|savepoint|schema|scroll|search|second|security\\\\s+definer|security\\\\s+invoker|security|select|session_user|sequence|sequences|serializable|server|session|set|setof|share|show|similar|simple|skip\\\\s+locked|some|stable|start|statement|statistics|stdin|stdout|storage|symmetric|system|sql|sql_drop|superuser|table|tables|tablesample\\\\s+bernoulli|tablesample\\\\s+system|tablesample|tablespace|temp|template|temporary|then|to|trailing|transaction|transform|trigger|trim|truncate|trusted|type|unbounded\\\\s+preceding|unbounded\\\\s+following|unencrypted|union|unique|unknown|unlisten|unlogged|update|user|using|vacuum|valid\\\\s+until|valid|validate|validator|value|values|variadic|verbose|version|view|volatile|when\\\\s+tag|when|where|window|with\\\\s+cascaded|with\\\\s+ordinality|with|within|without|work|wrapper|write|year|yes|parallel\\\\s+(unsafe|restricted|safe)|leakproof|filter)\\\\b\",\n          \"captures\": { \"1\": { \"name\": \"keyword.other.pgsql\" } }\n        }\n      ]\n    },\n    \"statement_commands\": {\n      \"begin\": \"(?i:^\\\\s*(abort|alter|analyze|begin|checkpoint|close|cluster|comment|commit|copy|create|deallocate|declare|delete|discard|do|drop|end|execute|explain|fetch|grant|import|insert|listen|load|lock|move|notify|prepare|reassign|refresh|reindex|release|reset|revoke|rollback|savepoint|security|select|set|show|start|table|truncate|unlisten|update|vacuum|values|with))\",\n      \"end\": \";\\\\s*\",\n      \"patterns\": [\n        { \"include\": \"#dollar_quotes\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#keywords\" },\n        { \"include\": \"#misc\" }\n      ],\n      \"name\": \"meta.statement.pgsql\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.other.pgsql\" } }\n    },\n    \"dollar_quotes\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\\1\",\n          \"begin\": \"(\\\\$[\\\\w_]*\\\\$)(?=\\\\s*[-\\\\/\\\\n\\\\r]+)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.dollar-quote.begin.pgsql\" }\n          },\n          \"contentName\": \"meta.dollar-quote.pgsql\",\n          \"patterns\": [\n            { \"include\": \"#dollar_quotes\" },\n            { \"include\": \"#comments\" },\n            { \"include\": \"#strings\" },\n            { \"include\": \"#statement_create_function_view\" },\n            { \"include\": \"#statement_create_other\" },\n            { \"include\": \"#keywords\" },\n            { \"include\": \"#misc\" },\n            { \"include\": \"#vars\" },\n            { \"include\": \"#proc\" }\n          ],\n          \"comment\": \"Assume multiline dollar quote is SQL body! Start if double dollar quote is followed by comment (-- or /**/) or linebreak (\\n or \\n). See match for dollar quotes as string: string.unquoted.dollar.pgsql. This could easily support other PL languages like PHP and Ruby -- see PHP heredoc as an example.\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.dollar-quote.end.pgsql\" }\n          }\n        }\n      ]\n    },\n    \"misc\": {\n      \"patterns\": [\n        { \"match\": \"\\\\b\\\\d+\\\\b\", \"name\": \"constant.numeric.pgsql\" },\n        { \"match\": \"->>|->|#>>|#>\", \"name\": \"keyword.operator.json.pgsql\" },\n        { \"match\": \"\\\\?&|\\\\?\\\\||\\\\?\", \"name\": \"keyword.operator.jsonb.pgsql\" },\n        { \"match\": \"~|~\\\\*!~|!~\\\\*\", \"name\": \"keyword.operator.regex.pgsql\" },\n        { \"match\": \"@@|&&|!!|@>|<@\", \"name\": \"keyword.operator.tsearch.pgsql\" },\n        { \"match\": \"\\\\*\", \"name\": \"keyword.operator.star.pgsql\" },\n        {\n          \"match\": \"[!<>]?=|<>|<|>\",\n          \"name\": \"keyword.operator.comparison.pgsql\"\n        },\n        { \"match\": \"-|\\\\+|/|\\\\^\", \"name\": \"keyword.operator.math.pgsql\" },\n        { \"match\": \"\\\\|\\\\|\", \"name\": \"keyword.operator.concatenator.pgsql\" },\n        { \"match\": \"::\", \"name\": \"keyword.operator.cast.pgsql\" },\n        {\n          \"match\": \"(?i)\\\\b(true|false|null)\\\\b\",\n          \"name\": \"constant.language.pgsql\"\n        }\n      ]\n    },\n    \"string_escape\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape.pgsql\"\n    },\n    \"vars\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(_[-a-z0-9_]+)\\\\b\",\n          \"name\": \"variable.parameter.pgsql\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p(i|t|b|n|c|d|r|ia|iv(?:al)?)_[-a-z0-9_]+)\\\\b\",\n          \"name\": \"variable.parameter.pgsql\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(i|t|b|n|c|d|r|ia|iv(?:al)?)_[-a-z0-9_]+)\\\\b\",\n          \"name\": \"variable.parameter.pgsql\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"match\": \"(')[^'\\\\\\\\]*(')\",\n          \"comment\": \"This is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"name\": \"string.quoted.single.pgsql\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.string.begin.pgsql\" },\n            \"3\": { \"name\": \"punctuation.definition.string.end.pgsql\" }\n          }\n        },\n        {\n          \"end\": \"'\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.pgsql\" }\n          },\n          \"patterns\": [{ \"include\": \"#string_escape\" }],\n          \"comment\": \"Need to implement escape rule with two single quotes in a row. Lots of other escaping issues with single quotes.\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.pgsql\" }\n          },\n          \"name\": \"string.quoted.single.pgsql\"\n        },\n        {\n          \"comment\": \"Double quoting treated like strings, but they are really identifiers.\",\n          \"match\": \"(\\\")[^\\\"#]*(\\\")\",\n          \"name\": \"variable.other.pgsql\"\n        },\n        {\n          \"begin\": \"(\\\\$[\\\\w_]*\\\\$)\",\n          \"end\": \"\\\\1\",\n          \"comment\": \"Color double dollar quotes as a string Only if not followed by comment or linebreak, see meta.dollar-quote.pgsql.\",\n          \"name\": \"string.unquoted.dollar.pgsql\"\n        }\n      ]\n    },\n    \"proc\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\\\b(case|continue|else|elseif|elsif|exit|for|foreach|if|loop|return(?:(?:\\\\s+next)|(?:\\\\s+query))?|slice|then|when|while|reverse)\\\\b\",\n          \"name\": \"keyword.control.proc.pgsql\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b(alias|begin|constant|declare|end|exception|execute|get\\\\s+(?:stacked\\\\s+)?diagnostics|perform|raise|using|message|detail|hint|errcode|debug|log|info|notice|warning)\\\\b\",\n          \"name\": \"keyword.other.proc.pgsql\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b(found|sqlerrm|sqlstate|new|old|tg_name|tg_when|tg_level|tg_op|tg_relid|tg_relname|tg_table_name|tg_table_schema|tg_nargs|tg_argv|tg_event|tg_tag)\\\\b\",\n          \"name\": \"support.function.proc.pgsql\"\n        },\n        {\n          \"match\": \"(?i)\\\\b([-a-z0-9_.]+%(row)?type)\\\\b\",\n          \"name\": \"storage.type.proc.pgsql\"\n        },\n        { \"match\": \"\\\\$\\\\d+\", \"name\": \"variable.parameter.pgsql\" }\n      ]\n    }\n  },\n  \"fileTypes\": [\"sql\", \"pgsql\", \"psql\"],\n  \"uuid\": \"4D6B679D-111C-4529-B558-3F25487D9E27\",\n  \"patterns\": [\n    { \"include\": \"#comments\" },\n    { \"include\": \"#statement_create_function_view\" },\n    { \"include\": \"#statement_create_other\" },\n    { \"include\": \"#statement_commands\" },\n    {\n      \"begin\": \"^(\\\\\\\\[\\\\S]+)\",\n      \"end\": \"\\\\n\",\n      \"comment\": \"psql directives\",\n      \"name\": \"meta.statement.pgsql.psql\",\n      \"beginCaptures\": { \"0\": { \"name\": \"meta.preprocessor.pgsql\" } }\n    }\n  ],\n  \"name\": \"SQL (PostgreSQL)\",\n  \"scopeName\": \"source.pgsql\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/php-blade.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"scopeName\": \"text.html.php.blade\",\n  \"name\": \"Blade\",\n  \"fileTypes\": [\"blade.php\"],\n  \"firstLineMatch\": \"(?x)\\n# Hashbang\\n^\\\\#!.*(?:\\\\s|\\\\/)\\n  php\\\\d?\\n(?:$|\\\\s)\\n|\\n# Modeline\\n(?i:\\n  # Emacs\\n  -\\\\*-(?:\\\\s*(?=[^:;\\\\s]+\\\\s*-\\\\*-)|(?:.*?[;\\\\s]|(?<=-\\\\*-))mode\\\\s*:\\\\s*)\\n    php\\n  (?=[\\\\s;]|(?<![-*])-\\\\*-).*?-\\\\*-\\n  |\\n  # Vim\\n  (?:(?:\\\\s|^)vi(?:m[<=>]?\\\\d+|m)?|\\\\sex)(?=:(?=\\\\s*set?\\\\s[^\\\\n:]+:)|:(?!\\\\s*set?\\\\s))(?:(?:\\\\s|\\\\s*:\\\\s*)\\\\w*(?:\\\\s*=(?:[^\\\\n\\\\\\\\\\\\s]|\\\\\\\\.)*)?)*[\\\\s:](?:filetype|ft|syntax)\\\\s*=\\n    (?:php|phtml)\\n  (?=\\\\s|:|$)\\n)\",\n  \"foldingStartMarker\": \"(/\\\\*|\\\\{\\\\s*$|<<<HTML)\",\n  \"foldingStopMarker\": \"(\\\\*/|^\\\\s*\\\\}|^HTML;)\",\n  \"injections\": {\n    \"text.html.php.blade - (meta.embedded | meta.tag | comment.block.blade), L:(text.html.php.blade meta.tag - comment.block.blade), L:(source.js.embedded.html - comment.block.blade)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{{--\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.blade\"\n            }\n          },\n          \"end\": \"--}}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.blade\"\n            }\n          },\n          \"name\": \"comment.block.blade\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.illegal.php-code-in-comment.blade\",\n              \"begin\": \"(^\\\\s*)(?=<\\\\?(?![^?]*\\\\?>))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.whitespace.embedded.leading.php\"\n                }\n              },\n              \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.whitespace.embedded.trailing.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"<\\\\?(?i:php|=)?\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.begin.php\"\n                    }\n                  },\n                  \"contentName\": \"source.php\",\n                  \"end\": \"(\\\\?)>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.end.php\"\n                    },\n                    \"1\": {\n                      \"name\": \"source.php\"\n                    }\n                  },\n                  \"name\": \"meta.embedded.block.php\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#language\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"<\\\\?(?i:php|=)?(?![^?]*\\\\?>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.begin.php\"\n                }\n              },\n              \"contentName\": \"source.php\",\n              \"end\": \"(\\\\?)>\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                },\n                \"1\": {\n                  \"name\": \"source.php\"\n                }\n              },\n              \"name\": \"invalid.illegal.php-code-in-comment.blade.meta.embedded.block.php\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"<\\\\?(?i:php|=)?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.begin.php\"\n                }\n              },\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                }\n              },\n              \"name\": \"invalid.illegal.php-code-in-comment.blade.meta.embedded.line.php\",\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"source.php\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.embedded.end.php\"\n                    },\n                    \"3\": {\n                      \"name\": \"source.php\"\n                    }\n                  },\n                  \"match\": \"\\\\G(\\\\s*)((\\\\?))(?=>)\",\n                  \"name\": \"meta.special.empty-tag.php\"\n                },\n                {\n                  \"begin\": \"\\\\G\",\n                  \"contentName\": \"source.php\",\n                  \"end\": \"(\\\\?)(?=>)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.end.php\"\n                    },\n                    \"1\": {\n                      \"name\": \"source.php\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#language\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!@){{{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.begin.blade\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"(})}}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.end.blade\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.function.echo.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<![@{]){{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.begin.blade\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"(})}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.end.blade\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.function.echo.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!@){!!\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.begin.blade\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"(!)!}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.end.blade\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.function.echo.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(?<![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\\n(\\n  @\\n  (?i: # Ordering not important as we everything will be matched up to opening parentheses\\n   auth\\n  |break\\n  |can\\n  |cannot\\n  |case\\n  |choice\\n  |component\\n  |continue\\n  |each\\n  |elsecan\\n  |elsecannot\\n  |elseif\\n  |empty\\n  |extends\\n  |for\\n  |foreach\\n  |forelse\\n  |guest\\n  |hassection\\n  |if\\n  |include\\n  |includefirst\\n  |includeif\\n  |includewhen\\n  |inject\\n  |isset\\n  |json\\n  |lang\\n  |php\\n  |prepend\\n  |push\\n  |section\\n  |slot\\n  |stack\\n  |switch\\n  |unless\\n  |unset\\n  |while\\n  |yield\\n  )\\n  [\\\\t ]* # Whitespace between name and parentheses\\n)\\n(\\\\() # Followed by opening parentheses\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.blade\"\n            },\n            \"2\": {\n              \"name\": \"begin.bracket.round.blade.php\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"end.bracket.round.blade.php\"\n            }\n          },\n          \"name\": \"meta.directive.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(?<![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\\n(\\n  @\\n  (?i: # Ordering not important as we everything will be matched up to opening parentheses\\n   append\\n  |default\\n  |else\\n  |endauth\\n  |endcan\\n  |endcannot\\n  |endcomponent\\n  |endempty\\n  |endfor\\n  |endforeach\\n  |endforelse\\n  |endguest\\n  |endif\\n  |endisset\\n  |endlang\\n  |endprepend\\n  |endpush\\n  |endsection\\n  |endslot\\n  |endswitch\\n  |endunless\\n  |endwhile\\n  |overwrite\\n  |parent\\n  |show\\n  |stop\\n  )\\n  [\\\\t ]* # Whitespace between name and parentheses\\n)\\n(\\\\() # Followed by opening parentheses\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.blade\"\n            },\n            \"2\": {\n              \"name\": \"begin.bracket.round.blade.php\"\n            }\n          },\n          \"contentName\": \"comment.blade\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"end.bracket.round.blade.php\"\n            }\n          },\n          \"name\": \"meta.directive.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#balance_brackets\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(?<![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\\n@\\n(?: # Ordering not important as we everything will be matched up to word boundary\\n (?i)append\\n|(?i)auth\\n|(?i)break\\n|(?i)continue\\n|(?i)default\\n|(?i)else\\n|(?i)empty\\n|(?i)endauth\\n|(?i)endcan\\n|(?i)endcannot\\n|(?i)endcomponent\\n|(?i)endempty\\n|(?i)endfor\\n|(?i)endforeach\\n|(?i)endforelse\\n|(?i)endguest\\n|(?i)endif\\n|(?i)endisset\\n|(?i)endlang\\n|(?i)endprepend\\n|(?i)endpush\\n|(?i)endsection\\n|(?i)endslot\\n|(?i)endswitch\\n|(?i)endunless\\n|endverbatim\\n|(?i)endwhile\\n|(?i)guest\\n|(?i)lang\\n|(?i)overwrite\\n|(?i)parent\\n|(?i)show\\n|(?i)stop\\n|verbatim\\n)\\n\\\\b\",\n          \"name\": \"keyword.blade\"\n        },\n        {\n          \"begin\": \"(?<![A-Za-z0-9_@])@(?i:php)\\\\b\",\n          \"end\": \"(?<![A-Za-z0-9_@])(?=@(?i:endphp)\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.begin.blade\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.end.blade\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"name\": \"meta.embedded.block.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(?<![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\\n(\\n  @\\n  (?i:\\n    endphp\\n  )\\n  [\\\\t ]* # Whitespace between name and parentheses\\n)\\n(\\\\() # Followed by opening parentheses\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.end.blade\"\n            },\n            \"2\": {\n              \"name\": \"begin.bracket.round.blade.php\"\n            }\n          },\n          \"contentName\": \"comment.blade\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"end.bracket.round.blade.php\"\n            }\n          },\n          \"name\": \"meta.directive.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#balance_brackets\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(?<![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\\n@\\n(?: # Ordering not important as we everything will be matched up to word boundary\\n (?i)endphp\\n)\\n\\\\b\",\n          \"name\": \"keyword.end.blade\"\n        },\n        {\n          \"begin\": \"(?x)\\n(?<![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\\n(\\n  @\\n  \\\\w+(?:::w+)? # Any number/letter sequence, can also be postfixed by ::someOtherString\\n  [\\\\t ]* # Whitespace between name and parentheses\\n)\\n(\\\\() # Followed by opening parentheses\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.blade\"\n            },\n            \"2\": {\n              \"name\": \"begin.bracket.round.blade.php\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"end.bracket.round.blade.php\"\n            }\n          },\n          \"name\": \"meta.directive.custom.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(?<![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\\n@\\n\\\\w+(?:::w+)? # Any number/letter sequence, can also be postfixed by ::someOtherString\\n\\\\b # Bounded by word boundary\",\n          \"name\": \"entity.name.function.blade\"\n        },\n        {\n          \"begin\": \"(^\\\\s*)(?=<\\\\?(?![^?]*\\\\?>))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.embedded.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.embedded.trailing.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"<\\\\?(?i:php|=)?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.begin.php\"\n                }\n              },\n              \"contentName\": \"source.php\",\n              \"end\": \"(\\\\?)>\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                },\n                \"1\": {\n                  \"name\": \"source.php\"\n                }\n              },\n              \"name\": \"meta.embedded.block.php\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\\\\?(?i:php|=)?(?![^?]*\\\\?>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"(\\\\?)>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.embedded.block.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\\\\?(?i:php|=)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            }\n          },\n          \"name\": \"meta.embedded.line.php\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"source.php\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                },\n                \"3\": {\n                  \"name\": \"source.php\"\n                }\n              },\n              \"match\": \"\\\\G(\\\\s*)((\\\\?))(?=>)\",\n              \"name\": \"meta.special.empty-tag.php\"\n            },\n            {\n              \"begin\": \"\\\\G\",\n              \"contentName\": \"source.php\",\n              \"end\": \"(\\\\?)(?=>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                },\n                \"1\": {\n                  \"name\": \"source.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"balance_brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#balance_brackets\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^()]+\"\n        }\n      ]\n    },\n    \"class-builtin\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n(\\\\\\\\)?\\\\b\\n((APC|Append)Iterator|Array(Access|Iterator|Object)\\n|Bad(Function|Method)CallException\\n|(Caching|CallbackFilter)Iterator|Collator|Collectable|Cond|Countable|CURLFile\\n|Date(Interval|Period|Time(Interface|Immutable|Zone)?)?|Directory(Iterator)?|DomainException\\n|DOM(Attr|CdataSection|CharacterData|Comment|Document(Fragment)?|Element|EntityReference\\n    |Implementation|NamedNodeMap|Node(list)?|ProcessingInstruction|Text|XPath)\\n|(Error)?Exception|EmptyIterator\\n|finfo\\n|Ev(Check|Child|Embed|Fork|Idle|Io|Loop|Periodic|Prepare|Signal|Stat|Timer|Watcher)?\\n|Event(Base|Buffer(Event)?|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?\\n|FANNConnection|(Filter|Filesystem)Iterator\\n|Gender\\\\\\\\Gender|GlobIterator|Gmagick(Draw|Pixel)?\\n|Haru(Annotation|Destination|Doc|Encoder|Font|Image|Outline|Page)\\n|Http((Inflate|Deflate)?Stream|Message|Request(Pool)?|Response|QueryString)\\n|HRTime\\\\\\\\(PerformanceCounter|StopWatch)\\n|Intl(Calendar|((CodePoint|RuleBased)?Break|Parts)?Iterator|DateFormatter|TimeZone)\\n|Imagick(Draw|Pixel(Iterator)?)?\\n|InfiniteIterator|InvalidArgumentException|Iterator(Aggregate|Iterator)?\\n|JsonSerializable\\n|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|(AttachedPicture)?Frame))\\n|Lapack|(Length|Locale|Logic)Exception|LimitIterator|Lua(Closure)?\\n|Mongo(BinData|Client|Code|Collection|CommandCursor|Cursor(Exception)?|Date|DB(Ref)?|DeleteBatch\\n      |Grid(FS(Cursor|File)?)|Id|InsertBatch|Int(32|64)|Log|Pool|Regex|ResultException|Timestamp\\n      |UpdateBatch|Write(Batch|ConcernException))?\\n|Memcache(d)?|MessageFormatter|MultipleIterator|Mutex\\n|mysqli(_(driver|stmt|warning|result))?\\n|MysqlndUh(Connection|PreparedStatement)\\n|NoRewindIterator|Normalizer|NumberFormatter\\n|OCI-(Collection|Lob)|OuterIterator|(OutOf(Bounds|Range)|Overflow)Exception\\n|ParentIterator|PDO(Statement)?|Phar(Data|FileInfo)?|php_user_filter|Pool\\n|QuickHash(Int(Set|StringHash)|StringIntHash)\\n|Recursive(Array|Caching|Directory|Fallback|Filter|Iterator|Regex|Tree)?Iterator\\n|Reflection(Class|Function(Abstract)?|Method|Object|Parameter|Property|(Zend)?Extension)?\\n|RangeException|Reflector|RegexIterator|ResourceBundle|RuntimeException|RRD(Creator|Graph|Updater)\\n|SAM(Connection|Message)|SCA(_(SoapProxy|LocalProxy))?\\n|SDO_(DAS_(ChangeSummary|Data(Factory|Object)|Relational|Setting|XML(_Document)?)\\n     |Data(Factory|Object)|Exception|List|Model_(Property|ReflectionDataObject|Type)|Sequence)\\n|SeekableIterator|Serializable|SessionHandler(Interface)?|SimpleXML(Iterator|Element)|SNMP\\n|Soap(Client|Fault|Header|Param|Server|Var)\\n|SphinxClient|Spoofchecker\\n|Spl(DoublyLinkedList|Enum|File(Info|Object)|FixedArray|(Max|Min)?Heap|Observer|ObjectStorage\\n    |(Priority)?Queue|Stack|Subject|Type|TempFileObject)\\n|SQLite(3(Result|Stmt)?|Database|Result|Unbuffered)\\n|stdClass|streamWrapper|SVM(Model)?|Swish(Result(s)?|Search)?|Sync(Event|Mutex|ReaderWriter|Semaphore)\\n|Thread(ed)?|tidy(Node)?|TokyoTyrant(Table|Iterator|Query)?|Transliterator|Traversable\\n|UConverter|(Underflow|UnexpectedValue)Exception\\n|V8Js(Exception)?|Varnish(Admin|Log|Stat)\\n|Worker|Weak(Map|Ref)\\n|XML(Diff\\\\\\\\(Base|DOM|File|Memory)|Reader|Writer)|XsltProcessor\\n|Yaf_(Route_(Interface|Map|Regex|Rewrite|Simple|Supervar)\\n     |Action_Abstract|Application|Config_(Simple|Ini|Abstract)|Controller_Abstract\\n     |Dispatcher|Exception|Loader|Plugin_Abstract|Registry|Request_(Abstract|Simple|Http)\\n     |Response_Abstract|Router|Session|View_(Simple|Interface))\\n|Yar_(Client(_Exception)?|Concurrent_Client|Server(_Exception)?)\\n|ZipArchive|ZMQ(Context|Device|Poll|Socket)?)\\n\\\\b\",\n          \"name\": \"support.class.builtin.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"class-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_0-9]+\\\\\\\\)\",\n          \"end\": \"(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#class-builtin\"\n        },\n        {\n          \"begin\": \"(?=[\\\\\\\\a-zA-Z_])\",\n          \"end\": \"(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"name\": \"comment.block.documentation.phpdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.php\"\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.double-slash.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\\\b\",\n          \"name\": \"constant.language.php\"\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(DEFAULT_INCLUDE_PATH\\n|EAR_(INSTALL|EXTENSION)_DIR\\n|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE\\n   |PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING)\\n|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN\\n     |BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR)\\n     |INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR\\n     |URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX\\n     |EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)?\\n     |WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)\\n              |VERSION_(MAJOR|MINOR)|BUILD|SUITEMASK|SP_(MAJOR|MINOR)\\n              |PRODUCTTYPE|PLATFORM)\\n     |LIBDIR|LOCALSTATEDIR)\\n|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE))\\n\\\\b\",\n          \"name\": \"support.constant.core.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(__COMPILER_HALT_OFFSET__|AB(MON_(1|2|3|4|5|6|7|8|9|10|11|12)|DAY[1-7])\\n|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS\\n|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE)\\n|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)\\n|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL\\n|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C)\\n|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR\\n|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP)\\n|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS)\\n|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES)\\n|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS)\\n|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN)\\n|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL\\n     |NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER)\\n|M_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRT)?PI|PI(_(2|4))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E)\\n|MON_(1|2|3|4|5|6|7|8|9|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)\\n|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR)\\n|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN\\n|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR\\n|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT)\\n|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP\\n|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL)\\n|YES(EXPR|STR))\\n\\\\b\",\n          \"name\": \"support.constant.std.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)\\n|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE\\n     |OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)\\n     |ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE\\n            |NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE\\n            |UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT\\n            |PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY)\\n     |ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(NMTOKEN(S)?|NOTATION|NODE)\\n     |CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION)\\n|MHASH_(RIPEMD(128|160|256|320)|GOST|MD(2|4|5)|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256)\\n       |CRC23(B)?|TIGER(128|160)?|WHIRLPOOL|ADLER32)\\n|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC))\\n|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG)\\n        |READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH\\n        |STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT\\n        |SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG)\\n        |NO_(DEFAULT_VALUE_FLAG|DATA)|NOT_NULL_FLAG|NUM(_FLAG)?\\n        |CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)\\n        |CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS)\\n        |TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR\\n              |TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?)\\n        |TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG\\n        |OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE)\\n        |DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG\\n        |ASSOC|ASYNC|AUTO_INCREMENT_FLAG)\\n|MCRYPT_(RC(2|6)|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS\\n        |BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY\\n        |TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?)\\n|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR\\n        |SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN)\\n        |NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS\\n                |FILE_SIZE_IS|FAILURE|AUTH_(REQUIRED|RESULT))\\n        |CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT)\\n        |CAST_(AS_STREAM|FOR_SELECT)|(IGNORE|IS)_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB\\n        |OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH\\n        |PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE))\\n|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP)\\n|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT\\n        |CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY\\n        |FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH)\\n|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC)\\n|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK)\\n     |MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD)\\n     |CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC)\\n     |INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME\\n           |(SIZE|SPEED)_(DOWNLOAD|UPLOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME\\n           |CONNECT_TIME|CONTENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD))|CERTINFO|TOTAL_TIME\\n           |PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME)\\n     |OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE\\n          |MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE\\n          |SSH_(HOST_PUBLIC_KEY_MD5|(PRIVATE|PUBLIC)_KEYFILE)|AUTH_TYPES)\\n          |SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?)\\n          |SSL_(CIPHER_LIST|VERIFY(HOST|PEER))\\n          |STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)\\n          |HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)?\\n          |COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT\\n          |TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE\\n          |DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD\\n          |PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT\\n          |POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT\\n          |FTP(APPEND|LISTONLY|PORT|SSLAUTH)\\n          |FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)\\n          |FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME)\\n          |AUTOREFERER)\\n     |PROXY_(HTTP|SOCKS(4|5))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL)\\n     |E_((RECV|READ)_ERROR|GOT_NOTHING|MALFORMAT_USER\\n        |BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT)\\n        |SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED))\\n        |SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR)\\n        |COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE\\n        |OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL\\n        |UNKNOWN_TELNET_OPTION|PARTIAL_FILE\\n        |FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST)\\n             |CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR\\n             |WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED)\\n        |FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND\\n        |LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK)\\n     |VERSION_NOW\\n     |FTP(METHOD_(MULTI|SINGLE|NO)CWD|SSL_(ALL|NONE|CONTROL|TRY)|AUTH_(DEFAULT|SSL|TLS))\\n     |AUTH_(ANY(SAFE)?|BASIC|DIGEST|GSSNEGOTIATE|NTLM))\\n|CURL_(HTTP_VERSION_(1_(0|1)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(UN)?MODSINCE|LASTMOD)\\n      |IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))\\n|IMAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|ICO|IFF|UNKNOWN|JB2|JPX|JP2|JPC|JPEG(2000)?|PSD|PNG|WBMP)\\n|INPUT_(REQUEST|GET|SERVER|SESSION|COOKIE|POST|ENV)|ICONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION)\\n|DNS_(MX|SRV|SOA|HINFO|NS|NAPTR|CNAME|TXT|PTR|ANY|ALL|AAAA|A(6)?)\\n|DOM(STRING_SIZE_ERR)\\n|DOM_((SYNTAX|HIERARCHY_REQUEST|NO_(MODIFICATION_ALLOWED|DATA_ALLOWED)|NOT_(FOUND|SUPPORTED)|NAMESPACE\\n     |INDEX_SIZE|USE_ATTRIBUTE|VALID_(MODIFICATION|STATE|CHARACTER|ACCESS)|PHP|VALIDATION|WRONG_DOCUMENT)_ERR)\\n|JSON_(HEX_(TAG|QUOT|AMP|APOS)|NUMERIC_CHECK|ERROR_(SYNTAX|STATE_MISMATCH|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)\\n|PREG_((D_UTF8(_OFFSET)?|NO|INTERNAL|(BACKTRACK|RECURSION)_LIMIT)_ERROR|GREP_INVERT\\n      |SPLIT_(NO_EMPTY|(DELIM|OFFSET)_CAPTURE)|SET_ORDER|OFFSET_CAPTURE|PATTERN_ORDER)\\n|PSFS_(PASS_ON|ERR_FATAL|FEED_ME|FLAG_(NORMAL|FLUSH_(CLOSE|INC)))\\n|PCRE_VERSION|POSIX_((F|R|W|X)_OK|S_IF(REG|BLK|SOCK|CHR|IFO))\\n|FNM_(NOESCAPE|CASEFOLD|PERIOD|PATHNAME)\\n|FILTER_(REQUIRE_(SCALAR|ARRAY)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW\\n        |SANITIZE_(MAGIC_QUOTES|STRING|STRIPPED|SPECIAL_CHARS|NUMBER_(INT|FLOAT)|URL\\n                  |EMAIL|ENCODED|FULL_SPCIAL_CHARS)\\n        |VALIDATE_(REGEXP|BOOLEAN|INT|IP|URL|EMAIL|FLOAT)\\n        |FORCE_ARRAY\\n        |FLAG_(SCHEME_REQUIRED|STRIP_(BACKTICK|HIGH|LOW)|HOST_REQUIRED|NONE|NO_(RES|PRIV)_RANGE|ENCODE_QUOTES\\n              |IPV(4|6)|PATH_REQUIRED|EMPTY_STRING_NULL|ENCODE_(HIGH|LOW|AMP)|QUERY_REQUIRED\\n              |ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION)))\\n|FILE_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)\\n|FILEINFO_(RAW|MIME(_(ENCODING|TYPE))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)\\n|FORCE_(DEFLATE|GZIP)\\n|LIBXML_(XINCLUDE|NSCLEAN|NO(XMLDECL|BLANKS|NET|CDATA|ERROR|EMPTYTAG|ENT|WARNING)\\n        |COMPACT|DTD(VALID|LOAD|ATTR)|((DOTTED|LOADED)_)?VERSION|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)))\\n\\\\b\",\n          \"name\": \"support.constant.ext.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(T_(RETURN|REQUIRE(_ONCE)?|GOTO|GLOBAL|(MINUS|MOD|MUL|XOR)_EQUAL|METHOD_C|ML_COMMENT|BREAK\\n   |BOOL_CAST|BOOLEAN_(AND|OR)|BAD_CHARACTER|SR(_EQUAL)?|STRING(_CAST|VARNAME)?|START_HEREDOC|STATIC\\n   |SWITCH|SL(_EQUAL)?|HALT_COMPILER|NS_(C|SEPARATOR)|NUM_STRING|NEW|NAMESPACE|CHARACTER|COMMENT\\n   |CONSTANT(_ENCAPSED_STRING)?|CONCAT_EQUAL|CONTINUE|CURLY_OPEN|CLOSE_TAG|CLONE|CLASS(_C)?\\n   |CASE|CATCH|TRY|THROW|IMPLEMENTS|ISSET|IS_((GREATER|SMALLER)_OR_EQUAL|(NOT_)?(IDENTICAL|EQUAL))\\n   |INSTANCEOF|INCLUDE(_ONCE)?|INC|INT_CAST|INTERFACE|INLINE_HTML|IF|OR_EQUAL|OBJECT_(CAST|OPERATOR)\\n   |OPEN_TAG(_WITH_ECHO)?|OLD_FUNCTION|DNUMBER|DIR|DIV_EQUAL|DOC_COMMENT|DOUBLE_(ARROW|CAST|COLON)\\n   |DOLLAR_OPEN_CURLY_BRACES|DO|DEC|DECLARE|DEFAULT|USE|UNSET(_CAST)?|PRINT|PRIVATE|PROTECTED|PUBLIC\\n   |PLUS_EQUAL|PAAMAYIM_NEKUDOTAYIM|EXTENDS|EXIT|EMPTY|ENCAPSED_AND_WHITESPACE\\n   |END(SWITCH|IF|DECLARE|FOR(EACH)?|WHILE)|END_HEREDOC|ECHO|EVAL|ELSE(IF)?|VAR(IABLE)?|FINAL|FILE\\n   |FOR(EACH)?|FUNC_C|FUNCTION|WHITESPACE|WHILE|LNUMBER|LIST|LINE|LOGICAL_(AND|OR|XOR)\\n   |ARRAY_(CAST)?|ABSTRACT|AS|AND_EQUAL))\\n\\\\b\",\n          \"name\": \"support.constant.parser-token.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n          \"name\": \"constant.other.php\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n(array)                                                            # Typehint\\n\\\\s+((&)?\\\\s*(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\\n\\\\s*(=)\\\\s*(array)\\\\s*(\\\\()                                        # Default value\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            },\n            \"6\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            }\n          },\n          \"contentName\": \"meta.array.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function.parameter.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#numbers\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n(array|callable)                                                   # Typehint\\n\\\\s+((&)?\\\\s*(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\\n(?:                                                                # Optional default value\\n  \\\\s*(=)\\\\s*\\n  (?:\\n    (null)\\n    |\\n    (\\\\[)((?>[^\\\\[\\\\]]+|\\\\[\\\\g<8>\\\\])*)(\\\\])\\n    |((?:\\\\S*?\\\\(\\\\))|(?:\\\\S*?))\\n  )\\n)?\\n\\\\s*(?=,|\\\\)|/[/*]|\\\\#|$) # A closing parentheses (end of argument list) or a comma or a comment\",\n          \"name\": \"meta.function.parameter.array.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            },\n            \"6\": {\n              \"name\": \"constant.language.php\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#parameter-default-types\"\n                }\n              ]\n            },\n            \"9\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            },\n            \"10\": {\n              \"name\": \"invalid.illegal.non-null-typehinted.php\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?xi)\\n(\\\\\\\\?(?:[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\\\\\)*)                 # Optional namespace\\n([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)                               # Typehinted class name\\n\\\\s+((&)?\\\\s*(\\\\.\\\\.\\\\.)?(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.other.namespace.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"storage.type.php\"\n                },\n                {\n                  \"match\": \"\\\\\\\\\",\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.type.php\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.variadic.php\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"(?=,|\\\\)|/[/*]|\\\\#)\",\n          \"name\": \"meta.function.parameter.typehinted.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.assignment.php\"\n                }\n              },\n              \"end\": \"(?=,|\\\\)|/[/*]|\\\\#)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.variadic.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?xi)\\n((&)?\\\\s*(\\\\.\\\\.\\\\.)?(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\\n\\\\s*(?=,|\\\\)|/[/*]|\\\\#|$) # A closing parentheses (end of argument list) or a comma or a comment\",\n          \"name\": \"meta.function.parameter.no-default.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n((&)?\\\\s*(\\\\.\\\\.\\\\.)?(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\\n\\\\s*(=)\\\\s*\\n(?:(\\\\[)((?>[^\\\\[\\\\]]+|\\\\[\\\\g<6>\\\\])*)(\\\\]))?                              # Optional default type\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.variadic.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#parameter-default-types\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"end\": \"(?=,|\\\\)|/[/*]|\\\\#)\",\n          \"name\": \"meta.function.parameter.default.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?xi)\\n(\\n  \\\\\\\\?\\\\b                                                # Optional root namespace\\n  [a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*          # First namespace\\n  (?:\\\\\\\\[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)+ # Additional namespaces\\n)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#namespace\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"entity.name.function.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(\\\\\\\\)?\\\\b([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#namespace\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#support\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"entity.name.function.php\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)\\\\b(print|echo)\\\\b\",\n          \"name\": \"support.function.construct.output.php\"\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=<<<\\\\s*(\\\"?)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(\\\\1)\\\\s*$)\",\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"string.unquoted.heredoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc_interior\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=<<<\\\\s*'([a-zA-Z_]+[a-zA-Z0-9_]*)'\\\\s*$)\",\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"string.unquoted.nowdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#nowdoc_interior\"\n            }\n          ]\n        }\n      ]\n    },\n    \"heredoc_interior\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(HTML)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(XML)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(SQL)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(JAVASCRIPT|JS)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(JSON)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.json\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(CSS)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(REGEXP?)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"string.regexp.heredoc.php\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n              \"name\": \"constant.character.escape.regex.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                }\n              },\n              \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n              \"name\": \"string.regexp.arbitrary-repitition.php\"\n            },\n            {\n              \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.character-class.php\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"name\": \"string.regexp.character-class.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[\\\\\\\\'\\\\[\\\\]]\",\n                  \"name\": \"constant.character.escape.php\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[$^+*]\",\n              \"name\": \"keyword.operator.regexp.php\"\n            },\n            {\n              \"begin\": \"(?i)(?<=^|\\\\s)(#)\\\\s(?=[[a-z0-9_\\\\x{7f}-\\\\x{ff},. \\\\t?!-][^\\\\x{00}-\\\\x{7f}]]*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<<<)\\\\s*(\\\"?)([a-z_\\\\x{7f}-\\\\x{ff}]+[a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(\\\\2)(\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"nowdoc_interior\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*'(HTML)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(XML)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(SQL)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(JAVASCRIPT|JS)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(JSON)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.json\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(CSS)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(REGEXP?)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"string.regexp.nowdoc.php\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n              \"name\": \"constant.character.escape.regex.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                }\n              },\n              \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n              \"name\": \"string.regexp.arbitrary-repitition.php\"\n            },\n            {\n              \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.character-class.php\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"name\": \"string.regexp.character-class.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[\\\\\\\\'\\\\[\\\\]]\",\n                  \"name\": \"constant.character.escape.php\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[$^+*]\",\n              \"name\": \"keyword.operator.regexp.php\"\n            },\n            {\n              \"begin\": \"(?i)(?<=^|\\\\s)(#)\\\\s(?=[[a-z0-9_\\\\x{7f}-\\\\x{ff},. \\\\t?!-][^\\\\x{00}-\\\\x{7f}]]*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<<<)\\\\s*'([a-z_\\\\x{7f}-\\\\x{ff}]+[a-z0-9_\\\\x{7f}-\\\\x{ff}]*)'(\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"instantiation\": {\n      \"begin\": \"(?i)(new)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(parent|static|self)(?![a-z0-9_\\\\x{7f}-\\\\x{ff}])\",\n          \"name\": \"storage.type.php\"\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[0-7]{1,3}\",\n          \"name\": \"constant.character.escape.octal.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\x[0-9A-Fa-f]{1,2}\",\n          \"name\": \"constant.character.escape.hex.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\u{[0-9A-Fa-f]+}\",\n          \"name\": \"constant.character.escape.unicode.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\[nrtvef$\\\"\\\\\\\\]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"begin\": \"{(?=\\\\$.*?})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"invoke-call\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.php\"\n        }\n      },\n      \"match\": \"(?i)(\\\\$+)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(?=\\\\s*\\\\()\",\n      \"name\": \"meta.function-call.invoke.php\"\n    },\n    \"language\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(?i)^\\\\s*(interface)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(extends)?\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.extends.php\"\n            }\n          },\n          \"end\": \"(?i)((?:[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\s*,\\\\s*)*)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\\\\s*(?:(?={)|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"entity.other.inherited-class.php\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.classes.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"entity.other.inherited-class.php\"\n            }\n          },\n          \"name\": \"meta.interface.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)^\\\\s*(trait)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.trait.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.trait.php\"\n            }\n          },\n          \"end\": \"(?={)\",\n          \"name\": \"meta.trait.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(?:^|(?<=<\\\\?php))\\\\s*(namespace)\\\\s+([a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]+)(?=\\\\s*;)\",\n          \"name\": \"meta.namespace.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.namespace.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.namespace.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\",\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)(?:^|(?<=<\\\\?php))\\\\s*(namespace)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.namespace.php\"\n            }\n          },\n          \"end\": \"(?<=})|(?=\\\\?>)\",\n          \"name\": \"meta.namespace.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"(?i)[a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]+\",\n              \"name\": \"entity.name.type.namespace.php\",\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\\\\\\",\n                      \"name\": \"punctuation.separator.inheritance.php\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.namespace.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"}|(?=\\\\?>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.namespace.end.bracket.curly.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[^\\\\s]+\",\n              \"name\": \"invalid.illegal.identifier.php\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\s+(?=use\\\\b)\"\n        },\n        {\n          \"begin\": \"(?i)\\\\buse\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.use.php\"\n            }\n          },\n          \"end\": \"(?<=})|(?=;)\",\n          \"name\": \"meta.use.php\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(const|function)\\\\b\",\n              \"name\": \"storage.type.${1:/downcase}.php\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.use.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.use.end.bracket.curly.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#scope-resolution\"\n                },\n                {\n                  \"match\": \"(?xi)\\n\\\\b(as)\\n\\\\s+(final|abstract|public|private|protected|static)\\n\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n\\\\b\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.use-as.php\"\n                    },\n                    \"2\": {\n                      \"name\": \"storage.modifier.php\"\n                    },\n                    \"3\": {\n                      \"name\": \"entity.other.alias.php\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?xi)\\n\\\\b(as)\\n\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n\\\\b\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.use-as.php\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"^(?:final|abstract|public|private|protected|static)$\",\n                          \"name\": \"storage.modifier.php\"\n                        },\n                        {\n                          \"match\": \".+\",\n                          \"name\": \"entity.other.alias.php\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?i)\\\\b(insteadof)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.use-insteadof.php\"\n                    },\n                    \"2\": {\n                      \"name\": \"support.class.php\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \";\",\n                  \"name\": \"punctuation.terminator.expression.php\"\n                },\n                {\n                  \"include\": \"#use-inner\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#use-inner\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)^\\\\s*(?:(abstract|final)\\\\s+)?(class)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.${1:/downcase}.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.php\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.class.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.class.end.bracket.curly.php\"\n            }\n          },\n          \"name\": \"meta.class.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(?i)(extends)\\\\s+\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.extends.php\"\n                }\n              },\n              \"contentName\": \"meta.other.inherited-class.php\",\n              \"end\": \"(?i)(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\\\\\)\",\n                  \"end\": \"(?i)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.other.inherited-class.php\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#namespace\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#class-builtin\"\n                },\n                {\n                  \"include\": \"#namespace\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"entity.other.inherited-class.php\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?i)(implements)\\\\s+\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.implements.php\"\n                }\n              },\n              \"end\": \"(?i)(?=[;{])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"begin\": \"(?i)(?=[a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]+)\",\n                  \"contentName\": \"meta.other.inherited-class.php\",\n                  \"end\": \"(?i)(?:\\\\s*(?:,|(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\\\\\s]))\\\\s*)\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\\\\\)\",\n                      \"end\": \"(?i)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n                      \"endCaptures\": {\n                        \"1\": {\n                          \"name\": \"entity.other.inherited-class.php\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"include\": \"#namespace\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#class-builtin\"\n                    },\n                    {\n                      \"include\": \"#namespace\"\n                    },\n                    {\n                      \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                      \"name\": \"entity.other.inherited-class.php\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.class.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"(?=}|\\\\?>)\",\n              \"contentName\": \"meta.class.body.php\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#switch_statement\"\n        },\n        {\n          \"match\": \"(?x)\\n\\\\s*\\n\\\\b(\\n  break|case|continue|declare|default|die|do|\\n  else(if)?|end(declare|for(each)?|if|switch|while)|exit|\\n  for(each)?|if|return|switch|use|while|yield\\n)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.${1:/downcase}.php\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)\\\\b((?:require|include)(?:_once)?)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.include.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s|;|$|\\\\?>)\",\n          \"name\": \"meta.include.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(catch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.exception.catch.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.catch.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            },\n            {\n              \"match\": \"(?xi)\\n([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)                 # Exception class\\n((?:\\\\s*\\\\|\\\\s*[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)*) # Optional additional exception classes\\n\\\\s*\\n((\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)           # Variable\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.exception.php\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                      \"name\": \"support.class.exception.php\"\n                    },\n                    {\n                      \"match\": \"\\\\|\",\n                      \"name\": \"punctuation.separator.delimiter.php\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.other.php\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.variable.php\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(catch|try|throw|exception|finally)\\\\b\",\n          \"name\": \"keyword.control.exception.php\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(function)\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.php\"\n            }\n          },\n          \"end\": \"(?={)\",\n          \"name\": \"meta.function.closure.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n                }\n              },\n              \"contentName\": \"meta.function.parameters.php\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-parameters\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?i)(use)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.function.use.php\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable.other.php\"\n                    },\n                    \"2\": {\n                      \"name\": \"storage.modifier.reference.php\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.variable.php\"\n                    }\n                  },\n                  \"match\": \"(?i)((&)?\\\\s*(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(?=,|\\\\))\",\n                  \"name\": \"meta.function.closure.use.php\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n((?:(?:final|abstract|public|private|protected|static)\\\\s+)*)\\n(function)\\\\s+\\n(?i:\\n  (__(?:call|construct|debugInfo|destruct|get|set|isset|unset|tostring|\\n        clone|set_state|sleep|wakeup|autoload|invoke|callStatic))\\n  |([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n)\\n\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"final|abstract|public|private|protected|static\",\n                  \"name\": \"storage.modifier.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.type.function.php\"\n            },\n            \"3\": {\n              \"name\": \"support.function.magic.php\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"contentName\": \"meta.function.parameters.php\",\n          \"end\": \"(\\\\))(?:\\\\s*(:)\\\\s*([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*))?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.return-value.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.php\"\n            }\n          },\n          \"name\": \"meta.function.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#invoke-call\"\n        },\n        {\n          \"include\": \"#scope-resolution\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"match\": \"(array)(\\\\()(\\\\))\",\n          \"name\": \"meta.array.empty.php\"\n        },\n        {\n          \"begin\": \"(array)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(\\\\()\\\\s*(array|real|double|float|int(?:eger)?|bool(?:ean)?|string|object|binary|unset)\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.storage-type.begin.bracket.round.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.storage-type.end.bracket.round.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object)\\\\b\",\n          \"name\": \"storage.type.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(global|abstract|const|extends|implements|final|private|protected|public|static)\\\\b\",\n          \"name\": \"storage.modifier.php\"\n        },\n        {\n          \"include\": \"#object\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.expression.php\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.terminator.statement.php\"\n        },\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"match\": \"(?i)\\\\bclone\\\\b\",\n          \"name\": \"keyword.other.clone.php\"\n        },\n        {\n          \"match\": \"\\\\.=?\",\n          \"name\": \"keyword.operator.string.php\"\n        },\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.key.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            }\n          },\n          \"match\": \"(?i)(\\\\=)(&)|(&)(?=[$a-z_])\"\n        },\n        {\n          \"match\": \"@\",\n          \"name\": \"keyword.operator.error-control.php\"\n        },\n        {\n          \"match\": \"===|==|!==|!=|<>\",\n          \"name\": \"keyword.operator.comparison.php\"\n        },\n        {\n          \"match\": \"=|\\\\+=|\\\\-=|\\\\*=|/=|%=|&=|\\\\|=|\\\\^=|<<=|>>=\",\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        {\n          \"match\": \"<=>|<=|>=|<|>\",\n          \"name\": \"keyword.operator.comparison.php\"\n        },\n        {\n          \"match\": \"\\\\-\\\\-|\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment-decrement.php\"\n        },\n        {\n          \"match\": \"\\\\-|\\\\+|\\\\*|/|%\",\n          \"name\": \"keyword.operator.arithmetic.php\"\n        },\n        {\n          \"match\": \"(?i)(!|&&|\\\\|\\\\|)|\\\\b(and|or|xor|as)\\\\b\",\n          \"name\": \"keyword.operator.logical.php\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"match\": \"<<|>>|~|\\\\^|&|\\\\|\",\n          \"name\": \"keyword.operator.bitwise.php\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(instanceof)\\\\s+(?=[\\\\\\\\$a-z_])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.php\"\n            }\n          },\n          \"end\": \"(?=[^\\\\\\\\$a-z0-9_\\\\x{7f}-\\\\x{ff}])\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"include\": \"#variable-name\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#instantiation\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.goto.php\"\n            },\n            \"2\": {\n              \"name\": \"support.other.php\"\n            }\n          },\n          \"match\": \"(?i)(goto)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.goto-label.php\"\n            }\n          },\n          \"match\": \"(?i)^\\\\s*([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*:(?!:)\"\n        },\n        {\n          \"include\": \"#string-backtick\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.curly.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            }\n          },\n          \"end\": \"\\\\]|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.round.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"namespace\": {\n      \"begin\": \"(?i)(?:(namespace)|[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?(\\\\\\\\)(?=.*?[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.language.namespace.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.inheritance.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[a-z0-9_\\\\x{7f}-\\\\x{ff}]*[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n      \"name\": \"support.other.namespace.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\",\n          \"name\": \"punctuation.separator.inheritance.php\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"0[xX][0-9a-fA-F]+\",\n          \"name\": \"constant.numeric.hex.php\"\n        },\n        {\n          \"match\": \"0[bB][01]+\",\n          \"name\": \"constant.numeric.binary.php\"\n        },\n        {\n          \"match\": \"0[0-7]+\",\n          \"name\": \"constant.numeric.octal.php\"\n        },\n        {\n          \"match\": \"(?x)\\n(?:\\n  [0-9]*(\\\\.)[0-9]+(?:[eE][+-]?[0-9]+)?|\\n  [0-9]+(\\\\.)[0-9]*(?:[eE][+-]?[0-9]+)?|\\n  [0-9]+[eE][+-]?[0-9]+\\n)\",\n          \"name\": \"constant.numeric.decimal.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.decimal.period.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.decimal.period.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"0|[1-9][0-9]*\",\n          \"name\": \"constant.numeric.decimal.php\"\n        }\n      ]\n    },\n    \"object\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(->)(\\\\$?{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(->)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.method-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)(->)((\\\\$+)?[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\"\n        }\n      ]\n    },\n    \"parameter-default-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#string-backtick\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.key.php\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        {\n          \"match\": \"&(?=\\\\s*\\\\$)\",\n          \"name\": \"storage.modifier.reference.php\"\n        },\n        {\n          \"begin\": \"(array)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#instantiation\"\n        },\n        {\n          \"begin\": \"(?xi)\\n(?=[a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]+(::)\\n  ([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\\n)\",\n          \"end\": \"(?i)(::)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    },\n    \"php_doc\": {\n      \"patterns\": [\n        {\n          \"match\": \"^(?!\\\\s*\\\\*).*?(?:(?=\\\\*\\\\/)|$\\\\n?)\",\n          \"name\": \"invalid.illegal.missing-asterisk.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.php\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.wrong-access-type.phpdoc.php\"\n            }\n          },\n          \"match\": \"^\\\\s*\\\\*\\\\s*(@access)\\\\s+((public|private|protected)|(.+))\\\\s*$\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"2\": {\n              \"name\": \"markup.underline.link.php\"\n            }\n          },\n          \"match\": \"(@xlink)\\\\s+(.+)\\\\s*$\"\n        },\n        {\n          \"begin\": \"(@(?:global|param|property(-(read|write))?|return|throws|var))\\\\s+(?=[A-Za-z_\\\\x{7f}-\\\\x{ff}\\\\\\\\]|\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/)\",\n          \"contentName\": \"meta.other.type.phpdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc_types_array_multiple\"\n            },\n            {\n              \"include\": \"#php_doc_types_array_single\"\n            },\n            {\n              \"include\": \"#php_doc_types\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n@\\n(\\n  api|abstract|author|category|copyright|example|global|inherit[Dd]oc|internal|\\n  license|link|method|property(-(read|write))?|package|param|return|see|since|source|\\n  static|subpackage|throws|todo|var|version|uses|deprecated|final|ignore\\n)\\\\b\",\n          \"name\": \"keyword.other.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            }\n          },\n          \"match\": \"{(@(link|inherit[Dd]oc)).+?}\",\n          \"name\": \"meta.tag.inline.phpdoc.php\"\n        }\n      ]\n    },\n    \"php_doc_types\": {\n      \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]*(\\\\|[a-z_\\\\x{7f}-\\\\x{ff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]*)*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\\\b\\n(string|integer|int|boolean|bool|float|double|object|mixed\\n|array|resource|void|null|callback|false|true|self)\\\\b\",\n              \"name\": \"keyword.other.type.php\"\n            },\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"match\": \"\\\\|\",\n              \"name\": \"punctuation.separator.delimiter.php\"\n            }\n          ]\n        }\n      }\n    },\n    \"php_doc_types_array_multiple\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.type.begin.bracket.round.phpdoc.php\"\n        }\n      },\n      \"end\": \"(\\\\))(\\\\[\\\\])|(?=\\\\*/)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.type.end.bracket.round.phpdoc.php\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.array.phpdoc.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#php_doc_types_array_multiple\"\n        },\n        {\n          \"include\": \"#php_doc_types_array_single\"\n        },\n        {\n          \"include\": \"#php_doc_types\"\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"php_doc_types_array_single\": {\n      \"match\": \"(?i)([a-z_\\\\x{7f}-\\\\x{ff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]*)(\\\\[\\\\])\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc_types\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.array.phpdoc.php\"\n        }\n      }\n    },\n    \"regex-double-quoted\": {\n      \"begin\": \"\\\"/(?=(\\\\\\\\.|[^\\\"/])++/[imsxeADSUXu]*\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(\\\")\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.double-quoted.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n          \"name\": \"constant.character.escape.regex.php\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"regex-single-quoted\": {\n      \"begin\": \"'/(?=(\\\\\\\\(?:\\\\\\\\(?:\\\\\\\\[\\\\\\\\']?|[^'])|.)|[^'/])++/[imsxeADSUXu]*')\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(')\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.single-quoted.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#single_quote_regex_escape\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\"\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"scope-resolution\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(?=\\\\s*::)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(self|static|parent)\\\\b\",\n                  \"name\": \"storage.type.php\"\n                },\n                {\n                  \"include\": \"#class-name\"\n                },\n                {\n                  \"include\": \"#variable-name\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)(::)\\\\s*([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.method-call.static.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(::)\\\\s*(class)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.class.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?xi)\\n(::)\\\\s*\\n(?:\\n  ((\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable\\n  |\\n  ([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)       # Constant\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"single_quote_regex_escape\": {\n      \"match\": \"\\\\\\\\(?:\\\\\\\\(?:\\\\\\\\[\\\\\\\\']?|[^'])|.)\",\n      \"name\": \"constant.character.escape.php\"\n    },\n    \"sql-string-double-quoted\": {\n      \"begin\": \"\\\"\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.sql.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(#)(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$)\",\n          \"name\": \"comment.line.number-sign.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"(--)(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$)\",\n          \"name\": \"comment.line.double-dash.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\\\\"`']\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"match\": \"'(?=((\\\\\\\\')|[^'\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.single.unclosed.sql\"\n        },\n        {\n          \"match\": \"`(?=((\\\\\\\\`)|[^`\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"name\": \"string.quoted.single.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"end\": \"`\",\n          \"name\": \"string.quoted.other.backtick.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"sql-string-single-quoted\": {\n      \"begin\": \"'\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.sql.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(#)(\\\\\\\\'|[^'])*(?='|$)\",\n          \"name\": \"comment.line.number-sign.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"(--)(\\\\\\\\'|[^'])*(?='|$)\",\n          \"name\": \"comment.line.double-dash.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\'`\\\"]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"match\": \"`(?=((\\\\\\\\`)|[^`'])*('|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"match\": \"\\\"(?=((\\\\\\\\\\\")|[^\\\"'])*('|$))\",\n          \"name\": \"string.quoted.double.unclosed.sql\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"string-backtick\": {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.interpolated.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\']\",\n          \"name\": \"constant.character.escape.php\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regex-double-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#regex-single-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-single-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n\\\\b\\napc_(\\n  store|sma_info|compile_file|clear_cache|cas|cache_info|inc|dec|define_constants|delete(_file)?|\\n  exists|fetch|load_constants|add|bin_(dump|load)(file)?\\n)\\\\b\",\n          \"name\": \"support.function.apc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  shuffle|sizeof|sort|next|nat(case)?sort|count|compact|current|in_array|usort|uksort|uasort|\\n  pos|prev|end|each|extract|ksort|key(_exists)?|krsort|list|asort|arsort|rsort|reset|range|\\n  array(_(shift|sum|splice|search|slice|chunk|change_key_case|count_values|column|combine|\\n          (diff|intersect)(_(u)?(key|assoc))?|u(diff|intersect)(_(u)?assoc)?|unshift|unique|\\n          pop|push|pad|product|values|keys|key_exists|filter|fill(_keys)?|flip|walk(_recursive)?|\\n          reduce|replace(_recursive)?|reverse|rand|multisort|merge(_recursive)?|map)?)\\n)\\\\b\",\n          \"name\": \"support.function.array.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  show_source|sys_getloadavg|sleep|highlight_(file|string)|constant|connection_(aborted|status)|\\n  time_(nanosleep|sleep_until)|ignore_user_abort|die|define(d)?|usleep|uniqid|unpack|__halt_compiler|\\n  php_(check_syntax|strip_whitespace)|pack|eval|exit|get_browser\\n)\\\\b\",\n          \"name\": \"support.function.basic_functions.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbc(scale|sub|sqrt|comp|div|pow(mod)?|add|mod|mul)\\\\b\",\n          \"name\": \"support.function.bcmath.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bblenc_encrypt\\\\b\",\n          \"name\": \"support.function.blenc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbz(compress|close|open|decompress|errstr|errno|error|flush|write|read)\\\\b\",\n          \"name\": \"support.function.bz2.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  (French|Gregorian|Jewish|Julian)ToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd|\\n  jdto(unix|jewish)|easter_(date|days)|JD(MonthName|To(Gregorian|Julian|French)|DayOfWeek)\\n)\\\\b\",\n          \"name\": \"support.function.calendar.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  class_alias|all_user_method(_array)?|is_(a|subclass_of)|__autoload|(class|interface|method|property|trait)_exists|\\n  get_(class(_(vars|methods))?|(called|parent)_class|object_vars|declared_(classes|interfaces|traits))\\n)\\\\b\",\n          \"name\": \"support.function.classobj.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)|\\n  variant_(sub|set(_type)?|not|neg|cast|cat|cmp|int|idiv|imp|or|div|date_(from|to)_timestamp|\\n           pow|eqv|fix|and|add|abs|round|get_type|xor|mod|mul)\\n)\\\\b\",\n          \"name\": \"support.function.com.php\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(isset|unset|eval|empty|list)\\\\b\",\n          \"name\": \"support.function.construct.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(print|echo)\\\\b\",\n          \"name\": \"support.function.construct.output.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bctype_(space|cntrl|digit|upper|punct|print|lower|alnum|alpha|graph|xdigit)\\\\b\",\n          \"name\": \"support.function.ctype.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ncurl_(\\n  share_(close|init|setopt)|strerror|setopt(_array)?|copy_handle|close|init|unescape|pause|escape|\\n  errno|error|exec|version|file_create|reset|getinfo|\\n  multi_(strerror|setopt|select|close|init|info_read|(add|remove)_handle|getcontent|exec)\\n)\\\\b\",\n          \"name\": \"support.function.curl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  strtotime|str[fp]time|checkdate|time|timezone_name_(from_abbr|get)|idate|\\n  timezone_((location|offset|transitions|version)_get|(abbreviations|identifiers)_list|open)|\\n  date(_(sun(rise|set)|sun_info|sub|create(_(immutable_)?from_format)?|timestamp_(get|set)|timezone_(get|set)|time_set|\\n         isodate_set|interval_(create_from_date_string|format)|offset_get|diff|default_timezone_(get|set)|date_set|\\n         parse(_from_format)?|format|add|get_last_errors|modify))?|\\n  localtime|get(date|timeofday)|gm(strftime|date|mktime)|microtime|mktime\\n)\\\\b\",\n          \"name\": \"support.function.datetime.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdba_(sync|handlers|nextkey|close|insert|optimize|open|delete|popen|exists|key_split|firstkey|fetch|list|replace)\\\\b\",\n          \"name\": \"support.function.dba.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdbx_(sort|connect|compare|close|escape_string|error|query|fetch_row)\\\\b\",\n          \"name\": \"support.function.dbx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(scandir|chdir|chroot|closedir|opendir|dir|rewinddir|readdir|getcwd)\\\\b\",\n          \"name\": \"support.function.dir.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\neio_(\\n  sync(fs)?|sync_file_range|symlink|stat(vfs)?|sendfile|set_min_parallel|set_max_(idle|poll_(reqs|time)|parallel)|\\n  seek|n(threads|op|pending|reqs|ready)|chown|chmod|custom|close|cancel|truncate|init|open|dup2|unlink|utime|poll|\\n  event_loop|f(sync|stat(vfs)?|chown|chmod|truncate|datasync|utime|allocate)|write|lstat|link|rename|realpath|\\n  read(ahead|dir|link)?|rmdir|get_(event_stream|last_error)|grp(_(add|cancel|limit))?|mknod|mkdir|busy\\n)\\\\b\",\n          \"name\": \"support.function.eio.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nenchant_(\\n  dict_(store_replacement|suggest|check|is_in_session|describe|quick_check|add_to_(personal|session)|get_error)|\\n  broker_(set_ordering|init|dict_exists|describe|free(_dict)?|list_dicts|request_(pwl_)?dict|get_error)\\n)\\\\b\",\n          \"name\": \"support.function.enchant.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsplit(i)?|sql_regcase|ereg(i)?(_replace)?\\\\b\",\n          \"name\": \"support.function.ereg.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((restore|set)_(error_handler|exception_handler)|trigger_error|debug_(print_)?backtrace|user_error|error_(log|reporting|get_last))\\\\b\",\n          \"name\": \"support.function.errorfunc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bshell_exec|system|passthru|proc_(nice|close|terminate|open|get_status)|escapeshell(arg|cmd)|exec\\\\b\",\n          \"name\": \"support.function.exec.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(exif_(thumbnail|tagname|imagetype|read_data)|read_exif_data)\\\\b\",\n          \"name\": \"support.function.exif.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nfann_(\\n  (duplicate|length|merge|shuffle|subset)_train_data|scale_(train(_data)?|(input|output)(_train_data)?)|\\n  set_(scaling_params|sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|\\n       cascade_(num_candidate_groups|candidate_(change_fraction|limit|stagnation_epochs)|\\n                output_(change_fraction|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)|\\n                (max|min)_(cand|out)_epochs)|\\n       callback|training_algorithm|train_(error|stop)_function|(input|output)_scaling_params|error_log|\\n       quickprop_(decay|mu)|weight(_array)?|learning_(momentum|rate)|bit_fail_limit|\\n       activation_(function|steepness)(_(hidden|layer|output))?|\\n       rprop_((decrease|increase)_factor|delta_(max|min|zero)))|\\n  save(_train)?|num_(input|output)_train_data|copy|clear_scaling_params|cascadetrain_on_(file|data)|\\n  create_((sparse|shortcut|standard)(_array)?|train(_from_callback)?|from_file)|\\n  test(_data)?|train(_(on_(file|data)|epoch))?|init_weights|descale_(input|output|train)|destroy(_train)?|\\n  print_error|run|reset_(MSE|err(no|str))|read_train_from_file|randomize_weights|\\n  get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|num_(input|output|layers)|\\n       network_type|MSE|connection_(array|rate)|bias_array|bit_fail(_limit)?|\\n       cascade_(num_(candidates|candidate_groups)|(candidate|output)_(change_fraction|limit|stagnation_epochs)|\\n                weight_multiplier|activation_(functions|steepnesses)(_count)?|(max|min)_(cand|out)_epochs)|\\n       total_(connections|neurons)|training_algorithm|train_(error|stop)_function|err(no|str)|\\n       quickprop_(decay|mu)|learning_(momentum|rate)|layer_array|activation_(function|steepness)|\\n       rprop_((decrease|increase)_factor|delta_(max|min|zero)))\\n)\\\\b\",\n          \"name\": \"support.function.fann.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  symlink|stat|set_file_buffer|chown|chgrp|chmod|copy|clearstatcache|touch|tempnam|tmpfile|\\n  is_(dir|(uploaded_)?file|executable|link|readable|writ(e)?able)|disk_(free|total)_space|diskfreespace|\\n  dirname|delete|unlink|umask|pclose|popen|pathinfo|parse_ini_(file|string)|fscanf|fstat|fseek|fnmatch|\\n  fclose|ftell|ftruncate|file(size|[acm]time|type|inode|owner|perms|group)?|file_(exists|(get|put)_contents)|\\n  f(open|puts|putcsv|passthru|eof|flush|write|lock|read|gets(s)?|getc(sv)?)|lstat|lchown|lchgrp|link(info)?|\\n  rename|rewind|read(file|link)|realpath(_cache_(get|size))?|rmdir|glob|move_uploaded_file|mkdir|basename\\n)\\\\b\",\n          \"name\": \"support.function.file.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\\\b\",\n          \"name\": \"support.function.fileinfo.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bfilter_(has_var|input(_array)?|id|var(_array)?|list)\\\\b\",\n          \"name\": \"support.function.filter.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bfastcgi_finish_request\\\\b\",\n          \"name\": \"support.function.fpm.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(call_user_(func|method)(_array)?|create_function|unregister_tick_function|forward_static_call(_array)?|function_exists|func_(num_args|get_arg(s)?)|register_(shutdown|tick)_function|get_defined_functions)\\\\b\",\n          \"name\": \"support.function.funchand.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((n)?gettext|textdomain|d((n)?gettext|c(n)?gettext)|bind(textdomain|_textdomain_codeset))\\\\b\",\n          \"name\": \"support.function.gettext.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ngmp_(\\n  scan[01]|strval|sign|sub|setbit|sqrt(rem)?|hamdist|neg|nextprime|com|clrbit|cmp|testbit|\\n  intval|init|invert|import|or|div(exact)?|div_(q|qr|r)|jacobi|popcount|pow(m)?|perfect_square|\\n  prob_prime|export|fact|legendre|and|add|abs|root(rem)?|random(_(bits|range))?|gcd(ext)?|xor|mod|mul\\n)\\\\b\",\n          \"name\": \"support.function.gmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bhash(_(hmac(_file)?|copy|init|update(_(file|stream))?|pbkdf2|equals|file|final|algos))?\\\\b\",\n          \"name\": \"support.function.hash.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  http_(support|send_(status|stream|content_(disposition|type)|data|file|last_modified)|head|\\n        negotiate_(charset|content_type|language)|chunked_decode|cache_(etag|last_modified)|throttle|\\n        inflate|deflate|date|post_(data|fields)|put_(data|file|stream)|persistent_handles_(count|clean|ident)|\\n        parse_(cookie|headers|message|params)|redirect|request(_(method_(exists|name|(un)?register)|body_encode))?|\\n        get(_request_(headers|body(_stream)?))?|match_(etag|modified|request_header)|build_(cookie|str|url))|\\n  ob_(etag|deflate|inflate)handler\\n)\\\\b\",\n          \"name\": \"support.function.http.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(iconv(_(str(pos|len|rpos)|substr|(get|set)_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\\\b\",\n          \"name\": \"support.function.iconv.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\biis_((start|stop)_(service|server)|set_(script_map|server_rights|dir_security|app_settings)|(add|remove)_server|get_(script_map|service_state|server_(rights|by_(comment|path))|dir_security))\\\\b\",\n          \"name\": \"support.function.iisfunc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  iptc(embed|parse)|(jpeg|png)2wbmp|gd_info|getimagesize(fromstring)?|\\n  image(s[xy]|scale|(char|string)(up)?|set(style|thickness|tile|interpolation|pixel|brush)|savealpha|\\n        convolution|copy(resampled|resized|merge(gray)?)?|colors(forindex|total)|\\n        color(set|closest(alpha|hwb)?|transparent|deallocate|(allocate|exact|resolve)(alpha)?|at|match)|\\n        crop(auto)?|create(truecolor|from(string|jpeg|png|wbmp|webp|gif|gd(2(part)?)?|xpm|xbm))?|\\n        types|ttf(bbox|text)|truecolortopalette|istruecolor|interlace|2wbmp|destroy|dashedline|jpeg|\\n        _type_to_(extension|mime_type)|ps(slantfont|text|(encode|extend|free|load)font|bbox)|png|polygon|\\n        palette(copy|totruecolor)|ellipse|ft(text|bbox)|filter|fill|filltoborder|\\n        filled(arc|ellipse|polygon|rectangle)|font(height|width)|flip|webp|wbmp|line|loadfont|layereffect|\\n        antialias|affine(matrix(concat|get))?|alphablending|arc|rotate|rectangle|gif|gd(2)?|gammacorrect|\\n        grab(screen|window)|xbm)\\n)\\\\b\",\n          \"name\": \"support.function.image.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  sys_get_temp_dir|set_(time_limit|include_path|magic_quotes_runtime)|cli_(get|set)_process_title|\\n  ini_(alter|get(_all)?|restore|set)|zend_(thread_id|version|logo_guid)|dl|php(credits|info|version)|\\n  php_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|putenv|extension_loaded|version_compare|\\n  assert(_options)?|restore_include_path|gc_(collect_cycles|disable|enable(d)?)|getopt|\\n  get_(cfg_var|current_user|defined_constants|extension_funcs|include_path|included_files|loaded_extensions|\\n       magic_quotes_(gpc|runtime)|required_files|resources)|\\n  get(env|lastmod|rusage|my(inode|[gup]id))|\\n  memory_get_(peak_)?usage|main|magic_quotes_runtime\\n)\\\\b\",\n          \"name\": \"support.function.info.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nibase_(\\n  set_event_handler|service_(attach|detach)|server_info|num_(fields|params)|name_result|connect|\\n  commit(_ret)?|close|trans|delete_user|drop_db|db_info|pconnect|param_info|prepare|err(code|msg)|\\n  execute|query|field_info|fetch_(assoc|object|row)|free_(event_handler|query|result)|wait_event|\\n  add_user|affected_rows|rollback(_ret)?|restore|gen_id|modify_user|maintain_db|backup|\\n  blob_(cancel|close|create|import|info|open|echo|add|get)\\n)\\\\b\",\n          \"name\": \"support.function.interbase.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  normalizer_(normalize|is_normalized)|idn_to_(unicode|utf8|ascii)|\\n  numfmt_(set_(symbol|(text_)?attribute|pattern)|create|(parse|format)(_currency)?|\\n          get_(symbol|(text_)?attribute|pattern|error_(code|message)|locale))|\\n  collator_(sort(_with_sort_keys)?|set_(attribute|strength)|compare|create|asort|\\n            get_(strength|sort_key|error_(code|message)|locale|attribute))|\\n  transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|\\n  intl(cal|tz)_get_error_(code|message)|intl_(is_failure|error_name|get_error_(code|message))|\\n  datefmt_(set_(calendar|lenient|pattern|timezone(_id)?)|create|is_lenient|parse|format(_object)?|localtime|\\n           get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|\\n  locale_(set_default|compose|canonicalize|parse|filter_matches|lookup|accept_from_http|\\n          get_(script|display_(script|name|variant|language|region)|default|primary_language|keywords|all_variants|region))|\\n  resourcebundle_(create|count|locales|get(_(error_(code|message)))?)|\\n  grapheme_(str(i?str|r?i?pos|len)|substr|extract)|\\n  msgfmt_(set_pattern|create|(format|parse)(_message)?|get_(pattern|error_(code|message)|locale))\\n)\\\\b\",\n          \"name\": \"support.function.intl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bjson_(decode|encode|last_error(_msg)?)\\\\b\",\n          \"name\": \"support.function.json.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nldap_(\\n  start|tls|sort|search|sasl_bind|set_(option|rebind_proc)|(first|next)_(attribute|entry|reference)|\\n  connect|control_paged_result(_response)?|count_entries|compare|close|t61_to_8859|8859_to_t61|\\n  dn2ufn|delete|unbind|parse_(reference|result)|escape|errno|err2str|error|explode_dn|bind|\\n  free_result|list|add|rename|read|get_(option|dn|entries|values(_len)?|attributes)|modify(_batch)?|\\n  mod_(add|del|replace)\\n)\\\\b\",\n          \"name\": \"support.function.ldap.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\\\b\",\n          \"name\": \"support.function.libxml.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ezmlm_hash|mail)\\\\b\",\n          \"name\": \"support.function.mail.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  (a)?(cos|sin|tan)(h)?|sqrt|srand|hypot|hexdec|ceil|is_(nan|(in)?finite)|octdec|dec(hex|oct|bin)|deg2rad|\\n  pi|pow|exp(m1)?|floor|fmod|lcg_value|log(1(p|0))?|atan2|abs|round|rand|rad2deg|getrandmax|\\n  mt_(srand|rand|getrandmax)|max|min|bindec|base_convert\\n)\\\\b\",\n          \"name\": \"support.function.math.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmb_(\\n  str(cut|str|to(lower|upper)|istr|ipos|imwidth|pos|width|len|rchr|richr|ripos|rpos)|\\n  substitute_character|substr(_count)?|split|send_mail|http_(input|output)|check_encoding|\\n  convert_(case|encoding|kana|variables)|internal_encoding|output_handler|decode_(numericentity|mimeheader)|\\n  detect_(encoding|order)|parse_str|preferred_mime_name|encoding_aliases|encode_(numericentity|mimeheader)|\\n  ereg(i(_replace)?)?|ereg_(search(_(get(pos|regs)|init|regs|(set)?pos))?|replace(_callback)?|match)|\\n  list_encodings|language|regex_(set_options|encoding)|get_info\\n)\\\\b\",\n          \"name\": \"support.function.mbstring.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  mcrypt_(\\n    cfb|create_iv|cbc|ofb|decrypt|encrypt|ecb|list_(algorithms|modes)|generic(_((de)?init|end))?|\\n    enc_(self_test|is_block_(algorithm|algorithm_mode|mode)|\\n    get_(supported_key_sizes|(block|iv|key)_size|(algorithms|modes)_name))|\\n    get_(cipher_name|(block|iv|key)_size)|\\n    module_(close|self_test|is_block_(algorithm|algorithm_mode|mode)|open|\\n            get_(supported_key_sizes|algo_(block|key)_size)))|\\n  mdecrypt_generic\\n)\\\\b\",\n          \"name\": \"support.function.mcrypt.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmemcache_debug\\\\b\",\n          \"name\": \"support.function.memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\\\b\",\n          \"name\": \"support.function.mhash.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_(decode|encode))\\\\b\",\n          \"name\": \"support.function.mongo.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmysql_(\\n  stat|set_charset|select_db|num_(fields|rows)|connect|client_encoding|close|create_db|escape_string|\\n  thread_id|tablename|insert_id|info|data_seek|drop_db|db_(name|query)|unbuffered_query|pconnect|ping|\\n  errno|error|query|field_(seek|name|type|table|flags|len)|fetch_(object|field|lengths|assoc|array|row)|\\n  free_result|list_(tables|dbs|processes|fields)|affected_rows|result|real_escape_string|\\n  get_(client|host|proto|server)_info\\n)\\\\b\",\n          \"name\": \"support.function.mysql.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmysqli_(\\n  ssl_set|store_result|stat|send_(query|long_data)|set_(charset|opt|local_infile_(default|handler))|\\n  stmt_(store_result|send_long_data|next_result|close|init|data_seek|prepare|execute|fetch|free_result|\\n        attr_(get|set)|result_metadata|reset|get_(result|warnings)|more_results|bind_(param|result))|\\n  select_db|slave_query|savepoint|next_result|change_user|character_set_name|connect|commit|\\n  client_encoding|close|thread_safe|init|options|(enable|disable)_(reads_from_master|rpl_parse)|\\n  dump_debug_info|debug|data_seek|use_result|ping|poll|param_count|prepare|escape_string|execute|\\n  embedded_server_(start|end)|kill|query|field_seek|free_result|autocommit|rollback|report|refresh|\\n  fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)|\\n  release_savepoint|reap_async_query|real_(connect|escape_string|query)|more_results|multi_query|\\n  get_(charset|connection_stats|client_(stats|info|version)|cache_stats|warnings|links_stats|metadata)|\\n  master_query|bind_(param|result)|begin_transaction\\n)\\\\b\",\n          \"name\": \"support.function.mysqli.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_memcache_(set|get_config)\\\\b\",\n          \"name\": \"support.function.mysqlnd-memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\\\\b\",\n          \"name\": \"support.function.mysqlnd-ms.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|core_stats|cache_info|query_trace_log|available_handlers))\\\\b\",\n          \"name\": \"support.function.mysqlnd-qc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_uh_(set_(statement|connection)_proxy|convert_to_mysqlnd)\\\\b\",\n          \"name\": \"support.function.mysqlnd-uh.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  syslog|socket_(set_(blocking|timeout)|get_status)|set(raw)?cookie|http_response_code|openlog|\\n  headers_(list|sent)|header(_(register_callback|remove))?|checkdnsrr|closelog|inet_(ntop|pton)|ip2long|\\n  openlog|dns_(check_record|get_(record|mx))|define_syslog_variables|(p)?fsockopen|long2ip|\\n  get(servby(name|port)|host(name|by(name(l)?|addr))|protoby(name|number)|mxrr)\\n)\\\\b\",\n          \"name\": \"support.function.network.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bnsapi_(virtual|response_headers|request_headers)\\\\b\",\n          \"name\": \"support.function.nsapi.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  oci(statementtype|setprefetch|serverversion|savelob(file)?|numcols|new(collection|cursor|descriptor)|nlogon|\\n      column(scale|size|name|type(raw)?|isnull|precision)|coll(size|trim|assign(elem)?|append|getelem|max)|commit|\\n      closelob|cancel|internaldebug|definebyname|plogon|parse|error|execute|fetch(statement|into)?|\\n      free(statement|collection|cursor|desc)|write(temporarylob|lobtofile)|loadlob|log(on|off)|rowcount|rollback|\\n      result|bindbyname)|\\n  oci_(statement_type|set_(client_(info|identifier)|prefetch|edition|action|module_name)|server_version|\\n       num_(fields|rows)|new_(connect|collection|cursor|descriptor)|connect|commit|client_version|close|cancel|\\n       internal_debug|define_by_name|pconnect|password_change|parse|error|execute|bind_(array_)?by_name|\\n       field_(scale|size|name|type(_raw)?|is_null|precision)|fetch(_(object|assoc|all|array|row))?|\\n       free_(statement|descriptor)|lob_(copy|is_equal)|rollback|result|get_implicit_resultset)\\n)\\\\b\",\n          \"name\": \"support.function.oci8.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bopcache_(compile_file|invalidate|reset|get_(status|configuration))\\\\b\",\n          \"name\": \"support.function.opcache.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nopenssl_(\\n  sign|spki_(new|export(_challenge)?|verify)|seal|csr_(sign|new|export(_to_file)?|get_(subject|public_key))|\\n  cipher_iv_length|open|dh_compute_key|digest|decrypt|public_(decrypt|encrypt)|encrypt|error_string|\\n  pkcs12_(export(_to_file)?|read)|pkcs7_(sign|decrypt|encrypt|verify)|verify|free_key|random_pseudo_bytes|\\n  pkey_(new|export(_to_file)?|free|get_(details|public|private))|private_(decrypt|encrypt)|pbkdf2|\\n  get_((cipher|md)_methods|cert_locations|(public|private)key)|\\n  x509_(check_private_key|checkpurpose|parse|export(_to_file)?|fingerprint|free|read)\\n)\\\\b\",\n          \"name\": \"support.function.openssl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  output_(add_rewrite_var|reset_rewrite_vars)|flush|\\n  ob_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|gzhandler|\\n      get_(status|contents|clean|flush|length|level))\\n)\\\\b\",\n          \"name\": \"support.function.output.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpassword_(hash|needs_rehash|verify|get_info)\\\\b\",\n          \"name\": \"support.function.password.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npcntl_(\\n  strerror|signal(_dispatch)?|sig(timedwait|procmask|waitinfo)|setpriority|errno|exec|fork|\\n  w(stopsig|termsig|if(stopped|signaled|exited))|wait(pid)?|alarm|getpriority|get_last_error\\n)\\\\b\",\n          \"name\": \"support.function.pcntl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npg_(\\n  socket|send_(prepare|execute|query(_params)?)|set_(client_encoding|error_verbosity)|select|host|\\n  num_(fields|rows)|consume_input|connection_(status|reset|busy)|connect(_poll)?|convert|copy_(from|to)|\\n  client_encoding|close|cancel_query|tty|transaction_status|trace|insert|options|delete|dbname|untrace|\\n  unescape_bytea|update|pconnect|ping|port|put_line|parameter_status|prepare|version|query(_params)?|\\n  escape_(string|identifier|literal|bytea)|end_copy|execute|flush|free_result|last_(notice|error|oid)|\\n  field_(size|num|name|type(_oid)?|table|is_null|prtlen)|affected_rows|result_(status|seek|error(_field)?)|\\n  fetch_(object|assoc|all(_columns)?|array|row|result)|get_(notify|pid|result)|meta_data|\\n  lo_(seek|close|create|tell|truncate|import|open|unlink|export|write|read(_all)?)|\\n)\\\\b\",\n          \"name\": \"support.function.pgsql.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(virtual|getallheaders|apache_((get|set)env|note|child_terminate|lookup_uri|response_headers|reset_timeout|request_headers|get_(version|modules)))\\\\b\",\n          \"name\": \"support.function.php_apache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdom_import_simplexml\\\\b\",\n          \"name\": \"support.function.php_dom.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nftp_(\\n  ssl_connect|systype|site|size|set_option|nlist|nb_(continue|f?(put|get))|ch(dir|mod)|connect|cdup|close|\\n  delete|put|pwd|pasv|exec|quit|f(put|get)|login|alloc|rename|raw(list)?|rmdir|get(_option)?|mdtm|mkdir\\n)\\\\b\",\n          \"name\": \"support.function.php_ftp.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nimap_(\\n  (create|delete|list|rename|scan)(mailbox)?|status|sort|subscribe|set_quota|set(flag_full|acl)|search|savebody|\\n  num_(recent|msg)|check|close|clearflag_full|thread|timeout|open|header(info)?|headers|append|alerts|reopen|\\n  8bit|unsubscribe|undelete|utf7_(decode|encode)|utf8|uid|ping|errors|expunge|qprint|gc|\\n  fetch(structure|header|text|mime|body)|fetch_overview|lsub|list(scan|subscribed)|last_error|\\n  rfc822_(parse_(headers|adrlist)|write_address)|get(subscribed|acl|mailboxes)|get_quota(root)?|\\n  msgno|mime_header_decode|mail_(copy|compose|move)|mail|mailboxmsginfo|binary|body(struct)?|base64\\n)\\\\b\",\n          \"name\": \"support.function.php_imap.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmssql_(\\n  select_db|num_(fields|rows)|next_result|connect|close|init|data_seek|pconnect|execute|query|\\n  field_(seek|name|type|length)|fetch_(object|field|assoc|array|row|batch)|free_(statement|result)|\\n  rows_affected|result|guid_string|get_last_message|min_(error|message)_severity|bind\\n)\\\\b\",\n          \"name\": \"support.function.php_mssql.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nodbc_(\\n  statistics|specialcolumns|setoption|num_(fields|rows)|next_result|connect|columns|columnprivileges|commit|\\n  cursor|close(_all)?|tables|tableprivileges|do|data_source|pconnect|primarykeys|procedures|procedurecolumns|\\n  prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result|\\n  fetch_(into|object|array|row)|longreadlen|autocommit|rollback|result(_all)?|gettypeinfo|binmode\\n)\\\\b\",\n          \"name\": \"support.function.php_odbc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\\\b\",\n          \"name\": \"support.function.php_pcre.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\\\b\",\n          \"name\": \"support.function.php_spl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bzip_(close|open|entry_(name|compressionmethod|compressedsize|close|open|filesize|read)|read)\\\\b\",\n          \"name\": \"support.function.php_zip.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nposix_(\\n  strerror|set(s|e?u|[ep]?g)id|ctermid|ttyname|times|isatty|initgroups|uname|errno|kill|access|\\n  get(sid|cwd|uid|pid|ppid|pwnam|pwuid|pgid|pgrp|euid|egid|login|rlimit|gid|grnam|groups|grgid)|\\n  get_last_error|mknod|mkfifo\\n)\\\\b\",\n          \"name\": \"support.function.posix.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bset(thread|proc)title\\\\b\",\n          \"name\": \"support.function.proctitle.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npspell_(\\n  store_replacement|suggest|save_wordlist|new(_(config|personal))?|check|clear_session|\\n  config_(save_repl|create|ignore|(data|dict)_dir|personal|runtogether|repl|mode)|add_to_(session|personal)\\n)\\\\b\",\n          \"name\": \"support.function.pspell.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\breadline(_(completion_function|clear_history|callback_(handler_(install|remove)|read_char)|info|on_new_line|write_history|list_history|add_history|redisplay|read_history))?\\\\b\",\n          \"name\": \"support.function.readline.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brecode(_(string|file))?\\\\b\",\n          \"name\": \"support.function.recode.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brrd(c_disconnect|_(create|tune|info|update|error|version|first|fetch|last(update)?|restore|graph|xport))\\\\b\",\n          \"name\": \"support.function.rrd.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  shm_((get|has|remove|put)_var|detach|attach|remove)|sem_(acquire|release|remove|get)|ftok|\\n  msg_((get|remove|set|stat)_queue|send|queue_exists|receive)\\n)\\\\b\",\n          \"name\": \"support.function.sem.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsession_(\\n  status|start|set_(save_handler|cookie_params)|save_path|name|commit|cache_(expire|limiter)|\\n  is_registered|id|destroy|decode|unset|unregister|encode|write_close|abort|reset|register(_shutdown)?|\\n  regenerate_id|get_cookie_params|module_name\\n)\\\\b\",\n          \"name\": \"support.function.session.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bshmop_(size|close|open|delete|write|read)\\\\b\",\n          \"name\": \"support.function.shmop.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsimplexml_(import_dom|load_(string|file))\\\\b\",\n          \"name\": \"support.function.simplexml.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  snmp(walk(oid)?|realwalk|get(next)?|set)|\\n  snmp_(set_(valueretrieval|quick_print|enum_print|oid_(numeric_print|output_format))|read_mib|\\n        get_(valueretrieval|quick_print))|\\n  snmp[23]_(set|walk|real_walk|get(next)?)\\n)\\\\b\",\n          \"name\": \"support.function.snmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(is_soap_fault|use_soap_error_handler)\\\\b\",\n          \"name\": \"support.function.soap.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsocket_(\\n  shutdown|strerror|send(to|msg)?|set_((non)?block|option)|select|connect|close|clear_error|bind|\\n  create(_(pair|listen))?|cmsg_space|import_stream|write|listen|last_error|accept|recv(from|msg)?|\\n  read|get(peer|sock)name|get_option\\n)\\\\b\",\n          \"name\": \"support.function.sockets.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsqlite_(\\n  single_query|seek|has_(more|prev)|num_(fields|rows)|next|changes|column|current|close|\\n  create_(aggregate|function)|open|unbuffered_query|udf_(decode|encode)_binary|popen|prev|\\n  escape_string|error_string|exec|valid|key|query|field_name|factory|\\n  fetch_(string|single|column_types|object|all|array)|lib(encoding|version)|\\n  last_(insert_rowid|error)|array_query|rewind|busy_timeout\\n)\\\\b\",\n          \"name\": \"support.function.sqlite.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsqlsrv_(\\n  send_stream_data|server_info|has_rows|num_(fields|rows)|next_result|connect|configure|commit|\\n  client_info|close|cancel|prepare|errors|execute|query|field_metadata|fetch(_(array|object))?|\\n  free_stmt|rows_affected|rollback|get_(config|field)|begin_transaction\\n)\\\\b\",\n          \"name\": \"support.function.sqlsrv.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nstats_(\\n  harmonic_mean|covariance|standard_deviation|skew|\\n  cdf_(noncentral_(chisquare|f)|negative_binomial|chisquare|cauchy|t|uniform|poisson|exponential|f|weibull|\\n       logistic|laplace|gamma|binomial|beta)|\\n  stat_(noncentral_t|correlation|innerproduct|independent_t|powersum|percentile|paired_t|gennch|binomial_coef)|\\n  dens_(normal|negative_binomial|chisquare|cauchy|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|\\n        weibull|logistic|laplace|gamma|beta)|\\n  den_uniform|variance|kurtosis|absolute_deviation|\\n  rand_(setall|phrase_to_seeds|ranf|get_seeds|\\n        gen_(noncentral_[ft]|noncenral_chisquare|normal|chisquare|t|int|\\n             i(uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta))\\n)\\\\b\",\n          \"name\": \"support.function.stats.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  set_socket_blocking|\\n  stream_(socket_(shutdown|sendto|server|client|pair|enable_crypto|accept|recvfrom|get_name)|\\n    set_(chunk_size|timeout|(read|write)_buffer|blocking)|select|notification_callback|supports_lock|\\n    context_(set_(option|default|params)|create|get_(options|default|params))|copy_to_stream|is_local|\\n    encoding|filter_(append|prepend|register|remove)|wrapper_((un)?register|restore)|\\n    resolve_include_path|register_wrapper|get_(contents|transports|filters|wrappers|line|meta_data)|\\n    bucket_(new|prepend|append|make_writeable)\\n  )\\n)\\\\b\",\n          \"name\": \"support.function.streamsfuncs.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  money_format|md5(_file)?|metaphone|bin2hex|sscanf|sha1(_file)?|\\n  str(str|c?spn|n(at)?(case)?cmp|chr|coll|(case)?cmp|to(upper|lower)|tok|tr|istr|pos|pbrk|len|rchr|ri?pos|rev)|\\n  str_(getcsv|ireplace|pad|repeat|replace|rot13|shuffle|split|word_count)|\\n  strip(c?slashes|os)|strip_tags|similar_text|soundex|substr(_(count|compare|replace))?|setlocale|\\n  html(specialchars(_decode)?|entities)|html_entity_decode|hex2bin|hebrev(c)?|number_format|nl2br|nl_langinfo|\\n  chop|chunk_split|chr|convert_(cyr_string|uu(decode|encode))|count_chars|crypt|crc32|trim|implode|ord|\\n  uc(first|words)|join|parse_str|print(f)?|echo|explode|v?[fs]?printf|quoted_printable_(decode|encode)|\\n  quotemeta|wordwrap|lcfirst|[lr]trim|localeconv|levenshtein|addc?slashes|get_html_translation_table\\n)\\\\b\",\n          \"name\": \"support.function.string.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsybase_(\\n  set_message_handler|select_db|num_(fields|rows)|connect|close|deadlock_retry_count|data_seek|\\n  unbuffered_query|pconnect|query|field_seek|fetch_(object|field|assoc|array|row)|free_result|\\n  affected_rows|result|get_last_message|min_(client|error|message|server)_severity\\n)\\\\b\",\n          \"name\": \"support.function.sybase.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(taint|is_tainted|untaint)\\\\b\",\n          \"name\": \"support.function.taint.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  tidy_((get|set)opt|set_encoding|save_config|config_count|clean_repair|is_(xhtml|xml)|diagnose|\\n        (access|error|warning)_count|load_config|reset_config|(parse|repair)_(string|file)|\\n        get_(status|html(_ver)?|head|config|output|opt_doc|root|release|body))|\\n  ob_tidyhandler\\n)\\\\b\",\n          \"name\": \"support.function.tidy.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\btoken_(name|get_all)\\\\b\",\n          \"name\": \"support.function.tokenizer.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ntrader_(\\n  stoch(f|r|rsi)?|stddev|sin(h)?|sum|sub|set_(compat|unstable_period)|sqrt|sar(ext)?|sma|\\n  ht_(sine|trend(line|mode)|dc(period|phase)|phasor)|natr|cci|cos(h)?|correl|\\n  cdl(shootingstar|shortline|sticksandwich|stalledpattern|spinningtop|separatinglines|\\n      hikkake(mod)?|highwave|homingpigeon|hangingman|harami(cross)?|hammer|concealbabyswall|\\n      counterattack|closingmarubozu|thrusting|tasukigap|takuri|tristar|inneck|invertedhammer|\\n      identical3crows|2crows|onneck|doji(star)?|darkcloudcover|dragonflydoji|unique3river|\\n      upsidegap2crows|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|\\n      piercing|engulfing|evening(doji)?star|kicking(bylength)?|longline|longleggeddoji|\\n      ladderbottom|advanceblock|abandonedbaby|risefall3methods|rickshawman|gapsidesidewhite|\\n      gravestonedoji|xsidegap3methods|morning(doji)?star|mathold|matchinglow|marubozu|\\n      belthold|breakaway)|\\n  ceil|cmo|tsf|typprice|t3|tema|tan(h)?|trix|trima|trange|obv|div|dema|dx|ultosc|ppo|\\n  plus_d[im]|errno|exp|ema|var|kama|floor|wclprice|willr|wma|ln|log10|bop|beta|bbands|\\n  linearreg(_(slope|intercept|angle))?|asin|acos|atan|atr|adosc|ad|add|adx(r)?|apo|avgprice|\\n  aroon(osc)?|rsi|roc|rocp|rocr(100)?|get_(compat|unstable_period)|min(index)?|minus_d[im]|\\n  minmax(index)?|mid(point|price)|mom|mult|medprice|mfi|macd(ext|fix)?|mavp|max(index)?|ma(ma)?\\n)\\\\b\",\n          \"name\": \"support.function.trader.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\buopz_(copy|compose|implement|overload|delete|undefine|extend|function|flags|restore|rename|redefine|backup)\\\\b\",\n          \"name\": \"support.function.uopz.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(http_build_query|(raw)?url(decode|encode)|parse_url|get_(headers|meta_tags)|base64_(decode|encode))\\\\b\",\n          \"name\": \"support.function.url.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  strval|settype|serialize|(bool|double|float)val|debug_zval_dump|intval|import_request_variables|isset|\\n  is_(scalar|string|null|numeric|callable|int(eger)?|object|double|float|long|array|resource|real|bool)|\\n  unset|unserialize|print_r|empty|var_(dump|export)|gettype|get_(defined_vars|resource_type)\\n)\\\\b\",\n          \"name\": \"support.function.var.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bwddx_(serialize_(value|vars)|deserialize|packet_(start|end)|add_vars)\\\\b\",\n          \"name\": \"support.function.wddx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bxhprof_(sample_)?(disable|enable)\\\\b\",\n          \"name\": \"support.function.xhprof.php\"\n        },\n        {\n          \"match\": \"(?xi)\\n\\\\b\\n(\\n  utf8_(decode|encode)|\\n  xml_(set_((notation|(end|start)_namespace|unparsed_entity)_decl_handler|\\n            (character_data|default|element|external_entity_ref|processing_instruction)_handler|object)|\\n       parse(_into_struct)?|parser_((get|set)_option|create(_ns)?|free)|error_string|\\n       get_(current_((column|line)_number|byte_index)|error_code))\\n)\\\\b\",\n          \"name\": \"support.function.xml.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nxmlrpc_(\\n  server_(call_method|create|destroy|add_introspection_data|register_(introspection_callback|method))|\\n  is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|(get|set)_type\\n)\\\\b\",\n          \"name\": \"support.function.xmlrpc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nxmlwriter_(\\n  (end|start|write)_(comment|cdata|dtd(_(attlist|entity|element))?|document|pi|attribute|element)|\\n  (start|write)_(attribute|element)_ns|write_raw|set_indent(_string)?|text|output_memory|open_(memory|uri)|\\n  full_end_element|flush|\\n)\\\\b\",\n          \"name\": \"support.function.xmlwriter.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  zlib_(decode|encode|get_coding_type)|readgzfile|\\n  gz(seek|compress|close|tell|inflate|open|decode|deflate|uncompress|puts|passthru|encode|eof|file|\\n     write|rewind|read|getc|getss?)\\n)\\\\b\",\n          \"name\": \"support.function.zlib.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bis_int(eger)?\\\\b\",\n          \"name\": \"support.function.alias.php\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+(?=switch\\\\b)\"\n        },\n        {\n          \"begin\": \"\\\\bswitch\\\\b(?!\\\\s*\\\\(.*\\\\)\\\\s*:)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.switch.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.section.switch-block.end.bracket.curly.php\"\n            }\n          },\n          \"name\": \"meta.switch-statement.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.switch-expression.begin.bracket.round.php\"\n                }\n              },\n              \"end\": \"\\\\)|(?=\\\\?>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.switch-expression.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.section.switch-block.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"(?=}|\\\\?>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"use-inner\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.use-as.php\"\n            }\n          },\n          \"end\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.alias.php\"\n            }\n          }\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"var_basic\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\b\",\n          \"name\": \"variable.other.php\"\n        }\n      ]\n    },\n    \"var_global\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\\\b\",\n      \"name\": \"variable.other.global.php\"\n    },\n    \"var_global_safer\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((GLOBALS|_(ENV|SERVER|SESSION)))\",\n      \"name\": \"variable.other.global.safer.php\"\n    },\n    \"var_language\": {\n      \"match\": \"(\\\\$)this\\\\b\",\n      \"name\": \"variable.language.this.php\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      }\n    },\n    \"variable-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            },\n            \"7\": {\n              \"name\": \"constant.numeric.index.php\"\n            },\n            \"8\": {\n              \"name\": \"variable.other.index.php\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"10\": {\n              \"name\": \"string.unquoted.index.php\"\n            },\n            \"11\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"match\": \"(?xi)\\n((\\\\$)(?<name>[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*))\\n(?:\\n  (->)(\\\\g<name>)\\n  |\\n  (\\\\[)(?:(\\\\d+)|((\\\\$)\\\\g<name>)|([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*))(\\\\])\\n)?\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)((\\\\${)(?<name>[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(}))\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_language\"\n        },\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"include\": \"#var_basic\"\n        },\n        {\n          \"begin\": \"\\\\${(?=.*?})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/php-html.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-php/blob/master/grammars/html.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-php/commit/ff64523c94c014d68f5dec189b05557649c5872a\",\n  \"name\": \"php-html\",\n  \"scopeName\": \"text.html.php\",\n  \"injections\": {\n    \"L:meta.embedded.php.blade\": {\n      \"patterns\": [\n        {\n          \"include\": \"text.html.basic\"\n        },\n        {\n          \"include\": \"text.html.php.blade#blade\"\n        }\n      ]\n    },\n    \"text.html.php - (meta.embedded | meta.tag), L:((text.html.php meta.tag) - (meta.embedded.block.php | meta.embedded.line.php)), L:(source.js - (meta.embedded.block.php | meta.embedded.line.php)), L:(source.css - (meta.embedded.block.php | meta.embedded.line.php))\": {\n      \"patterns\": [\n        {\n          \"include\": \"#php-tag\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\A#!\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.php\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"comment.line.shebang.php\"\n    },\n    {\n      \"include\": \"text.html.derivative\"\n    }\n  ],\n  \"repository\": {\n    \"php-tag\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<\\\\?(?i:php|=)?(?![^?]*\\\\?>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            }\n          },\n          \"end\": \"(\\\\?)>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.embedded.block.php\",\n          \"contentName\": \"source.php\",\n          \"patterns\": [\n            {\n              \"include\": \"source.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\\\\?(?i:php|=)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            }\n          },\n          \"end\": \"(\\\\?)>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.embedded.line.php\",\n          \"contentName\": \"source.php\",\n          \"patterns\": [\n            {\n              \"include\": \"source.php\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/php.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-php/blob/master/grammars/php.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-php/commit/eb28b8aea1214dcbc732f3d9b9ed20c089c648bd\",\n  \"scopeName\": \"source.php\",\n  \"patterns\": [\n    {\n      \"include\": \"#attribute\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"match\": \"(?i)(?:^|(?<=<\\\\?php))\\\\s*(namespace)\\\\s+([a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)(?=\\\\s*;)\",\n      \"name\": \"meta.namespace.php\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.namespace.php\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.namespace.php\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\\",\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"begin\": \"(?i)(?:^|(?<=<\\\\?php))\\\\s*(namespace)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.namespace.php\"\n        }\n      },\n      \"end\": \"(?<=})|(?=\\\\?>)\",\n      \"name\": \"meta.namespace.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"(?i)[a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+\",\n          \"name\": \"entity.name.type.namespace.php\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\",\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.namespace.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.namespace.end.bracket.curly.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^\\\\s]+\",\n          \"name\": \"invalid.illegal.identifier.php\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\s+(?=use\\\\b)\"\n    },\n    {\n      \"begin\": \"(?i)\\\\buse\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.use.php\"\n        }\n      },\n      \"end\": \"(?<=})|(?=;)|(?=\\\\?>)\",\n      \"name\": \"meta.use.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(const|function)\\\\b\",\n          \"name\": \"storage.type.${1:/downcase}.php\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.use.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.use.end.bracket.curly.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#scope-resolution\"\n            },\n            {\n              \"match\": \"(?xi)\\n\\\\b(as)\\n\\\\s+(final|abstract|public|private|protected|static)\\n\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.use-as.php\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.php\"\n                },\n                \"3\": {\n                  \"name\": \"entity.other.alias.php\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?xi)\\n\\\\b(as)\\n\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.use-as.php\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"^(?:final|abstract|public|private|protected|static)$\",\n                      \"name\": \"storage.modifier.php\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"entity.other.alias.php\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"(?i)\\\\b(insteadof)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.use-insteadof.php\"\n                },\n                \"2\": {\n                  \"name\": \"support.class.php\"\n                }\n              }\n            },\n            {\n              \"match\": \";\",\n              \"name\": \"punctuation.terminator.expression.php\"\n            },\n            {\n              \"include\": \"#use-inner\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#use-inner\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)\\n\\\\b(trait)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.trait.php\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.trait.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.trait.end.bracket.curly.php\"\n        }\n      },\n      \"name\": \"meta.trait.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.trait.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"(?=}|\\\\?>)\",\n          \"contentName\": \"meta.trait.body.php\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)\\n\\\\b(interface)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.interface.php\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.interface.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.interface.end.bracket.curly.php\"\n        }\n      },\n      \"name\": \"meta.interface.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#interface-extends\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.interface.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"(?=}|\\\\?>)\",\n          \"contentName\": \"meta.interface.body.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-constant\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)\\n\\\\b(enum)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\n(?: \\\\s* (:) \\\\s* (int | string) \\\\b )?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.enum.php\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.enum.php\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.return-value.php\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.type.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.enum.end.bracket.curly.php\"\n        }\n      },\n      \"name\": \"meta.enum.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#class-implements\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.enum.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"(?=}|\\\\?>)\",\n          \"contentName\": \"meta.enum.body.php\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)\\\\b(case)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.php\"\n                },\n                \"2\": {\n                  \"name\": \"constant.enum.php\"\n                }\n              }\n            },\n            {\n              \"include\": \"#class-constant\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)\\n(?:\\n  \\\\b(?:(abstract|final)\\\\s+)?(class)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\n  |\\\\b(new)\\\\b\\\\s*(\\\\#\\\\[.*\\\\])?\\\\s*\\\\b(class)\\\\b # anonymous class\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.${1:/downcase}.php\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.php\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.class.php\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.new.php\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"storage.type.class.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.class.end.bracket.curly.php\"\n        }\n      },\n      \"name\": \"meta.class.php\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=class)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#class-extends\"\n        },\n        {\n          \"include\": \"#class-implements\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.class.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"(?=}|\\\\?>)\",\n          \"contentName\": \"meta.class.body.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-constant\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"include\": \"#match_statement\"\n    },\n    {\n      \"include\": \"#switch_statement\"\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(yield\\\\s+from)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.yield-from.php\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?x)\\n\\\\b(\\n  break|case|continue|declare|default|die|do|\\n  else(if)?|end(declare|for(each)?|if|switch|while)|exit|\\n  for(each)?|if|return|switch|use|while|yield\\n)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.${1:/downcase}.php\"\n        }\n      }\n    },\n    {\n      \"begin\": \"(?i)\\\\b((?:require|include)(?:_once)?)(\\\\s+|(?=\\\\())\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.include.php\"\n        }\n      },\n      \"end\": \"(?=\\\\s|;|$|\\\\?>)\",\n      \"name\": \"meta.include.php\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(catch)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.exception.catch.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n        }\n      },\n      \"name\": \"meta.catch.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n([a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*\\\\|\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)*) # union or single exception class\\n\\\\s*\\n((\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?           # Variable\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\|\",\n                  \"name\": \"punctuation.separator.delimiter.php\"\n                },\n                {\n                  \"begin\": \"(?i)(?=[\\\\\\\\a-z_\\\\x{7f}-\\\\x{10ffff}])\",\n                  \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"support.class.exception.php\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#namespace\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(catch|try|throw|exception|finally)\\\\b\",\n      \"name\": \"keyword.control.exception.php\"\n    },\n    {\n      \"begin\": \"(?i)\\\\b(function)\\\\s*(?=&?\\\\s*\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.php\"\n        }\n      },\n      \"end\": \"(?=\\\\s*{)\",\n      \"name\": \"meta.function.closure.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(&)?\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"contentName\": \"meta.function.parameters.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(use)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.function.use.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function.closure.use.php\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.delimiter.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.php\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.reference.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.variable.php\"\n                }\n              },\n              \"match\": \"(?i)((?:(&)\\\\s*)?(\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(?=,|\\\\))\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n(:)\\\\s*\\n(\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n)\\n(?=\\\\s*(?:{|/[/*]|\\\\#|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.return-value.php\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?i)\\\\b(fn)\\\\s*(?=&?\\\\s*\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.php\"\n        }\n      },\n      \"end\": \"=>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arrow.php\"\n        }\n      },\n      \"name\": \"meta.function.closure.php\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(&)\\\\s*)?(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"contentName\": \"meta.function.parameters.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n(:)\\\\s*\\n(\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n)\\n(?=\\\\s*(?:=>|/[/*]|\\\\#|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.return-value.php\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n((?:(?:final|abstract|public|private|protected)\\\\s+)*)\\n(function)\\\\s+(__construct)\\n\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"final|abstract|public|private|protected\",\n              \"name\": \"storage.modifier.php\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.php\"\n        },\n        \"3\": {\n          \"name\": \"support.function.constructor.php\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n        }\n      },\n      \"contentName\": \"meta.function.parameters.php\",\n      \"end\": \"(?xi)\\n(\\\\)) \\\\s* ( : \\\\s*\\n  (?:\\\\?\\\\s*)? (?!\\\\s) [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\\\\\s\\\\|&]+ (?<!\\\\s)\\n)?\\n(?=\\\\s*(?:{|/[/*]|\\\\#|$|;))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.return-type.php\"\n        }\n      },\n      \"name\": \"meta.function.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n((?:(?:public|private|protected|readonly)(?:\\\\s+|(?=\\\\?)))++)\\n(?: (\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n) \\\\s+ )?\\n((?:(&)\\\\s*)?(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"public|private|protected|readonly\",\n                  \"name\": \"storage.modifier.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n          \"name\": \"meta.function.parameter.promoted-property.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.assignment.php\"\n                }\n              },\n              \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parameter-default-types\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#function-parameters\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n((?:(?:final|abstract|public|private|protected|static)\\\\s+)*)\\n(function)\\\\s+\\n(?i:\\n  (__(?:call|construct|debugInfo|destruct|get|set|isset|unset|toString|\\n        clone|set_state|sleep|wakeup|autoload|invoke|callStatic|serialize|unserialize))\\n  |(?:(&)?\\\\s*([a-zA-Z_\\\\x{7f}-\\\\x{10ffff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}]*))\\n)\\n\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"final|abstract|public|private|protected|static\",\n              \"name\": \"storage.modifier.php\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.php\"\n        },\n        \"3\": {\n          \"name\": \"support.function.magic.php\"\n        },\n        \"4\": {\n          \"name\": \"storage.modifier.reference.php\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.function.php\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n        }\n      },\n      \"contentName\": \"meta.function.parameters.php\",\n      \"end\": \"(?xi)\\n(\\\\)) (?: \\\\s* (:) \\\\s* (\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n) )?\\n(?=\\\\s*(?:{|/[/*]|\\\\#|$|;))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.return-value.php\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(static)\\\\b\",\n              \"name\": \"storage.type.php\"\n            },\n            {\n              \"match\": \"\\\\b(never)\\\\b\",\n              \"name\": \"keyword.other.type.never.php\"\n            },\n            {\n              \"include\": \"#php-types\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.function.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?xi)\\n((?:(?:public|private|protected|static|readonly)(?:\\\\s+|(?=\\\\?)))++)                     # At least one modifier\\n(\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n)?\\n\\\\s+ ((\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)          # Variable name\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"public|private|protected|static|readonly\",\n              \"name\": \"storage.modifier.php\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#php-types\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"variable.other.php\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      }\n    },\n    {\n      \"include\": \"#invoke-call\"\n    },\n    {\n      \"include\": \"#scope-resolution\"\n    },\n    {\n      \"include\": \"#variables\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.construct.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n        }\n      },\n      \"match\": \"(array)(\\\\()(\\\\))\",\n      \"name\": \"meta.array.empty.php\"\n    },\n    {\n      \"begin\": \"(array)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.construct.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n        }\n      },\n      \"end\": \"\\\\)|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n        }\n      },\n      \"name\": \"meta.array.php\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?i)(\\\\()\\\\s*(array|real|double|float|int(?:eger)?|bool(?:ean)?|string|object|binary|unset)\\\\s*(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage-type.begin.bracket.round.php\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.php\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.storage-type.end.bracket.round.php\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?i)\\\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object|mixed)\\\\b\",\n      \"name\": \"storage.type.php\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(global|abstract|const|final|private|protected|public|static)\\\\b\",\n      \"name\": \"storage.modifier.php\"\n    },\n    {\n      \"include\": \"#object\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.expression.php\"\n    },\n    {\n      \"match\": \":\",\n      \"name\": \"punctuation.terminator.statement.php\"\n    },\n    {\n      \"include\": \"#heredoc\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"match\": \"(?i)\\\\bclone\\\\b\",\n      \"name\": \"keyword.other.clone.php\"\n    },\n    {\n      \"match\": \"\\\\.\\\\.\\\\.\",\n      \"name\": \"keyword.operator.spread.php\"\n    },\n    {\n      \"match\": \"\\\\.=?\",\n      \"name\": \"keyword.operator.string.php\"\n    },\n    {\n      \"match\": \"=>\",\n      \"name\": \"keyword.operator.key.php\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.reference.php\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.reference.php\"\n        }\n      },\n      \"match\": \"(?i)(\\\\=)(&)|(&)(?=[$a-z_])\"\n    },\n    {\n      \"match\": \"@\",\n      \"name\": \"keyword.operator.error-control.php\"\n    },\n    {\n      \"match\": \"===|==|!==|!=|<>\",\n      \"name\": \"keyword.operator.comparison.php\"\n    },\n    {\n      \"match\": \"=|\\\\+=|\\\\-=|\\\\*\\\\*?=|/=|%=|&=|\\\\|=|\\\\^=|<<=|>>=|\\\\?\\\\?=\",\n      \"name\": \"keyword.operator.assignment.php\"\n    },\n    {\n      \"match\": \"<=>|<=|>=|<|>\",\n      \"name\": \"keyword.operator.comparison.php\"\n    },\n    {\n      \"match\": \"\\\\-\\\\-|\\\\+\\\\+\",\n      \"name\": \"keyword.operator.increment-decrement.php\"\n    },\n    {\n      \"match\": \"\\\\-|\\\\+|\\\\*\\\\*?|/|%\",\n      \"name\": \"keyword.operator.arithmetic.php\"\n    },\n    {\n      \"match\": \"(?i)(!|&&|\\\\|\\\\|)|\\\\b(and|or|xor|as)\\\\b\",\n      \"name\": \"keyword.operator.logical.php\"\n    },\n    {\n      \"include\": \"#function-call\"\n    },\n    {\n      \"match\": \"<<|>>|~|\\\\^|&|\\\\|\",\n      \"name\": \"keyword.operator.bitwise.php\"\n    },\n    {\n      \"begin\": \"(?i)\\\\b(instanceof)\\\\s+(?=[\\\\\\\\$a-z_])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[^\\\\\\\\$a-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#instantiation\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.goto.php\"\n        },\n        \"2\": {\n          \"name\": \"support.other.php\"\n        }\n      },\n      \"match\": \"(?i)(goto)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.goto-label.php\"\n        }\n      },\n      \"match\": \"(?i)^\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*(?<!default))\\\\s*:(?!:)\"\n    },\n    {\n      \"include\": \"#string-backtick\"\n    },\n    {\n      \"include\": \"#ternary_shorthand\"\n    },\n    {\n      \"include\": \"#null_coalescing\"\n    },\n    {\n      \"include\": \"#ternary_expression\"\n    },\n    {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.begin.bracket.curly.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.curly.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.array.begin.php\"\n        }\n      },\n      \"end\": \"\\\\]|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.array.end.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.begin.bracket.round.php\"\n        }\n      },\n      \"end\": \"\\\\)|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.round.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.php\"\n    }\n  ],\n  \"repository\": {\n    \"attribute-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\\\\\\\\)\",\n          \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )?\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.attribute.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n(\\\\\\\\)?\\\\b(Attribute)\\\\b\",\n          \"name\": \"support.attribute.builtin.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)(?=[\\\\\\\\a-z_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )?\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.attribute.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attribute\": {\n      \"begin\": \"\\\\#\\\\[\",\n      \"end\": \"\\\\]\",\n      \"name\": \"meta.attribute.php\",\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"begin\": \"([a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute-name\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#attribute-name\"\n        }\n      ]\n    },\n    \"class-builtin\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n(\\\\\\\\)?\\\\b\\n(Attribute|(APC|Append)Iterator|Array(Access|Iterator|Object)\\n|Bad(Function|Method)CallException\\n|(Caching|CallbackFilter)Iterator|Collator|Collectable|Cond|Countable|CURLFile\\n|Date(Interval|Period|Time(Interface|Immutable|Zone)?)?|Directory(Iterator)?|DomainException\\n|DOM(Attr|CdataSection|CharacterData|Comment|Document(Fragment)?|Element|EntityReference\\n    |Implementation|NamedNodeMap|Node(list)?|ProcessingInstruction|Text|XPath)\\n|(Error)?Exception|EmptyIterator\\n|finfo\\n|Ev(Check|Child|Embed|Fork|Idle|Io|Loop|Periodic|Prepare|Signal|Stat|Timer|Watcher)?\\n|Event(Base|Buffer(Event)?|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?\\n|FANNConnection|(Filter|Filesystem)Iterator\\n|Gender\\\\\\\\Gender|GlobIterator|Gmagick(Draw|Pixel)?\\n|Haru(Annotation|Destination|Doc|Encoder|Font|Image|Outline|Page)\\n|Http((Inflate|Deflate)?Stream|Message|Request(Pool)?|Response|QueryString)\\n|HRTime\\\\\\\\(PerformanceCounter|StopWatch)\\n|Intl(Calendar|((CodePoint|RuleBased)?Break|Parts)?Iterator|DateFormatter|TimeZone)\\n|Imagick(Draw|Pixel(Iterator)?)?\\n|InfiniteIterator|InvalidArgumentException|Iterator(Aggregate|Iterator)?\\n|JsonSerializable\\n|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|(AttachedPicture)?Frame))\\n|Lapack|(Length|Locale|Logic)Exception|LimitIterator|Lua(Closure)?\\n|Mongo(BinData|Client|Code|Collection|CommandCursor|Cursor(Exception)?|Date|DB(Ref)?|DeleteBatch\\n      |Grid(FS(Cursor|File)?)|Id|InsertBatch|Int(32|64)|Log|Pool|Regex|ResultException|Timestamp\\n      |UpdateBatch|Write(Batch|ConcernException))?\\n|Memcache(d)?|MessageFormatter|MultipleIterator|Mutex\\n|mysqli(_(driver|stmt|warning|result))?\\n|MysqlndUh(Connection|PreparedStatement)\\n|NoRewindIterator|Normalizer|NumberFormatter\\n|OCI-(Collection|Lob)|OuterIterator|(OutOf(Bounds|Range)|Overflow)Exception\\n|ParentIterator|PDO(Statement)?|Phar(Data|FileInfo)?|php_user_filter|Pool\\n|QuickHash(Int(Set|StringHash)|StringIntHash)\\n|Recursive(Array|Caching|Directory|Fallback|Filter|Iterator|Regex|Tree)?Iterator\\n|Reflection(Class|Function(Abstract)?|Method|Object|Parameter|Property|(Zend)?Extension)?\\n|RangeException|Reflector|RegexIterator|ResourceBundle|RuntimeException|RRD(Creator|Graph|Updater)\\n|SAM(Connection|Message)|SCA(_(SoapProxy|LocalProxy))?\\n|SDO_(DAS_(ChangeSummary|Data(Factory|Object)|Relational|Setting|XML(_Document)?)\\n     |Data(Factory|Object)|Exception|List|Model_(Property|ReflectionDataObject|Type)|Sequence)\\n|SeekableIterator|Serializable|SessionHandler(Interface)?|SimpleXML(Iterator|Element)|SNMP\\n|Soap(Client|Fault|Header|Param|Server|Var)\\n|SphinxClient|Spoofchecker\\n|Spl(DoublyLinkedList|Enum|File(Info|Object)|FixedArray|(Max|Min)?Heap|Observer|ObjectStorage\\n    |(Priority)?Queue|Stack|Subject|Type|TempFileObject)\\n|SQLite(3(Result|Stmt)?|Database|Result|Unbuffered)\\n|stdClass|streamWrapper|SVM(Model)?|Swish(Result(s)?|Search)?|Sync(Event|Mutex|ReaderWriter|Semaphore)\\n|Thread(ed)?|tidy(Node)?|TokyoTyrant(Table|Iterator|Query)?|Transliterator|Traversable\\n|UConverter|(Underflow|UnexpectedValue)Exception\\n|V8Js(Exception)?|Varnish(Admin|Log|Stat)\\n|Worker|Weak(Map|Ref)\\n|XML(Diff\\\\\\\\(Base|DOM|File|Memory)|Reader|Writer)|XsltProcessor\\n|Yaf_(Route_(Interface|Map|Regex|Rewrite|Simple|Supervar)\\n     |Action_Abstract|Application|Config_(Simple|Ini|Abstract)|Controller_Abstract\\n     |Dispatcher|Exception|Loader|Plugin_Abstract|Registry|Request_(Abstract|Simple|Http)\\n     |Response_Abstract|Router|Session|View_(Simple|Interface))\\n|Yar_(Client(_Exception)?|Concurrent_Client|Server(_Exception)?)\\n|ZipArchive|ZMQ(Context|Device|Poll|Socket)?)\\n\\\\b\",\n          \"name\": \"support.class.builtin.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"class-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\\\\\\\\)\",\n          \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )?\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#class-builtin\"\n        },\n        {\n          \"begin\": \"(?i)(?=[\\\\\\\\a-z_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )?\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        }\n      ]\n    },\n    \"inheritance-single\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\\\\\\\\)\",\n          \"end\": \"(?i)([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?(?=[^a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.inherited-class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#class-builtin\"\n        },\n        {\n          \"include\": \"#namespace\"\n        },\n        {\n          \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n          \"name\": \"entity.other.inherited-class.php\"\n        }\n      ]\n    },\n    \"class-extends\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(extends)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.extends.php\"\n            }\n          },\n          \"end\": \"(?i)(?=[^A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#inheritance-single\"\n            }\n          ]\n        }\n      ]\n    },\n    \"interface-extends\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(extends)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.extends.php\"\n            }\n          },\n          \"end\": \"(?i)(?={)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.classes.php\"\n            },\n            {\n              \"include\": \"#inheritance-single\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-implements\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(implements)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.php\"\n            }\n          },\n          \"end\": \"(?i)(?={)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.classes.php\"\n            },\n            {\n              \"include\": \"#inheritance-single\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-constant\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(const)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.php\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"name\": \"comment.block.documentation.phpdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.php\"\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.double-slash.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=#)(?!#\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\\\b\",\n          \"name\": \"constant.language.php\"\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(DEFAULT_INCLUDE_PATH\\n|EAR_(INSTALL|EXTENSION)_DIR\\n|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE\\n   |PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING)\\n|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN\\n     |BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR)\\n     |INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR\\n     |URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX\\n     |EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)?\\n     |WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)\\n              |VERSION_(MAJOR|MINOR)|BUILD|SUITEMASK|SP_(MAJOR|MINOR)\\n              |PRODUCTTYPE|PLATFORM)\\n     |LIBDIR|LOCALSTATEDIR)\\n|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE))\\n\\\\b\",\n          \"name\": \"support.constant.core.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(__COMPILER_HALT_OFFSET__|AB(MON_(1|2|3|4|5|6|7|8|9|10|11|12)|DAY[1-7])\\n|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS\\n|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE)\\n|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)\\n|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL\\n|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C)\\n|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR\\n|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP)\\n|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS)\\n|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES)\\n|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS)\\n|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN)\\n|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL\\n     |NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER)\\n|M_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRT)?PI|PI(_(2|4))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E)\\n|MON_(1|2|3|4|5|6|7|8|9|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)\\n|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR)\\n|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN\\n|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR\\n|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT)\\n|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP\\n|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL)\\n|YES(EXPR|STR))\\n\\\\b\",\n          \"name\": \"support.constant.std.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)\\n|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE\\n     |OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)\\n     |ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE\\n            |NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE\\n            |UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT\\n            |PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY)\\n     |ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(NMTOKEN(S)?|NOTATION|NODE)\\n     |CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION)\\n|MHASH_(RIPEMD(128|160|256|320)|GOST|MD(2|4|5)|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256)\\n       |CRC23(B)?|TIGER(128|160)?|WHIRLPOOL|ADLER32)\\n|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC))\\n|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG)\\n        |READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH\\n        |STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT\\n        |SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG)\\n        |NO_(DEFAULT_VALUE_FLAG|DATA)|NOT_NULL_FLAG|NUM(_FLAG)?\\n        |CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)\\n        |CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS)\\n        |TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR\\n              |TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?)\\n        |TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG\\n        |OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE)\\n        |DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG\\n        |ASSOC|ASYNC|AUTO_INCREMENT_FLAG)\\n|MCRYPT_(RC(2|6)|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS\\n        |BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY\\n        |TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?)\\n|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR\\n        |SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN)\\n        |NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS\\n                |FILE_SIZE_IS|FAILURE|AUTH_(REQUIRED|RESULT))\\n        |CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT)\\n        |CAST_(AS_STREAM|FOR_SELECT)|(IGNORE|IS)_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB\\n        |OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH\\n        |PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE))\\n|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP)\\n|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT\\n        |CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY\\n        |FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH)\\n|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC)\\n|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK)\\n     |MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD)\\n     |CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC)\\n     |INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME\\n           |(SIZE|SPEED)_(DOWNLOAD|UPLOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME\\n           |CONNECT_TIME|CONTENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD))|CERTINFO|TOTAL_TIME\\n           |PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME)\\n     |OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE\\n          |MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE\\n          |SSH_(HOST_PUBLIC_KEY_MD5|(PRIVATE|PUBLIC)_KEYFILE)|AUTH_TYPES)\\n          |SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?)\\n          |SSL_(CIPHER_LIST|VERIFY(HOST|PEER))\\n          |STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)\\n          |HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)?\\n          |COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT\\n          |TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE\\n          |DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD\\n          |PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT\\n          |POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT\\n          |FTP(APPEND|LISTONLY|PORT|SSLAUTH)\\n          |FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)\\n          |FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME)\\n          |AUTOREFERER)\\n     |PROXY_(HTTP|SOCKS(4|5))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL)\\n     |E_((RECV|READ)_ERROR|GOT_NOTHING|MALFORMAT_USER\\n        |BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT)\\n        |SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED))\\n        |SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR)\\n        |COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE\\n        |OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL\\n        |UNKNOWN_TELNET_OPTION|PARTIAL_FILE\\n        |FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST)\\n             |CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR\\n             |WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED)\\n        |FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND\\n        |LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK)\\n     |VERSION_NOW\\n     |FTP(METHOD_(MULTI|SINGLE|NO)CWD|SSL_(ALL|NONE|CONTROL|TRY)|AUTH_(DEFAULT|SSL|TLS))\\n     |AUTH_(ANY(SAFE)?|BASIC|DIGEST|GSSNEGOTIATE|NTLM))\\n|CURL_(HTTP_VERSION_(1_(0|1)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(UN)?MODSINCE|LASTMOD)\\n      |IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))\\n|IMAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|ICO|IFF|UNKNOWN|JB2|JPX|JP2|JPC|JPEG(2000)?|PSD|PNG|WBMP)\\n|INPUT_(REQUEST|GET|SERVER|SESSION|COOKIE|POST|ENV)|ICONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION)\\n|DNS_(MX|SRV|SOA|HINFO|NS|NAPTR|CNAME|TXT|PTR|ANY|ALL|AAAA|A(6)?)\\n|DOM(STRING_SIZE_ERR)\\n|DOM_((SYNTAX|HIERARCHY_REQUEST|NO_(MODIFICATION_ALLOWED|DATA_ALLOWED)|NOT_(FOUND|SUPPORTED)|NAMESPACE\\n     |INDEX_SIZE|USE_ATTRIBUTE|VALID_(MODIFICATION|STATE|CHARACTER|ACCESS)|PHP|VALIDATION|WRONG_DOCUMENT)_ERR)\\n|JSON_(HEX_(TAG|QUOT|AMP|APOS)|NUMERIC_CHECK|ERROR_(SYNTAX|STATE_MISMATCH|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)\\n|PREG_((D_UTF8(_OFFSET)?|NO|INTERNAL|(BACKTRACK|RECURSION)_LIMIT)_ERROR|GREP_INVERT\\n      |SPLIT_(NO_EMPTY|(DELIM|OFFSET)_CAPTURE)|SET_ORDER|OFFSET_CAPTURE|PATTERN_ORDER)\\n|PSFS_(PASS_ON|ERR_FATAL|FEED_ME|FLAG_(NORMAL|FLUSH_(CLOSE|INC)))\\n|PCRE_VERSION|POSIX_((F|R|W|X)_OK|S_IF(REG|BLK|SOCK|CHR|IFO))\\n|FNM_(NOESCAPE|CASEFOLD|PERIOD|PATHNAME)\\n|FILTER_(REQUIRE_(SCALAR|ARRAY)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW\\n        |SANITIZE_(MAGIC_QUOTES|STRING|STRIPPED|SPECIAL_CHARS|NUMBER_(INT|FLOAT)|URL\\n                  |EMAIL|ENCODED|FULL_SPCIAL_CHARS)\\n        |VALIDATE_(REGEXP|BOOLEAN|INT|IP|URL|EMAIL|FLOAT)\\n        |FORCE_ARRAY\\n        |FLAG_(SCHEME_REQUIRED|STRIP_(BACKTICK|HIGH|LOW)|HOST_REQUIRED|NONE|NO_(RES|PRIV)_RANGE|ENCODE_QUOTES\\n              |IPV(4|6)|PATH_REQUIRED|EMPTY_STRING_NULL|ENCODE_(HIGH|LOW|AMP)|QUERY_REQUIRED\\n              |ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION)))\\n|FILE_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)\\n|FILEINFO_(RAW|MIME(_(ENCODING|TYPE))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)\\n|FORCE_(DEFLATE|GZIP)\\n|LIBXML_(XINCLUDE|NSCLEAN|NO(XMLDECL|BLANKS|NET|CDATA|ERROR|EMPTYTAG|ENT|WARNING)\\n        |COMPACT|DTD(VALID|LOAD|ATTR)|((DOTTED|LOADED)_)?VERSION|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)))\\n\\\\b\",\n          \"name\": \"support.constant.ext.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(T_(RETURN|REQUIRE(_ONCE)?|GOTO|GLOBAL|(MINUS|MOD|MUL|XOR)_EQUAL|METHOD_C|ML_COMMENT|BREAK\\n   |BOOL_CAST|BOOLEAN_(AND|OR)|BAD_CHARACTER|SR(_EQUAL)?|STRING(_CAST|VARNAME)?|START_HEREDOC|STATIC\\n   |SWITCH|SL(_EQUAL)?|HALT_COMPILER|NS_(C|SEPARATOR)|NUM_STRING|NEW|NAMESPACE|CHARACTER|COMMENT\\n   |CONSTANT(_ENCAPSED_STRING)?|CONCAT_EQUAL|CONTINUE|CURLY_OPEN|CLOSE_TAG|CLONE|CLASS(_C)?\\n   |CASE|CATCH|TRY|THROW|IMPLEMENTS|ISSET|IS_((GREATER|SMALLER)_OR_EQUAL|(NOT_)?(IDENTICAL|EQUAL))\\n   |INSTANCEOF|INCLUDE(_ONCE)?|INC|INT_CAST|INTERFACE|INLINE_HTML|IF|OR_EQUAL|OBJECT_(CAST|OPERATOR)\\n   |OPEN_TAG(_WITH_ECHO)?|OLD_FUNCTION|DNUMBER|DIR|DIV_EQUAL|DOC_COMMENT|DOUBLE_(ARROW|CAST|COLON)\\n   |DOLLAR_OPEN_CURLY_BRACES|DO|DEC|DECLARE|DEFAULT|USE|UNSET(_CAST)?|PRINT|PRIVATE|PROTECTED|PUBLIC\\n   |PLUS_EQUAL|PAAMAYIM_NEKUDOTAYIM|EXTENDS|EXIT|EMPTY|ENCAPSED_AND_WHITESPACE\\n   |END(SWITCH|IF|DECLARE|FOR(EACH)?|WHILE)|END_HEREDOC|ECHO|EVAL|ELSE(IF)?|VAR(IABLE)?|FINAL|FILE\\n   |FOR(EACH)?|FUNC_C|FUNCTION|WHITESPACE|WHILE|LNUMBER|LIST|LINE|LOGICAL_(AND|OR|XOR)\\n   |ARRAY_(CAST)?|ABSTRACT|AS|AND_EQUAL))\\n\\\\b\",\n          \"name\": \"support.constant.parser-token.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n          \"name\": \"constant.other.php\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"match\": \"(?xi)\\n(?: (\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n) \\\\s+ )?\\n((?:(&)\\\\s*)?(\\\\.\\\\.\\\\.)(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\\n(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#|$)) # A closing parentheses (end of argument list) or a comma or a comment\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.variadic.php\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"name\": \"meta.function.parameter.variadic.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n(\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n)\\n\\\\s+ ((?:(&)\\\\s*)?(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n          \"name\": \"meta.function.parameter.typehinted.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.assignment.php\"\n                }\n              },\n              \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parameter-default-types\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n((?:(&)\\\\s*)?(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\\n(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#|$)) # A closing parentheses (end of argument list) or a comma or a comment\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"name\": \"meta.function.parameter.no-default.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n((?:(&)\\\\s*)?(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\\n\\\\s*(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n          \"name\": \"meta.function.parameter.default.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        }\n      ]\n    },\n    \"named-arguments\": {\n      \"match\": \"(?i)(?<=^|\\\\(|,)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(:)(?!:)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.parameter.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.colon.php\"\n        }\n      }\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(\\n  \\\\\\\\?(?<![a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}])                            # Optional root namespace\\n  [a-zA-Z_\\\\x{7f}-\\\\x{10ffff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}]*          # First namespace\\n  (?:\\\\\\\\[a-zA-Z_\\\\x{7f}-\\\\x{10ffff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}]*)+ # Additional namespaces\\n)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#namespace\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n                  \"name\": \"entity.name.function.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\\\\\)?(?<![a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}])([a-zA-Z_\\\\x{7f}-\\\\x{10ffff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#namespace\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#support\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n                  \"name\": \"entity.name.function.php\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)\\\\b(print|echo)\\\\b\",\n          \"name\": \"support.function.construct.output.php\"\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=<<<\\\\s*(\\\"?)([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)(\\\\1)\\\\s*$)\",\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"string.unquoted.heredoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc_interior\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=<<<\\\\s*'([a-zA-Z_]+[a-zA-Z0-9_]*)'\\\\s*$)\",\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"string.unquoted.nowdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#nowdoc_interior\"\n            }\n          ]\n        }\n      ]\n    },\n    \"heredoc_interior\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(HTML)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(XML)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)([DS]QL)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(JAVASCRIPT|JS)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(JSON)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.json\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(CSS)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(REGEXP?)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"string.regexp.heredoc.php\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n              \"name\": \"constant.character.escape.regex.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                }\n              },\n              \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n              \"name\": \"string.regexp.arbitrary-repitition.php\"\n            },\n            {\n              \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.character-class.php\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"name\": \"string.regexp.character-class.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[\\\\\\\\'\\\\[\\\\]]\",\n                  \"name\": \"constant.character.escape.php\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[$^+*]\",\n              \"name\": \"keyword.operator.regexp.php\"\n            },\n            {\n              \"begin\": \"(?i)(?<=^|\\\\s)(#)\\\\s(?=[[a-z0-9_\\\\x{7f}-\\\\x{10ffff},. \\\\t?!-][^\\\\x{00}-\\\\x{7f}]]*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(BLADE)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html.php.blade\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.php.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<<<)\\\\s*(\\\"?)([a-z_\\\\x{7f}-\\\\x{10ffff}]+[a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)(\\\\2)(\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"nowdoc_interior\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*'(HTML)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(XML)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'([DS]QL)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(JAVASCRIPT|JS)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(JSON)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.json\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(CSS)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(REGEXP?)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"string.regexp.nowdoc.php\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n              \"name\": \"constant.character.escape.regex.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                }\n              },\n              \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n              \"name\": \"string.regexp.arbitrary-repitition.php\"\n            },\n            {\n              \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.character-class.php\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"name\": \"string.regexp.character-class.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[\\\\\\\\'\\\\[\\\\]]\",\n                  \"name\": \"constant.character.escape.php\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[$^+*]\",\n              \"name\": \"keyword.operator.regexp.php\"\n            },\n            {\n              \"begin\": \"(?i)(?<=^|\\\\s)(#)\\\\s(?=[[a-z0-9_\\\\x{7f}-\\\\x{10ffff},. \\\\t?!-][^\\\\x{00}-\\\\x{7f}]]*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(BLADE)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html.php.blade\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.php.blade\"\n        },\n        {\n          \"begin\": \"(?i)(<<<)\\\\s*'([a-z_\\\\x{7f}-\\\\x{10ffff}]+[a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)'(\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"instantiation\": {\n      \"begin\": \"(?i)(new)\\\\s+(?!class\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[^a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(parent|static|self)(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"name\": \"storage.type.php\"\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[0-7]{1,3}\",\n          \"name\": \"constant.character.escape.octal.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\x[0-9A-Fa-f]{1,2}\",\n          \"name\": \"constant.character.escape.hex.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\u{[0-9A-Fa-f]+}\",\n          \"name\": \"constant.character.escape.unicode.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\[nrtvef$\\\\\\\\]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"begin\": \"{(?=\\\\$.*?})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"interpolation_double_quoted\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\"\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"invoke-call\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(?i)((\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)(?=\\\\s*\\\\()\",\n      \"name\": \"meta.function-call.invoke.php\"\n    },\n    \"namespace\": {\n      \"begin\": \"(?i)(?:(namespace)|[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?(\\\\\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.language.namespace.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.inheritance.php\"\n        }\n      },\n      \"end\": \"(?i)(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\\\\\\\\)\",\n      \"name\": \"support.other.namespace.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\",\n          \"name\": \"punctuation.separator.inheritance.php\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"0[xX][0-9a-fA-F]+(?:_[0-9a-fA-F]+)*\",\n          \"name\": \"constant.numeric.hex.php\"\n        },\n        {\n          \"match\": \"0[bB][01]+(?:_[01]+)*\",\n          \"name\": \"constant.numeric.binary.php\"\n        },\n        {\n          \"match\": \"0[oO][0-7]+(?:_[0-7]+)*\",\n          \"name\": \"constant.numeric.octal.php\"\n        },\n        {\n          \"match\": \"0(?:_?[0-7]+)+\",\n          \"name\": \"constant.numeric.octal.php\"\n        },\n        {\n          \"match\": \"(?x)\\n(?:\\n  (?:[0-9]+(?:_[0-9]+)*)?(\\\\.)[0-9]+(?:_[0-9]+)*(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| # .3\\n  [0-9]+(?:_[0-9]+)*(\\\\.)(?:[0-9]+(?:_[0-9]+)*)?(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| # 3.\\n  [0-9]+(?:_[0-9]+)*[eE][+-]?[0-9]+(?:_[0-9]+)*                                   # 2e-3\\n)\",\n          \"name\": \"constant.numeric.decimal.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.decimal.period.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.decimal.period.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"0|[1-9](?:_?[0-9]+)*\",\n          \"name\": \"constant.numeric.decimal.php\"\n        }\n      ]\n    },\n    \"object\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\??->)\\\\s*(\\\\$?{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(\\\\??->)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.method-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)(\\\\??->)\\\\s*((\\\\$+)?[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?\"\n        }\n      ]\n    },\n    \"php-types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\?\",\n          \"name\": \"keyword.operator.nullable-type.php\"\n        },\n        {\n          \"match\": \"[|&]\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(null|int|float|bool|string|array|object|callable|iterable|false|mixed|void)\\\\b\",\n          \"name\": \"keyword.other.type.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(parent|self)\\\\b\",\n          \"name\": \"storage.type.php\"\n        },\n        {\n          \"include\": \"#class-name\"\n        }\n      ]\n    },\n    \"parameter-default-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#string-backtick\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.key.php\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        {\n          \"match\": \"&(?=\\\\s*\\\\$)\",\n          \"name\": \"storage.modifier.reference.php\"\n        },\n        {\n          \"begin\": \"(array)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            }\n          },\n          \"end\": \"\\\\]|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#instantiation\"\n        },\n        {\n          \"begin\": \"(?xi)\\n(?=[a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+\\n  (::)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?\\n)\",\n          \"end\": \"(?i)(::)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    },\n    \"php_doc\": {\n      \"patterns\": [\n        {\n          \"match\": \"^(?!\\\\s*\\\\*).*?(?:(?=\\\\*\\\\/)|$\\\\n?)\",\n          \"name\": \"invalid.illegal.missing-asterisk.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.php\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.wrong-access-type.phpdoc.php\"\n            }\n          },\n          \"match\": \"^\\\\s*\\\\*\\\\s*(@access)\\\\s+((public|private|protected)|(.+))\\\\s*$\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"2\": {\n              \"name\": \"markup.underline.link.php\"\n            }\n          },\n          \"match\": \"(@xlink)\\\\s+(.+)\\\\s*$\"\n        },\n        {\n          \"begin\": \"(@(?:global|param|property(-(read|write))?|return|throws|var))\\\\s+(?=[?A-Za-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]|\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/)\",\n          \"contentName\": \"meta.other.type.phpdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc_types_array_multiple\"\n            },\n            {\n              \"include\": \"#php_doc_types_array_single\"\n            },\n            {\n              \"include\": \"#php_doc_types\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n@\\n(\\n  api|abstract|author|category|copyright|example|global|inherit[Dd]oc|internal|\\n  license|link|method|property(-(read|write))?|package|param|return|see|since|source|\\n  static|subpackage|throws|todo|var|version|uses|deprecated|final|ignore\\n)\\\\b\",\n          \"name\": \"keyword.other.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            }\n          },\n          \"match\": \"{(@(link|inherit[Dd]oc)).+?}\",\n          \"name\": \"meta.tag.inline.phpdoc.php\"\n        }\n      ]\n    },\n    \"php_doc_types\": {\n      \"match\": \"(?i)\\\\??[a-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]*([|&]\\\\??[a-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]*)*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\?\",\n              \"name\": \"keyword.operator.nullable-type.php\"\n            },\n            {\n              \"match\": \"(?x)\\\\b\\n(string|integer|int|boolean|bool|float|double|object|mixed\\n|array|resource|void|null|callback|false|true|self|static)\\\\b\",\n              \"name\": \"keyword.other.type.php\"\n            },\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"match\": \"[|&]\",\n              \"name\": \"punctuation.separator.delimiter.php\"\n            }\n          ]\n        }\n      }\n    },\n    \"php_doc_types_array_multiple\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.type.begin.bracket.round.phpdoc.php\"\n        }\n      },\n      \"end\": \"(\\\\))(\\\\[\\\\])|(?=\\\\*/)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.type.end.bracket.round.phpdoc.php\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.array.phpdoc.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#php_doc_types_array_multiple\"\n        },\n        {\n          \"include\": \"#php_doc_types_array_single\"\n        },\n        {\n          \"include\": \"#php_doc_types\"\n        },\n        {\n          \"match\": \"[|&]\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"php_doc_types_array_single\": {\n      \"match\": \"(?i)([a-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]*)(\\\\[\\\\])\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc_types\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.array.phpdoc.php\"\n        }\n      }\n    },\n    \"regex-double-quoted\": {\n      \"begin\": \"\\\"/(?=(\\\\\\\\.|[^\\\"/])++/[imsxeADSUXu]*\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(\\\")\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.double-quoted.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n          \"name\": \"constant.character.escape.regex.php\"\n        },\n        {\n          \"include\": \"#interpolation_double_quoted\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation_double_quoted\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"regex-single-quoted\": {\n      \"begin\": \"'/(?=(\\\\\\\\(?:\\\\\\\\(?:\\\\\\\\[\\\\\\\\']?|[^'])|.)|[^'/])++/[imsxeADSUXu]*')\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(')\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.single-quoted.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#single_quote_regex_escape\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\"\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"scope-resolution\": {\n      \"patterns\": [\n        {\n          \"match\": \"([A-Za-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\][A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]*)(?=\\\\s*::)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(self|static|parent)\\\\b\",\n                  \"name\": \"storage.type.php\"\n                },\n                {\n                  \"include\": \"#class-name\"\n                },\n                {\n                  \"include\": \"#variable-name\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)(::)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.method-call.static.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(::)\\\\s*(class)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.class.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?xi)\\n(::)\\\\s*\\n(?:\\n  ((\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable\\n  |\\n  ([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)       # Constant\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"single_quote_regex_escape\": {\n      \"match\": \"\\\\\\\\(?:\\\\\\\\(?:\\\\\\\\[\\\\\\\\']?|[^'])|.)\",\n      \"name\": \"constant.character.escape.php\"\n    },\n    \"sql-string-double-quoted\": {\n      \"begin\": \"\\\"\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.sql.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(#)(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$)\",\n          \"name\": \"comment.line.number-sign.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"(--)(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$)\",\n          \"name\": \"comment.line.double-dash.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\\\\"`']\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"match\": \"'(?=((\\\\\\\\')|[^'\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.single.unclosed.sql\"\n        },\n        {\n          \"match\": \"`(?=((\\\\\\\\`)|[^`\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"name\": \"string.quoted.single.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation_double_quoted\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"end\": \"`\",\n          \"name\": \"string.quoted.other.backtick.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation_double_quoted\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#interpolation_double_quoted\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"sql-string-single-quoted\": {\n      \"begin\": \"'\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.sql.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(#)(\\\\\\\\'|[^'])*(?='|$)\",\n          \"name\": \"comment.line.number-sign.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"(--)(\\\\\\\\'|[^'])*(?='|$)\",\n          \"name\": \"comment.line.double-dash.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\'`\\\"]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"match\": \"`(?=((\\\\\\\\`)|[^`'])*('|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"match\": \"\\\"(?=((\\\\\\\\\\\")|[^\\\"'])*('|$))\",\n          \"name\": \"string.quoted.double.unclosed.sql\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"string-backtick\": {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.interpolated.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\`\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation_double_quoted\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\']\",\n          \"name\": \"constant.character.escape.php\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regex-double-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#regex-single-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-single-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n\\\\b\\napc_(\\n  store|sma_info|compile_file|clear_cache|cas|cache_info|inc|dec|define_constants|delete(_file)?|\\n  exists|fetch|load_constants|add|bin_(dump|load)(file)?\\n)\\\\b\",\n          \"name\": \"support.function.apc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  shuffle|sizeof|sort|next|nat(case)?sort|count|compact|current|in_array|usort|uksort|uasort|\\n  pos|prev|end|each|extract|ksort|key(_exists)?|krsort|list|asort|arsort|rsort|reset|range|\\n  array(_(shift|sum|splice|search|slice|chunk|change_key_case|count_values|column|combine|\\n          (diff|intersect)(_(u)?(key|assoc))?|u(diff|intersect)(_(u)?assoc)?|unshift|unique|\\n          pop|push|pad|product|values|keys|key_exists|filter|fill(_keys)?|flip|walk(_recursive)?|\\n          reduce|replace(_recursive)?|reverse|rand|multisort|merge(_recursive)?|map)?)\\n)\\\\b\",\n          \"name\": \"support.function.array.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  show_source|sys_getloadavg|sleep|highlight_(file|string)|constant|connection_(aborted|status)|\\n  time_(nanosleep|sleep_until)|ignore_user_abort|die|define(d)?|usleep|uniqid|unpack|__halt_compiler|\\n  php_(check_syntax|strip_whitespace)|pack|eval|exit|get_browser\\n)\\\\b\",\n          \"name\": \"support.function.basic_functions.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbc(scale|sub|sqrt|comp|div|pow(mod)?|add|mod|mul)\\\\b\",\n          \"name\": \"support.function.bcmath.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bblenc_encrypt\\\\b\",\n          \"name\": \"support.function.blenc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbz(compress|close|open|decompress|errstr|errno|error|flush|write|read)\\\\b\",\n          \"name\": \"support.function.bz2.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  (French|Gregorian|Jewish|Julian)ToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd|\\n  jdto(unix|jewish)|easter_(date|days)|JD(MonthName|To(Gregorian|Julian|French)|DayOfWeek)\\n)\\\\b\",\n          \"name\": \"support.function.calendar.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  class_alias|all_user_method(_array)?|is_(a|subclass_of)|__autoload|(class|interface|method|property|trait)_exists|\\n  get_(class(_(vars|methods))?|(called|parent)_class|object_vars|declared_(classes|interfaces|traits))\\n)\\\\b\",\n          \"name\": \"support.function.classobj.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)|\\n  variant_(sub|set(_type)?|not|neg|cast|cat|cmp|int|idiv|imp|or|div|date_(from|to)_timestamp|\\n           pow|eqv|fix|and|add|abs|round|get_type|xor|mod|mul)\\n)\\\\b\",\n          \"name\": \"support.function.com.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(isset|unset|eval|empty|list)\\\\b\",\n          \"name\": \"support.function.construct.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(print|echo)\\\\b\",\n          \"name\": \"support.function.construct.output.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bctype_(space|cntrl|digit|upper|punct|print|lower|alnum|alpha|graph|xdigit)\\\\b\",\n          \"name\": \"support.function.ctype.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ncurl_(\\n  share_(close|init|setopt)|strerror|setopt(_array)?|copy_handle|close|init|unescape|pause|escape|\\n  errno|error|exec|version|file_create|reset|getinfo|\\n  multi_(strerror|setopt|select|close|init|info_read|(add|remove)_handle|getcontent|exec)\\n)\\\\b\",\n          \"name\": \"support.function.curl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  strtotime|str[fp]time|checkdate|time|timezone_name_(from_abbr|get)|idate|\\n  timezone_((location|offset|transitions|version)_get|(abbreviations|identifiers)_list|open)|\\n  date(_(sun(rise|set)|sun_info|sub|create(_(immutable_)?from_format)?|timestamp_(get|set)|timezone_(get|set)|time_set|\\n         isodate_set|interval_(create_from_date_string|format)|offset_get|diff|default_timezone_(get|set)|date_set|\\n         parse(_from_format)?|format|add|get_last_errors|modify))?|\\n  localtime|get(date|timeofday)|gm(strftime|date|mktime)|microtime|mktime\\n)\\\\b\",\n          \"name\": \"support.function.datetime.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdba_(sync|handlers|nextkey|close|insert|optimize|open|delete|popen|exists|key_split|firstkey|fetch|list|replace)\\\\b\",\n          \"name\": \"support.function.dba.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdbx_(sort|connect|compare|close|escape_string|error|query|fetch_row)\\\\b\",\n          \"name\": \"support.function.dbx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(scandir|chdir|chroot|closedir|opendir|dir|rewinddir|readdir|getcwd)\\\\b\",\n          \"name\": \"support.function.dir.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\neio_(\\n  sync(fs)?|sync_file_range|symlink|stat(vfs)?|sendfile|set_min_parallel|set_max_(idle|poll_(reqs|time)|parallel)|\\n  seek|n(threads|op|pending|reqs|ready)|chown|chmod|custom|close|cancel|truncate|init|open|dup2|unlink|utime|poll|\\n  event_loop|f(sync|stat(vfs)?|chown|chmod|truncate|datasync|utime|allocate)|write|lstat|link|rename|realpath|\\n  read(ahead|dir|link)?|rmdir|get_(event_stream|last_error)|grp(_(add|cancel|limit))?|mknod|mkdir|busy\\n)\\\\b\",\n          \"name\": \"support.function.eio.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nenchant_(\\n  dict_(store_replacement|suggest|check|is_in_session|describe|quick_check|add_to_(personal|session)|get_error)|\\n  broker_(set_ordering|init|dict_exists|describe|free(_dict)?|list_dicts|request_(pwl_)?dict|get_error)\\n)\\\\b\",\n          \"name\": \"support.function.enchant.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(split(i)?|sql_regcase|ereg(i)?(_replace)?)\\\\b\",\n          \"name\": \"support.function.ereg.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((restore|set)_(error_handler|exception_handler)|trigger_error|debug_(print_)?backtrace|user_error|error_(log|reporting|get_last))\\\\b\",\n          \"name\": \"support.function.errorfunc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(shell_exec|system|passthru|proc_(nice|close|terminate|open|get_status)|escapeshell(arg|cmd)|exec)\\\\b\",\n          \"name\": \"support.function.exec.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(exif_(thumbnail|tagname|imagetype|read_data)|read_exif_data)\\\\b\",\n          \"name\": \"support.function.exif.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nfann_(\\n  (duplicate|length|merge|shuffle|subset)_train_data|scale_(train(_data)?|(input|output)(_train_data)?)|\\n  set_(scaling_params|sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|\\n       cascade_(num_candidate_groups|candidate_(change_fraction|limit|stagnation_epochs)|\\n                output_(change_fraction|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)|\\n                (max|min)_(cand|out)_epochs)|\\n       callback|training_algorithm|train_(error|stop)_function|(input|output)_scaling_params|error_log|\\n       quickprop_(decay|mu)|weight(_array)?|learning_(momentum|rate)|bit_fail_limit|\\n       activation_(function|steepness)(_(hidden|layer|output))?|\\n       rprop_((decrease|increase)_factor|delta_(max|min|zero)))|\\n  save(_train)?|num_(input|output)_train_data|copy|clear_scaling_params|cascadetrain_on_(file|data)|\\n  create_((sparse|shortcut|standard)(_array)?|train(_from_callback)?|from_file)|\\n  test(_data)?|train(_(on_(file|data)|epoch))?|init_weights|descale_(input|output|train)|destroy(_train)?|\\n  print_error|run|reset_(MSE|err(no|str))|read_train_from_file|randomize_weights|\\n  get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|num_(input|output|layers)|\\n       network_type|MSE|connection_(array|rate)|bias_array|bit_fail(_limit)?|\\n       cascade_(num_(candidates|candidate_groups)|(candidate|output)_(change_fraction|limit|stagnation_epochs)|\\n                weight_multiplier|activation_(functions|steepnesses)(_count)?|(max|min)_(cand|out)_epochs)|\\n       total_(connections|neurons)|training_algorithm|train_(error|stop)_function|err(no|str)|\\n       quickprop_(decay|mu)|learning_(momentum|rate)|layer_array|activation_(function|steepness)|\\n       rprop_((decrease|increase)_factor|delta_(max|min|zero)))\\n)\\\\b\",\n          \"name\": \"support.function.fann.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  symlink|stat|set_file_buffer|chown|chgrp|chmod|copy|clearstatcache|touch|tempnam|tmpfile|\\n  is_(dir|(uploaded_)?file|executable|link|readable|writ(e)?able)|disk_(free|total)_space|diskfreespace|\\n  dirname|delete|unlink|umask|pclose|popen|pathinfo|parse_ini_(file|string)|fscanf|fstat|fseek|fnmatch|\\n  fclose|ftell|ftruncate|file(size|[acm]time|type|inode|owner|perms|group)?|file_(exists|(get|put)_contents)|\\n  f(open|puts|putcsv|passthru|eof|flush|write|lock|read|gets(s)?|getc(sv)?)|lstat|lchown|lchgrp|link(info)?|\\n  rename|rewind|read(file|link)|realpath(_cache_(get|size))?|rmdir|glob|move_uploaded_file|mkdir|basename\\n)\\\\b\",\n          \"name\": \"support.function.file.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\\\b\",\n          \"name\": \"support.function.fileinfo.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bfilter_(has_var|input(_array)?|id|var(_array)?|list)\\\\b\",\n          \"name\": \"support.function.filter.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bfastcgi_finish_request\\\\b\",\n          \"name\": \"support.function.fpm.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(call_user_(func|method)(_array)?|create_function|unregister_tick_function|forward_static_call(_array)?|function_exists|func_(num_args|get_arg(s)?)|register_(shutdown|tick)_function|get_defined_functions)\\\\b\",\n          \"name\": \"support.function.funchand.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((n)?gettext|textdomain|d((n)?gettext|c(n)?gettext)|bind(textdomain|_textdomain_codeset))\\\\b\",\n          \"name\": \"support.function.gettext.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ngmp_(\\n  scan[01]|strval|sign|sub|setbit|sqrt(rem)?|hamdist|neg|nextprime|com|clrbit|cmp|testbit|\\n  intval|init|invert|import|or|div(exact)?|div_(q|qr|r)|jacobi|popcount|pow(m)?|perfect_square|\\n  prob_prime|export|fact|legendre|and|add|abs|root(rem)?|random(_(bits|range))?|gcd(ext)?|xor|mod|mul\\n)\\\\b\",\n          \"name\": \"support.function.gmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bhash(_(hmac(_file)?|copy|init|update(_(file|stream))?|pbkdf2|equals|file|final|algos))?\\\\b\",\n          \"name\": \"support.function.hash.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  http_(support|send_(status|stream|content_(disposition|type)|data|file|last_modified)|head|\\n        negotiate_(charset|content_type|language)|chunked_decode|cache_(etag|last_modified)|throttle|\\n        inflate|deflate|date|post_(data|fields)|put_(data|file|stream)|persistent_handles_(count|clean|ident)|\\n        parse_(cookie|headers|message|params)|redirect|request(_(method_(exists|name|(un)?register)|body_encode))?|\\n        get(_request_(headers|body(_stream)?))?|match_(etag|modified|request_header)|build_(cookie|str|url))|\\n  ob_(etag|deflate|inflate)handler\\n)\\\\b\",\n          \"name\": \"support.function.http.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(iconv(_(str(pos|len|rpos)|substr|(get|set)_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\\\b\",\n          \"name\": \"support.function.iconv.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\biis_((start|stop)_(service|server)|set_(script_map|server_rights|dir_security|app_settings)|(add|remove)_server|get_(script_map|service_state|server_(rights|by_(comment|path))|dir_security))\\\\b\",\n          \"name\": \"support.function.iisfunc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  iptc(embed|parse)|(jpeg|png)2wbmp|gd_info|getimagesize(fromstring)?|\\n  image(s[xy]|scale|(char|string)(up)?|set(style|thickness|tile|interpolation|pixel|brush)|savealpha|\\n        convolution|copy(resampled|resized|merge(gray)?)?|colors(forindex|total)|\\n        color(set|closest(alpha|hwb)?|transparent|deallocate|(allocate|exact|resolve)(alpha)?|at|match)|\\n        crop(auto)?|create(truecolor|from(string|jpeg|png|wbmp|webp|gif|gd(2(part)?)?|xpm|xbm))?|\\n        types|ttf(bbox|text)|truecolortopalette|istruecolor|interlace|2wbmp|destroy|dashedline|jpeg|\\n        _type_to_(extension|mime_type)|ps(slantfont|text|(encode|extend|free|load)font|bbox)|png|polygon|\\n        palette(copy|totruecolor)|ellipse|ft(text|bbox)|filter|fill|filltoborder|\\n        filled(arc|ellipse|polygon|rectangle)|font(height|width)|flip|webp|wbmp|line|loadfont|layereffect|\\n        antialias|affine(matrix(concat|get))?|alphablending|arc|rotate|rectangle|gif|gd(2)?|gammacorrect|\\n        grab(screen|window)|xbm)\\n)\\\\b\",\n          \"name\": \"support.function.image.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  sys_get_temp_dir|set_(time_limit|include_path|magic_quotes_runtime)|cli_(get|set)_process_title|\\n  ini_(alter|get(_all)?|restore|set)|zend_(thread_id|version|logo_guid)|dl|php(credits|info|version)|\\n  php_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|putenv|extension_loaded|version_compare|\\n  assert(_options)?|restore_include_path|gc_(collect_cycles|disable|enable(d)?)|getopt|\\n  get_(cfg_var|current_user|defined_constants|extension_funcs|include_path|included_files|loaded_extensions|\\n       magic_quotes_(gpc|runtime)|required_files|resources)|\\n  get(env|lastmod|rusage|my(inode|[gup]id))|\\n  memory_get_(peak_)?usage|main|magic_quotes_runtime\\n)\\\\b\",\n          \"name\": \"support.function.info.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nibase_(\\n  set_event_handler|service_(attach|detach)|server_info|num_(fields|params)|name_result|connect|\\n  commit(_ret)?|close|trans|delete_user|drop_db|db_info|pconnect|param_info|prepare|err(code|msg)|\\n  execute|query|field_info|fetch_(assoc|object|row)|free_(event_handler|query|result)|wait_event|\\n  add_user|affected_rows|rollback(_ret)?|restore|gen_id|modify_user|maintain_db|backup|\\n  blob_(cancel|close|create|import|info|open|echo|add|get)\\n)\\\\b\",\n          \"name\": \"support.function.interbase.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  normalizer_(normalize|is_normalized)|idn_to_(unicode|utf8|ascii)|\\n  numfmt_(set_(symbol|(text_)?attribute|pattern)|create|(parse|format)(_currency)?|\\n          get_(symbol|(text_)?attribute|pattern|error_(code|message)|locale))|\\n  collator_(sort(_with_sort_keys)?|set_(attribute|strength)|compare|create|asort|\\n            get_(strength|sort_key|error_(code|message)|locale|attribute))|\\n  transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|\\n  intl(cal|tz)_get_error_(code|message)|intl_(is_failure|error_name|get_error_(code|message))|\\n  datefmt_(set_(calendar|lenient|pattern|timezone(_id)?)|create|is_lenient|parse|format(_object)?|localtime|\\n           get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|\\n  locale_(set_default|compose|canonicalize|parse|filter_matches|lookup|accept_from_http|\\n          get_(script|display_(script|name|variant|language|region)|default|primary_language|keywords|all_variants|region))|\\n  resourcebundle_(create|count|locales|get(_(error_(code|message)))?)|\\n  grapheme_(str(i?str|r?i?pos|len)|substr|extract)|\\n  msgfmt_(set_pattern|create|(format|parse)(_message)?|get_(pattern|error_(code|message)|locale))\\n)\\\\b\",\n          \"name\": \"support.function.intl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bjson_(decode|encode|last_error(_msg)?)\\\\b\",\n          \"name\": \"support.function.json.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nldap_(\\n  start|tls|sort|search|sasl_bind|set_(option|rebind_proc)|(first|next)_(attribute|entry|reference)|\\n  connect|control_paged_result(_response)?|count_entries|compare|close|t61_to_8859|8859_to_t61|\\n  dn2ufn|delete|unbind|parse_(reference|result)|escape|errno|err2str|error|explode_dn|bind|\\n  free_result|list|add|rename|read|get_(option|dn|entries|values(_len)?|attributes)|modify(_batch)?|\\n  mod_(add|del|replace)\\n)\\\\b\",\n          \"name\": \"support.function.ldap.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\\\b\",\n          \"name\": \"support.function.libxml.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ezmlm_hash|mail)\\\\b\",\n          \"name\": \"support.function.mail.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  (a)?(cos|sin|tan)(h)?|sqrt|srand|hypot|hexdec|ceil|is_(nan|(in)?finite)|octdec|dec(hex|oct|bin)|deg2rad|\\n  pi|pow|exp(m1)?|floor|fmod|lcg_value|log(1(p|0))?|atan2|abs|round|rand|rad2deg|getrandmax|\\n  mt_(srand|rand|getrandmax)|max|min|bindec|base_convert\\n)\\\\b\",\n          \"name\": \"support.function.math.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmb_(\\n  str(cut|str|to(lower|upper)|istr|ipos|imwidth|pos|width|len|rchr|richr|ripos|rpos)|\\n  substitute_character|substr(_count)?|split|send_mail|http_(input|output)|check_encoding|\\n  convert_(case|encoding|kana|variables)|internal_encoding|output_handler|decode_(numericentity|mimeheader)|\\n  detect_(encoding|order)|parse_str|preferred_mime_name|encoding_aliases|encode_(numericentity|mimeheader)|\\n  ereg(i(_replace)?)?|ereg_(search(_(get(pos|regs)|init|regs|(set)?pos))?|replace(_callback)?|match)|\\n  list_encodings|language|regex_(set_options|encoding)|get_info\\n)\\\\b\",\n          \"name\": \"support.function.mbstring.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  mcrypt_(\\n    cfb|create_iv|cbc|ofb|decrypt|encrypt|ecb|list_(algorithms|modes)|generic(_((de)?init|end))?|\\n    enc_(self_test|is_block_(algorithm|algorithm_mode|mode)|\\n    get_(supported_key_sizes|(block|iv|key)_size|(algorithms|modes)_name))|\\n    get_(cipher_name|(block|iv|key)_size)|\\n    module_(close|self_test|is_block_(algorithm|algorithm_mode|mode)|open|\\n            get_(supported_key_sizes|algo_(block|key)_size)))|\\n  mdecrypt_generic\\n)\\\\b\",\n          \"name\": \"support.function.mcrypt.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmemcache_debug\\\\b\",\n          \"name\": \"support.function.memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\\\b\",\n          \"name\": \"support.function.mhash.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_(decode|encode))\\\\b\",\n          \"name\": \"support.function.mongo.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmysql_(\\n  stat|set_charset|select_db|num_(fields|rows)|connect|client_encoding|close|create_db|escape_string|\\n  thread_id|tablename|insert_id|info|data_seek|drop_db|db_(name|query)|unbuffered_query|pconnect|ping|\\n  errno|error|query|field_(seek|name|type|table|flags|len)|fetch_(object|field|lengths|assoc|array|row)|\\n  free_result|list_(tables|dbs|processes|fields)|affected_rows|result|real_escape_string|\\n  get_(client|host|proto|server)_info\\n)\\\\b\",\n          \"name\": \"support.function.mysql.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmysqli_(\\n  ssl_set|store_result|stat|send_(query|long_data)|set_(charset|opt|local_infile_(default|handler))|\\n  stmt_(store_result|send_long_data|next_result|close|init|data_seek|prepare|execute|fetch|free_result|\\n        attr_(get|set)|result_metadata|reset|get_(result|warnings)|more_results|bind_(param|result))|\\n  select_db|slave_query|savepoint|next_result|change_user|character_set_name|connect|commit|\\n  client_encoding|close|thread_safe|init|options|(enable|disable)_(reads_from_master|rpl_parse)|\\n  dump_debug_info|debug|data_seek|use_result|ping|poll|param_count|prepare|escape_string|execute|\\n  embedded_server_(start|end)|kill|query|field_seek|free_result|autocommit|rollback|report|refresh|\\n  fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)|\\n  release_savepoint|reap_async_query|real_(connect|escape_string|query)|more_results|multi_query|\\n  get_(charset|connection_stats|client_(stats|info|version)|cache_stats|warnings|links_stats|metadata)|\\n  master_query|bind_(param|result)|begin_transaction\\n)\\\\b\",\n          \"name\": \"support.function.mysqli.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_memcache_(set|get_config)\\\\b\",\n          \"name\": \"support.function.mysqlnd-memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\\\\b\",\n          \"name\": \"support.function.mysqlnd-ms.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|core_stats|cache_info|query_trace_log|available_handlers))\\\\b\",\n          \"name\": \"support.function.mysqlnd-qc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_uh_(set_(statement|connection)_proxy|convert_to_mysqlnd)\\\\b\",\n          \"name\": \"support.function.mysqlnd-uh.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  syslog|socket_(set_(blocking|timeout)|get_status)|set(raw)?cookie|http_response_code|openlog|\\n  headers_(list|sent)|header(_(register_callback|remove))?|checkdnsrr|closelog|inet_(ntop|pton)|ip2long|\\n  openlog|dns_(check_record|get_(record|mx))|define_syslog_variables|(p)?fsockopen|long2ip|\\n  get(servby(name|port)|host(name|by(name(l)?|addr))|protoby(name|number)|mxrr)\\n)\\\\b\",\n          \"name\": \"support.function.network.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bnsapi_(virtual|response_headers|request_headers)\\\\b\",\n          \"name\": \"support.function.nsapi.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  oci(statementtype|setprefetch|serverversion|savelob(file)?|numcols|new(collection|cursor|descriptor)|nlogon|\\n      column(scale|size|name|type(raw)?|isnull|precision)|coll(size|trim|assign(elem)?|append|getelem|max)|commit|\\n      closelob|cancel|internaldebug|definebyname|plogon|parse|error|execute|fetch(statement|into)?|\\n      free(statement|collection|cursor|desc)|write(temporarylob|lobtofile)|loadlob|log(on|off)|rowcount|rollback|\\n      result|bindbyname)|\\n  oci_(statement_type|set_(client_(info|identifier)|prefetch|edition|action|module_name)|server_version|\\n       num_(fields|rows)|new_(connect|collection|cursor|descriptor)|connect|commit|client_version|close|cancel|\\n       internal_debug|define_by_name|pconnect|password_change|parse|error|execute|bind_(array_)?by_name|\\n       field_(scale|size|name|type(_raw)?|is_null|precision)|fetch(_(object|assoc|all|array|row))?|\\n       free_(statement|descriptor)|lob_(copy|is_equal)|rollback|result|get_implicit_resultset)\\n)\\\\b\",\n          \"name\": \"support.function.oci8.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bopcache_(compile_file|invalidate|reset|get_(status|configuration))\\\\b\",\n          \"name\": \"support.function.opcache.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nopenssl_(\\n  sign|spki_(new|export(_challenge)?|verify)|seal|csr_(sign|new|export(_to_file)?|get_(subject|public_key))|\\n  cipher_iv_length|open|dh_compute_key|digest|decrypt|public_(decrypt|encrypt)|encrypt|error_string|\\n  pkcs12_(export(_to_file)?|read)|pkcs7_(sign|decrypt|encrypt|verify)|verify|free_key|random_pseudo_bytes|\\n  pkey_(new|export(_to_file)?|free|get_(details|public|private))|private_(decrypt|encrypt)|pbkdf2|\\n  get_((cipher|md)_methods|cert_locations|(public|private)key)|\\n  x509_(check_private_key|checkpurpose|parse|export(_to_file)?|fingerprint|free|read)\\n)\\\\b\",\n          \"name\": \"support.function.openssl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  output_(add_rewrite_var|reset_rewrite_vars)|flush|\\n  ob_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|gzhandler|\\n      get_(status|contents|clean|flush|length|level))\\n)\\\\b\",\n          \"name\": \"support.function.output.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpassword_(hash|needs_rehash|verify|get_info)\\\\b\",\n          \"name\": \"support.function.password.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npcntl_(\\n  strerror|signal(_dispatch)?|sig(timedwait|procmask|waitinfo)|setpriority|errno|exec|fork|\\n  w(stopsig|termsig|if(stopped|signaled|exited))|wait(pid)?|alarm|getpriority|get_last_error\\n)\\\\b\",\n          \"name\": \"support.function.pcntl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npg_(\\n  socket|send_(prepare|execute|query(_params)?)|set_(client_encoding|error_verbosity)|select|host|\\n  num_(fields|rows)|consume_input|connection_(status|reset|busy)|connect(_poll)?|convert|copy_(from|to)|\\n  client_encoding|close|cancel_query|tty|transaction_status|trace|insert|options|delete|dbname|untrace|\\n  unescape_bytea|update|pconnect|ping|port|put_line|parameter_status|prepare|version|query(_params)?|\\n  escape_(string|identifier|literal|bytea)|end_copy|execute|flush|free_result|last_(notice|error|oid)|\\n  field_(size|num|name|type(_oid)?|table|is_null|prtlen)|affected_rows|result_(status|seek|error(_field)?)|\\n  fetch_(object|assoc|all(_columns)?|array|row|result)|get_(notify|pid|result)|meta_data|\\n  lo_(seek|close|create|tell|truncate|import|open|unlink|export|write|read(_all)?)|\\n)\\\\b\",\n          \"name\": \"support.function.pgsql.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(virtual|getallheaders|apache_((get|set)env|note|child_terminate|lookup_uri|response_headers|reset_timeout|request_headers|get_(version|modules)))\\\\b\",\n          \"name\": \"support.function.php_apache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdom_import_simplexml\\\\b\",\n          \"name\": \"support.function.php_dom.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nftp_(\\n  ssl_connect|systype|site|size|set_option|nlist|nb_(continue|f?(put|get))|ch(dir|mod)|connect|cdup|close|\\n  delete|put|pwd|pasv|exec|quit|f(put|get)|login|alloc|rename|raw(list)?|rmdir|get(_option)?|mdtm|mkdir\\n)\\\\b\",\n          \"name\": \"support.function.php_ftp.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nimap_(\\n  (create|delete|list|rename|scan)(mailbox)?|status|sort|subscribe|set_quota|set(flag_full|acl)|search|savebody|\\n  num_(recent|msg)|check|close|clearflag_full|thread|timeout|open|header(info)?|headers|append|alerts|reopen|\\n  8bit|unsubscribe|undelete|utf7_(decode|encode)|utf8|uid|ping|errors|expunge|qprint|gc|\\n  fetch(structure|header|text|mime|body)|fetch_overview|lsub|list(scan|subscribed)|last_error|\\n  rfc822_(parse_(headers|adrlist)|write_address)|get(subscribed|acl|mailboxes)|get_quota(root)?|\\n  msgno|mime_header_decode|mail_(copy|compose|move)|mail|mailboxmsginfo|binary|body(struct)?|base64\\n)\\\\b\",\n          \"name\": \"support.function.php_imap.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmssql_(\\n  select_db|num_(fields|rows)|next_result|connect|close|init|data_seek|pconnect|execute|query|\\n  field_(seek|name|type|length)|fetch_(object|field|assoc|array|row|batch)|free_(statement|result)|\\n  rows_affected|result|guid_string|get_last_message|min_(error|message)_severity|bind\\n)\\\\b\",\n          \"name\": \"support.function.php_mssql.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nodbc_(\\n  statistics|specialcolumns|setoption|num_(fields|rows)|next_result|connect|columns|columnprivileges|commit|\\n  cursor|close(_all)?|tables|tableprivileges|do|data_source|pconnect|primarykeys|procedures|procedurecolumns|\\n  prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result|\\n  fetch_(into|object|array|row)|longreadlen|autocommit|rollback|result(_all)?|gettypeinfo|binmode\\n)\\\\b\",\n          \"name\": \"support.function.php_odbc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\\\b\",\n          \"name\": \"support.function.php_pcre.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\\\b\",\n          \"name\": \"support.function.php_spl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bzip_(close|open|entry_(name|compressionmethod|compressedsize|close|open|filesize|read)|read)\\\\b\",\n          \"name\": \"support.function.php_zip.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nposix_(\\n  strerror|set(s|e?u|[ep]?g)id|ctermid|ttyname|times|isatty|initgroups|uname|errno|kill|access|\\n  get(sid|cwd|uid|pid|ppid|pwnam|pwuid|pgid|pgrp|euid|egid|login|rlimit|gid|grnam|groups|grgid)|\\n  get_last_error|mknod|mkfifo\\n)\\\\b\",\n          \"name\": \"support.function.posix.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bset(thread|proc)title\\\\b\",\n          \"name\": \"support.function.proctitle.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npspell_(\\n  store_replacement|suggest|save_wordlist|new(_(config|personal))?|check|clear_session|\\n  config_(save_repl|create|ignore|(data|dict)_dir|personal|runtogether|repl|mode)|add_to_(session|personal)\\n)\\\\b\",\n          \"name\": \"support.function.pspell.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\breadline(_(completion_function|clear_history|callback_(handler_(install|remove)|read_char)|info|on_new_line|write_history|list_history|add_history|redisplay|read_history))?\\\\b\",\n          \"name\": \"support.function.readline.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brecode(_(string|file))?\\\\b\",\n          \"name\": \"support.function.recode.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brrd(c_disconnect|_(create|tune|info|update|error|version|first|fetch|last(update)?|restore|graph|xport))\\\\b\",\n          \"name\": \"support.function.rrd.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  shm_((get|has|remove|put)_var|detach|attach|remove)|sem_(acquire|release|remove|get)|ftok|\\n  msg_((get|remove|set|stat)_queue|send|queue_exists|receive)\\n)\\\\b\",\n          \"name\": \"support.function.sem.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsession_(\\n  status|start|set_(save_handler|cookie_params)|save_path|name|commit|cache_(expire|limiter)|\\n  is_registered|id|destroy|decode|unset|unregister|encode|write_close|abort|reset|register(_shutdown)?|\\n  regenerate_id|get_cookie_params|module_name\\n)\\\\b\",\n          \"name\": \"support.function.session.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bshmop_(size|close|open|delete|write|read)\\\\b\",\n          \"name\": \"support.function.shmop.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsimplexml_(import_dom|load_(string|file))\\\\b\",\n          \"name\": \"support.function.simplexml.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  snmp(walk(oid)?|realwalk|get(next)?|set)|\\n  snmp_(set_(valueretrieval|quick_print|enum_print|oid_(numeric_print|output_format))|read_mib|\\n        get_(valueretrieval|quick_print))|\\n  snmp[23]_(set|walk|real_walk|get(next)?)\\n)\\\\b\",\n          \"name\": \"support.function.snmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(is_soap_fault|use_soap_error_handler)\\\\b\",\n          \"name\": \"support.function.soap.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsocket_(\\n  shutdown|strerror|send(to|msg)?|set_((non)?block|option)|select|connect|close|clear_error|bind|\\n  create(_(pair|listen))?|cmsg_space|import_stream|write|listen|last_error|accept|recv(from|msg)?|\\n  read|get(peer|sock)name|get_option\\n)\\\\b\",\n          \"name\": \"support.function.sockets.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsqlite_(\\n  single_query|seek|has_(more|prev)|num_(fields|rows)|next|changes|column|current|close|\\n  create_(aggregate|function)|open|unbuffered_query|udf_(decode|encode)_binary|popen|prev|\\n  escape_string|error_string|exec|valid|key|query|field_name|factory|\\n  fetch_(string|single|column_types|object|all|array)|lib(encoding|version)|\\n  last_(insert_rowid|error)|array_query|rewind|busy_timeout\\n)\\\\b\",\n          \"name\": \"support.function.sqlite.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsqlsrv_(\\n  send_stream_data|server_info|has_rows|num_(fields|rows)|next_result|connect|configure|commit|\\n  client_info|close|cancel|prepare|errors|execute|query|field_metadata|fetch(_(array|object))?|\\n  free_stmt|rows_affected|rollback|get_(config|field)|begin_transaction\\n)\\\\b\",\n          \"name\": \"support.function.sqlsrv.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nstats_(\\n  harmonic_mean|covariance|standard_deviation|skew|\\n  cdf_(noncentral_(chisquare|f)|negative_binomial|chisquare|cauchy|t|uniform|poisson|exponential|f|weibull|\\n       logistic|laplace|gamma|binomial|beta)|\\n  stat_(noncentral_t|correlation|innerproduct|independent_t|powersum|percentile|paired_t|gennch|binomial_coef)|\\n  dens_(normal|negative_binomial|chisquare|cauchy|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|\\n        weibull|logistic|laplace|gamma|beta)|\\n  den_uniform|variance|kurtosis|absolute_deviation|\\n  rand_(setall|phrase_to_seeds|ranf|get_seeds|\\n        gen_(noncentral_[ft]|noncenral_chisquare|normal|chisquare|t|int|\\n             i(uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta))\\n)\\\\b\",\n          \"name\": \"support.function.stats.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  set_socket_blocking|\\n  stream_(socket_(shutdown|sendto|server|client|pair|enable_crypto|accept|recvfrom|get_name)|\\n    set_(chunk_size|timeout|(read|write)_buffer|blocking)|select|notification_callback|supports_lock|\\n    context_(set_(option|default|params)|create|get_(options|default|params))|copy_to_stream|is_local|\\n    encoding|filter_(append|prepend|register|remove)|wrapper_((un)?register|restore)|\\n    resolve_include_path|register_wrapper|get_(contents|transports|filters|wrappers|line|meta_data)|\\n    bucket_(new|prepend|append|make_writeable)\\n  )\\n)\\\\b\",\n          \"name\": \"support.function.streamsfuncs.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  money_format|md5(_file)?|metaphone|bin2hex|sscanf|sha1(_file)?|\\n  str(str|c?spn|n(at)?(case)?cmp|chr|coll|(case)?cmp|to(upper|lower)|tok|tr|istr|pos|pbrk|len|rchr|ri?pos|rev)|\\n  str_(getcsv|ireplace|pad|repeat|replace|rot13|shuffle|split|word_count)|\\n  strip(c?slashes|os)|strip_tags|similar_text|soundex|substr(_(count|compare|replace))?|setlocale|\\n  html(specialchars(_decode)?|entities)|html_entity_decode|hex2bin|hebrev(c)?|number_format|nl2br|nl_langinfo|\\n  chop|chunk_split|chr|convert_(cyr_string|uu(decode|encode))|count_chars|crypt|crc32|trim|implode|ord|\\n  uc(first|words)|join|parse_str|print(f)?|echo|explode|v?[fs]?printf|quoted_printable_(decode|encode)|\\n  quotemeta|wordwrap|lcfirst|[lr]trim|localeconv|levenshtein|addc?slashes|get_html_translation_table\\n)\\\\b\",\n          \"name\": \"support.function.string.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsybase_(\\n  set_message_handler|select_db|num_(fields|rows)|connect|close|deadlock_retry_count|data_seek|\\n  unbuffered_query|pconnect|query|field_seek|fetch_(object|field|assoc|array|row)|free_result|\\n  affected_rows|result|get_last_message|min_(client|error|message|server)_severity\\n)\\\\b\",\n          \"name\": \"support.function.sybase.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(taint|is_tainted|untaint)\\\\b\",\n          \"name\": \"support.function.taint.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  tidy_((get|set)opt|set_encoding|save_config|config_count|clean_repair|is_(xhtml|xml)|diagnose|\\n        (access|error|warning)_count|load_config|reset_config|(parse|repair)_(string|file)|\\n        get_(status|html(_ver)?|head|config|output|opt_doc|root|release|body))|\\n  ob_tidyhandler\\n)\\\\b\",\n          \"name\": \"support.function.tidy.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\btoken_(name|get_all)\\\\b\",\n          \"name\": \"support.function.tokenizer.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ntrader_(\\n  stoch(f|r|rsi)?|stddev|sin(h)?|sum|sub|set_(compat|unstable_period)|sqrt|sar(ext)?|sma|\\n  ht_(sine|trend(line|mode)|dc(period|phase)|phasor)|natr|cci|cos(h)?|correl|\\n  cdl(shootingstar|shortline|sticksandwich|stalledpattern|spinningtop|separatinglines|\\n      hikkake(mod)?|highwave|homingpigeon|hangingman|harami(cross)?|hammer|concealbabyswall|\\n      counterattack|closingmarubozu|thrusting|tasukigap|takuri|tristar|inneck|invertedhammer|\\n      identical3crows|2crows|onneck|doji(star)?|darkcloudcover|dragonflydoji|unique3river|\\n      upsidegap2crows|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|\\n      piercing|engulfing|evening(doji)?star|kicking(bylength)?|longline|longleggeddoji|\\n      ladderbottom|advanceblock|abandonedbaby|risefall3methods|rickshawman|gapsidesidewhite|\\n      gravestonedoji|xsidegap3methods|morning(doji)?star|mathold|matchinglow|marubozu|\\n      belthold|breakaway)|\\n  ceil|cmo|tsf|typprice|t3|tema|tan(h)?|trix|trima|trange|obv|div|dema|dx|ultosc|ppo|\\n  plus_d[im]|errno|exp|ema|var|kama|floor|wclprice|willr|wma|ln|log10|bop|beta|bbands|\\n  linearreg(_(slope|intercept|angle))?|asin|acos|atan|atr|adosc|ad|add|adx(r)?|apo|avgprice|\\n  aroon(osc)?|rsi|roc|rocp|rocr(100)?|get_(compat|unstable_period)|min(index)?|minus_d[im]|\\n  minmax(index)?|mid(point|price)|mom|mult|medprice|mfi|macd(ext|fix)?|mavp|max(index)?|ma(ma)?\\n)\\\\b\",\n          \"name\": \"support.function.trader.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\buopz_(copy|compose|implement|overload|delete|undefine|extend|function|flags|restore|rename|redefine|backup)\\\\b\",\n          \"name\": \"support.function.uopz.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(http_build_query|(raw)?url(decode|encode)|parse_url|get_(headers|meta_tags)|base64_(decode|encode))\\\\b\",\n          \"name\": \"support.function.url.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  strval|settype|serialize|(bool|double|float)val|debug_zval_dump|intval|import_request_variables|isset|\\n  is_(scalar|string|null|numeric|callable|int(eger)?|object|double|float|long|array|resource|real|bool)|\\n  unset|unserialize|print_r|empty|var_(dump|export)|gettype|get_(defined_vars|resource_type)\\n)\\\\b\",\n          \"name\": \"support.function.var.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bwddx_(serialize_(value|vars)|deserialize|packet_(start|end)|add_vars)\\\\b\",\n          \"name\": \"support.function.wddx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bxhprof_(sample_)?(disable|enable)\\\\b\",\n          \"name\": \"support.function.xhprof.php\"\n        },\n        {\n          \"match\": \"(?xi)\\n\\\\b\\n(\\n  utf8_(decode|encode)|\\n  xml_(set_((notation|(end|start)_namespace|unparsed_entity)_decl_handler|\\n            (character_data|default|element|external_entity_ref|processing_instruction)_handler|object)|\\n       parse(_into_struct)?|parser_((get|set)_option|create(_ns)?|free)|error_string|\\n       get_(current_((column|line)_number|byte_index)|error_code))\\n)\\\\b\",\n          \"name\": \"support.function.xml.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nxmlrpc_(\\n  server_(call_method|create|destroy|add_introspection_data|register_(introspection_callback|method))|\\n  is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|(get|set)_type\\n)\\\\b\",\n          \"name\": \"support.function.xmlrpc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nxmlwriter_(\\n  (end|start|write)_(comment|cdata|dtd(_(attlist|entity|element))?|document|pi|attribute|element)|\\n  (start|write)_(attribute|element)_ns|write_raw|set_indent(_string)?|text|output_memory|open_(memory|uri)|\\n  full_end_element|flush|\\n)\\\\b\",\n          \"name\": \"support.function.xmlwriter.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  zlib_(decode|encode|get_coding_type)|readgzfile|\\n  gz(seek|compress|close|tell|inflate|open|decode|deflate|uncompress|puts|passthru|encode|eof|file|\\n     write|rewind|read|getc|getss?)\\n)\\\\b\",\n          \"name\": \"support.function.zlib.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bis_int(eger)?\\\\b\",\n          \"name\": \"support.function.alias.php\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+(?=switch\\\\b)\"\n        },\n        {\n          \"begin\": \"\\\\bswitch\\\\b(?!\\\\s*\\\\(.*\\\\)\\\\s*:)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.switch.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.section.switch-block.end.bracket.curly.php\"\n            }\n          },\n          \"name\": \"meta.switch-statement.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.switch-expression.begin.bracket.round.php\"\n                }\n              },\n              \"end\": \"\\\\)|(?=\\\\?>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.switch-expression.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.section.switch-block.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"(?=}|\\\\?>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"match_statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+(?=match\\\\b)\"\n        },\n        {\n          \"begin\": \"\\\\bmatch\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.match.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.section.match-block.end.bracket.curly.php\"\n            }\n          },\n          \"name\": \"meta.match-statement.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.match-expression.begin.bracket.round.php\"\n                }\n              },\n              \"end\": \"\\\\)|(?=\\\\?>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.match-expression.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.section.match-block.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"(?=}|\\\\?>)\",\n              \"patterns\": [\n                {\n                  \"match\": \"=>\",\n                  \"name\": \"keyword.definition.arrow.php\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"use-inner\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.use-as.php\"\n            }\n          },\n          \"end\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.alias.php\"\n            }\n          }\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"var_basic\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n          \"name\": \"variable.other.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"var_global\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\\\b\",\n      \"name\": \"variable.other.global.php\"\n    },\n    \"var_global_safer\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((GLOBALS|_(ENV|SERVER|SESSION)))\",\n      \"name\": \"variable.other.global.safer.php\"\n    },\n    \"var_language\": {\n      \"match\": \"(\\\\$)this\\\\b\",\n      \"name\": \"variable.language.this.php\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      }\n    },\n    \"variable-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            },\n            \"7\": {\n              \"name\": \"constant.numeric.index.php\"\n            },\n            \"8\": {\n              \"name\": \"variable.other.index.php\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"10\": {\n              \"name\": \"string.unquoted.index.php\"\n            },\n            \"11\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"match\": \"(?xi)\\n((\\\\$)(?<name>[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*))\\\\s*\\n(?:\\n  (\\\\??->)\\\\s*(\\\\g<name>)\\n  |\\n  (\\\\[)(?:(\\\\d+)|((\\\\$)\\\\g<name>)|([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*))(\\\\])\\n)?\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)((\\\\${)(?<name>[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)(}))\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_language\"\n        },\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"include\": \"#var_basic\"\n        },\n        {\n          \"begin\": \"\\\\${(?=.*?})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"ternary_shorthand\": {\n      \"match\": \"\\\\?:\",\n      \"name\": \"keyword.operator.ternary.php\"\n    },\n    \"ternary_expression\": {\n      \"begin\": \"\\\\?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.php\"\n        }\n      },\n      \"end\": \"(?<!:):(?!:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?i)^\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(?=:(?!:))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"null_coalescing\": {\n      \"match\": \"\\\\?\\\\?\",\n      \"name\": \"keyword.operator.null-coalescing.php\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/pig.tmLanguage.json",
    "content": "{\n  \"name\": \"Pig\",\n  \"scopeName\": \"source.pig\",\n  \"fileTypes\": [\"pig\", \"piglet\"],\n  \"patterns\": [\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.pig\"\n    },\n    {\n      \"match\": \"(--).*$\\\\n?\",\n      \"name\": \"comment.line.double-dash.pig\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.pig\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.pig\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.pig\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.pig\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(NULL|true|false|stdin|stdout|stderr)\\\\b\",\n      \"name\": \"constant.language.pig\"\n    },\n    {\n      \"match\": \"\\\\b(DIFF|TOBAG|TOMAP|TOP|TOTUPLE|RANDOM|FLATTEN|flatten|CUBE|ROLLUP|IsEmpty|ARITY|PluckTuple|SUBTRACT|BagToString)\\\\b\",\n      \"name\": \"entity.name.function.pig\"\n    },\n    {\n      \"match\": \"\\\\b(ABS|ACOS|ASIN|ATAN|CBRT|CEIL|COS|COSH|EXP|FLOOR|LOG|LOG10|ROUND|ROUND_TO|SIN|SINH|SQRT|TAN|TANH|AVG|COUNT|COUNT_STAR|MAX|MIN|SUM|COR|COV)\\\\b\",\n      \"name\": \"entity.name.function.pig\"\n    },\n    {\n      \"match\": \"\\\\b(CONCAT|INDEXOF|LAST_INDEX_OF|LCFIRST|LOWER|REGEX_EXTRACT|REGEX_EXTRACT_ALL|REPLACE|SIZE|STRSPLIT|SUBSTRING|TOKENIZE|TRIM|UCFIRST|UPPER|LTRIM|RTRIM|ENDSWITH|STARTSWITH|TRIM)\\\\b\",\n      \"name\": \"entity.name.function.pig\"\n    },\n    {\n      \"match\": \"\\\\b(CurrentTime|AddDuration|GetHour|DaysBetween|GetDay|GetMilliSecond|GetMinute|GetMonth|GetSecond|GetWeek|GetWeekYear|GetYear|HoursBetween|MilliSecondsBetween|MinutesBetween|MonthsBetween|SecondsBetween|SubtractDuration|ToDate|WeeksBetween|YearsBetween|ToMilliSeconds|ToString|ToUnixTime)\\\\b\",\n      \"name\": \"entity.name.function.pig\"\n    },\n    {\n      \"match\": \"\\\\b(cat|cd|copyFromLocal|copyToLocal|cp|ls|mkdir|mv|pwd|rm)\\\\b\",\n      \"name\": \"entity.name.function.pig\"\n    },\n    {\n      \"match\": \"\\\\b(PigStorage|BinStorage|BinaryStorage|PigDump|HBaseStorage|JsonLoader|JsonStorage|AvroStorage|TextLoader|PigStreaming|TrevniStorage|AccumuloStorage)\\\\b\",\n      \"name\": \"entity.name.function.pig\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(ASSERT|LOAD|STORE|DUMP|FILTER|DISTINCT|FOREACH|GENERATE|STREAM|JOIN|COGROUP|GROUP|CROSS|ORDER|LIMIT|UNION|SPLIT|DESCRIBE|EXPLAIN|ILLUSTRATE|AS|BY|INTO|USING|LIMIT|PARALLEL|OUTER|INNER|LEFT|SAMPLE|RANK|CUBE|ALL|KILL|QUIT|MAPREDUCE|ASC|DESC|THROUGH|SHIP|CACHE|CASE|WHEN|THEN|END|IN|PARTITION|FULL|SET|IF|ONSCHEMA|INPUT|OUTPUT)\\\\b\",\n      \"name\": \"keyword.control.pig\"\n    },\n    {\n      \"match\": \"\\\\b(bytearray|boolean|chararray|datetime|double|float|int|long)\\\\b\",\n      \"name\": \"storage.type.pig\"\n    },\n    {\n      \"match\": \"\\\\b(bag|map|tuple)\\\\b\",\n      \"name\": \"support.type.pig\"\n    },\n    {\n      \"match\": \"\\\\b((([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|F|f)?\\\\b\",\n      \"name\": \"constant.numeric.pig\"\n    },\n    {\n      \"match\": \"\\\\b(\\\\+|\\\\*|\\\\-|\\\\/|\\\\%|&|\\\\|\\\\^|~)\\\\b\",\n      \"name\": \"keyword.operator.arithmetic.pig\"\n    },\n    {\n      \"match\": \"\\\\$[a_zA-Z0-9_]+\",\n      \"name\": \"variable.language.pig\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.pig\"\n    },\n    {\n      \"begin\": \"(?i)^\\\\s*([a-z_][a-z0-9_]*)\\\\s*(?:=)\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.variable.pig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?i)^\\\\s*(register|import)\\\\s+\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.pig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?i)^\\\\s*(%declare|%default)\\\\s*(\\\\S+)?\\\\s*\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.pig\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.pig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?i)^\\\\s*(define)\\\\s*(\\\\S+)?\\\\s*\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.pig\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.pig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    }\n  ],\n  \"uuid\": \"54caed77-86b5-4b23-86db-7dd942cbde85\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/plain-text.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.plain\",\n  \"patterns\": [],\n  \"name\": \"Plain Text\",\n  \"fileTypes\": [\"txt\"]\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/plsql.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"sql\", \"ddl\", \"dml\", \"pkh\", \"pks\", \"pkb\", \"pck\", \"pls\", \"plb\"],\n  \"foldingStartMarker\": \"(?i)^\\\\s*(begin|if|loop)\\\\b\",\n  \"foldingStopMarker\": \"(?i)^\\\\s*(end)\\\\b\",\n  \"keyEquivalent\": \"^~S\",\n  \"name\": \"plsql\",\n  \"patterns\": [\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.oracle\"\n    },\n    {\n      \"match\": \"--.*$\",\n      \"name\": \"comment.line.double-dash.oracle\"\n    },\n    {\n      \"match\": \"(?i)(?:^\\\\s*)rem(?:\\\\s+.*$)\",\n      \"name\": \"comment.line.sqlplus.oracle\"\n    },\n    {\n      \"match\": \"(?i)(?:^\\\\s*)prompt(?:\\\\s+.*$)\",\n      \"name\": \"comment.line.sqlplus-prompt.oracle\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.oracle\"\n        }\n      },\n      \"match\": \"(?i)^\\\\s*(create)(\\\\s+or\\\\s+replace)?\\\\s+\",\n      \"name\": \"meta.create.oracle\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b(package)(\\\\s+body)?\\\\s+(\\\\S+)\",\n      \"name\": \"meta.package.oracle\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b(type)\\\\s+\\\"([^\\\"]+)\\\"\",\n      \"name\": \"meta.type.oracle\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.oracle\"\n        }\n      },\n      \"match\": \"(?i)^\\\\s*(function|procedure)\\\\s+\\\"?([-a-z0-9_]+)\\\"?\",\n      \"name\": \"meta.procedure.oracle\"\n    },\n    {\n      \"match\": \"[!<>:]?=|<>|<|>|\\\\+|(?<!\\\\.)\\\\*|-|(?<!^)/|\\\\|\\\\|\",\n      \"name\": \"keyword.operator.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(true|false|null|is\\\\s+(not\\\\s+)?null)\\\\b\",\n      \"name\": \"constant.language.oracle\"\n    },\n    {\n      \"match\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\\\\b\",\n      \"name\": \"constant.numeric.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(if|elsif|else|end\\\\s+if|loop|end\\\\s+loop|for|while|case|end\\\\s+case|continue|return|goto)\\\\b\",\n      \"name\": \"keyword.control.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(or|and|not|like)\\\\b\",\n      \"name\": \"keyword.other.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(%(isopen|found|notfound|rowcount)|commit|rollback|sqlerrm)\\\\b\",\n      \"name\": \"support.function.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(sql|sqlcode)\\\\b\",\n      \"name\": \"variable.language.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(ascii|asciistr|chr|compose|concat|convert|decompose|dump|initcap|instr|instrb|instrc|instr2|instr4|unistr|length|lengthb|lengthc|length2|length4|lower|lpad|ltrim|nchr|replace|rpad|rtrim|soundex|substr|translate|trim|upper|vsize)\\\\b\",\n      \"name\": \"support.function.builtin.char.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(add_months|current_date|current_timestamp|dbtimezone|last_day|localtimestamp|months_between|new_time|next_day|round|sessiontimezone|sysdate|tz_offset|systimestamp)\\\\b\",\n      \"name\": \"support.function.builtin.date.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(avg|count|sum|max|min|median|corr|corr_\\\\w+|covar_(pop|samp)|cume_dist|dense_rank|first|group_id|grouping|grouping_id|last|percentile_cont|percentile_disc|percent_rank|rank|regr_\\\\w+|row_number|stats_binomial_test|stats_crosstab|stats_f_test|stats_ks_test|stats_mode|stats_mw_test|stats_one_way_anova|stats_t_test_\\\\w+|stats_wsr_test|stddev|stddev_pop|stddev_samp|var_pop|var_samp|variance)\\\\b\",\n      \"name\": \"support.function.builtin.aggregate.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(bfilename|cardinality|coalesce|decode|empty_(blob|clob)|lag|lead|listagg|lnnvl|nanvl|nullif|nvl|nvl2|sys_(context|guid|typeid|connect_by_path|extract_utc)|uid|(current\\\\s+)?user|userenv|cardinality|(bulk\\\\s+)?collect|powermultiset(_by_cardinality)?|ora_hash|standard_hash|execute\\\\s+immediate|alter\\\\s+session)\\\\b\",\n      \"name\": \"support.function.builtin.advanced.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(bin_to_num|cast|chartorowid|from_tz|hextoraw|numtodsinterval|numtoyminterval|rawtohex|rawtonhex|to_char|to_clob|to_date|to_dsinterval|to_lob|to_multi_byte|to_nclob|to_number|to_single_byte|to_timestamp|to_timestamp_tz|to_yminterval|scn_to_timestamp|timestamp_to_scn|rowidtochar|rowidtonchar|to_binary_double|to_binary_float|to_blob|to_nchar|con_dbid_to_id|con_guid_to_id|con_name_to_id|con_uid_to_id)\\\\b\",\n      \"name\": \"support.function.builtin.convert.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(abs|acos|asin|atan|atan2|bit_(and|or|xor)|ceil|cos|cosh|exp|extract|floor|greatest|least|ln|log|mod|power|remainder|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\\\b\",\n      \"name\": \"support.function.builtin.math.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(\\\\.(count|delete|exists|extend|first|last|limit|next|prior|trim|reverse))\\\\b\",\n      \"name\": \"support.function.builtin.collection.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(cluster_details|cluster_distance|cluster_id|cluster_probability|cluster_set|feature_details|feature_id|feature_set|feature_value|prediction|prediction_bounds|prediction_cost|prediction_details|prediction_probability|prediction_set)\\\\b\",\n      \"name\": \"support.function.builtin.data_mining.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(appendchildxml|deletexml|depth|extract|existsnode|extractvalue|insertchildxml|insertxmlbefore|xmlcast|xmldiff|xmlelement|xmlexists|xmlisvalid|insertchildxmlafter|insertchildxmlbefore|path|sys_dburigen|sys_xmlagg|sys_xmlgen|updatexml|xmlagg|xmlcdata|xmlcolattval|xmlcomment|xmlconcat|xmlforest|xmlparse|xmlpi|xmlquery|xmlroot|xmlsequence|xmlserialize|xmltable|xmltransform)\\\\b\",\n      \"name\": \"support.function.builtin.xml.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(pragma\\\\s+(autonomous_transaction|serially_reusable|restrict_references|exception_init|inline))\\\\b\",\n      \"name\": \"keyword.other.pragma.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(p(i|o|io)_[-a-z0-9_]+)\\\\b\",\n      \"name\": \"variable.parameter.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(l_[-a-z0-9_]+)\\\\b\",\n      \"name\": \"variable.other.oracle\"\n    },\n    {\n      \"match\": \"(?i):\\\\b(new|old)\\\\b\",\n      \"name\": \"variable.trigger.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(connect\\\\s+by\\\\s+(nocycle\\\\s+)?(prior|level)|connect_by_(root|icycle)|level|start\\\\s+with)\\\\b\",\n      \"name\": \"keyword.hierarchical.sql.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(language|name|java|c)\\\\b\",\n      \"name\": \"keyword.wrapper.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(end|then|deterministic|exception|when|declare|begin|in|out|nocopy|is|as|exit|open|fetch|into|close|subtype|type|rowtype|default|exclusive|mode|lock|record|index\\\\s+by|result_cache|constant|comment|\\\\.(nextval|currval))\\\\b\",\n      \"name\": \"keyword.other.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(grant|revoke|alter|drop|force|add|check|constraint|primary\\\\s+key|foreign\\\\s+key|references|unique(\\\\s+index)?|column|sequence|increment\\\\s+by|cache|(materialized\\\\s+)?view|trigger|storage|tablespace|pct(free|used)|(init|max)trans|logging)\\\\b\",\n      \"name\": \"keyword.other.ddl.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(with|select|from|where|order\\\\s+(siblings\\\\s+)?by|group\\\\s+by|rollup|cube|((left|right|cross|natural)\\\\s+(outer\\\\s+)?)?join|on|asc|desc|update|set|insert|into|values|delete|distinct|union|minus|intersect|having|limit|table|between|like|of|row|(range|rows)\\\\s+between|nulls\\\\s+first|nulls\\\\s+last|before|after|all|any|exists|rownum|cursor|returning|over|partition\\\\s+by|merge|using|matched|pivot|unpivot)\\\\b\",\n      \"name\": \"keyword.other.sql.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(define|whenever\\\\s+sqlerror|exec|timing\\\\s+start|timing\\\\s+stop)\\\\b\",\n      \"name\": \"keyword.other.sqlplus.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(access_into_null|case_not_found|collection_is_null|cursor_already_open|dup_val_on_index|invalid_cursor|invalid_number|login_denied|no_data_found|not_logged_on|program_error|rowtype_mismatch|self_is_null|storage_error|subscript_beyond_count|subscript_outside_limit|sys_invalid_rowid|timeout_on_resource|too_many_rows|value_error|zero_divide|others)\\\\b\",\n      \"name\": \"support.type.exception.oracle\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"support.class.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b((dbms|utl|owa|apex)_\\\\w+\\\\.(\\\\w+))\\\\b\",\n      \"name\": \"support.function.oracle\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"support.class.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b((htf|htp)\\\\.(\\\\w+))\\\\b\",\n      \"name\": \"support.function.oracle\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"support.class.user-defined.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b((\\\\w+_pkg|pkg_\\\\w+)\\\\.(\\\\w+))\\\\b\",\n      \"name\": \"support.function.user-defined.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(raise|raise_application_error)\\\\b\",\n      \"name\": \"support.function.oracle\"\n    },\n    {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.oracle\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(char|varchar|varchar2|nchar|nvarchar2|boolean|date|timestamp(\\\\s+with(\\\\s+local)?\\\\s+time\\\\s+zone)?|interval\\\\s*day(\\\\(\\\\d*\\\\))?\\\\s*to\\\\s*month|interval\\\\s*year(\\\\(\\\\d*\\\\))?\\\\s*to\\\\s*second(\\\\(\\\\d*\\\\))?|xmltype|blob|clob|nclob|bfile|long|long\\\\s+raw|raw|number|integer|decimal|smallint|float|binary_(float|double|integer)|pls_(float|double|integer)|rowid|urowid|vararray|natural|naturaln|positive|positiven|signtype|simple_(float|double|integer))\\\\b\",\n      \"name\": \"storage.type.oracle\"\n    }\n  ],\n  \"scopeName\": \"source.plsql.oracle\",\n  \"uuid\": \"28DCE4DD-F5E1-4ED3-8847-64DA6B1F9163\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/postcss.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"\\\\*/|^\\\\s*$\",\n  \"foldingStartMarker\": \"/\\\\*|^#|^\\\\*|^\\\\b|^\\\\.\",\n  \"repository\": {\n    \"reserved-words\": {\n      \"match\": \"\\\\b(false|from|in|not|null|through|to|true)\\\\b\",\n      \"name\": \"support.type.property-name.css.postcss\"\n    },\n    \"numeric\": {\n      \"match\": \"(-|\\\\.)?[0-9]+(\\\\.[0-9]+)?\",\n      \"name\": \"constant.numeric.css.postcss\"\n    },\n    \"quoted-interpolation\": {\n      \"begin\": \"#{\",\n      \"end\": \"}\",\n      \"patterns\": [\n        { \"include\": \"#variable\" },\n        { \"include\": \"#numeric\" },\n        { \"include\": \"#operator\" },\n        { \"include\": \"#unit\" }\n      ],\n      \"name\": \"support.function.interpolation.postcss\"\n    },\n    \"operator\": {\n      \"match\": \"\\\\+|\\\\s-\\\\s|\\\\s-(?=\\\\$)|(?<=\\\\()-(?=\\\\$)|\\\\s-(?=\\\\()|\\\\*|/|%|=|!|<|>|~\",\n      \"name\": \"keyword.operator.postcss\"\n    },\n    \"function-content\": {\n      \"match\": \"(?<=url\\\\(|format\\\\(|attr\\\\().+?(?=\\\\))\",\n      \"name\": \"string.quoted.double.css.postcss\"\n    },\n    \"double-slash\": {\n      \"begin\": \"//\",\n      \"end\": \"$\",\n      \"patterns\": [{ \"include\": \"#comment-tag\" }],\n      \"name\": \"comment.line.postcss\"\n    },\n    \"dotdotdot\": { \"match\": \"\\\\.{3}\", \"name\": \"variable.other\" },\n    \"single-quoted\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"patterns\": [{ \"include\": \"#quoted-interpolation\" }],\n      \"name\": \"string.quoted.single.css.postcss\"\n    },\n    \"rgb-value\": {\n      \"match\": \"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\\\b\",\n      \"name\": \"constant.other.color.rgb-value.css.postcss\"\n    },\n    \"flag\": {\n      \"match\": \"!(important|default|optional|global)\",\n      \"name\": \"keyword.other.important.css.postcss\"\n    },\n    \"variable-root-css\": {\n      \"match\": \"(?<!&)--[\\\\w-]+\",\n      \"name\": \"variable.parameter.postcss\"\n    },\n    \"function-content-var\": {\n      \"match\": \"(?<=var\\\\()[\\\\w-]+(?=\\\\))\",\n      \"name\": \"variable.parameter.postcss\"\n    },\n    \"comment-tag\": {\n      \"begin\": \"{{\",\n      \"end\": \"}}\",\n      \"patterns\": [{ \"match\": \"[\\\\w-]+\", \"name\": \"comment.tag.postcss\" }],\n      \"name\": \"comment.tags.postcss\"\n    },\n    \"property-value\": {\n      \"match\": \"[\\\\w-]+\",\n      \"name\": \"meta.property-value.css.postcss, support.constant.property-value.css.postcss\"\n    },\n    \"function\": {\n      \"match\": \"(?<=[\\\\s|\\\\(|,|:])(?!url|format|attr)[\\\\w-][\\\\w-]*(?=\\\\()\",\n      \"name\": \"support.function.name.postcss\"\n    },\n    \"pseudo-class\": {\n      \"match\": \":[a-z:-]+\",\n      \"name\": \"entity.other.attribute-name.pseudo-class.css.postcss\"\n    },\n    \"interpolation\": {\n      \"begin\": \"#{\",\n      \"end\": \"}\",\n      \"patterns\": [\n        { \"include\": \"#variable\" },\n        { \"include\": \"#numeric\" },\n        { \"include\": \"#operator\" },\n        { \"include\": \"#unit\" },\n        { \"include\": \"#double-quoted\" },\n        { \"include\": \"#single-quoted\" }\n      ],\n      \"name\": \"support.function.interpolation.postcss\"\n    },\n    \"parent-selector\": { \"match\": \"&\", \"name\": \"entity.name.tag.css.postcss\" },\n    \"unit\": {\n      \"match\": \"(?<=[\\\\d]|})(ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw|%)\",\n      \"name\": \"keyword.other.unit.css.postcss\"\n    },\n    \"variable\": { \"match\": \"\\\\$[\\\\w-]+\", \"name\": \"variable.parameter.postcss\" },\n    \"placeholder-selector\": {\n      \"begin\": \"(?<!\\\\d)%(?!\\\\d)\",\n      \"end\": \"$\\\\n?|\\\\s|(?=;|{)\",\n      \"name\": \"entity.other.attribute-name.placeholder-selector.postcss\"\n    },\n    \"double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [{ \"include\": \"#quoted-interpolation\" }],\n      \"name\": \"string.quoted.double.css.postcss\"\n    }\n  },\n  \"fileTypes\": [\"pcss\", \"postcss\"],\n  \"uuid\": \"90DAEA60-88AA-11E2-9E96-0800200C9A66\",\n  \"patterns\": [\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"patterns\": [{ \"include\": \"#comment-tag\" }],\n      \"name\": \"comment.block.postcss\"\n    },\n    { \"include\": \"#double-slash\" },\n    { \"include\": \"#double-quoted\" },\n    { \"include\": \"#single-quoted\" },\n    { \"include\": \"#interpolation\" },\n    { \"include\": \"#placeholder-selector\" },\n    { \"include\": \"#variable\" },\n    { \"include\": \"#variable-root-css\" },\n    { \"include\": \"#numeric\" },\n    { \"include\": \"#unit\" },\n    { \"include\": \"#flag\" },\n    { \"include\": \"#dotdotdot\" },\n    {\n      \"begin\": \"@include\",\n      \"end\": \"(?=\\\\n|\\\\(|{|;)\",\n      \"name\": \"support.function.name.postcss.library\",\n      \"captures\": { \"0\": { \"name\": \"keyword.control.at-rule.css.postcss\" } }\n    },\n    {\n      \"begin\": \"@mixin|@function\",\n      \"end\": \"$\\\\n?|(?=\\\\(|{)\",\n      \"patterns\": [{ \"match\": \"[\\\\w-]+\", \"name\": \"entity.name.function\" }],\n      \"name\": \"support.function.name.postcss.no-completions\",\n      \"captures\": { \"0\": { \"name\": \"keyword.control.at-rule.css.postcss\" } }\n    },\n    {\n      \"match\": \"(?<=@import)\\\\s[\\\\w/.*-]+\",\n      \"name\": \"string.quoted.double.css.postcss\"\n    },\n    {\n      \"begin\": \"@\",\n      \"end\": \"$\\\\n?|\\\\s(?!(all|braille|embossed|handheld|print|projection|screen|speech|tty|tv|if|only|not)(\\\\s|,))|(?=;)\",\n      \"name\": \"keyword.control.at-rule.css.postcss\"\n    },\n    {\n      \"begin\": \"#\",\n      \"end\": \"$\\\\n?|(?=\\\\s|,|;|\\\\(|\\\\)|\\\\.|\\\\[|{|>)\",\n      \"patterns\": [\n        { \"include\": \"#interpolation\" },\n        { \"include\": \"#pseudo-class\" }\n      ],\n      \"name\": \"entity.other.attribute-name.id.css.postcss\"\n    },\n    {\n      \"begin\": \"\\\\.|(?<=&)(-|_)\",\n      \"end\": \"$\\\\n?|(?=\\\\s|,|;|\\\\(|\\\\)|\\\\[|{|>)\",\n      \"patterns\": [\n        { \"include\": \"#interpolation\" },\n        { \"include\": \"#pseudo-class\" }\n      ],\n      \"name\": \"entity.other.attribute-name.class.css.postcss\"\n    },\n    {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        { \"include\": \"#double-quoted\" },\n        { \"include\": \"#single-quoted\" },\n        { \"match\": \"\\\\^|\\\\$|\\\\*|~\", \"name\": \"keyword.other.regex.postcss\" }\n      ],\n      \"name\": \"entity.other.attribute-selector.postcss\"\n    },\n    {\n      \"match\": \"(?<=\\\\]|\\\\)|not\\\\(|\\\\*|>|>\\\\s):[a-z:-]+|(::|:-)[a-z:-]+\",\n      \"name\": \"entity.other.attribute-name.pseudo-class.css.postcss\"\n    },\n    {\n      \"begin\": \":\",\n      \"end\": \"$\\\\n?|(?=;|\\\\s\\\\(|and\\\\(|{|}|\\\\),)\",\n      \"patterns\": [\n        { \"include\": \"#double-slash\" },\n        { \"include\": \"#double-quoted\" },\n        { \"include\": \"#single-quoted\" },\n        { \"include\": \"#interpolation\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#rgb-value\" },\n        { \"include\": \"#numeric\" },\n        { \"include\": \"#unit\" },\n        { \"include\": \"#flag\" },\n        { \"include\": \"#function\" },\n        { \"include\": \"#function-content\" },\n        { \"include\": \"#function-content-var\" },\n        { \"include\": \"#operator\" },\n        { \"include\": \"#parent-selector\" },\n        { \"include\": \"#property-value\" }\n      ],\n      \"name\": \"meta.property-list.css.postcss\"\n    },\n    { \"include\": \"#rgb-value\" },\n    { \"include\": \"#function\" },\n    { \"include\": \"#function-content\" },\n    {\n      \"begin\": \"(?<!\\\\-|\\\\()\\\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|main|svg|rect|ruby|center|circle|ellipse|line|polyline|polygon|path|text|u|x)\\\\b(?!-|\\\\)|:\\\\s)|&\",\n      \"end\": \"(?=\\\\s|,|;|\\\\(|\\\\)|\\\\.|\\\\[|{|>|-|_)\",\n      \"patterns\": [\n        { \"include\": \"#interpolation\" },\n        { \"include\": \"#pseudo-class\" }\n      ],\n      \"name\": \"entity.name.tag.css.postcss.symbol\"\n    },\n    { \"include\": \"#operator\" },\n    {\n      \"match\": \"[a-z-]+((?=:|#{))\",\n      \"name\": \"support.type.property-name.css.postcss\"\n    },\n    { \"include\": \"#reserved-words\" },\n    { \"include\": \"#property-value\" }\n  ],\n  \"name\": \"PostCSS\",\n  \"scopeName\": \"source.postcss\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/postscript.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"ps\", \"eps\"],\n  \"firstLineMatch\": \"^%!PS\",\n  \"repository\": {\n    \"string_content\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[0-7]{1,3}\",\n          \"name\": \"constant.numeric.octal.postscript\"\n        },\n        {\n          \"match\": \"\\\\\\\\(\\\\\\\\|[nrtbf\\\\(\\\\)]|[0-7]{1,3}|\\\\r?\\\\n)\",\n          \"name\": \"constant.character.escape.postscript\"\n        },\n        {\n          \"match\": \"\\\\\\\\\",\n          \"name\": \"invalid.illegal.unknown-escape.postscript.ignored\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"#string_content\" }]\n        }\n      ]\n    }\n  },\n  \"keyEquivalent\": \"^~P\",\n  \"uuid\": \"B89483CD-6AE0-4517-BE2C-82F8083B7359\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\(\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.postscript\" }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#string_content\" }],\n      \"name\": \"string.other.postscript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.postscript\" }\n      }\n    },\n    {\n      \"match\": \"^(%%(BeginBinary:|BeginCustomColor:|BeginData:|BeginDefaults|BeginDocument:|BeginEmulation:|BeginExitServer:|BeginFeature:|BeginFile:|BeginFont:|BeginObject:|BeginPageSetup:|BeginPaperSize:|BeginPreview:|BeginProcSet|BeginProcessColor:|BeginProlog|BeginResource:|BeginSetup|BoundingBox:|CMYKCustomColor:|ChangeFont:|Copyright:|CreationDate:|Creator:|DocumentCustomColors:|DocumentData:|DocumentFonts:|DocumentMedia:|DocumentNeededFiles:|DocumentNeededFonts:|DocumentNeededProcSets:|DocumentNeededResources:|DocumentPaperColors:|DocumentPaperForms:|DocumentPaperSizes:|DocumentPaperWeights:|DocumentPrinterRequired:|DocumentProcSets:|DocumentProcessColors:|DocumentSuppliedFiles:|DocumentSuppliedFonts:|DocumentSuppliedProcSets:|DocumentSuppliedResources:|EOF|Emulation:|EndBinary:|EndComments|EndCustomColor:|EndData:|EndDefaults|EndDocument:|EndEmulation:|EndExitServer:|EndFeature:|EndFile:|EndFont:|EndObject:|EndPageSetup:|EndPaperSize:|EndPreview:|EndProcSet|EndProcessColor:|EndProlog|EndResource:|EndSetup|ExecuteFile:|Extensions:|Feature:|For:|IncludeDocument:|IncludeFeature:|IncludeFile:|IncludeFont:|IncludeProcSet:|IncludeResource:|LanguageLevel:|OperatorIntervention:|OperatorMessage:|Orientation:|Page:|PageBoundingBox:|PageCustomColors|PageCustomColors:|PageFiles:|PageFonts:|PageMedia:|PageOrder:|PageOrientation:|PageProcessColors|PageProcessColors:|PageRequirements:|PageResources:|PageTrailer|Pages:|PaperColor:|PaperForm:|PaperSize:|PaperWeight:|ProofMode:|RGBCustomColor:|Requirements:|Routing:|Title:|Trailer|VMlocation:|VMusage:|Version|Version:|\\\\+|\\\\?BeginFeatureQuery:|\\\\?BeginFileQuery:|\\\\?BeginFontListQuery:|\\\\?BeginFontQuery:|\\\\?BeginPrinterQuery:|\\\\?BeginProcSetQuery:|\\\\?BeginQuery:|\\\\?BeginResourceListQuery:|\\\\?BeginResourceQuery:|\\\\?BeginVMStatus:|\\\\?EndFeatureQuery:|\\\\?EndFileQuery:|\\\\?EndFontListQuery:|\\\\?EndFontQuery:|\\\\?EndPrinterQuery:|\\\\?EndProcSetQuery:|\\\\?EndQuery:|\\\\?EndResourceListQuery:|\\\\?EndResourceQuery:|\\\\?EndVMStatus:))\\\\s*(.*)$\\\\n?\",\n      \"name\": \"meta.Document-Structuring-Comment.postscript\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.DSC.postscript\" },\n        \"3\": { \"name\": \"string.unquoted.DSC.postscript\" }\n      }\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=%)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"%\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.percentage.postscript\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.postscript\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.postscript\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\<\\\\<\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.dictionary.end.postscript\" }\n      },\n      \"end\": \"\\\\>\\\\>\",\n      \"patterns\": [{ \"include\": \"$self\" }],\n      \"name\": \"meta.dictionary.postscript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.dictionary.begin.postscript\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\[\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.array.end.postscript\" }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [{ \"include\": \"$self\" }],\n      \"name\": \"meta.array.postscript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.array.begin.postscript\" }\n      }\n    },\n    {\n      \"begin\": \"{\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.procedure.end.postscript\" }\n      },\n      \"end\": \"}\",\n      \"patterns\": [{ \"include\": \"$self\" }],\n      \"name\": \"meta.procedure.postscript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.procedure.begin.postscript\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\<\\\\~\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.postscript\" }\n      },\n      \"end\": \"\\\\~\\\\>\",\n      \"patterns\": [\n        { \"match\": \"[!-z\\\\s]+\" },\n        { \"match\": \".\", \"name\": \"invalid.illegal.base85.char.postscript\" }\n      ],\n      \"name\": \"string.other.base85.postscript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.postscript\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\<\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.postscript\" }\n      },\n      \"end\": \"\\\\>\",\n      \"patterns\": [\n        { \"match\": \"[0-9A-Fa-f\\\\s]+\" },\n        { \"match\": \".\", \"name\": \"invalid.illegal.hexadecimal.char.postscript\" }\n      ],\n      \"name\": \"string.other.hexadecimal.postscript\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.postscript\" }\n      }\n    },\n    {\n      \"comment\": \"well, not really, but short of listing rules for all bases from 2-36 best we can do\",\n      \"match\": \"[0-3]?[0-9]#[0-9a-zA-Z]+\",\n      \"name\": \"constant.numeric.radix.postscript\"\n    },\n    {\n      \"match\": \"(\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d*)?([eE](\\\\-|\\\\+)?\\\\d+)?\",\n      \"name\": \"constant.numeric.postscript\"\n    },\n    {\n      \"match\": \"(\\\\-|\\\\+)?\\\\.\\\\d+([eE](\\\\-|\\\\+)?\\\\d+)?\",\n      \"name\": \"constant.numeric.postscript\"\n    },\n    {\n      \"match\": \"\\\\b(abs|add|aload|anchorsearch|and|arc|arcn|arct|arcto|array|ashow|astore|atan|awidthshow|begin|bind|bitshift|bytesavailable|cachestatus|ceiling|charpath|clear|cleartomark|cleardictstack|clip|clippath|closefile|closepath|colorimage|concat|concatmatrix|condition|configurationerror|copy|copypage|cos|count|countdictstack|countexecstack|counttomark|cshow|currentblackgeneration|currentcacheparams|currentcmykcolor|currentcolor|currentcolorrendering|currentcolorscreen|currentcolorspace|currentcolortransfer|currentcontext|currentdash|currentdevparams|currentdict|currentfile|currentflat|currentfont|currentglobal|currentgray|currentgstate|currenthalftone|currenthalftonephase|currenthsbcolor|currentlinecap|currentlinejoin|currentlinewidth|currentmatrix|currentmiterlimit|currentobjectformat|currentpacking|currentpagedevice|currentpoint|currentrgbcolor|currentscreen|currentshared|currentstrokeadjust|currentsystemparams|currenttransfer|currentundercolorremoval|currentuserparams|curveto|cvi|cvlit|cvn|cvr|cvrs|cvs|cvx|def|defaultmatrix|definefont|defineresource|defineusername|defineuserobject|deletefile|detach|deviceinfo|dict|dictfull|dictstack|dictstackoverflow|dictstackunderflow|div|dtransform|dup|echo|eexec|end|eoclip|eofill|eoviewclip|eq|erasepage|errordict|exch|exec|execform|execstack|execstackoverflow|execuserobject|executeonly|executive|exit|exp|false|file|filenameforall|fileposition|fill|filter|findencoding|findfont|findresource|flattenpath|floor|flush|flushfile|FontDirectory|for|forall|fork|ge|get|getinterval|globaldict|GlobalFontDirectory|glyphshow|grestore|grestoreall|gsave|gstate|gt|handleerror|identmatrix|idiv|idtransform|if|ifelse|image|imagemask|index|ineofill|infill|initclip|initgraphics|initmatrix|initviewclip|instroke|internaldict|interrupt|inueofill|inufill|inustroke|invalidaccess|invalidcontext|invalidexit|invalidfileaccess|invalidfont|invalidid|invalidrestore|invertmatrix|ioerror|ISOLatin1Encoding|itransform|join|kshow|known|languagelevel|le|length|limitcheck|lineto|ln|load|lock|log|loop|lt|makefont|makepattern|mark|matrix|maxlength|mod|monitor|moveto|mul|ne|neg|newpath|noaccess|nocurrentpoint|not|notify|null|nulldevice|or|packedarray|pathbbox|pathforall|pop|print|printobject|product|prompt|pstack|put|putinterval|quit|rand|rangecheck|rcurveto|read|readhexstring|readline|readonly|readstring|realtime|rectclip|rectfill|rectstroke|rectviewclip|renamefile|repeat|resetfile|resourceforall|resourcestatus|restore|reversepath|revision|rlineto|rmoveto|roll|rootfont|rotate|round|rrand|run|save|scale|scalefont|scheck|search|selectfont|serialnumber|setbbox|setblackgeneration|setcachedevice|setcachedevice2|setcachelimit|setcacheparams|setcharwidth|setcmykcolor|setcolor|setcolorrendering|setcolorscreen|setcolorspace|setcolortransfer|setdash|setdevparams|setfileposition|setflat|setfont|setglobal|setgray|setgstate|sethalftone|sethalftonephase|sethsbcolor|setlinecap|setlinejoin|setlinewidth|setmatrix|setmiterlimit|setobjectformat|setoverprint|setpacking|setpagedevice|setpattern|setrgbcolor|setscreen|setshared|setstrokeadjust|setsystemparams|settransfer|setucacheparams|setundercolorremoval|setuserparams|setvmthreshold|shareddict|show|showpage|sin|sqrt|srand|stack|stackoverflow|stackunderflow|StandardEncoding|start|startjob|status|statusdict|stop|stopped|store|string|stringwidth|stroke|strokepath|sub|syntaxerror|systemdict|timeout|transform|translate|true|truncate|type|typecheck|token|uappend|ucache|ucachestatus|ueofill|ufill|undef|undefined|undefinedfilename|undefineresource|undefinedresult|undefinefont|undefineresource|undefinedresource|undefineuserobject|unmatchedmark|unregistered|upath|userdict|UserObjects|usertime|ustroke|ustrokepath|version|viewclip|viewclippath|VMerror|vmreclaim|vmstatus|wait|wcheck|where|widthshow|write|writehexstring|writeobject|writestring|wtranslation|xcheck|xor|xshow|xyshow|yield|yshow)\\\\b\",\n      \"name\": \"keyword.operator.postscript\"\n    },\n    {\n      \"match\": \"//[^\\\\(\\\\)\\\\<\\\\>\\\\[\\\\]\\\\{\\\\}\\\\/\\\\%\\\\s]+\",\n      \"name\": \"variable.other.immediately-evaluated.postscript\"\n    },\n    {\n      \"match\": \"/[^\\\\(\\\\)\\\\<\\\\>\\\\[\\\\]\\\\{\\\\}\\\\/\\\\%\\\\s]+\",\n      \"name\": \"variable.other.literal.postscript\"\n    },\n    {\n      \"comment\": \"stuff like 22@ff will show as number 22 followed by name @ff, but should be name 22@ff!\",\n      \"match\": \"[^\\\\(\\\\)\\\\<\\\\>\\\\[\\\\]\\\\{\\\\}\\\\/\\\\%\\\\s]+\",\n      \"name\": \"variable.other.name.postscript\"\n    }\n  ],\n  \"name\": \"Postscript\",\n  \"scopeName\": \"source.postscript\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/powerquery.tmLanguage.json",
    "content": "{\n  \"name\": \"powerquery\",\n  \"scopeName\": \"source.powerquery\",\n  \"fileTypes\": [\"pq\", \"pqm\"],\n  \"uuid\": \"41968B57-12E6-4AC5-92A4-A837010E8B0A\",\n  \"patterns\": [\n    {\n      \"include\": \"#Noise\"\n    },\n    {\n      \"include\": \"#LiteralExpression\"\n    },\n    {\n      \"include\": \"#Keywords\"\n    },\n    {\n      \"include\": \"#ImplicitVariable\"\n    },\n    {\n      \"include\": \"#IntrinsicVariable\"\n    },\n    {\n      \"include\": \"#Operators\"\n    },\n    {\n      \"include\": \"#DotOperators\"\n    },\n    {\n      \"include\": \"#TypeName\"\n    },\n    {\n      \"include\": \"#RecordExpression\"\n    },\n    {\n      \"include\": \"#Punctuation\"\n    },\n    {\n      \"include\": \"#QuotedIdentifier\"\n    },\n    {\n      \"include\": \"#Identifier\"\n    }\n  ],\n  \"repository\": {\n    \"Keywords\": {\n      \"match\": \"\\\\b(?:(and|or|not)|(if|then|else)|(try|catch|otherwise)|(as|each|in|is|let|meta|type|error)|(section|shared))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.word.logical.powerquery\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.conditional.powerquery\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.exception.powerquery\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.powerquery\"\n        },\n        \"5\": {\n          \"name\": \"keyword.powerquery\"\n        }\n      }\n    },\n    \"TypeName\": {\n      \"match\": \"\\\\b(?:(optional|nullable)|(action|any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|null|number|record|table|text|time|type))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.powerquery\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.powerquery\"\n        }\n      }\n    },\n    \"LiteralExpression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#String\"\n        },\n        {\n          \"include\": \"#NumericConstant\"\n        },\n        {\n          \"include\": \"#LogicalConstant\"\n        },\n        {\n          \"include\": \"#NullConstant\"\n        },\n        {\n          \"include\": \"#FloatNumber\"\n        },\n        {\n          \"include\": \"#DecimalNumber\"\n        },\n        {\n          \"include\": \"#HexNumber\"\n        },\n        {\n          \"include\": \"#IntNumber\"\n        }\n      ]\n    },\n    \"Noise\": {\n      \"patterns\": [\n        {\n          \"include\": \"#BlockComment\"\n        },\n        {\n          \"include\": \"#LineComment\"\n        },\n        {\n          \"include\": \"#Whitespace\"\n        }\n      ]\n    },\n    \"Whitespace\": {\n      \"match\": \"\\\\s+\"\n    },\n    \"BlockComment\": {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.powerquery\"\n    },\n    \"LineComment\": {\n      \"match\": \"//.*\",\n      \"name\": \"comment.line.double-slash.powerquery\"\n    },\n    \"String\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.powerquery\"\n        }\n      },\n      \"end\": \"\\\"(?!\\\")\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.powerquery\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\"\\\"\",\n          \"name\": \"constant.character.escape.quote.powerquery\"\n        },\n        {\n          \"include\": \"#EscapeSequence\"\n        }\n      ],\n      \"name\": \"string.quoted.double.powerquery\"\n    },\n    \"QuotedIdentifier\": {\n      \"begin\": \"#\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.quotedidentifier.begin.powerquery\"\n        }\n      },\n      \"end\": \"\\\"(?!\\\")\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.quotedidentifier.end.powerquery\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\"\\\"\",\n          \"name\": \"constant.character.escape.quote.powerquery\"\n        },\n        {\n          \"include\": \"#EscapeSequence\"\n        }\n      ],\n      \"name\": \"entity.name.powerquery\"\n    },\n    \"EscapeSequence\": {\n      \"begin\": \"#\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.escapesequence.begin.powerquery\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.escapesequence.end.powerquery\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(#|\\\\h{4}|\\\\h{8}|cr|lf|tab)(?:,(#|\\\\h{4}|\\\\h{8}|cr|lf|tab))*\"\n        },\n        {\n          \"match\": \"[^\\\\)]\",\n          \"name\": \"invalid.illegal.escapesequence.powerquery\"\n        }\n      ],\n      \"name\": \"constant.character.escapesequence.powerquery\"\n    },\n    \"LogicalConstant\": {\n      \"match\": \"\\\\b(true|false)\\\\b\",\n      \"name\": \"constant.language.logical.powerquery\"\n    },\n    \"NullConstant\": {\n      \"match\": \"\\\\b(null)\\\\b\",\n      \"name\": \"constant.language.null.powerquery\"\n    },\n    \"NumericConstant\": {\n      \"match\": \"(?<![\\\\d\\\\w])(#infinity|#nan)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.language.numeric.float.powerquery\"\n        }\n      }\n    },\n    \"HexNumber\": {\n      \"match\": \"0(x|X)\\\\h+\",\n      \"name\": \"constant.numeric.integer.hexadecimal.powerquery\"\n    },\n    \"IntNumber\": {\n      \"match\": \"\\\\b(\\\\d+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.integer.powerquery\"\n        }\n      }\n    },\n    \"DecimalNumber\": {\n      \"match\": \"(?<![\\\\d\\\\w])(\\\\d*\\\\.\\\\d+)\\\\b\",\n      \"name\": \"constant.numeric.decimal.powerquery\"\n    },\n    \"FloatNumber\": {\n      \"match\": \"(\\\\d*\\\\.)?\\\\d+(e|E)(\\\\+|-)?\\\\d+\",\n      \"name\": \"constant.numeric.float.powerquery\"\n    },\n    \"InclusiveIdentifier\": {\n      \"match\": \"@\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"inclusiveidentifier.powerquery\"\n        }\n      }\n    },\n    \"Identifier\": {\n      \"match\": \"(?x:(?<![\\\\._\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\\\\p{Mn}\\\\p{Mc}\\\\p{Cf}])(@?)([_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}][_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\\\\p{Mn}\\\\p{Mc}\\\\p{Cf}]*(?:\\\\.[_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}][_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\\\\p{Mn}\\\\p{Mc}\\\\p{Cf}])*)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.inclusiveidentifier.powerquery\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.powerquery\"\n        }\n      }\n    },\n    \"Operators\": {\n      \"match\": \"(=>)|(=)|(<>|<|>|<=|>=)|(&)|(\\\\+|-|\\\\*|\\\\/)|(!)|(\\\\?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.function.powerquery\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.assignment-or-comparison.powerquery\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.comparison.powerquery\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.combination.powerquery\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.arithmetic.powerquery\"\n        },\n        \"6\": {\n          \"name\": \"keyword.operator.sectionaccess.powerquery\"\n        },\n        \"7\": {\n          \"name\": \"keyword.operator.optional.powerquery\"\n        }\n      }\n    },\n    \"DotOperators\": {\n      \"match\": \"(?<!\\\\.)(?:(\\\\.\\\\.\\\\.)|(\\\\.\\\\.))(?!\\\\.)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ellipsis.powerquery\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.list.powerquery\"\n        }\n      }\n    },\n    \"RecordExpression\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.brackets.begin.powerquery\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.brackets.end.powerquery\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ],\n      \"contentName\": \"meta.recordexpression.powerquery\"\n    },\n    \"Punctuation\": {\n      \"match\": \"(,)|(\\\\()|(\\\\))|({)|(})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.powerquery\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.parens.begin.powerquery\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.parens.end.powerquery\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.section.braces.begin.powerquery\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.braces.end.powerquery\"\n        }\n      }\n    },\n    \"ImplicitVariable\": {\n      \"match\": \"\\\\b_\\\\b\",\n      \"name\": \"keyword.operator.implicitvariable.powerquery\"\n    },\n    \"IntrinsicVariable\": {\n      \"match\": \"(?<![\\\\d\\\\w])(#sections|#shared)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.language.intrinsicvariable.powerquery\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/powershell.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/PowerShell/EditorSyntax/blob/master/PowerShellSyntax.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/PowerShell/EditorSyntax/commit/742f0b5d4b60f5930c0b47fcc1f646860521296e\",\n  \"name\": \"powershell\",\n  \"scopeName\": \"source.powershell\",\n  \"patterns\": [\n    {\n      \"begin\": \"<#\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.block.begin.powershell\"\n        }\n      },\n      \"end\": \"#>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.block.end.powershell\"\n        }\n      },\n      \"name\": \"comment.block.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"#commentEmbeddedDocs\"\n        }\n      ]\n    },\n    {\n      \"match\": \"[2-6]>&1|>>|>|<<|<|>|>\\\\||[1-6]>|[1-6]>>\",\n      \"name\": \"keyword.operator.redirection.powershell\"\n    },\n    {\n      \"include\": \"#commands\"\n    },\n    {\n      \"include\": \"#commentLine\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"include\": \"#subexpression\"\n    },\n    {\n      \"include\": \"#function\"\n    },\n    {\n      \"include\": \"#attribute\"\n    },\n    {\n      \"include\": \"#UsingDirective\"\n    },\n    {\n      \"include\": \"#type\"\n    },\n    {\n      \"include\": \"#hashtable\"\n    },\n    {\n      \"include\": \"#doubleQuotedString\"\n    },\n    {\n      \"include\": \"#scriptblock\"\n    },\n    {\n      \"comment\": \"Needed to parse stuff correctly in 'argument mode'. (See about_parsing.)\",\n      \"include\": \"#doubleQuotedStringEscapes\"\n    },\n    {\n      \"begin\": \"['\\\\x{2018}-\\\\x{201B}]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.powershell\"\n        }\n      },\n      \"end\": \"['\\\\x{2018}-\\\\x{201B}]\",\n      \"applyEndPatternLast\": true,\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.powershell\"\n        }\n      },\n      \"name\": \"string.quoted.single.powershell\",\n      \"patterns\": [\n        {\n          \"match\": \"['\\\\x{2018}-\\\\x{201B}]{2}\",\n          \"name\": \"constant.character.escape.powershell\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(@[\\\"\\\\x{201C}-\\\\x{201E}])\\\\s*$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.powershell\"\n        }\n      },\n      \"end\": \"^[\\\"\\\\x{201C}-\\\\x{201E}]@\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.powershell\"\n        }\n      },\n      \"name\": \"string.quoted.double.heredoc.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"#variableNoProperty\"\n        },\n        {\n          \"include\": \"#doubleQuotedStringEscapes\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(@['\\\\x{2018}-\\\\x{201B}])\\\\s*$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.powershell\"\n        }\n      },\n      \"end\": \"^['\\\\x{2018}-\\\\x{201B}]@\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.powershell\"\n        }\n      },\n      \"name\": \"string.quoted.single.heredoc.powershell\"\n    },\n    {\n      \"include\": \"#numericConstant\"\n    },\n    {\n      \"begin\": \"(@)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.array.begin.powershell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.group.begin.powershell\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.end.powershell\"\n        }\n      },\n      \"name\": \"meta.group.array-expression.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\$))(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.substatement.powershell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.subexpression.powershell\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.group.begin.powershell\"\n        }\n      },\n      \"comment\": \"TODO: move to repo; make recursive.\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.end.powershell\"\n        }\n      },\n      \"name\": \"meta.group.complex.subexpression.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(\\\\b(([A-Za-z0-9\\\\-_\\\\.]+)\\\\.(?i:exe|com|cmd|bat))\\\\b)\",\n      \"name\": \"support.function.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w|-|\\\\.)((?i:begin|break|catch|clean|continue|data|default|define|do|dynamicparam|else|elseif|end|exit|finally|for|from|if|in|inlinescript|parallel|param|process|return|sequence|switch|throw|trap|try|until|var|while)|%|\\\\?)(?!\\\\w)\",\n      \"name\": \"keyword.control.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w|-|[^\\\\)]\\\\.)((?i:(foreach|where)(?!-object))|%|\\\\?)(?!\\\\w)\",\n      \"name\": \"keyword.control.powershell\"\n    },\n    {\n      \"begin\": \"(?<!\\\\w)(--%)(?!\\\\w)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.powershell\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"match\": \".+\",\n          \"name\": \"string.unquoted.powershell\"\n        }\n      ],\n      \"comment\": \"This should be moved to the repository at some point.\"\n    },\n    {\n      \"comment\": \"This should only be relevant inside a class but will require a rework of how classes are matched. This is a temp fix.\",\n      \"match\": \"(?<!\\\\w)((?i:hidden|static))(?!\\\\w)\",\n      \"name\": \"storage.modifier.powershell\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.powershell\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function\"\n        }\n      },\n      \"comment\": \"capture should be entity.name.type, but it doesn't provide a good color in the default schema.\",\n      \"match\": \"(?<!\\\\w|-)((?i:class)|%|\\\\?)(?:\\\\s)+((?:\\\\p{L}|\\\\d|_|-|)+)\\\\b\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:is(?:not)?|as)\\\\b\",\n      \"name\": \"keyword.operator.comparison.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:[ic]?(?:eq|ne|[gl][te]|(?:not)?(?:like|match|contains|in)|replace))(?!\\\\p{L})\",\n      \"name\": \"keyword.operator.comparison.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:join|split)(?!\\\\p{L})|!\",\n      \"name\": \"keyword.operator.unary.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:and|or|not|xor)(?!\\\\p{L})|!\",\n      \"name\": \"keyword.operator.logical.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:band|bor|bnot|bxor|shl|shr)(?!\\\\p{L})\",\n      \"name\": \"keyword.operator.bitwise.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:f)(?!\\\\p{L})\",\n      \"name\": \"keyword.operator.string-format.powershell\"\n    },\n    {\n      \"match\": \"[+%*/-]?=|[+/*%-]\",\n      \"name\": \"keyword.operator.assignment.powershell\"\n    },\n    {\n      \"match\": \"\\\\|{2}|&{2}|;\",\n      \"name\": \"punctuation.terminator.statement.powershell\"\n    },\n    {\n      \"match\": \"&|(?<!\\\\w)\\\\.(?= )|`|,|\\\\|\",\n      \"name\": \"keyword.operator.other.powershell\"\n    },\n    {\n      \"comment\": \"This is very imprecise, is there a syntax for 'must come after...' \",\n      \"match\": \"(?<!\\\\s|^)\\\\.\\\\.(?=\\\\-?\\\\d|\\\\(|\\\\$)\",\n      \"name\": \"keyword.operator.range.powershell\"\n    }\n  ],\n  \"repository\": {\n    \"commentLine\": {\n      \"begin\": \"(?<![`\\\\\\\\-])(#)#*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.powershell\"\n        }\n      },\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.line.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"#commentEmbeddedDocs\"\n        },\n        {\n          \"include\": \"#RequiresDirective\"\n        }\n      ]\n    },\n    \"attribute\": {\n      \"begin\": \"(\\\\[)\\\\s*\\\\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.bracket.begin.powershell\"\n        },\n        \"2\": {\n          \"name\": \"support.function.attribute.powershell\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.bracket.end.powershell\"\n        }\n      },\n      \"name\": \"meta.attribute.powershell\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.powershell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.powershell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"match\": \"(?i)\\\\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\\\\b(?:\\\\s+)?(=)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.attribute.powershell\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.powershell\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"commands\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Verb-Noun pattern:\",\n          \"match\": \"(?:(\\\\p{L}|\\\\d|_|-|\\\\\\\\|\\\\:)*\\\\\\\\)?\\\\b(?i:Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)\\\\-.+?(?:\\\\.(?i:exe|cmd|bat|ps1))?\\\\b\",\n          \"name\": \"support.function.powershell\"\n        },\n        {\n          \"comment\": \"Builtin cmdlets with reserved verbs\",\n          \"match\": \"(?<!\\\\w)(?i:foreach-object)(?!\\\\w)\",\n          \"name\": \"support.function.powershell\"\n        },\n        {\n          \"comment\": \"Builtin cmdlets with reserved verbs\",\n          \"match\": \"(?<!\\\\w)(?i:where-object)(?!\\\\w)\",\n          \"name\": \"support.function.powershell\"\n        },\n        {\n          \"comment\": \"Builtin cmdlets with reserved verbs\",\n          \"match\": \"(?<!\\\\w)(?i:sort-object)(?!\\\\w)\",\n          \"name\": \"support.function.powershell\"\n        },\n        {\n          \"comment\": \"Builtin cmdlets with reserved verbs\",\n          \"match\": \"(?<!\\\\w)(?i:tee-object)(?!\\\\w)\",\n          \"name\": \"support.function.powershell\"\n        }\n      ]\n    },\n    \"commentEmbeddedDocs\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.string.documentation.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.documentation.powershell\"\n            }\n          },\n          \"comment\": \"these embedded doc keywords do not support arguments, must be the only thing on the line\",\n          \"match\": \"(?:^|\\\\G)(?i:\\\\s*(\\\\.)(COMPONENT|DESCRIPTION|EXAMPLE|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|ROLE|SYNOPSIS))\\\\s*$\",\n          \"name\": \"comment.documentation.embedded.powershell\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.string.documentation.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.documentation.powershell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.documentation.powershell\"\n            }\n          },\n          \"comment\": \"these embedded doc keywords require arguments though the type required may be inconsistent, they may not all be able to use the same argument match\",\n          \"match\": \"(?:^|\\\\G)(?i:\\\\s*(\\\\.)(EXTERNALHELP|FORWARDHELP(?:CATEGORY|TARGETNAME)|PARAMETER|REMOTEHELPRUNSPACE))\\\\s+(.+?)\\\\s*$\",\n          \"name\": \"comment.documentation.embedded.powershell\"\n        }\n      ]\n    },\n    \"doubleQuotedStringEscapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"`[`0abefnrtv'\\\"\\\\x{2018}-\\\\x{201E}$]\",\n          \"name\": \"constant.character.escape.powershell\"\n        },\n        {\n          \"include\": \"#unicodeEscape\"\n        }\n      ]\n    },\n    \"unicodeEscape\": {\n      \"comment\": \"`u{xxxx} added in PowerShell 6.0\",\n      \"patterns\": [\n        {\n          \"match\": \"`u\\\\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\\\\g<1>{1,5})}\",\n          \"name\": \"constant.character.escape.powershell\"\n        },\n        {\n          \"match\": \"`u(?:\\\\{[0-9a-fA-F]{,6}.)?\",\n          \"name\": \"invalid.character.escape.powershell\"\n        }\n      ]\n    },\n    \"function\": {\n      \"begin\": \"^(?:\\\\s*+)(?i)(function|filter|configuration|workflow)\\\\s+(?:(global|local|script|private):)?((?:\\\\p{L}|\\\\d|_|-|\\\\.)+)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.function.powershell\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.powershell\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.scope.powershell\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.powershell\"\n        }\n      },\n      \"end\": \"(?=\\\\{|\\\\()\",\n      \"patterns\": [\n        {\n          \"include\": \"#commentLine\"\n        }\n      ]\n    },\n    \"subexpression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.begin.powershell\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.end.powershell\"\n        }\n      },\n      \"name\": \"meta.group.simple.subexpression.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"begin\": \"(((\\\\$)))((\\\\())\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.substatement.powershell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.substatement.powershell\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.embedded.substatement.begin.powershell\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.section.group.begin.powershell\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.embedded.substatement.begin.powershell\"\n        }\n      },\n      \"contentName\": \"interpolated.complex.source.powershell\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.end.powershell\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.substatement.end.powershell\"\n        }\n      },\n      \"name\": \"meta.embedded.substatement.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"numericConstant\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.hex.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?0(?:x|X)[0-9a-fA-F_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?(?:[0-9_]+)?\\\\.[0-9_]+(?:(?:e|E)[0-9]+)?(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.octal.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?0(?:b|B)[01_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?[0-9_]+(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?[0-9_]+\\\\.(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?[0-9_]+[\\\\.]?(?:F|f|D|d|M|m))((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?[0-9_]+[\\\\.]?(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\\\b\"\n        }\n      ]\n    },\n    \"scriptblock\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.braces.begin.powershell\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.braces.end.powershell\"\n        }\n      },\n      \"name\": \"meta.scriptblock.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"type\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.bracket.begin.powershell\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.bracket.end.powershell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?!\\\\d+|\\\\.)(?:\\\\p{L}|\\\\p{N}|\\\\.)+\",\n          \"name\": \"storage.type.powershell\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.language.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            }\n          },\n          \"comment\": \"These are special constants.\",\n          \"match\": \"(\\\\$)(?i:(False|Null|True))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.constant.variable.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"These are the other built-in constants.\",\n          \"match\": \"(\\\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.variable.automatic.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"Automatic variables are not constants, but they are read-only. In monokai (default) color schema support.variable doesn't have color, so we use constant.\",\n          \"match\": \"(\\\\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\\\\b)((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.language.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"Style preference variables as language variables so that they stand out.\",\n          \"match\": \"(\\\\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.scope.powershell\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$|@)(global|local|private|script|using|workflow):((?:\\\\p{L}|\\\\d|_)+))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.braces.begin.powershell\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.scope.powershell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.braces.end.powershell\"\n            },\n            \"6\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(\\\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\\\}))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"support.variable.drive.powershell\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$|@)((?:\\\\p{L}|\\\\d|_)+:)?((?:\\\\p{L}|\\\\d|_)+))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.braces.begin.powershell\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.drive.powershell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.braces.end.powershell\"\n            },\n            \"6\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(\\\\{)((?:\\\\p{L}|\\\\d|_)+:)?([^}]*[^}`])(\\\\}))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        }\n      ]\n    },\n    \"UsingDirective\": {\n      \"match\": \"(?<!\\\\w)(?i:(using))\\\\s+(?i:(namespace|module))\\\\s+(?i:((?:\\\\w+(?:\\\\.)?)+))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.using.powershell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.powershell\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.powershell\"\n        }\n      }\n    },\n    \"RequiresDirective\": {\n      \"begin\": \"(?<=#)(?i:(requires))\\\\s\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.requires.powershell\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"meta.requires.powershell\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version|Assembly|PSEdition)\",\n          \"name\": \"keyword.other.powershell\"\n        },\n        {\n          \"match\": \"(?<!-)\\\\b\\\\p{L}+|\\\\d+(?:\\\\.\\\\d+)*\",\n          \"name\": \"variable.parameter.powershell\"\n        },\n        {\n          \"include\": \"#hashtable\"\n        }\n      ]\n    },\n    \"variableNoProperty\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.language.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            }\n          },\n          \"comment\": \"These are special constants.\",\n          \"match\": \"(\\\\$)(?i:(False|Null|True))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.constant.variable.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"These are the other built-in constants.\",\n          \"match\": \"(\\\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.variable.automatic.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"Automatic variables are not constants, but they are read-only...\",\n          \"match\": \"(\\\\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\\\\b)\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.language.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"Style preference variables as language variables so that they stand out.\",\n          \"match\": \"(\\\\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.scope.powershell\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(global|local|private|script|using|workflow):((?:\\\\p{L}|\\\\d|_)+))\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.scope.powershell\"\n            },\n            \"4\": {\n              \"name\": \"keyword.other.powershell\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(\\\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\\\}))\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"support.variable.drive.powershell\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)((?:\\\\p{L}|\\\\d|_)+:)?((?:\\\\p{L}|\\\\d|_)+))\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.braces.begin\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.drive.powershell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.braces.end\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(\\\\{)((?:\\\\p{L}|\\\\d|_)+:)?([^}]*[^}`])(\\\\}))\"\n        }\n      ]\n    },\n    \"hashtable\": {\n      \"begin\": \"(@)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.hashtable.begin.powershell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.braces.begin.powershell\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.braces.end.powershell\"\n        }\n      },\n      \"name\": \"meta.hashtable.powershell\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.powershell\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.powershell\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.assignment.powershell\"\n            }\n          },\n          \"match\": \"\\\\b((?:\\\\'|\\\\\\\")?)(\\\\w+)((?:\\\\'|\\\\\\\")?)(?:\\\\s+)?(=)(?:\\\\s+)?\",\n          \"name\": \"meta.hashtable.assignment.powershell\"\n        },\n        {\n          \"include\": \"#scriptblock\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"doubleQuotedString\": {\n      \"begin\": \"[\\\"\\\\x{201C}-\\\\x{201E}]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.powershell\"\n        }\n      },\n      \"end\": \"[\\\"\\\\x{201C}-\\\\x{201E}]\",\n      \"applyEndPatternLast\": true,\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.powershell\"\n        }\n      },\n      \"name\": \"string.quoted.double.powershell\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\\\.[A-Z]{2,64}\\\\b\"\n        },\n        {\n          \"include\": \"#variableNoProperty\"\n        },\n        {\n          \"include\": \"#doubleQuotedStringEscapes\"\n        },\n        {\n          \"match\": \"[\\\"\\\\x{201C}-\\\\x{201E}]{2}\",\n          \"name\": \"constant.character.escape.powershell\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"match\": \"`\\\\s*$\",\n          \"name\": \"keyword.other.powershell\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/praat.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"^\\\\s*(editor|for|if|form|procedure|proc|repeat|while)(?=\\\\s)\",\n  \"foldingStopMarker\": \"^\\\\s*(endeditor|endfor|elsif|else|endif|endform|endproc|endwhile|until)(?=\\\\s*)\",\n  \"fileTypes\": [\n    \"praat\",\n    \"script\",\n    \"psc\",\n    \"praat_script\",\n    \"praatscript\",\n    \"praat-script\",\n    \"praat-batch\",\n    \"proc\"\n  ],\n  \"uuid\": \"ca03e751-04ef-4330-9a6b-9b99aae1c418\",\n  \"patterns\": [\n    { \"match\": \"(^|\\\\s)(#|;)(.*)$\", \"name\": \"comment.line.number-sign.praat\" },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.praat\" }\n      },\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.praat\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.praat\" }\n      }\n    },\n    {\n      \"begin\": \"(\\\\:|\\\\s|\\\\(|\\\\.)'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.praat\" }\n      },\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.praat\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.praat\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(([0-9]+(\\\\.[0-9]+)?e[0-9]+(\\\\.[0-9]+)?(?=($|\\\\s+|\\\\b|;|,|\\\\)){1,1})|[0-9]+(\\\\.[0-9]+)?%?(?=($|\\\\s+|;|,|\\\\)){1,1})))\",\n      \"name\": \"constant.numeric.praat\"\n    },\n    {\n      \"begin\": \"^\\\\s*(procedure|proc)\\\\s+(?=[a-zA-Z][A-Za-z0-9_]*(\\\\s*:|\\\\s*\\\\(|$))\",\n      \"end\": \"($|\\\\))\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=[a-zA-Z][a-zA-z_])\",\n          \"end\": \"(?![A-Za-z0-9_])\",\n          \"patterns\": [{ \"include\": \"#entity_name_function\" }],\n          \"contentName\": \"entity.name.function.praat\"\n        },\n        {\n          \"begin\": \"(:|\\\\()\",\n          \"end\": \"($|\\\\))\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b([a-z][a-zA-Z0-9_\\\\$]*)\\\\s*((?=,)|(?=$)|(?=\\\\)))\",\n              \"captures\": {\n                \"1\": { \"name\": \"variable.parameter.function.praat\" }\n              }\n            }\n          ],\n          \"contentName\": \"meta.function.parameters.praat\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.parameters.begin.praat\" }\n          }\n        }\n      ],\n      \"name\": \"meta.function.praat\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.control.praat\" } }\n    },\n    {\n      \"match\": \"(^\\\\s*call)|(^\\\\s*@[a-zA-Z0-9_]*(?![a-zA-Z0-9_]))\",\n      \"name\": \"entity.name.function.praat\"\n    },\n    {\n      \"match\": \"(^|\\\\s+)(assert|editor|elif|else|elsif|endeditor|endfor|endform|endif|endproc|endwhile|form|for|goto|if|label|nocheck|noprogress|nowarn|proc|procedure|repeat|then(?=.*fi)|until|warn|while)(?=\\\\s|$|:)\",\n      \"name\": \"keyword.control.praat\"\n    },\n    {\n      \"match\": \"(\\\\s+)(from(?=.*to)(?=\\\\s)|to(?=\\\\s)|fi($|\\\\s+))\",\n      \"name\": \"keyword.control.praat\"\n    },\n    {\n      \"match\": \"^\\\\s*(boolean|button|choice|comment|demo|integer|natural|option|optionmenu|positive|real|sentence|text|word)(?=\\\\s)\",\n      \"name\": \"support.class.praat\"\n    },\n    {\n      \"match\": \"\\\\s+(Activation|AffineTransform|AmplitudeTier|Art|Artword|Autosegment|BarkFilter|Categories|CCA|Cepstrum|Cepstrumc|ChebyshevSeries|ClassificationTable|Cochleagram|Collection|Configuration|Confusion|ContingencyTable|Corpus|Correlation|Covariance|CrossCorrelationTable|CrossCorrelationTables|Diagonalizer|Discriminant|Dissimilarity|Distance|Distributions|DTW|DurationTier|EEG|Eigen|ERP|ERPTier|Excitation|Excitations|ExperimentMFC|FeatureWeights|FFNet|Formant|FormantFilter|FormantGrid|FormantPoint|FormantTier|GaussianMixture|Harmonicity|HMM|HMM_Observation|HMM_ObservationSequence|HMM_State|HMM_StateSequence|Index|Intensity|IntensityTier|IntervalTier|ISpline|KlattGrid|KlattTable|KNN|Label|LegendreSeries|LFCC|LinearRegression|LogisticRegression|LongSound|LPC|Ltas|Manipulation|ManPages|Matrix|MelFilter|MFCC|MixingMatrix|Movie|MSpline|Network|OTGrammar|OTHistory|OTMulti|PairDistribution|ParamCurve|Pattern|PCA|Permutation|Photo|Pitch|PitchTier|PointProcess|Polygon|Polynomial|Procrustes|RealPoint|RealTier|ResultsMFC|Roots|Salience|ScalarProduct|Similarity|SimpleString|SortedSetOfString|Sound|Speaker|Spectrogram|Spectrum|SpectrumTier|SpeechSynthesizer|SpellingChecker|SPINET|SSCP|Strings|StringsIndex|SVD|Table|TableOfReal|TextGrid|TextInterval|TextPoint|TextTier|Tier|Transition|VocalTract|Weight|WordList)(?=\\\\s+)\",\n      \"name\": \"constant.other.placeholder.praat\"\n    },\n    {\n      \"match\": \"^\\\\s*(minus|plus|(select all|select)|editor)(?=\\\\s|$)\",\n      \"name\": \"support.function.builtin.praat\"\n    },\n    {\n      \"match\": \"^\\\\s*(sendsocket|system|system_nocheck)(?=\\\\s)\",\n      \"name\": \"support.function.builtin.praat\"\n    },\n    {\n      \"match\": \"^\\\\s*(fileappend|fileappendinfo|filedelete|include)(?=\\\\s)\",\n      \"name\": \"support.function.builtin.praat\"\n    },\n    {\n      \"match\": \"^\\\\s*(clearinfo|echo|execute|exitScript|exit|pauseScript|pause|printline|print|sendpraat|stopwatch)(?=\\\\s|$|:)\",\n      \"name\": \"support.function.builtin.praat\"\n    },\n    {\n      \"match\": \"(\\\\s|^\\\\s*)(Add|Append|Arrow|Autocorrelate|Axes|Change|Close|Colour|Combine|Compute|Concatenate|Convert|Convolve|Copy|Count|Courier|Create|Cross|Dashed|De|Deepen|Dotted|Down|Draw|Duplicate|Edit|Erase|Extend|Extract|Fade|Filter|Filtering|Font|Formula|Get|Helvetica|Horizontal|Hum|Info|Insert|Inspect|Interpolate|Is|Kill|Lengthen|Line|List|Logarithmic|Marks|Merge|Move|Multiply|New|One|Open|Override|Paint|Palatino|Picture|Pitch|Plain|Play|PostScript|Pre|Randomize|Read|Record|Remove|Rename|Replace|Resample|Reverse|Save|Scale|Scatter|Select|Set|Shift|Show|Smooth|Solid|Sort|Speckle|Subtract|Text|Times|To|Vertical|View & Edit|View|Write|Zoom)(\\\\s*.*(?=:\\\\s+)|\\\\s*.*(?=\\\\.{3}\\\\s+)|(\\\\s*)([a-zA-Z ]*)(?!'))\",\n      \"name\": \"support.class.praat\"\n    },\n    {\n      \"match\": \"\\\\s*(Black|black|Blue|blue|Cyan|cyan|Green|green|Grey|grey|Lime|lime|Magenta|magenta|Maroon|maroon|Navy|navy|Olive|olive|Pink|pink|Purple|purple|Red|red|Silver|silver|Teal|teal|White|white|Yellow|yellow)(?=\\\\s*$)\",\n      \"name\": \"constant.other.placeholder.praat\"\n    },\n    {\n      \"match\": \"(!=|&|>|><|>=|<|<=|\\\\*|\\\\*=|\\\\+|\\\\+=|-|-=|\\\\/|\\\\/=|=|==|\\\\^|\\\\|)(?=.)\",\n      \"name\": \"keyword.operator.praat\"\n    },\n    {\n      \"match\": \"\\\\s+(and|or|not)(?=.*(!|!=|>|><|>=|<|<=|==))\",\n      \"name\": \"keyword.operator.praat\"\n    },\n    { \"match\": \"\\\\s+(div|mod)\\\\s+\", \"name\": \"keyword.operator.praat\" },\n    {\n      \"match\": \"(^|\\\\s+)(abs|actanh|appendFileLine|appendFile|appendInfoLine|appendInfo|arccosh|arccos|arcsinh|arcsin|arctan2|arctan|barkToHerz|beginPause|besselI|besselK|beta|binomialP|binomialQ|ceiling|chiSquareP|chiSquareQ|chooseDirectory\\\\$|chooseReadFile\\\\$|chooseWriteFile\\\\$|cosh|cos|createDirectory|date\\\\$|deleteFile|demoClickedIn|demoClicked|demoCommandKeyPressed|demoExtraControlKeyPressed|demoInput|demoKey\\\\$|demoKeyPressed|demoOptionKeyPressed|demoShiftKeyPressed|demoShow|demoWaitForInput|demoWindowTitle|demoX|demoY|differenceLimensToPhon|endPause|endsWith|environment\\\\$|erbToHertz|erb|erfc|erf|exp|extractLine\\\\$|extractNumber|extractWord\\\\$|fisherP|fisherQ|fixed\\\\$|floor|gaussP|gaussQ|hertzToBark|hertzToErb|hertzToMel|hertzToSemitones|imax|imin|index_regex|index|invBinomialP|invBinomialQ|invChiSquareQ|invFisherQ|invGaussQ|invSigmoid|invStudentQ|left\\\\$|length|ln|lnGamma|log10|log2|max|melToHertz|mid\\\\$|min|numberOfSelected|number|percent\\\\$|phonToDifferenceLimens|randomGauss|randomInteger|randomPoisson|randomUniform|replace\\\\$|replace_regex\\\\$|right\\\\$|rindex_regex|rindex|round|selected\\\\$|selected|semitonesToHerz|sigmoid|sinc|sin|sincpi|sinh|sqrt|startsWith|string\\\\$|studentP|studentQ|tanh|tan|variableExists|writeFileLine|writeFile|writeInfoLine|writeInfo)((?=\\\\s*:)|(?=\\\\s*\\\\())\",\n      \"name\": \"support.function.builtin.praat\"\n    },\n    {\n      \"match\": \"(Bark|Bars|Bartlett|Bottom|bottom|Centre|centre|Courier|Cubic|dB|energy|Gaussian|Half|half|Hamming|Hanning|Helvetica|Hertz|Kaiser2|Left|left|Linear|Nearest|no|None|Palatino|Parabolic|Rectangular|rectangular|Right|right|Semitones|Sinc|Sinc70|Sinc700|sones|Square|Times|Top|top|Welch|yes)\",\n      \"name\": \"meta.function.parameters.praat\"\n    },\n    {\n      \"match\": \"(^|\\\\s*)(defaultDirectory\\\\$|homeDirectory\\\\$|macintosh|newline\\\\$|pi|praatVersion\\\\$|praatVersion|preferencesDirectory\\\\$|shellDirectory\\\\$|tab\\\\$|temporaryDirectory\\\\$|undefined|unix|windows)(\\\\s*(?=\\\\+|,)|$)\",\n      \"name\": \"support.function.builtin.praat\"\n    },\n    {\n      \"match\": \"(^|\\\\s*)(exitScript|minusObject|plusObject|removeObject|runScript|selectObject)((?=:)|(?=\\\\())\",\n      \"name\": \"support.function.builtin.praat\"\n    }\n  ],\n  \"name\": \"Praat\",\n  \"scopeName\": \"source.praat\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/prisma.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.prisma\",\n  \"patterns\": [\n    { \"include\": \"#triple_comment\" },\n    { \"include\": \"#double_comment\" },\n    { \"include\": \"#model_block_definition\" },\n    { \"include\": \"#config_block_definition\" },\n    { \"include\": \"#enum_block_definition\" },\n    { \"include\": \"#type_definition\" }\n  ],\n  \"repository\": {\n    \"functional\": {\n      \"begin\": \"(\\\\w+)(\\\\()\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.tag.prisma\" } },\n      \"patterns\": [{ \"include\": \"#value\" }],\n      \"end\": \"\\\\)\",\n      \"name\": \"source.prisma.functional\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.function.functional.prisma\" },\n        \"2\": { \"name\": \"punctuation.definition.tag.prisma\" }\n      }\n    },\n    \"assignment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(\\\\w+)\\\\s*(=)\\\\s*\",\n          \"patterns\": [\n            { \"include\": \"#value\" },\n            { \"include\": \"#double_comment_inline\" }\n          ],\n          \"end\": \"\\\\n\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"variable.other.assignment.prisma\" },\n            \"2\": { \"name\": \"keyword.operator.terraform\" }\n          }\n        }\n      ]\n    },\n    \"double_comment\": {\n      \"begin\": \"//\",\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.prisma\"\n    },\n    \"named_argument\": {\n      \"name\": \"source.prisma.named_argument\",\n      \"patterns\": [{ \"include\": \"#map_key\" }, { \"include\": \"#value\" }]\n    },\n    \"config_block_definition\": {\n      \"begin\": \"^\\\\s*(generator|datasource)\\\\s+([A-Za-z][\\\\w]*)\\\\s+({)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.prisma\" } },\n      \"patterns\": [\n        { \"include\": \"#triple_comment\" },\n        { \"include\": \"#double_comment\" },\n        { \"include\": \"#assignment\" }\n      ],\n      \"end\": \"\\\\s*\\\\}\",\n      \"name\": \"source.prisma.embedded.source\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.type.config.prisma\" },\n        \"2\": { \"name\": \"entity.name.type.config.prisma\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.prisma\" }\n      }\n    },\n    \"map_key\": {\n      \"name\": \"source.prisma.key\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\w+)\\\\s*(:)\\\\s*\",\n          \"captures\": {\n            \"1\": { \"name\": \"variable.parameter.key.prisma\" },\n            \"2\": { \"name\": \"punctuation.definition.separator.key-value.prisma\" }\n          }\n        }\n      ]\n    },\n    \"attribute\": {\n      \"name\": \"source.prisma.attribute\",\n      \"match\": \"(@@?[\\\\w\\\\.]+)\",\n      \"captures\": { \"1\": { \"name\": \"entity.name.function.attribute.prisma\" } }\n    },\n    \"string_interpolation\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\$\\\\{\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"keyword.control.interpolation.end.prisma\" }\n          },\n          \"end\": \"\\\\s*\\\\}\",\n          \"patterns\": [{ \"include\": \"#value\" }],\n          \"name\": \"source.tag.embedded.source.prisma\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"keyword.control.interpolation.start.prisma\" }\n          }\n        }\n      ]\n    },\n    \"attribute_with_arguments\": {\n      \"begin\": \"(@@?[\\\\w\\\\.]+)(\\\\()\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.tag.prisma\" } },\n      \"patterns\": [{ \"include\": \"#named_argument\" }, { \"include\": \"#value\" }],\n      \"end\": \"\\\\)\",\n      \"name\": \"source.prisma.attribute.with_arguments\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"entity.name.function.attribute.prisma\" },\n        \"2\": { \"name\": \"punctuation.definition.tag.prisma\" }\n      }\n    },\n    \"array\": {\n      \"begin\": \"\\\\[\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.prisma\" } },\n      \"patterns\": [{ \"include\": \"#value\" }],\n      \"end\": \"\\\\]\",\n      \"name\": \"source.prisma.array\",\n      \"beginCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.prisma\" } }\n    },\n    \"enum_block_definition\": {\n      \"begin\": \"^\\\\s*(enum)\\\\s+([A-Za-z][\\\\w]*)\\\\s+({)\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.tag.prisma\" } },\n      \"patterns\": [\n        { \"include\": \"#triple_comment\" },\n        { \"include\": \"#double_comment\" },\n        { \"include\": \"#enum_value_definition\" }\n      ],\n      \"end\": \"\\\\s*\\\\}\",\n      \"name\": \"source.prisma.embedded.source\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.type.enum.prisma\" },\n        \"2\": { \"name\": \"entity.name.type.enum.prisma\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.prisma\" }\n      }\n    },\n    \"model_block_definition\": {\n      \"begin\": \"^\\\\s*(model|type)\\\\s+([A-Za-z][\\\\w]*)\\\\s*({)\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.definition.tag.prisma\" } },\n      \"patterns\": [\n        { \"include\": \"#triple_comment\" },\n        { \"include\": \"#double_comment\" },\n        { \"include\": \"#field_definition\" }\n      ],\n      \"end\": \"\\\\s*\\\\}\",\n      \"name\": \"source.prisma.embedded.source\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.type.model.prisma\" },\n        \"2\": { \"name\": \"entity.name.type.model.prisma\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.prisma\" }\n      }\n    },\n    \"identifier\": {\n      \"patterns\": [\n        { \"match\": \"\\\\b(\\\\w)+\\\\b\", \"name\": \"support.constant.constant.prisma\" }\n      ]\n    },\n    \"double_comment_inline\": { \"match\": \"//[^\\\\n]*\", \"name\": \"comment.prisma\" },\n    \"field_definition\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(\\\\w+)(\\\\s*:)?\\\\s+(\\\\w+)(\\\\[\\\\])?(\\\\?)?(\\\\!)?\",\n          \"captures\": {\n            \"3\": { \"name\": \"support.type.primitive.prisma\" },\n            \"1\": { \"name\": \"variable.other.assignment.prisma\" },\n            \"6\": { \"name\": \"invalid.illegal.required_type.prisma\" },\n            \"4\": { \"name\": \"keyword.operator.list_type.prisma\" },\n            \"2\": { \"name\": \"invalid.illegal.colon.prisma\" },\n            \"5\": { \"name\": \"keyword.operator.optional_type.prisma\" }\n          }\n        },\n        { \"include\": \"#attribute_with_arguments\" },\n        { \"include\": \"#attribute\" }\n      ]\n    },\n    \"boolean\": {\n      \"match\": \"\\\\b(true|false)\\\\b\",\n      \"name\": \"constant.language.boolean.prisma\"\n    },\n    \"type_definition\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(type)\\\\s+(\\\\w+)\\\\s*=\\\\s*(\\\\w+)\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.type.prisma\" },\n            \"2\": { \"name\": \"entity.name.type.type.prisma\" },\n            \"3\": { \"name\": \"support.type.primitive.prisma\" }\n          }\n        },\n        { \"include\": \"#attribute_with_arguments\" },\n        { \"include\": \"#attribute\" }\n      ]\n    },\n    \"literal\": {\n      \"name\": \"source.prisma.literal\",\n      \"patterns\": [\n        { \"include\": \"#boolean\" },\n        { \"include\": \"#number\" },\n        { \"include\": \"#double_quoted_string\" },\n        { \"include\": \"#identifier\" }\n      ]\n    },\n    \"triple_comment\": {\n      \"begin\": \"///\",\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.prisma\"\n    },\n    \"value\": {\n      \"name\": \"source.prisma.value\",\n      \"patterns\": [\n        { \"include\": \"#array\" },\n        { \"include\": \"#functional\" },\n        { \"include\": \"#literal\" }\n      ]\n    },\n    \"number\": {\n      \"match\": \"((0(x|X)[0-9a-fA-F]*)|(\\\\+|-)?\\\\b(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\\\b\",\n      \"name\": \"constant.numeric.prisma\"\n    },\n    \"double_quoted_string\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": { \"0\": { \"name\": \"string.quoted.double.end.prisma\" } },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"include\": \"#string_interpolation\" },\n        {\n          \"match\": \"([\\\\w\\\\-\\\\/\\\\._\\\\\\\\%@:\\\\?=]+)\",\n          \"name\": \"string.quoted.double.prisma\"\n        }\n      ],\n      \"name\": \"unnamed\",\n      \"beginCaptures\": { \"0\": { \"name\": \"string.quoted.double.start.prisma\" } }\n    },\n    \"enum_value_definition\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(\\\\w+)\\\\s*$\",\n          \"captures\": { \"1\": { \"name\": \"variable.other.assignment.prisma\" } }\n        },\n        { \"include\": \"#attribute_with_arguments\" },\n        { \"include\": \"#attribute\" }\n      ]\n    }\n  },\n  \"name\": \"Prisma\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/prolog.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.prolog\",\n  \"fileTypes\": [],\n  \"patterns\": [\n    {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.prolog\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.prolog\" },\n        { \"match\": \"''\", \"name\": \"constant.character.escape.quote.prolog\" }\n      ],\n      \"name\": \"string.quoted.single.prolog\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.prolog\" }\n      }\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.prolog\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.prolog\" } }\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=%)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"%\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.percentage.prolog\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.prolog\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.prolog\" }\n      }\n    },\n    { \"match\": \":-\", \"name\": \"keyword.operator.definition.prolog\" },\n    { \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\", \"name\": \"variable.other.prolog\" },\n    {\n      \"comment\": \"\\n\\t\\t\\tI changed this from entity to storage.type, but have no idea what it is -- Allan\\n\\t\\t\\tAnd I changed this to constant.other.symbol after glancing over the docs,\\n\\t\\t\\t    might still be wrong.  -- Infininight\\n\\t\\t\\t\",\n      \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n      \"name\": \"constant.other.symbol.prolog\"\n    }\n  ],\n  \"name\": \"Prolog\",\n  \"keyEquivalent\": \"^~P\",\n  \"uuid\": \"C0E2ADB0-1706-4A28-8DB7-263BDC8B5C5C\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/properties.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.tm-properties\",\n  \"fileTypes\": [\"tm_properties\", \"tmProperties\"],\n  \"patterns\": [\n    {\n      \"begin\": \"^([a-zA-Z0-9][a-zA-Z0-9_+\\\\-]*)\\\\s*(=)\\\\s*\",\n      \"end\": \"$\",\n      \"patterns\": [{ \"include\": \"#string\" }],\n      \"captures\": {\n        \"1\": { \"name\": \"support.constant.tm-properties\" },\n        \"2\": { \"name\": \"punctuation.separator.key-value.tm-properties\" }\n      }\n    },\n    {\n      \"begin\": \"^\\\\[\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.section.end.tm-properties\" }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [{ \"include\": \"#string\" }],\n      \"name\": \"meta.section.tm-properties\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.section.begin.tm-properties\" }\n      }\n    },\n    { \"include\": \"#comment\" }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.tm-properties\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.tm-properties\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.whitespace.comment.leading.tm-properties\" }\n      },\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.tm-properties\" }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"match\": \"[a-zA-Z0-9][a-zA-Z0-9_+\\\\-]*\",\n          \"name\": \"string.unquoted.tm-properties\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.tm-properties\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.tm-properties\"\n            }\n          ],\n          \"name\": \"string.quoted.double.tm-properties\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.tm-properties\" }\n          }\n        },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.tm-properties\" }\n          },\n          \"end\": \"'\",\n          \"name\": \"string.quoted.single.tm-properties\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.tm-properties\" }\n          }\n        }\n      ]\n    }\n  },\n  \"name\": \"Properties\",\n  \"uuid\": \"DE84747E-90A6-4731-92A4-A9C6823D35DE\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/protobuf.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.proto\",\n  \"fileTypes\": [\"proto\"],\n  \"patterns\": [\n    { \"include\": \"#comments\" },\n    { \"include\": \"#storagetypes\" },\n    { \"include\": \"#enum\" },\n    { \"include\": \"#message\" },\n    { \"include\": \"#option\" },\n    { \"include\": \"#constants\" },\n    { \"include\": \"#strings\" },\n    { \"include\": \"#oneof\" },\n    { \"include\": \"#packaging\" },\n    { \"include\": \"#service\" },\n    {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)\\\\b\",\n      \"name\": \"constant.numeric.proto\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        { \"begin\": \"/\\\\*\", \"end\": \"\\\\*/\", \"name\": \"comment.block.proto\" },\n        {\n          \"begin\": \"//\",\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.double-slash.proto\"\n        }\n      ]\n    },\n    \"option\": {\n      \"begin\": \"(\\\\b)(option)(\\\\b)\",\n      \"end\": \";\",\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#strings\" },\n        {\n          \"match\": \"default|packed|optimize\\\\_for|java\\\\_package|java\\\\_outer\\\\_classname|go\\\\_package|deprecated|lazy|\\\\w+\\\\_api\\\\_version\",\n          \"name\": \"storage.type.proto\"\n        },\n        { \"match\": \"(CODE\\\\_SIZE|SPEED)\", \"name\": \"constant.language.proto\" }\n      ],\n      \"beginCaptures\": { \"2\": { \"name\": \"keyword.source.proto\" } }\n    },\n    \"service\": {\n      \"begin\": \"(service)(\\\\s+)([A-Za-z][A-Za-z0-9_.]*)(\\\\s*)(\\\\{)?\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        {\n          \"begin\": \"(rpc)\\\\s+([A-Za-z][A-Z-a-z0-9_.]+)\\\\s*\\\\((stream\\\\s+)?([A-Za-z0-9_]+)\\\\)\\\\s+(returns)\\\\s+\\\\((stream\\\\s+)?([A-Za-z0-9_.]+)\\\\)\\\\{?\",\n          \"end\": \"\\\\}|;\",\n          \"patterns\": [{ \"include\": \"#comments\" }, { \"include\": \"#option\" }],\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"keyword.source.proto\" },\n            \"1\": { \"name\": \"keyword.source.proto\" },\n            \"6\": { \"name\": \"keyword.source.proto\" },\n            \"2\": { \"name\": \"entity.name.function\" },\n            \"5\": { \"name\": \"keyword.source.proto\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.source.proto\" },\n        \"3\": { \"name\": \"entity.name.class.message.proto\" }\n      }\n    },\n    \"packaging\": {\n      \"match\": \"(package|import)(?=(\\\\s+)([\\\"]?[A-Za-z][A-Za-z0-9-_./]*[\\\"]?)(;))\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.source.proto\" },\n        \"2\": { \"name\": \"entity.name.tag\" }\n      }\n    },\n    \"message\": {\n      \"begin\": \"(message|extend)(\\\\s+)([A-Za-z][A-Za-z0-9_.]*)(\\\\s*)(\\\\{)?\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        { \"include\": \"$self\" },\n        { \"include\": \"#enum\" },\n        { \"include\": \"#option\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#oneof\" },\n        {\n          \"begin\": \"(optional|repeated|required|to|extensions)(\\\\s+)\",\n          \"end\": \";\",\n          \"patterns\": [\n            { \"include\": \"#storagetypes\" },\n            {\n              \"match\": \"(map)<([A-Za-z][A-Za-z0-9_]*),\\\\s*([A-Za-z][A-Za-z0-9_]*)>\\\\s+([A-Za-z][A-Za-z0-9_]*)\",\n              \"captures\": {\n                \"1\": { \"name\": \"keyword.source.proto\" },\n                \"4\": { \"name\": \"entity.name.class.proto\" }\n              }\n            },\n            {\n              \"match\": \"([A-Za-z][A-Za-z0-9_]*)(\\\\s+)([A-Za-z][A-Za-z0-9_]*)\",\n              \"captures\": { \"1\": { \"name\": \"entity.name.class.proto\" } }\n            },\n            {\n              \"match\": \"(\\\\s*)(=)(\\\\s*)([0-9]*)\",\n              \"captures\": { \"4\": { \"name\": \"constant.numeric.proto\" } }\n            },\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"patterns\": [\n                {\n                  \"match\": \"default|packed|deprecated|lazy\",\n                  \"name\": \"keyword.source.proto\"\n                },\n                { \"include\": \"#constants\" }\n              ]\n            }\n          ],\n          \"beginCaptures\": { \"1\": { \"name\": \"keyword.source.proto\" } }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.source.proto\" },\n        \"3\": { \"name\": \"entity.name.class.message.proto\" }\n      }\n    },\n    \"storagetypes\": {\n      \"match\": \"\\\\b(double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\\\\b\",\n      \"name\": \"storage.type.proto\"\n    },\n    \"oneof\": {\n      \"begin\": \"(oneof)(\\\\s+)([A-Za-z][A-Za-z0-9_]*)(\\\\s*)(\\\\{)?\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        { \"include\": \"#option\" },\n        { \"include\": \"#comments\" },\n        { \"match\": \"\\\\b(to|extensions)\\\\b\", \"name\": \"keyword.source.proto\" },\n        {\n          \"match\": \"([A-Za-z][A-Za-z0-9_]*)(\\\\s+)([A-Za-z][A-Za-z0-9_]*)(\\\\s*)(=)(\\\\s*)([0-9]*)\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.name.class.proto\" },\n            \"7\": { \"name\": \"constant.numeric.proto\" }\n          }\n        }\n      ],\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.source.proto\" } }\n    },\n    \"enum\": {\n      \"begin\": \"(enum)(\\\\s+)([A-Za-z][A-Za-z0-9_]*)(\\\\s*)(\\\\{)?\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        { \"include\": \"#option\" },\n        { \"include\": \"#comments\" },\n        { \"match\": \"\\\\b(to|extensions)\\\\b\", \"name\": \"keyword.source.proto\" },\n        {\n          \"match\": \"([A-Za-z][A-Za-z0-9_]*)(\\\\s*)(=)(\\\\s*)([0-9]*)\",\n          \"captures\": {\n            \"1\": { \"name\": \"constant.other.proto\" },\n            \"5\": { \"name\": \"constant.numeric.proto\" }\n          }\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.source.proto\" },\n        \"3\": { \"name\": \"entity.name.class.message.proto\" }\n      }\n    },\n    \"strings\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.proto\"\n    },\n    \"constants\": {\n      \"match\": \"\\\\b(true|false|max)\\\\b\",\n      \"name\": \"constant.language.proto\"\n    }\n  },\n  \"name\": \"Protocol Buffer\",\n  \"uuid\": \"750ac1f3-b172-48de-b1a4-a3c310c4a293\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/pug.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/davidrios/pug-tmbundle/blob/master/Syntaxes/Pug.JSON-tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/davidrios/pug-tmbundle/commit/e67e895f6fb64932aa122e471000fa55d826bff6\",\n  \"name\": \"pug\",\n  \"scopeName\": \"text.pug\",\n  \"patterns\": [\n    {\n      \"match\": \"^(!!!|doctype)(\\\\s*[a-zA-Z0-9-_]+)?\",\n      \"name\": \"meta.tag.sgml.doctype.html\",\n      \"comment\": \"Doctype declaration.\"\n    },\n    {\n      \"begin\": \"^(\\\\s*)//-\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"comment.unbuffered.block.pug\",\n      \"comment\": \"Unbuffered (pug-only) comments.\"\n    },\n    {\n      \"begin\": \"^(\\\\s*)//\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"string.comment.buffered.block.pug\",\n      \"comment\": \"Buffered (html) comments.\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.comment.comment.block.pug\"\n            }\n          },\n          \"match\": \"^\\\\s*(//)(?!-)\",\n          \"name\": \"string.comment.buffered.block.pug\",\n          \"comment\": \"Buffered comments inside buffered comments will generate invalid html.\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!--\",\n      \"end\": \"--\\\\s*>\",\n      \"name\": \"comment.unbuffered.block.pug\",\n      \"patterns\": [\n        {\n          \"match\": \"--\",\n          \"name\": \"invalid.illegal.comment.comment.block.pug\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)-$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"source.js\",\n      \"comment\": \"Unbuffered code block.\",\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(script)((\\\\.$)|(?=[^\\\\n]*(text|application)/javascript.*\\\\.$))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"meta.tag.other\",\n      \"comment\": \"Script tag with JavaScript code.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=\\\\()\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag_attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=[.#])\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#complete_tag\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(style)((\\\\.$)|(?=[.#(].*\\\\.$))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"meta.tag.other\",\n      \"comment\": \"Style tag with CSS code.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=\\\\()\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag_attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=[.#])\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#complete_tag\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.css\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(sass)(?=\\\\(|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"constant.language.name.sass.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"source.sass.filter.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(less)(?=\\\\(|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"constant.language.name.less.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"source.less.filter.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"source.less\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(stylus)(?=\\\\(|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"constant.language.name.stylus.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"source.stylus\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(coffee(-?script)?)(?=\\\\(|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"constant.language.name.coffeescript.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"source.coffeescript.filter.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"source.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)((:(?=.))|(:$))\",\n      \"beginCaptures\": {\n        \"4\": {\n          \"name\": \"invalid.illegal.empty.generic.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"comment\": \"Generic Pug filter.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?<=:)(?=.)\",\n          \"end\": \"$\",\n          \"name\": \"name.generic.filter.pug\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G\\\\(\",\n              \"name\": \"invalid.illegal.name.generic.filter.pug\"\n            },\n            {\n              \"match\": \"[\\\\w-]\",\n              \"name\": \"constant.language.name.generic.filter.pug\"\n            },\n            {\n              \"include\": \"#tag_attributes\"\n            },\n            {\n              \"match\": \"\\\\W\",\n              \"name\": \"invalid.illegal.name.generic.filter.pug\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(?=[\\\\w.#].*?\\\\.$)(?=(?:(?:(?:(?:(?:#[\\\\w-]+)|(?:\\\\.[\\\\w-]+))|(?:(?:[#!]\\\\{[^}]*\\\\})|(?:\\\\w(?:(?:[\\\\w:-]+[\\\\w-])|(?:[\\\\w-]*)))))(?:(?:#[\\\\w-]+)|(?:\\\\.[\\\\w-]+)|(?:\\\\((?:[^()\\\\'\\\\\\\"]*(?:(?:\\\\'(?:[^\\\\']|(?:(?<!\\\\\\\\)\\\\\\\\\\\\'))*\\\\')|(?:\\\\\\\"(?:[^\\\\\\\"]|(?:(?<!\\\\\\\\)\\\\\\\\\\\\\\\"))*\\\\\\\")))*[^()]*\\\\))*)*)(?:(?:(?::\\\\s+)|(?<=\\\\)))(?:(?:(?:(?:#[\\\\w-]+)|(?:\\\\.[\\\\w-]+))|(?:(?:[#!]\\\\{[^}]*\\\\})|(?:\\\\w(?:(?:[\\\\w:-]+[\\\\w-])|(?:[\\\\w-]*)))))(?:(?:#[\\\\w-]+)|(?:\\\\.[\\\\w-]+)|(?:\\\\((?:[^()\\\\'\\\\\\\"]*(?:(?:\\\\'(?:[^\\\\']|(?:(?<!\\\\\\\\)\\\\\\\\\\\\'))*\\\\')|(?:\\\\\\\"(?:[^\\\\\\\"]|(?:(?<!\\\\\\\\)\\\\\\\\\\\\\\\"))*\\\\\\\")))*[^()]*\\\\))*)*))*)\\\\.$)(?:(?:(#[\\\\w-]+)|(\\\\.[\\\\w-]+))|((?:[#!]\\\\{[^}]*\\\\})|(?:\\\\w(?:(?:[\\\\w:-]+[\\\\w-])|(?:[\\\\w-]*)))))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"entity.other.attribute-name.id.pug\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.class.pug\"\n        },\n        \"4\": {\n          \"name\": \"meta.tag.other entity.name.tag.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"comment\": \"Generated from dot_block_tag.py\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"#complete_tag\"\n        },\n        {\n          \"begin\": \"^(?=.)\",\n          \"end\": \"$\",\n          \"name\": \"text.block.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline_pug\"\n            },\n            {\n              \"include\": \"#embedded_html\"\n            },\n            {\n              \"include\": \"#html_entity\"\n            },\n            {\n              \"include\": \"#interpolated_value\"\n            },\n            {\n              \"include\": \"#interpolated_error\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*\",\n      \"end\": \"$\",\n      \"comment\": \"All constructs that generally span a single line starting with any number of white-spaces.\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline_pug\"\n        },\n        {\n          \"include\": \"#blocks_and_includes\"\n        },\n        {\n          \"include\": \"#unbuffered_code\"\n        },\n        {\n          \"include\": \"#mixin_definition\"\n        },\n        {\n          \"include\": \"#mixin_call\"\n        },\n        {\n          \"include\": \"#flow_control\"\n        },\n        {\n          \"include\": \"#case_conds\"\n        },\n        {\n          \"begin\": \"\\\\|\",\n          \"end\": \"$\",\n          \"name\": \"text.block.pipe.pug\",\n          \"comment\": \"Tag pipe text line.\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline_pug\"\n            },\n            {\n              \"include\": \"#embedded_html\"\n            },\n            {\n              \"include\": \"#html_entity\"\n            },\n            {\n              \"include\": \"#interpolated_value\"\n            },\n            {\n              \"include\": \"#interpolated_error\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#printed_expression\"\n        },\n        {\n          \"begin\": \"\\\\G(?=(#[^\\\\{\\\\w-])|[^\\\\w.#])\",\n          \"end\": \"$\",\n          \"comment\": \"Line starting with characters incompatible with tag name/id/class is standalone text.\",\n          \"patterns\": [\n            {\n              \"begin\": \"</?(?=[!#])\",\n              \"end\": \">|$\",\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_pug\"\n                },\n                {\n                  \"include\": \"#interpolated_value\"\n                },\n                {\n                  \"include\": \"#interpolated_error\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#inline_pug\"\n            },\n            {\n              \"include\": \"#embedded_html\"\n            },\n            {\n              \"include\": \"#html_entity\"\n            },\n            {\n              \"include\": \"#interpolated_value\"\n            },\n            {\n              \"include\": \"#interpolated_error\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#complete_tag\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"blocks_and_includes\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.import.include.pug\"\n        },\n        \"4\": {\n          \"name\": \"variable.control.import.include.pug\"\n        }\n      },\n      \"match\": \"(extends|include|yield|append|prepend|block( (append|prepend))?)\\\\s+(.*)$\",\n      \"name\": \"meta.first-class.pug\",\n      \"comment\": \"Template blocks and includes.\"\n    },\n    \"unbuffered_code\": {\n      \"begin\": \"(-|(([a-zA-Z0-9_]+)\\\\s+=))\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"variable.parameter.javascript.embedded.pug\"\n        }\n      },\n      \"end\": \"(?=\\\\])|(({\\\\s*)?$)\",\n      \"name\": \"source.js\",\n      \"comment\": \"name = function() {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_brackets\"\n        },\n        {\n          \"include\": \"#babel_parens\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"mixin_definition\": {\n      \"match\": \"(mixin\\\\s+)([\\\\w-]+)(?:(\\\\()\\\\s*((?:[a-zA-Z_]\\\\w*\\\\s*)(?:,\\\\s*[a-zA-Z_]\\\\w*\\\\s*)*)(\\\\)))?$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pug\"\n        },\n        \"2\": {\n          \"name\": \"meta.tag.other entity.name.function.pug\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.js\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.js\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.parameters.begin.js\"\n        }\n      }\n    },\n    \"mixin_call\": {\n      \"begin\": \"((?:mixin\\\\s+)|\\\\+)([\\\\w-]+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pug\"\n        },\n        \"2\": {\n          \"name\": \"meta.tag.other entity.name.function.pug\"\n        }\n      },\n      \"end\": \"(?!\\\\()|$\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!\\\\))\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"args.mixin.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#js_parens\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"match\": \"([^\\\\s(),=/]+)\\\\s*=\\\\s*\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.tag.other entity.other.attribute-name.tag.pug\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#tag_attributes\"\n        }\n      ]\n    },\n    \"flow_control\": {\n      \"begin\": \"(for|if|else if|else|each|until|while|unless|case)(\\\\s+|$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pug\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"meta.control.flow.pug\",\n      \"comment\": \"Pug control flow.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\",\n          \"end\": \"$\",\n          \"name\": \"js.embedded.control.flow.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"case_when_paren\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"js.when.control.flow.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#case_when_paren\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"invalid.illegal.name.tag.pug\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"case_conds\": {\n      \"begin\": \"(default|when)((\\\\s+|(?=:))|$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pug\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"meta.control.flow.pug\",\n      \"comment\": \"Pug case conditionals.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?!:)\",\n          \"end\": \"(?=:\\\\s+)|$\",\n          \"name\": \"js.embedded.control.flow.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#case_when_paren\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \":\\\\s+\",\n          \"end\": \"$\",\n          \"name\": \"tag.case.control.flow.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#complete_tag\"\n            }\n          ]\n        }\n      ]\n    },\n    \"complete_tag\": {\n      \"begin\": \"(?=[\\\\w.#])|(:\\\\s*)\",\n      \"end\": \"(\\\\.?$)|(?=:.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#blocks_and_includes\"\n        },\n        {\n          \"include\": \"#unbuffered_code\"\n        },\n        {\n          \"include\": \"#mixin_call\"\n        },\n        {\n          \"include\": \"#flow_control\"\n        },\n        {\n          \"match\": \"(?<=:)\\\\w.*$\",\n          \"name\": \"invalid.illegal.name.tag.pug\"\n        },\n        {\n          \"include\": \"#tag_name\"\n        },\n        {\n          \"include\": \"#tag_id\"\n        },\n        {\n          \"include\": \"#tag_classes\"\n        },\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"#tag_mixin_attributes\"\n        },\n        {\n          \"match\": \"((\\\\.)\\\\s+$)|((:)\\\\s*$)\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"invalid.illegal.end.tag.pug\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.end.tag.pug\"\n            }\n          }\n        },\n        {\n          \"include\": \"#printed_expression\"\n        },\n        {\n          \"include\": \"#tag_text\"\n        }\n      ]\n    },\n    \"tag_name\": {\n      \"begin\": \"([#!]\\\\{(?=.*?\\\\}))|(\\\\w(([\\\\w:-]+[\\\\w-])|([\\\\w-]*)))\",\n      \"end\": \"(\\\\G(?<!\\\\5[^\\\\w-]))|\\\\}|$\",\n      \"name\": \"meta.tag.other entity.name.tag.pug\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?<=\\\\{)\",\n          \"end\": \"(?=\\\\})\",\n          \"name\": \"meta.tag.other entity.name.tag.pug\",\n          \"patterns\": [\n            {\n              \"match\": \"{\",\n              \"name\": \"invalid.illegal.tag.pug\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag_id\": {\n      \"match\": \"#[\\\\w-]+\",\n      \"name\": \"entity.other.attribute-name.id.pug\"\n    },\n    \"tag_classes\": {\n      \"match\": \"\\\\.([^\\\\w-])?[\\\\w-]*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.tag.pug\"\n        }\n      },\n      \"name\": \"entity.other.attribute-name.class.pug\"\n    },\n    \"tag_attributes\": {\n      \"begin\": \"(\\\\(\\\\s*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.name.attribute.tag.pug\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"name\": \"meta.tag.other\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attribute_name_paren\"\n        },\n        {\n          \"include\": \"#tag_attribute_name\"\n        },\n        {\n          \"match\": \"!(?!=)\",\n          \"name\": \"invalid.illegal.tag.pug\"\n        },\n        {\n          \"begin\": \"=\\\\s*\",\n          \"end\": \"$|(?=,|(?:\\\\s+[^!%&*-+~|<>:?/])|\\\\))\",\n          \"name\": \"attribute_value\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#js_parens\"\n            },\n            {\n              \"include\": \"#js_brackets\"\n            },\n            {\n              \"include\": \"#js_braces\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[%&*-+~|<>:?/])\\\\s+\",\n          \"end\": \"$|(?=,|(?:\\\\s+[^!%&*-+~|<>:?/])|\\\\))\",\n          \"name\": \"attribute_value2\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#js_parens\"\n            },\n            {\n              \"include\": \"#js_brackets\"\n            },\n            {\n              \"include\": \"#js_braces\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag_attribute_name\": {\n      \"match\": \"([^\\\\s(),=/!]+)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.tag.pug\"\n        }\n      }\n    },\n    \"tag_attribute_name_paren\": {\n      \"begin\": \"\\\\(\\\\s*\",\n      \"end\": \"\\\\)\",\n      \"name\": \"entity.other.attribute-name.tag.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attribute_name_paren\"\n        },\n        {\n          \"include\": \"#tag_attribute_name\"\n        }\n      ]\n    },\n    \"tag_mixin_attributes\": {\n      \"begin\": \"(&attributes\\\\()\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.pug\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"name\": \"meta.tag.other\",\n      \"patterns\": [\n        {\n          \"match\": \"attributes(?=\\\\))\",\n          \"name\": \"storage.type.keyword.pug\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"tag_text\": {\n      \"begin\": \"(?=.)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline_pug\"\n        },\n        {\n          \"include\": \"#embedded_html\"\n        },\n        {\n          \"include\": \"#html_entity\"\n        },\n        {\n          \"include\": \"#interpolated_value\"\n        },\n        {\n          \"include\": \"#interpolated_error\"\n        }\n      ]\n    },\n    \"inline_pug_text\": {\n      \"begin\": \"\",\n      \"end\": \"(?=\\\\])\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline_pug_text\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#inline_pug\"\n        },\n        {\n          \"include\": \"#embedded_html\"\n        },\n        {\n          \"include\": \"#html_entity\"\n        },\n        {\n          \"include\": \"#interpolated_value\"\n        },\n        {\n          \"include\": \"#interpolated_error\"\n        }\n      ]\n    },\n    \"inline_pug\": {\n      \"begin\": \"(?<!\\\\\\\\)(#\\\\[)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.pug\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.pug\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"name\": \"inline.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline_pug\"\n        },\n        {\n          \"include\": \"#mixin_call\"\n        },\n        {\n          \"begin\": \"(?<!\\\\])(?=[\\\\w.#])|(:\\\\s*)\",\n          \"end\": \"(?=\\\\]|(:.)|=|\\\\s)\",\n          \"name\": \"tag.inline.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag_name\"\n            },\n            {\n              \"include\": \"#tag_id\"\n            },\n            {\n              \"include\": \"#tag_classes\"\n            },\n            {\n              \"include\": \"#tag_attributes\"\n            },\n            {\n              \"include\": \"#tag_mixin_attributes\"\n            },\n            {\n              \"include\": \"#inline_pug\"\n            },\n            {\n              \"match\": \"\\\\[\",\n              \"name\": \"invalid.illegal.tag.pug\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#unbuffered_code\"\n        },\n        {\n          \"include\": \"#printed_expression\"\n        },\n        {\n          \"match\": \"\\\\[\",\n          \"name\": \"invalid.illegal.tag.pug\"\n        },\n        {\n          \"include\": \"#inline_pug_text\"\n        }\n      ]\n    },\n    \"html_entity\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html.text.pug\"\n        },\n        {\n          \"match\": \"[<>&]\",\n          \"name\": \"invalid.illegal.html_entity.text.pug\"\n        }\n      ]\n    },\n    \"interpolated_value\": {\n      \"begin\": \"(?<!\\\\\\\\)[#!]\\\\{(?=.*?\\\\})\",\n      \"end\": \"\\\\}\",\n      \"name\": \"string.interpolated.pug\",\n      \"patterns\": [\n        {\n          \"match\": \"{\",\n          \"name\": \"invalid.illegal.tag.pug\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"interpolated_error\": {\n      \"match\": \"(?<!\\\\\\\\)[#!]\\\\{(?=[^}]*$)\",\n      \"name\": \"invalid.illegal.tag.pug\"\n    },\n    \"printed_expression\": {\n      \"begin\": \"(!?\\\\=)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant\"\n        }\n      },\n      \"end\": \"(?=\\\\])|$\",\n      \"name\": \"source.js\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_brackets\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"(['\\\"])\",\n      \"end\": \"(?<!\\\\\\\\)\\\\1\",\n      \"name\": \"string.quoted.pug\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\((x[0-9a-fA-F]{2})|(u[0-9]{4})|.)\",\n          \"name\": \"constant.character.quoted.pug\"\n        },\n        {\n          \"include\": \"#interpolated_value\"\n        },\n        {\n          \"include\": \"#interpolated_error\"\n        }\n      ]\n    },\n    \"embedded_html\": {\n      \"begin\": \"(?=<[^>]*>)\",\n      \"end\": \"$|(?=>)\",\n      \"name\": \"html\",\n      \"patterns\": [\n        {\n          \"include\": \"text.html.basic\"\n        },\n        {\n          \"include\": \"#interpolated_value\"\n        },\n        {\n          \"include\": \"#interpolated_error\"\n        }\n      ]\n    },\n    \"js_parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_parens\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"js_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_brackets\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"js_braces\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_braces\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"babel_parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)|(({\\\\s*)?$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#babel_parens\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/puppet.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.puppet\",\n  \"fileTypes\": [\"pp\"],\n  \"foldingStartMarker\": \"(^\\\\s*/\\\\*|(\\\\{|\\\\[|\\\\()\\\\s*$)\",\n  \"foldingStopMarker\": \"(\\\\*/|^\\\\s*(\\\\}|\\\\]|\\\\)))\",\n  \"name\": \"Puppet\",\n  \"patterns\": [\n    {\n      \"include\": \"#line_comment\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"begin\": \"^\\\\s*/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.puppet\"\n    },\n    {\n      \"begin\": \"\\\\b(node)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.puppet\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.puppet\"\n        }\n      },\n      \"end\": \"(?={)\",\n      \"name\": \"meta.definition.class.puppet\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bdefault\\\\b\",\n          \"name\": \"keyword.puppet\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regex-literal\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(class)\\\\s+((?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+|(?#Bareword Resource Name)[a-z][a-z0-9_]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.puppet\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.puppet\"\n        }\n      },\n      \"end\": \"(?={)\",\n      \"name\": \"meta.definition.class.puppet\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(inherits)\\\\b\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.puppet\"\n            }\n          },\n          \"end\": \"(?=\\\\(|{)\",\n          \"name\": \"meta.definition.class.inherits.puppet\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b((?:[-_A-Za-z0-9\\\".]+::)*[-_A-Za-z0-9\\\".]+)\\\\b\",\n              \"name\": \"support.type.puppet\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#resource-parameters\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*(plan)\\\\s+((?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+|(?#Bareword Resource Name)[a-z][a-z0-9_]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.puppet\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.plan.puppet\"\n        }\n      },\n      \"end\": \"(?={)\",\n      \"name\": \"meta.definition.plan.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#resource-parameters\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*(define|function)\\\\s+((?#Bareword Resource Name)[a-z][a-z0-9_]*|(?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+)\\\\s*(\\\\()\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.puppet\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.puppet\"\n        }\n      },\n      \"end\": \"(?={)\",\n      \"name\": \"meta.function.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#resource-parameters\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(case|else|elsif|if|unless)(?!::)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.puppet\"\n        }\n      }\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#resource-definition\"\n    },\n    {\n      \"include\": \"#heredoc\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#puppet-datatypes\"\n    },\n    {\n      \"include\": \"#array\"\n    },\n    {\n      \"match\": \"((\\\\$?)\\\"?[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*\\\"?):(?=\\\\s+|$)\",\n      \"name\": \"entity.name.section.puppet\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"begin\": \"\\\\b(import|include|contain|require)\\\\s+(?!.*=>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.include.puppet\"\n        }\n      },\n      \"end\": \"(?=\\\\s|$)\",\n      \"contentName\": \"variable.parameter.include.puppet\",\n      \"name\": \"meta.include.puppet\"\n    },\n    {\n      \"match\": \"\\\\b\\\\w+\\\\s*(?==>)\\\\s*\",\n      \"name\": \"constant.other.key.puppet\"\n    },\n    {\n      \"match\": \"(?<={)\\\\s*\\\\w+\\\\s*(?=})\",\n      \"name\": \"constant.other.bareword.puppet\"\n    },\n    {\n      \"match\": \"\\\\b(alert|crit|debug|defined|emerg|err|escape|fail|failed|file|generate|gsub|info|notice|package|realize|search|tag|tagged|template|warning)\\\\b(?!.*{)\",\n      \"name\": \"support.function.puppet\"\n    },\n    {\n      \"match\": \"=>\",\n      \"name\": \"punctuation.separator.key-value.puppet\"\n    },\n    {\n      \"match\": \"->\",\n      \"name\": \"keyword.control.orderarrow.puppet\"\n    },\n    {\n      \"match\": \"~>\",\n      \"name\": \"keyword.control.notifyarrow.puppet\"\n    },\n    {\n      \"include\": \"#regex-literal\"\n    }\n  ],\n  \"repository\": {\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(absent|directory|false|file|present|running|stopped|true)\\\\b(?!.*{)\",\n          \"name\": \"constant.language.puppet\"\n        }\n      ]\n    },\n    \"double-quoted-string\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.puppet\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.puppet\"\n        }\n      },\n      \"name\": \"string.quoted.double.interpolated.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#interpolated_puppet\"\n        }\n      ]\n    },\n    \"interpolated_puppet\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\${)(\\\\d+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.embedded.begin.puppet\"\n            },\n            \"2\": {\n              \"name\": \"source.puppet variable.other.readwrite.global.pre-defined.puppet\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.puppet\"\n            }\n          },\n          \"contentName\": \"source.puppet\",\n          \"name\": \"meta.embedded.line.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\${)(_[a-zA-Z0-9_]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.embedded.begin.puppet\"\n            },\n            \"2\": {\n              \"name\": \"source.puppet variable.other.readwrite.global.puppet\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.puppet\"\n            }\n          },\n          \"contentName\": \"source.puppet\",\n          \"name\": \"meta.embedded.line.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\${)(([a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.embedded.begin.puppet\"\n            },\n            \"2\": {\n              \"name\": \"source.puppet variable.other.readwrite.global.puppet\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.puppet\"\n            }\n          },\n          \"contentName\": \"source.puppet\",\n          \"name\": \"meta.embedded.line.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\${\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.puppet\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.puppet\"\n            }\n          },\n          \"contentName\": \"source.puppet\",\n          \"name\": \"meta.embedded.line.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"escaped_char\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape.puppet\"\n    },\n    \"line_comment\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.number-sign.puppet\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.comment.puppet\"\n            }\n          },\n          \"match\": \"^((#).*$\\\\n?)\",\n          \"name\": \"meta.comment.full-line.puppet\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.puppet\"\n            }\n          },\n          \"match\": \"(#).*$\\\\n?\",\n          \"name\": \"comment.line.number-sign.puppet\"\n        }\n      ]\n    },\n    \"nested_braces\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_braces\"\n        }\n      ]\n    },\n    \"nested_braces_interpolated\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_braces_interpolated\"\n        }\n      ]\n    },\n    \"nested_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_brackets\"\n        }\n      ]\n    },\n    \"nested_brackets_interpolated\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_brackets_interpolated\"\n        }\n      ]\n    },\n    \"nested_parens\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_parens\"\n        }\n      ]\n    },\n    \"nested_parens_interpolated\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_parens_interpolated\"\n        }\n      ]\n    },\n    \"parameter-default-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#hash\"\n        },\n        {\n          \"include\": \"#array\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#puppet-datatypes\"\n        }\n      ]\n    },\n    \"resource-parameters\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.puppet\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            }\n          },\n          \"match\": \"((\\\\$+)[a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(?=,|\\\\))\",\n          \"name\": \"meta.function.argument.puppet\"\n        },\n        {\n          \"begin\": \"((\\\\$+)[a-zA-Z_][a-zA-Z0-9_]*)(?:\\\\s*(=)\\\\s*)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.puppet\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.assignment.puppet\"\n            }\n          },\n          \"end\": \"(?=,|\\\\))\",\n          \"name\": \"meta.function.argument.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        }\n      ]\n    },\n    \"array\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.array.begin.puppet\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.puppet\"\n        }\n      },\n      \"name\": \"meta.array.puppet\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*,\\\\s*\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        }\n      ]\n    },\n    \"hash\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.hash.begin.puppet\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.hash.end.puppet\"\n        }\n      },\n      \"name\": \"meta.hash.puppet\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b\\\\w+\\\\s*(?==>)\\\\s*\",\n          \"name\": \"constant.other.key.puppet\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        }\n      ]\n    },\n    \"single-quoted-string\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.puppet\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.puppet\"\n        }\n      },\n      \"name\": \"string.quoted.single.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#double-quoted-string\"\n        },\n        {\n          \"include\": \"#single-quoted-string\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"match\": \"\\\\b(undef)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.puppet\"\n        }\n      }\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"comment\": \"HEX 0x 0-f\",\n          \"match\": \"(?<!\\\\w|\\\\d)([-+]?)(?i:0x)(?i:[0-9a-f])+(?!\\\\w|\\\\d)\",\n          \"name\": \"constant.numeric.hexadecimal.puppet\"\n        },\n        {\n          \"comment\": \"INTEGERS [(+|-)] digits [e [(+|-)] digits]\",\n          \"match\": \"(?<!\\\\w|\\\\.)([-+]?)(?<!\\\\d)\\\\d+(?i:e(\\\\+|-){0,1}\\\\d+){0,1}(?!\\\\w|\\\\d|\\\\.)\",\n          \"name\": \"constant.numeric.integer.puppet\"\n        },\n        {\n          \"comment\": \"FLOAT [(+|-)] digits . digits [e [(+|-)] digits]\",\n          \"match\": \"(?<!\\\\w)([-+]?)\\\\d+\\\\.\\\\d+(?i:e(\\\\+|-){0,1}\\\\d+){0,1}(?!\\\\w|\\\\d)\",\n          \"name\": \"constant.numeric.integer.puppet\"\n        }\n      ]\n    },\n    \"resource-definition\": {\n      \"begin\": \"(?:^|\\\\b)((?#Toplevel Bareword)::[a-z][a-z0-9_]*|(?#Bareword Resource Name)[a-z][a-z0-9_]*|(?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+)\\\\s*({)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.definition.resource.puppet storage.type.puppet\"\n        }\n      },\n      \"end\": \":\",\n      \"contentName\": \"entity.name.section.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#array\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\$)(\\\\d+)\",\n          \"name\": \"variable.other.readwrite.global.pre-defined.puppet\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\$)_[a-zA-Z0-9_]*\",\n          \"name\": \"variable.other.readwrite.global.puppet\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\$)(([a-z][a-zA-Z0-9_]*)?(?:::[a-z][a-zA-Z0-9_]*)*)\",\n          \"name\": \"variable.other.readwrite.global.puppet\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            }\n          }\n        }\n      ]\n    },\n    \"function_call\": {\n      \"begin\": \"([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"name\": \"meta.function-call.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-default-types\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.parameters.puppet\"\n        }\n      ]\n    },\n    \"puppet-datatypes\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Puppet Data type\",\n          \"match\": \"(?<![a-zA-Z\\\\$])([A-Z][a-zA-Z0-9_]*)(?![a-zA-Z0-9_])\",\n          \"name\": \"storage.type.puppet\"\n        }\n      ]\n    },\n    \"regex-literal\": {\n      \"match\": \"(\\\\/)(.+?)(?:[^\\\\\\\\]\\\\/)\",\n      \"name\": \"string.regexp.literal.puppet\",\n      \"comment\": \"Puppet Regular expression literal without interpolation\"\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"@\\\\([[:blank:]]*\\\"([^:\\\\/) \\\\t]+)\\\"[[:blank:]]*(:[[:blank:]]*[a-z][a-zA-Z0-9_+]*[[:blank:]]*)?(\\\\/[[:blank:]]*[tsrnL$]*)?[[:blank:]]*\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.puppet\"\n            }\n          },\n          \"end\": \"^[[:blank:]]*(\\\\|[[:blank:]]*-|\\\\||-)?[[:blank:]]*\\\\1\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.puppet\"\n            }\n          },\n          \"name\": \"string.interpolated.heredoc.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#interpolated_puppet\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"@\\\\([[:blank:]]*([^:\\\\/) \\\\t]+)[[:blank:]]*(:[[:blank:]]*[a-z][a-zA-Z0-9_+]*[[:blank:]]*)?(\\\\/[[:blank:]]*[tsrnL$]*)?[[:blank:]]*\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.puppet\"\n            }\n          },\n          \"end\": \"^[[:blank:]]*(\\\\|[[:blank:]]*-|\\\\||-)?[[:blank:]]*\\\\1\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.puppet\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.puppet\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/python.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/MagicStack/MagicPython/blob/master/grammars/MagicPython.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/MagicStack/MagicPython/commit/b453f26ed856c9b16a053517c41207e3a72cc7d5\",\n  \"name\": \"MagicPython\",\n  \"scopeName\": \"source.python\",\n  \"patterns\": [\n    {\n      \"include\": \"#statement\"\n    },\n    {\n      \"include\": \"#expression\"\n    }\n  ],\n  \"repository\": {\n    \"impossible\": {\n      \"comment\": \"This is a special rule that should be used where no match is desired. It is not a good idea to match something like '1{0}' because in some cases that can result in infinite loops in token generation. So the rule instead matches and impossible expression to allow a match to fail and move to the next token.\",\n      \"match\": \"$.^\"\n    },\n    \"statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#import\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#function-declaration\"\n        },\n        {\n          \"include\": \"#statement-keyword\"\n        },\n        {\n          \"include\": \"#assignment-operator\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#docstring-statement\"\n        },\n        {\n          \"include\": \"#semicolon\"\n        }\n      ]\n    },\n    \"semicolon\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.semicolon.python\",\n          \"match\": \"\\\\;$\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.line.number-sign.python\",\n          \"contentName\": \"meta.typehint.comment.python\",\n          \"begin\": \"(?x)\\n  (?:\\n    \\\\# \\\\s* (type:)\\n    \\\\s*+ (?# we want `\\\\s*+` which is possessive quantifier since\\n             we do not actually want to backtrack when matching\\n             whitespace here)\\n    (?! $ | \\\\#)\\n  )\\n\",\n          \"end\": \"(?:$|(?=\\\\#))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.typehint.comment.python\"\n            },\n            \"1\": {\n              \"name\": \"comment.typehint.directive.notation.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"comment.typehint.ignore.notation.python\",\n              \"match\": \"(?x)\\n  \\\\G ignore\\n  (?= \\\\s* (?: $ | \\\\#))\\n\"\n            },\n            {\n              \"name\": \"comment.typehint.type.notation.python\",\n              \"match\": \"(?x)\\n  (?<!\\\\.)\\\\b(\\n    bool | bytes | float | int | object | str\\n    | List | Dict | Iterable | Sequence | Set\\n    | FrozenSet | Callable | Union | Tuple\\n    | Any | None\\n  )\\\\b\\n\"\n            },\n            {\n              \"name\": \"comment.typehint.punctuation.notation.python\",\n              \"match\": \"([\\\\[\\\\]\\\\(\\\\),\\\\.\\\\=\\\\*]|(->))\"\n            },\n            {\n              \"name\": \"comment.typehint.variable.notation.python\",\n              \"match\": \"([[:alpha:]_]\\\\w*)\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments-base\"\n        }\n      ]\n    },\n    \"docstring-statement\": {\n      \"begin\": \"^(?=\\\\s*[rR]?(\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\"|\\\\'|\\\\\\\"))\",\n      \"end\": \"(?<=\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\"|\\\\'|\\\\\\\")\",\n      \"patterns\": [\n        {\n          \"include\": \"#docstring\"\n        }\n      ]\n    },\n    \"docstring\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.docstring.multi.python\",\n          \"begin\": \"(\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\")\",\n          \"end\": \"(\\\\1)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docstring-prompt\"\n            },\n            {\n              \"include\": \"#codetags\"\n            },\n            {\n              \"include\": \"#docstring-guts-unicode\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.docstring.raw.multi.python\",\n          \"begin\": \"([rR])(\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\")\",\n          \"end\": \"(\\\\2)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.string.python\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-consume-escape\"\n            },\n            {\n              \"include\": \"#docstring-prompt\"\n            },\n            {\n              \"include\": \"#codetags\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.docstring.single.python\",\n          \"begin\": \"(\\\\'|\\\\\\\")\",\n          \"end\": \"(\\\\1)|((?<!\\\\\\\\)\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.python\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#codetags\"\n            },\n            {\n              \"include\": \"#docstring-guts-unicode\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.docstring.raw.single.python\",\n          \"begin\": \"([rR])(\\\\'|\\\\\\\")\",\n          \"end\": \"(\\\\2)|((?<!\\\\\\\\)\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.string.python\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.python\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-consume-escape\"\n            },\n            {\n              \"include\": \"#codetags\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docstring-guts-unicode\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        }\n      ]\n    },\n    \"docstring-prompt\": {\n      \"match\": \"(?x)\\n  (?:\\n    (?:^|\\\\G) \\\\s* (?# '\\\\G' is necessary for ST)\\n    ((?:>>>|\\\\.\\\\.\\\\.) \\\\s) (?=\\\\s*\\\\S)\\n  )\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.python\"\n        }\n      }\n    },\n    \"statement-keyword\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.function.python\",\n          \"match\": \"\\\\b((async\\\\s+)?\\\\s*def)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control.flow.python\",\n          \"match\": \"(?x)\\n  \\\\b(?<!\\\\.)(\\n    as | async | continue | del | assert | break | finally | for\\n    | from | elif | else | if | except | pass | raise\\n    | return | try | while | with\\n  )\\\\b\\n\"\n        },\n        {\n          \"name\": \"storage.modifier.declaration.python\",\n          \"match\": \"(?x)\\n  \\\\b(?<!\\\\.)(\\n    global | nonlocal\\n  )\\\\b\\n\"\n        },\n        {\n          \"name\": \"storage.type.class.python\",\n          \"match\": \"\\\\b(?<!\\\\.)(class)\\\\b\"\n        }\n      ]\n    },\n    \"expression-bare\": {\n      \"comment\": \"valid Python expressions w/o comments and line continuation\",\n      \"patterns\": [\n        {\n          \"include\": \"#backticks\"\n        },\n        {\n          \"include\": \"#illegal-anno\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#lambda\"\n        },\n        {\n          \"include\": \"#illegal-operator\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#curly-braces\"\n        },\n        {\n          \"include\": \"#item-access\"\n        },\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#round-braces\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#builtin-types\"\n        },\n        {\n          \"include\": \"#builtin-exceptions\"\n        },\n        {\n          \"include\": \"#magic-names\"\n        },\n        {\n          \"include\": \"#special-names\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#special-variables\"\n        },\n        {\n          \"include\": \"#ellipsis\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#line-continuation\"\n        }\n      ]\n    },\n    \"expression-base\": {\n      \"comment\": \"valid Python expressions with comments and line continuation\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#expression-bare\"\n        },\n        {\n          \"include\": \"#line-continuation\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"comment\": \"All valid Python expressions\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression-base\"\n        },\n        {\n          \"include\": \"#member-access\"\n        },\n        {\n          \"comment\": \"Tokenize identifiers to help linters\",\n          \"match\": \"(?x) \\\\b ([[:alpha:]_]\\\\w*) \\\\b\"\n        }\n      ]\n    },\n    \"member-access\": {\n      \"begin\": \"(\\\\.)\\\\s*(?!\\\\.)\",\n      \"end\": \"(?x)\\n  # stop when you've just read non-whitespace followed by non-word\\n  # i.e. when finished reading an identifier or function call\\n  (?<=\\\\S)(?=\\\\W) |\\n  # stop when seeing the start of something that's not a word,\\n  # i.e. when seeing a non-identifier\\n  (^|(?<=\\\\s))(?=[^\\\\\\\\\\\\w\\\\s]) |\\n  $\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.period.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#member-access-base\"\n        }\n      ]\n    },\n    \"member-access-base\": {\n      \"patterns\": [\n        {\n          \"include\": \"#magic-names\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#special-names\"\n        },\n        {\n          \"include\": \"#line-continuation\"\n        },\n        {\n          \"include\": \"#item-access\"\n        }\n      ]\n    },\n    \"special-names\": {\n      \"name\": \"constant.other.caps.python\",\n      \"match\": \"(?x)\\n  \\\\b\\n    # we want to see \\\"enough\\\", meaning 2 or more upper-case\\n    # letters in the beginning of the constant\\n    #\\n    # for more details refer to:\\n    #   https://github.com/MagicStack/MagicPython/issues/42\\n    (\\n      _* [[:upper:]] [_\\\\d]* [[:upper:]]\\n    )\\n    [[:upper:]\\\\d]* (_\\\\w*)?\\n  \\\\b\\n\"\n    },\n    \"curly-braces\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dict.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dict.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.dict.python\",\n          \"match\": \":\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"list\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.list.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.list.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"round-braces\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"line-continuation\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\)\\\\s*(\\\\S.*$\\\\n?)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.continuation.line.python\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.line.continuation.python\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(\\\\\\\\)\\\\s*$\\\\n?\",\n          \"end\": \"(?x)\\n  (?=^\\\\s*$)\\n  |\\n  (?! (\\\\s* [rR]? (\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\"|\\\\'|\\\\\\\"))\\n      |\\n      (\\\\G $)  (?# '\\\\G' is necessary for ST)\\n  )\\n\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.continuation.line.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"assignment-operator\": {\n      \"name\": \"keyword.operator.assignment.python\",\n      \"match\": \"(?x)\\n     <<= | >>= | //= | \\\\*\\\\*=\\n    | \\\\+= | -= | /= | @=\\n    | \\\\*= | %= | ~= | \\\\^= | &= | \\\\|=\\n    | =(?!=)\\n\"\n    },\n    \"operator\": {\n      \"match\": \"(?x)\\n    \\\\b(?<!\\\\.)\\n      (?:\\n        (and | or | not | in | is)                         (?# 1)\\n        |\\n        (for | if | else | await | (?:yield(?:\\\\s+from)?))  (?# 2)\\n      )\\n    (?!\\\\s*:)\\\\b\\n\\n    | (<< | >> | & | \\\\| | \\\\^ | ~)                          (?# 3)\\n\\n    | (\\\\*\\\\* | \\\\* | \\\\+ | - | % | // | / | @)                (?# 4)\\n\\n    | (!= | == | >= | <= | < | >)                          (?# 5)\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.logical.python\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.python\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.bitwise.python\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.arithmetic.python\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.comparison.python\"\n        }\n      }\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.colon.python\",\n          \"match\": \":\"\n        },\n        {\n          \"name\": \"punctuation.separator.element.python\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.python\",\n          \"match\": \"\\\\b(True|False|None|NotImplemented|Ellipsis)\\\\b\"\n        },\n        {\n          \"include\": \"#number\"\n        }\n      ]\n    },\n    \"number\": {\n      \"name\": \"constant.numeric.python\",\n      \"patterns\": [\n        {\n          \"include\": \"#number-float\"\n        },\n        {\n          \"include\": \"#number-dec\"\n        },\n        {\n          \"include\": \"#number-hex\"\n        },\n        {\n          \"include\": \"#number-oct\"\n        },\n        {\n          \"include\": \"#number-bin\"\n        },\n        {\n          \"include\": \"#number-long\"\n        },\n        {\n          \"name\": \"invalid.illegal.name.python\",\n          \"match\": \"\\\\b[0-9]+\\\\w+\"\n        }\n      ]\n    },\n    \"number-float\": {\n      \"name\": \"constant.numeric.float.python\",\n      \"match\": \"(?x)\\n  (?<! \\\\w)(?:\\n    (?:\\n      \\\\.[0-9](?: _?[0-9] )*\\n      |\\n      [0-9](?: _?[0-9] )* \\\\. [0-9](?: _?[0-9] )*\\n      |\\n      [0-9](?: _?[0-9] )* \\\\.\\n    ) (?: [eE][+-]?[0-9](?: _?[0-9] )* )?\\n    |\\n    [0-9](?: _?[0-9] )* (?: [eE][+-]?[0-9](?: _?[0-9] )* )\\n  )([jJ])?\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.imaginary.number.python\"\n        }\n      }\n    },\n    \"number-dec\": {\n      \"name\": \"constant.numeric.dec.python\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])(?:\\n      [1-9](?: _?[0-9] )*\\n      |\\n      0+\\n      |\\n      [0-9](?: _?[0-9] )* ([jJ])\\n      |\\n      0 ([0-9]+)(?![eE\\\\.])\\n  )\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.imaginary.number.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.dec.python\"\n        },\n        \"3\": {\n          \"name\": \"invalid.illegal.dec.python\"\n        }\n      }\n    },\n    \"number-hex\": {\n      \"name\": \"constant.numeric.hex.python\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])\\n    (0[xX]) (_?[0-9a-fA-F])+\\n  \\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.number.python\"\n        }\n      }\n    },\n    \"number-oct\": {\n      \"name\": \"constant.numeric.oct.python\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])\\n    (0[oO]) (_?[0-7])+\\n  \\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.number.python\"\n        }\n      }\n    },\n    \"number-bin\": {\n      \"name\": \"constant.numeric.bin.python\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])\\n    (0[bB]) (_?[01])+\\n  \\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.number.python\"\n        }\n      }\n    },\n    \"number-long\": {\n      \"name\": \"constant.numeric.bin.python\",\n      \"comment\": \"this is to support python2 syntax for long ints\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])\\n    ([1-9][0-9]* | 0) ([lL])\\n  \\\\b\\n\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"storage.type.number.python\"\n        }\n      }\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-single-three-line\"\n        },\n        {\n          \"include\": \"#regexp-double-three-line\"\n        },\n        {\n          \"include\": \"#regexp-single-one-line\"\n        },\n        {\n          \"include\": \"#regexp-double-one-line\"\n        },\n        {\n          \"include\": \"#fregexp-single-three-line\"\n        },\n        {\n          \"include\": \"#fregexp-double-three-line\"\n        },\n        {\n          \"include\": \"#fregexp-single-one-line\"\n        },\n        {\n          \"include\": \"#fregexp-double-one-line\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#string-quoted-single-line\"\n        },\n        {\n          \"include\": \"#string-bin-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#string-bin-quoted-single-line\"\n        },\n        {\n          \"include\": \"#string-raw-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#string-raw-quoted-single-line\"\n        },\n        {\n          \"include\": \"#string-raw-bin-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#string-raw-bin-quoted-single-line\"\n        },\n        {\n          \"include\": \"#fstring-fnorm-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#fstring-fnorm-quoted-single-line\"\n        },\n        {\n          \"include\": \"#fstring-normf-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#fstring-normf-quoted-single-line\"\n        },\n        {\n          \"include\": \"#fstring-raw-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#fstring-raw-quoted-single-line\"\n        }\n      ]\n    },\n    \"string-unicode-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#string-entity\"\n        },\n        {\n          \"include\": \"#string-brace-formatting\"\n        }\n      ]\n    },\n    \"string-consume-escape\": {\n      \"match\": \"\\\\\\\\['\\\"\\\\n\\\\\\\\]\"\n    },\n    \"string-raw-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        },\n        {\n          \"include\": \"#string-brace-formatting\"\n        }\n      ]\n    },\n    \"string-raw-bin-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        }\n      ]\n    },\n    \"string-entity\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        }\n      ]\n    },\n    \"fstring-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        },\n        {\n          \"include\": \"#fstring-formatting\"\n        }\n      ]\n    },\n    \"fstring-raw-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#fstring-formatting\"\n        }\n      ]\n    },\n    \"fstring-illegal-single-brace\": {\n      \"comment\": \"it is illegal to have a multiline brace inside a single-line string\",\n      \"begin\": \"(\\\\{)(?=[^\\\\n}]*$\\\\n?)\",\n      \"end\": \"(\\\\})|(?=\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-terminator-single\"\n        },\n        {\n          \"include\": \"#f-expression\"\n        }\n      ]\n    },\n    \"fstring-illegal-multi-brace\": {\n      \"patterns\": [\n        {\n          \"include\": \"#impossible\"\n        }\n      ]\n    },\n    \"f-expression\": {\n      \"comment\": \"All valid Python expressions, except comments and line cont\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression-bare\"\n        },\n        {\n          \"include\": \"#member-access\"\n        },\n        {\n          \"comment\": \"Tokenize identifiers to help linters\",\n          \"match\": \"(?x) \\\\b ([[:alpha:]_]\\\\w*) \\\\b\"\n        }\n      ]\n    },\n    \"escape-sequence-unicode\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.python\",\n          \"match\": \"(?x)\\n  \\\\\\\\ (\\n        u[0-9A-Fa-f]{4}\\n        | U[0-9A-Fa-f]{8}\\n        | N\\\\{[\\\\w\\\\s]+?\\\\}\\n     )\\n\"\n        }\n      ]\n    },\n    \"escape-sequence\": {\n      \"name\": \"constant.character.escape.python\",\n      \"match\": \"(?x)\\n  \\\\\\\\ (\\n        x[0-9A-Fa-f]{2}\\n        | [0-7]{1,3}\\n        | [\\\\\\\\\\\"'abfnrtv]\\n     )\\n\"\n    },\n    \"string-line-continuation\": {\n      \"name\": \"constant.language.python\",\n      \"match\": \"\\\\\\\\$\"\n    },\n    \"string-formatting\": {\n      \"name\": \"constant.character.format.placeholder.other.python\",\n      \"match\": \"(?x)\\n  % (\\\\([\\\\w\\\\s]*\\\\))?\\n    [-+#0 ]*\\n    (\\\\d+|\\\\*)? (\\\\.(\\\\d+|\\\\*))?\\n    ([hlL])?\\n    [diouxXeEfFgGcrsa%]\\n\"\n    },\n    \"string-brace-formatting\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.format.placeholder.other.python\",\n          \"match\": \"(?x)\\n  (?:\\n    {{ | }}\\n    | (?:\\n      {\\n        \\\\w*? (\\\\.[[:alpha:]_]\\\\w*? | \\\\[[^\\\\]'\\\"]+\\\\])*?\\n        (![rsa])?\\n        ( : \\\\w? [<>=^]? [-+ ]? \\\\#?\\n          \\\\d* ,? (\\\\.\\\\d+)? [bcdeEfFgGnosxX%]? )?\\n      })\\n  )\\n\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"storage.type.format.python\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.format.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.character.format.placeholder.other.python\",\n          \"begin\": \"(?x)\\n    \\\\{\\n      \\\\w*? (\\\\.[[:alpha:]_]\\\\w*? | \\\\[[^\\\\]'\\\"]+\\\\])*?\\n      (![rsa])?\\n      (:)\\n        (?=[^'\\\"}\\\\n]*\\\\})\\n\",\n          \"end\": \"\\\\}\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"storage.type.format.python\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.format.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x) \\\\{ [^'\\\"}\\\\n]*? \\\\} (?=.*?\\\\})\\n\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fstring-formatting\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-formatting-braces\"\n        },\n        {\n          \"include\": \"#fstring-formatting-singe-brace\"\n        }\n      ]\n    },\n    \"fstring-formatting-singe-brace\": {\n      \"name\": \"invalid.illegal.brace.python\",\n      \"match\": \"(}(?!}))\"\n    },\n    \"import\": {\n      \"comment\": \"Import statements\\n\",\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\s* \\\\b(from)\\\\b \\\\s*(\\\\.+)\\\\s* (import)?\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.python\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.period.python\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.control.import.python\",\n          \"match\": \"\\\\b(?<!\\\\.)import\\\\b\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.class.python\",\n          \"begin\": \"(?x)\\n  \\\\s*(class)\\\\s+\\n    (?=\\n      [[:alpha:]_]\\\\w* \\\\s* (:|\\\\()\\n    )\\n\",\n          \"end\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.class.begin.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"include\": \"#class-inheritance\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#builtin-possible-callables\"\n        },\n        {\n          \"name\": \"entity.name.type.class.python\",\n          \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\"\n        }\n      ]\n    },\n    \"class-inheritance\": {\n      \"name\": \"meta.class.inheritance.python\",\n      \"begin\": \"(\\\\()\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.inheritance.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.inheritance.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.unpacking.arguments.python\",\n          \"match\": \"(\\\\*\\\\*|\\\\*)\"\n        },\n        {\n          \"name\": \"punctuation.separator.inheritance.python\",\n          \"match\": \",\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.python\",\n          \"match\": \"=(?!=)\"\n        },\n        {\n          \"name\": \"support.type.metaclass.python\",\n          \"match\": \"\\\\bmetaclass\\\\b\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#class-kwarg\"\n        },\n        {\n          \"include\": \"#call-wrapper-inheritance\"\n        },\n        {\n          \"include\": \"#expression-base\"\n        },\n        {\n          \"include\": \"#member-access-class\"\n        },\n        {\n          \"include\": \"#inheritance-identifier\"\n        }\n      ]\n    },\n    \"class-kwarg\": {\n      \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\s*(=)(?!=)\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.inherited-class.python variable.parameter.class.python\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.assignment.python\"\n        }\n      }\n    },\n    \"inheritance-identifier\": {\n      \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.inherited-class.python\"\n        }\n      }\n    },\n    \"member-access-class\": {\n      \"begin\": \"(\\\\.)\\\\s*(?!\\\\.)\",\n      \"end\": \"(?<=\\\\S)(?=\\\\W)|$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.period.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#call-wrapper-inheritance\"\n        },\n        {\n          \"include\": \"#member-access-base\"\n        },\n        {\n          \"include\": \"#inheritance-identifier\"\n        }\n      ]\n    },\n    \"lambda\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?<=\\\\.)lambda|lambda(?=\\\\s*[\\\\.=]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.python\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(lambda)\\\\s*?(?=[,\\\\n]|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.lambda.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.lambda-function.python\",\n          \"begin\": \"(?x)\\n  \\\\b (lambda) \\\\b\\n\",\n          \"end\": \"(:)|(\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.lambda.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.lambda.begin.python\"\n            }\n          },\n          \"contentName\": \"meta.function.lambda.parameters.python\",\n          \"patterns\": [\n            {\n              \"name\": \"keyword.operator.unpacking.parameter.python\",\n              \"match\": \"(\\\\*\\\\*|\\\\*)\"\n            },\n            {\n              \"include\": \"#lambda-nested-incomplete\"\n            },\n            {\n              \"include\": \"#illegal-names\"\n            },\n            {\n              \"match\": \"([[:alpha:]_]\\\\w*)\\\\s*(?:(,)|(?=:|$))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.function.language.python\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.parameters.python\"\n                }\n              }\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#backticks\"\n            },\n            {\n              \"include\": \"#illegal-anno\"\n            },\n            {\n              \"include\": \"#lambda-parameter-with-default\"\n            },\n            {\n              \"include\": \"#line-continuation\"\n            },\n            {\n              \"include\": \"#illegal-operator\"\n            }\n          ]\n        }\n      ]\n    },\n    \"lambda-incomplete\": {\n      \"name\": \"storage.type.function.lambda.python\",\n      \"match\": \"\\\\blambda(?=\\\\s*[,)])\"\n    },\n    \"lambda-nested-incomplete\": {\n      \"name\": \"storage.type.function.lambda.python\",\n      \"match\": \"\\\\blambda(?=\\\\s*[:,)])\"\n    },\n    \"lambda-parameter-with-default\": {\n      \"begin\": \"(?x)\\n  \\\\b\\n  ([[:alpha:]_]\\\\w*) \\\\s* (=)\\n\",\n      \"end\": \"(,)|(?=:|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.language.python\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.parameters.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-declaration\": {\n      \"name\": \"meta.function.python\",\n      \"begin\": \"(?x)\\n  \\\\s*\\n  (?:\\\\b(async) \\\\s+)? \\\\b(def)\\\\s+\\n    (?=\\n      [[:alpha:]_][[:word:]]* \\\\s* \\\\(\\n    )\\n\",\n      \"end\": \"(:|(?=[#'\\\"\\\\n]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.async.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.function.begin.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-def-name\"\n        },\n        {\n          \"include\": \"#parameters\"\n        },\n        {\n          \"include\": \"#line-continuation\"\n        },\n        {\n          \"include\": \"#return-annotation\"\n        }\n      ]\n    },\n    \"function-def-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#builtin-possible-callables\"\n        },\n        {\n          \"name\": \"entity.name.function.python\",\n          \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"name\": \"meta.function.parameters.python\",\n      \"begin\": \"(\\\\()\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.unpacking.parameter.python\",\n          \"match\": \"(\\\\*\\\\*|\\\\*)\"\n        },\n        {\n          \"include\": \"#lambda-incomplete\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#parameter-special\"\n        },\n        {\n          \"match\": \"(?x)\\n  ([[:alpha:]_]\\\\w*)\\n    \\\\s* (?: (,) | (?=[)#\\\\n=]))\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.function.language.python\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.parameters.python\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#loose-default\"\n        },\n        {\n          \"include\": \"#annotated-parameter\"\n        }\n      ]\n    },\n    \"parameter-special\": {\n      \"match\": \"(?x)\\n  \\\\b ((self)|(cls)) \\\\b \\\\s*(?:(,)|(?=\\\\)))\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.language.python\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.function.language.special.self.python\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.function.language.special.cls.python\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.parameters.python\"\n        }\n      }\n    },\n    \"loose-default\": {\n      \"begin\": \"(=)\",\n      \"end\": \"(,)|(?=\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.parameters.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"annotated-parameter\": {\n      \"begin\": \"(?x)\\n  \\\\b\\n  ([[:alpha:]_]\\\\w*) \\\\s* (:)\\n\",\n      \"end\": \"(,)|(?=\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.language.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.annotation.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.parameters.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.python\",\n          \"match\": \"=(?!=)\"\n        }\n      ]\n    },\n    \"return-annotation\": {\n      \"begin\": \"(->)\",\n      \"end\": \"(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.annotation.result.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"item-access\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.item-access.python\",\n          \"begin\": \"(?x)\\n  \\\\b(?=\\n    [[:alpha:]_]\\\\w* \\\\s* \\\\[\\n  )\\n\",\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.end.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#item-name\"\n            },\n            {\n              \"include\": \"#item-index\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"item-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#special-variables\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#special-names\"\n        },\n        {\n          \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\"\n        }\n      ]\n    },\n    \"item-index\": {\n      \"begin\": \"(\\\\[)\",\n      \"end\": \"(?=\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.begin.python\"\n        }\n      },\n      \"contentName\": \"meta.item-access.arguments.python\",\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.slice.python\",\n          \"match\": \":\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.function.decorator.python\",\n      \"begin\": \"(?x)\\n  ^\\\\s*\\n  (@) \\\\s* (?=[[:alpha:]_]\\\\w*)\\n\",\n      \"end\": \"(?x)\\n  ( \\\\) )\\n    # trailing whitespace and comments are legal\\n    (?: (.*?) (?=\\\\s*(?:\\\\#|$)) )\\n  | (?=\\\\n|\\\\#)\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.decorator.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.decorator.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#decorator-name\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"decorator-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#builtin-callables\"\n        },\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"name\": \"entity.name.function.decorator.python\",\n          \"match\": \"(?x)\\n  ([[:alpha:]_]\\\\w*) | \\\\.\\n\"\n        },\n        {\n          \"include\": \"#line-continuation\"\n        },\n        {\n          \"name\": \"invalid.illegal.decorator.python\",\n          \"match\": \"(?x)\\n  \\\\s* ([^([:alpha:]\\\\s_\\\\.#\\\\\\\\] .*?) (?=\\\\#|$)\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.decorator.python\"\n            }\n          }\n        }\n      ]\n    },\n    \"call-wrapper-inheritance\": {\n      \"comment\": \"same as a function call, but in inheritance context\",\n      \"name\": \"meta.function-call.python\",\n      \"begin\": \"(?x)\\n  \\\\b(?=\\n    ([[:alpha:]_]\\\\w*) \\\\s* (\\\\()\\n  )\\n\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#inheritance-name\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"inheritance-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#lambda-incomplete\"\n        },\n        {\n          \"include\": \"#builtin-possible-callables\"\n        },\n        {\n          \"include\": \"#inheritance-identifier\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"name\": \"meta.function-call.python\",\n      \"begin\": \"(?x)\\n  \\\\b(?=\\n    ([[:alpha:]_]\\\\w*) \\\\s* (\\\\()\\n  )\\n\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#special-variables\"\n        },\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"function-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#builtin-possible-callables\"\n        },\n        {\n          \"comment\": \"Some color schemas support meta.function-call.generic scope\",\n          \"name\": \"meta.function-call.generic.python\",\n          \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\"\n        }\n      ]\n    },\n    \"function-arguments\": {\n      \"begin\": \"(?x)\\n  (?:\\n    (\\\\()\\n    (?:\\\\s*(\\\\*\\\\*|\\\\*))?\\n  )\\n\",\n      \"end\": \"(?=\\\\))(?!\\\\)\\\\s*\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.begin.python\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.unpacking.arguments.python\"\n        }\n      },\n      \"contentName\": \"meta.function-call.arguments.python\",\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  (?:\\n    (,)\\n    (?:\\\\s*(\\\\*\\\\*|\\\\*))?\\n  )\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.arguments.python\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.unpacking.arguments.python\"\n            }\n          }\n        },\n        {\n          \"include\": \"#lambda-incomplete\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"match\": \"\\\\b([[:alpha:]_]\\\\w*)\\\\s*(=)(?!=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.function-call.python\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.assignment.python\",\n          \"match\": \"=(?!=)\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"match\": \"\\\\s*(\\\\))\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.end.python\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.python\"\n            }\n          }\n        }\n      ]\n    },\n    \"builtin-callables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#builtin-exceptions\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#builtin-types\"\n        }\n      ]\n    },\n    \"builtin-possible-callables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#builtin-callables\"\n        },\n        {\n          \"include\": \"#magic-names\"\n        }\n      ]\n    },\n    \"builtin-exceptions\": {\n      \"name\": \"support.type.exception.python\",\n      \"match\": \"(?x) (?<!\\\\.) \\\\b(\\n  (\\n    Arithmetic | Assertion | Attribute | Buffer | BlockingIO\\n    | BrokenPipe | ChildProcess\\n    | (Connection (Aborted | Refused | Reset)?)\\n    | EOF | Environment | FileExists | FileNotFound\\n    | FloatingPoint | IO | Import | Indentation | Index | Interrupted\\n    | IsADirectory | NotADirectory | Permission | ProcessLookup\\n    | Timeout\\n    | Key | Lookup | Memory | Name | NotImplemented | OS | Overflow\\n    | Reference | Runtime | Recursion | Syntax | System\\n    | Tab | Type | UnboundLocal | Unicode(Encode|Decode|Translate)?\\n    | Value | Windows | ZeroDivision | ModuleNotFound\\n  ) Error\\n|\\n  ((Pending)?Deprecation | Runtime | Syntax | User | Future | Import\\n    | Unicode | Bytes | Resource\\n  )? Warning\\n|\\n  SystemExit | Stop(Async)?Iteration\\n  | KeyboardInterrupt\\n  | GeneratorExit | (Base)?Exception\\n)\\\\b\\n\"\n    },\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.function.builtin.python\",\n          \"match\": \"(?x)\\n  (?<!\\\\.) \\\\b(\\n    __import__ | abs | all | any | ascii | bin | callable\\n    | chr | compile | copyright | credits | delattr | dir | divmod\\n    | enumerate | eval | exec | exit | filter | format | getattr\\n    | globals | hasattr | hash | help | hex | id | input\\n    | isinstance | issubclass | iter | len | license | locals | map\\n    | max | memoryview | min | next | oct | open | ord | pow | print\\n    | quit | range | reload | repr | reversed | round\\n    | setattr | sorted | sum | vars | zip\\n  )\\\\b\\n\"\n        },\n        {\n          \"name\": \"variable.legacy.builtin.python\",\n          \"match\": \"(?x)\\n  (?<!\\\\.) \\\\b(\\n    file | reduce | intern | raw_input | unicode | cmp | basestring\\n    | execfile | long | xrange\\n  )\\\\b\\n\"\n        }\n      ]\n    },\n    \"builtin-types\": {\n      \"name\": \"support.type.python\",\n      \"match\": \"(?x)\\n  (?<!\\\\.) \\\\b(\\n    bool | bytearray | bytes | classmethod | complex | dict\\n    | float | frozenset | int | list | object | property\\n    | set | slice | staticmethod | str | tuple | type\\n\\n    (?# Although 'super' is not a type, it's related to types,\\n        and is special enough to be highlighted differently from\\n        other built-ins)\\n    | super\\n  )\\\\b\\n\"\n    },\n    \"magic-function-names\": {\n      \"comment\": \"these methods have magic interpretation by python and are generally called\\nindirectly through syntactic constructs\\n\",\n      \"match\": \"(?x)\\n  \\\\b(\\n    __(?:\\n      abs | add | aenter | aexit | aiter | and | anext | await\\n      | bool | call | ceil | cmp | coerce | complex | contains\\n      | copy | deepcopy | del | delattr | delete | delitem\\n      | delslice | dir | div | divmod | enter | eq | exit | float\\n      | floor | floordiv | format | ge | get | getattr\\n      | getattribute | getinitargs | getitem | getnewargs\\n      | getslice | getstate | gt | hash | hex | iadd | iand | idiv\\n      | ifloordiv | ilshift | imod | imul | index | init\\n      | instancecheck | int | invert | ior | ipow | irshift | isub\\n      | iter | itruediv | ixor | le | len | long | lshift | lt\\n      | missing | mod | mul | ne | neg | new | next | nonzero | oct | or\\n      | pos | pow | radd | rand | rdiv | rdivmod | reduce\\n      | reduce_ex | repr | reversed | rfloordiv | rlshift | rmod\\n      | rmul | ror | round | rpow | rrshift | rshift | rsub\\n      | rtruediv | rxor | set | setattr | setitem | setslice\\n      | setstate | sizeof | str | sub | subclasscheck | truediv\\n      | trunc | unicode | xor | matmul | rmatmul | imatmul\\n      | init_subclass | set_name | fspath | bytes | prepare\\n    )__\\n  )\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.magic.python\"\n        }\n      }\n    },\n    \"magic-variable-names\": {\n      \"comment\": \"magic variables which a class/module may have.\",\n      \"match\": \"(?x)\\n  \\\\b(\\n    __(?:\\n      all | bases | builtins | class | code | debug | defaults | dict\\n      | doc | file | func | kwdefaults | members\\n      | metaclass | methods | module | mro | name\\n      | qualname | self | signature | slots | subclasses\\n      | version | weakref | wrapped | annotations | classcell\\n      | spec | path | package | future | traceback\\n    )__\\n  )\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.variable.magic.python\"\n        }\n      }\n    },\n    \"magic-names\": {\n      \"patterns\": [\n        {\n          \"include\": \"#magic-function-names\"\n        },\n        {\n          \"include\": \"#magic-variable-names\"\n        }\n      ]\n    },\n    \"illegal-names\": {\n      \"name\": \"keyword.control.flow.python\",\n      \"match\": \"(?x)\\n  \\\\b(\\n    and | as | assert | async | await | break | class | continue | def\\n    | del | elif | else | except | exec | finally | for | from | global\\n    | if | import | in | is | (?<=\\\\.)lambda | lambda(?=\\\\s*[\\\\.=])\\n    | nonlocal | not | or | pass | raise | return | try | while | with\\n    | yield\\n  )\\\\b\\n\"\n    },\n    \"special-variables\": {\n      \"match\": \"(?x)\\n  \\\\b (?<!\\\\.) (?:\\n    (self) | (cls)\\n  )\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.language.special.self.python\"\n        },\n        \"2\": {\n          \"name\": \"variable.language.special.cls.python\"\n        }\n      }\n    },\n    \"ellipsis\": {\n      \"name\": \"constant.other.ellipsis.python\",\n      \"match\": \"\\\\.\\\\.\\\\.\"\n    },\n    \"backticks\": {\n      \"name\": \"invalid.deprecated.backtick.python\",\n      \"begin\": \"\\\\`\",\n      \"end\": \"(?:\\\\`|(?<!\\\\\\\\)(\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"illegal-operator\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.illegal.operator.python\",\n          \"match\": \"&&|\\\\|\\\\||--|\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"invalid.illegal.operator.python\",\n          \"match\": \"[?$]\"\n        },\n        {\n          \"name\": \"invalid.illegal.operator.python\",\n          \"comment\": \"We don't want `!` to flash when we're typing `!=`\",\n          \"match\": \"!\\\\b\"\n        }\n      ]\n    },\n    \"illegal-object-name\": {\n      \"comment\": \"It's illegal to name class or function \\\"True\\\"\",\n      \"name\": \"keyword.illegal.name.python\",\n      \"match\": \"\\\\b(True|False|None)\\\\b\"\n    },\n    \"illegal-anno\": {\n      \"name\": \"invalid.illegal.annotation.python\",\n      \"match\": \"->\"\n    },\n    \"regexp-base-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-quantifier\"\n        },\n        {\n          \"include\": \"#regexp-base-common\"\n        }\n      ]\n    },\n    \"fregexp-base-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-quantifier\"\n        },\n        {\n          \"include\": \"#fstring-formatting-braces\"\n        },\n        {\n          \"match\": \"\\\\{.*?\\\\}\"\n        },\n        {\n          \"include\": \"#regexp-base-common\"\n        }\n      ]\n    },\n    \"fstring-formatting-braces\": {\n      \"patterns\": [\n        {\n          \"comment\": \"empty braces are illegal\",\n          \"match\": \"({)(\\\\s*?)(})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.character.format.placeholder.other.python\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.brace.python\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.format.placeholder.other.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.character.escape.python\",\n          \"match\": \"({{|}})\"\n        }\n      ]\n    },\n    \"regexp-base-common\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.other.match.any.regexp\",\n          \"match\": \"\\\\.\"\n        },\n        {\n          \"name\": \"support.other.match.begin.regexp\",\n          \"match\": \"\\\\^\"\n        },\n        {\n          \"name\": \"support.other.match.end.regexp\",\n          \"match\": \"\\\\$\"\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[+*?]\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.disjunction.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"include\": \"#regexp-escape-sequence\"\n        }\n      ]\n    },\n    \"regexp-quantifier\": {\n      \"name\": \"keyword.operator.quantifier.regexp\",\n      \"match\": \"(?x)\\n  \\\\{(\\n    \\\\d+ | \\\\d+,(\\\\d+)? | ,\\\\d+\\n  )\\\\}\\n\"\n    },\n    \"fregexp-quantifier\": {\n      \"name\": \"keyword.operator.quantifier.regexp\",\n      \"match\": \"(?x)\\n  \\\\{\\\\{(\\n    \\\\d+ | \\\\d+,(\\\\d+)? | ,\\\\d+\\n  )\\\\}\\\\}\\n\"\n    },\n    \"regexp-backreference-number\": {\n      \"name\": \"meta.backreference.regexp\",\n      \"match\": \"(\\\\\\\\[1-9]\\\\d?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.backreference.regexp\"\n        }\n      }\n    },\n    \"regexp-backreference\": {\n      \"name\": \"meta.backreference.named.regexp\",\n      \"match\": \"(?x)\\n  (\\\\()  (\\\\?P= \\\\w+(?:\\\\s+[[:alnum:]]+)?)  (\\\\))\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.backreference.regexp\"\n        },\n        \"3\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp\"\n        }\n      }\n    },\n    \"regexp-flags\": {\n      \"name\": \"storage.modifier.flag.regexp\",\n      \"match\": \"\\\\(\\\\?[aiLmsux]+\\\\)\"\n    },\n    \"regexp-escape-special\": {\n      \"name\": \"support.other.escape.special.regexp\",\n      \"match\": \"\\\\\\\\([AbBdDsSwWZ])\"\n    },\n    \"regexp-escape-character\": {\n      \"name\": \"constant.character.escape.regexp\",\n      \"match\": \"(?x)\\n  \\\\\\\\ (\\n        x[0-9A-Fa-f]{2}\\n        | 0[0-7]{1,2}\\n        | [0-7]{3}\\n     )\\n\"\n    },\n    \"regexp-escape-unicode\": {\n      \"name\": \"constant.character.unicode.regexp\",\n      \"match\": \"(?x)\\n  \\\\\\\\ (\\n        u[0-9A-Fa-f]{4}\\n        | U[0-9A-Fa-f]{8}\\n     )\\n\"\n    },\n    \"regexp-escape-catchall\": {\n      \"name\": \"constant.character.escape.regexp\",\n      \"match\": \"\\\\\\\\(.|\\\\n)\"\n    },\n    \"regexp-escape-sequence\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-escape-special\"\n        },\n        {\n          \"include\": \"#regexp-escape-character\"\n        },\n        {\n          \"include\": \"#regexp-escape-unicode\"\n        },\n        {\n          \"include\": \"#regexp-backreference-number\"\n        },\n        {\n          \"include\": \"#regexp-escape-catchall\"\n        }\n      ]\n    },\n    \"regexp-charecter-set-escapes\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.regexp\",\n          \"match\": \"\\\\\\\\[abfnrtv\\\\\\\\]\"\n        },\n        {\n          \"include\": \"#regexp-escape-special\"\n        },\n        {\n          \"name\": \"constant.character.escape.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{1,3})\"\n        },\n        {\n          \"include\": \"#regexp-escape-character\"\n        },\n        {\n          \"include\": \"#regexp-escape-unicode\"\n        },\n        {\n          \"include\": \"#regexp-escape-catchall\"\n        }\n      ]\n    },\n    \"codetags\": {\n      \"match\": \"(?:\\\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.codetag.notation.python\"\n        }\n      }\n    },\n    \"comments-base\": {\n      \"name\": \"comment.line.number-sign.python\",\n      \"begin\": \"(\\\\#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.python\"\n        }\n      },\n      \"end\": \"($)\",\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"comments-string-single-three\": {\n      \"name\": \"comment.line.number-sign.python\",\n      \"begin\": \"(\\\\#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.python\"\n        }\n      },\n      \"end\": \"($|(?='''))\",\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"comments-string-double-three\": {\n      \"name\": \"comment.line.number-sign.python\",\n      \"begin\": \"(\\\\#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.python\"\n        }\n      },\n      \"end\": \"($|(?=\\\"\\\"\\\"))\",\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"single-one-regexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-base-expression\"\n        },\n        {\n          \"include\": \"#single-one-regexp-character-set\"\n        },\n        {\n          \"include\": \"#single-one-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#single-one-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#single-one-regexp-lookahead\"\n        },\n        {\n          \"include\": \"#single-one-regexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#single-one-regexp-lookbehind\"\n        },\n        {\n          \"include\": \"#single-one-regexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#single-one-regexp-conditional\"\n        },\n        {\n          \"include\": \"#single-one-regexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#single-one-regexp-parentheses\"\n        }\n      ]\n    },\n    \"single-one-regexp-character-set\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\[ \\\\^? \\\\] (?! .*?\\\\])\\n\"\n        },\n        {\n          \"name\": \"meta.character.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?(\\\\])?\",\n          \"end\": \"(\\\\]|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.begin.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.set.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.end.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp-charecter-set-escapes\"\n            },\n            {\n              \"name\": \"constant.character.set.regexp\",\n              \"match\": \"[^\\\\n]\"\n            }\n          ]\n        }\n      ]\n    },\n    \"single-one-regexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-comments\": {\n      \"name\": \"comment.regexp\",\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.comment.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comment.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"single-one-regexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-three-regexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-base-expression\"\n        },\n        {\n          \"include\": \"#single-three-regexp-character-set\"\n        },\n        {\n          \"include\": \"#single-three-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#single-three-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#single-three-regexp-lookahead\"\n        },\n        {\n          \"include\": \"#single-three-regexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#single-three-regexp-lookbehind\"\n        },\n        {\n          \"include\": \"#single-three-regexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#single-three-regexp-conditional\"\n        },\n        {\n          \"include\": \"#single-three-regexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#single-three-regexp-parentheses\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-character-set\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\[ \\\\^? \\\\] (?! .*?\\\\])\\n\"\n        },\n        {\n          \"name\": \"meta.character.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?(\\\\])?\",\n          \"end\": \"(\\\\]|(?=\\\\'\\\\'\\\\'))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.begin.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.set.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.end.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp-charecter-set-escapes\"\n            },\n            {\n              \"name\": \"constant.character.set.regexp\",\n              \"match\": \"[^\\\\n]\"\n            }\n          ]\n        }\n      ]\n    },\n    \"single-three-regexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-comments\": {\n      \"name\": \"comment.regexp\",\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.comment.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comment.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"single-three-regexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"double-one-regexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-base-expression\"\n        },\n        {\n          \"include\": \"#double-one-regexp-character-set\"\n        },\n        {\n          \"include\": \"#double-one-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#double-one-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#double-one-regexp-lookahead\"\n        },\n        {\n          \"include\": \"#double-one-regexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#double-one-regexp-lookbehind\"\n        },\n        {\n          \"include\": \"#double-one-regexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#double-one-regexp-conditional\"\n        },\n        {\n          \"include\": \"#double-one-regexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#double-one-regexp-parentheses\"\n        }\n      ]\n    },\n    \"double-one-regexp-character-set\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\[ \\\\^? \\\\] (?! .*?\\\\])\\n\"\n        },\n        {\n          \"name\": \"meta.character.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?(\\\\])?\",\n          \"end\": \"(\\\\]|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.begin.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.set.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.end.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp-charecter-set-escapes\"\n            },\n            {\n              \"name\": \"constant.character.set.regexp\",\n              \"match\": \"[^\\\\n]\"\n            }\n          ]\n        }\n      ]\n    },\n    \"double-one-regexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-comments\": {\n      \"name\": \"comment.regexp\",\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.comment.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comment.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"double-one-regexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-three-regexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-base-expression\"\n        },\n        {\n          \"include\": \"#double-three-regexp-character-set\"\n        },\n        {\n          \"include\": \"#double-three-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#double-three-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#double-three-regexp-lookahead\"\n        },\n        {\n          \"include\": \"#double-three-regexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#double-three-regexp-lookbehind\"\n        },\n        {\n          \"include\": \"#double-three-regexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#double-three-regexp-conditional\"\n        },\n        {\n          \"include\": \"#double-three-regexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#double-three-regexp-parentheses\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-character-set\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\[ \\\\^? \\\\] (?! .*?\\\\])\\n\"\n        },\n        {\n          \"name\": \"meta.character.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?(\\\\])?\",\n          \"end\": \"(\\\\]|(?=\\\"\\\"\\\"))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.begin.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.set.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.end.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp-charecter-set-escapes\"\n            },\n            {\n              \"name\": \"constant.character.set.regexp\",\n              \"match\": \"[^\\\\n]\"\n            }\n          ]\n        }\n      ]\n    },\n    \"double-three-regexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-comments\": {\n      \"name\": \"comment.regexp\",\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.comment.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comment.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"double-three-regexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"regexp-single-one-line\": {\n      \"name\": \"string.regexp.quoted.single.python\",\n      \"begin\": \"\\\\b(([uU]r)|([bB]r)|(r[bB]?))(\\\\')\",\n      \"end\": \"(\\\\')|(?<!\\\\\\\\)(\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-single-three-line\": {\n      \"name\": \"string.regexp.quoted.multi.python\",\n      \"begin\": \"\\\\b(([uU]r)|([bB]r)|(r[bB]?))(\\\\'\\\\'\\\\')\",\n      \"end\": \"(\\\\'\\\\'\\\\')\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-double-one-line\": {\n      \"name\": \"string.regexp.quoted.single.python\",\n      \"begin\": \"\\\\b(([uU]r)|([bB]r)|(r[bB]?))(\\\")\",\n      \"end\": \"(\\\")|(?<!\\\\\\\\)(\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-double-three-line\": {\n      \"name\": \"string.regexp.quoted.multi.python\",\n      \"begin\": \"\\\\b(([uU]r)|([bB]r)|(r[bB]?))(\\\"\\\"\\\")\",\n      \"end\": \"(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-base-expression\"\n        },\n        {\n          \"include\": \"#single-one-regexp-character-set\"\n        },\n        {\n          \"include\": \"#single-one-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#single-one-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-lookahead\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-lookbehind\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-conditional\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-parentheses\"\n        }\n      ]\n    },\n    \"single-one-fregexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-three-fregexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-base-expression\"\n        },\n        {\n          \"include\": \"#single-three-regexp-character-set\"\n        },\n        {\n          \"include\": \"#single-three-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#single-three-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-lookahead\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-lookbehind\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-conditional\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-parentheses\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"double-one-fregexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-base-expression\"\n        },\n        {\n          \"include\": \"#double-one-regexp-character-set\"\n        },\n        {\n          \"include\": \"#double-one-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#double-one-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-lookahead\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-lookbehind\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-conditional\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-parentheses\"\n        }\n      ]\n    },\n    \"double-one-fregexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-three-fregexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-base-expression\"\n        },\n        {\n          \"include\": \"#double-three-regexp-character-set\"\n        },\n        {\n          \"include\": \"#double-three-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#double-three-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-lookahead\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-lookbehind\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-conditional\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-parentheses\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"fregexp-single-one-line\": {\n      \"name\": \"string.interpolated.python string.regexp.quoted.single.python\",\n      \"begin\": \"\\\\b(([uU]r)|([fF]r)|(r[fF]?))(\\\\')\",\n      \"end\": \"(\\\\')|(?<!\\\\\\\\)(\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"fregexp-single-three-line\": {\n      \"name\": \"string.interpolated.python string.regexp.quoted.multi.python\",\n      \"begin\": \"\\\\b(([uU]r)|([fF]r)|(r[fF]?))(\\\\'\\\\'\\\\')\",\n      \"end\": \"(\\\\'\\\\'\\\\')\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        }\n      ]\n    },\n    \"fregexp-double-one-line\": {\n      \"name\": \"string.interpolated.python string.regexp.quoted.single.python\",\n      \"begin\": \"\\\\b(([uU]r)|([fF]r)|(r[fF]?))(\\\")\",\n      \"end\": \"(\\\")|(?<!\\\\\\\\)(\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"fregexp-double-three-line\": {\n      \"name\": \"string.interpolated.python string.regexp.quoted.multi.python\",\n      \"begin\": \"\\\\b(([uU]r)|([fF]r)|(r[fF]?))(\\\"\\\"\\\")\",\n      \"end\": \"(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        }\n      ]\n    },\n    \"string-raw-quoted-single-line\": {\n      \"name\": \"string.quoted.raw.single.python\",\n      \"begin\": \"\\\\b(([uU]R)|(R))((['\\\"]))\",\n      \"end\": \"(\\\\4)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-single-bad-brace1-formatting-raw\"\n        },\n        {\n          \"include\": \"#string-single-bad-brace2-formatting-raw\"\n        },\n        {\n          \"include\": \"#string-raw-guts\"\n        }\n      ]\n    },\n    \"string-bin-quoted-single-line\": {\n      \"name\": \"string.quoted.binary.single.python\",\n      \"begin\": \"(\\\\b[bB])((['\\\"]))\",\n      \"end\": \"(\\\\2)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-entity\"\n        }\n      ]\n    },\n    \"string-raw-bin-quoted-single-line\": {\n      \"name\": \"string.quoted.raw.binary.single.python\",\n      \"begin\": \"(\\\\b(?:R[bB]|[bB]R))((['\\\"]))\",\n      \"end\": \"(\\\\2)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-raw-bin-guts\"\n        }\n      ]\n    },\n    \"string-quoted-single-line\": {\n      \"name\": \"string.quoted.single.python\",\n      \"begin\": \"(\\\\b[rR](?=[uU]))?([uU])?((['\\\"]))\",\n      \"end\": \"(\\\\3)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-single-bad-brace1-formatting-unicode\"\n        },\n        {\n          \"include\": \"#string-single-bad-brace2-formatting-unicode\"\n        },\n        {\n          \"include\": \"#string-unicode-guts\"\n        }\n      ]\n    },\n    \"string-single-bad-brace1-formatting-unicode\": {\n      \"comment\": \"template using {% ... %}\",\n      \"begin\": \"(?x)\\n    (?= \\\\{%\\n          ( .*? (?!(['\\\"])|((?<!\\\\\\\\)\\\\n)) )\\n        %\\\\}\\n    )\\n\",\n      \"end\": \"(?=(['\\\"])|((?<!\\\\\\\\)\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        }\n      ]\n    },\n    \"string-single-bad-brace1-formatting-raw\": {\n      \"comment\": \"template using {% ... %}\",\n      \"begin\": \"(?x)\\n    (?= \\\\{%\\n          ( .*? (?!(['\\\"])|((?<!\\\\\\\\)\\\\n)) )\\n        %\\\\}\\n    )\\n\",\n      \"end\": \"(?=(['\\\"])|((?<!\\\\\\\\)\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        }\n      ]\n    },\n    \"string-single-bad-brace2-formatting-unicode\": {\n      \"comment\": \"odd format or format-like syntax\",\n      \"begin\": \"(?x)\\n    (?!\\\\{\\\\{)\\n    (?= \\\\{ (\\n              \\\\w*? (?!(['\\\"])|((?<!\\\\\\\\)\\\\n)) [^!:\\\\.\\\\[}\\\\w]\\n           )\\n        .*?(?!(['\\\"])|((?<!\\\\\\\\)\\\\n))\\n        \\\\}\\n    )\\n\",\n      \"end\": \"(?=(['\\\"])|((?<!\\\\\\\\)\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#string-entity\"\n        }\n      ]\n    },\n    \"string-single-bad-brace2-formatting-raw\": {\n      \"comment\": \"odd format or format-like syntax\",\n      \"begin\": \"(?x)\\n    (?!\\\\{\\\\{)\\n    (?= \\\\{ (\\n              \\\\w*? (?!(['\\\"])|((?<!\\\\\\\\)\\\\n)) [^!:\\\\.\\\\[}\\\\w]\\n           )\\n        .*?(?!(['\\\"])|((?<!\\\\\\\\)\\\\n))\\n        \\\\}\\n    )\\n\",\n      \"end\": \"(?=(['\\\"])|((?<!\\\\\\\\)\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        }\n      ]\n    },\n    \"string-raw-quoted-multi-line\": {\n      \"name\": \"string.quoted.raw.multi.python\",\n      \"begin\": \"\\\\b(([uU]R)|(R))('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\4)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-multi-bad-brace1-formatting-raw\"\n        },\n        {\n          \"include\": \"#string-multi-bad-brace2-formatting-raw\"\n        },\n        {\n          \"include\": \"#string-raw-guts\"\n        }\n      ]\n    },\n    \"string-bin-quoted-multi-line\": {\n      \"name\": \"string.quoted.binary.multi.python\",\n      \"begin\": \"(\\\\b[bB])('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\2)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-entity\"\n        }\n      ]\n    },\n    \"string-raw-bin-quoted-multi-line\": {\n      \"name\": \"string.quoted.raw.binary.multi.python\",\n      \"begin\": \"(\\\\b(?:R[bB]|[bB]R))('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\2)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-raw-bin-guts\"\n        }\n      ]\n    },\n    \"string-quoted-multi-line\": {\n      \"name\": \"string.quoted.multi.python\",\n      \"begin\": \"(\\\\b[rR](?=[uU]))?([uU])?('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\3)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-multi-bad-brace1-formatting-unicode\"\n        },\n        {\n          \"include\": \"#string-multi-bad-brace2-formatting-unicode\"\n        },\n        {\n          \"include\": \"#string-unicode-guts\"\n        }\n      ]\n    },\n    \"string-multi-bad-brace1-formatting-unicode\": {\n      \"comment\": \"template using {% ... %}\",\n      \"begin\": \"(?x)\\n    (?= \\\\{%\\n          ( .*? (?!'''|\\\"\\\"\\\") )\\n        %\\\\}\\n    )\\n\",\n      \"end\": \"(?='''|\\\"\\\"\\\")\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        }\n      ]\n    },\n    \"string-multi-bad-brace1-formatting-raw\": {\n      \"comment\": \"template using {% ... %}\",\n      \"begin\": \"(?x)\\n    (?= \\\\{%\\n          ( .*? (?!'''|\\\"\\\"\\\") )\\n        %\\\\}\\n    )\\n\",\n      \"end\": \"(?='''|\\\"\\\"\\\")\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        }\n      ]\n    },\n    \"string-multi-bad-brace2-formatting-unicode\": {\n      \"comment\": \"odd format or format-like syntax\",\n      \"begin\": \"(?x)\\n    (?!\\\\{\\\\{)\\n    (?= \\\\{ (\\n              \\\\w*? (?!'''|\\\"\\\"\\\") [^!:\\\\.\\\\[}\\\\w]\\n           )\\n        .*?(?!'''|\\\"\\\"\\\")\\n        \\\\}\\n    )\\n\",\n      \"end\": \"(?='''|\\\"\\\"\\\")\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#string-entity\"\n        }\n      ]\n    },\n    \"string-multi-bad-brace2-formatting-raw\": {\n      \"comment\": \"odd format or format-like syntax\",\n      \"begin\": \"(?x)\\n    (?!\\\\{\\\\{)\\n    (?= \\\\{ (\\n              \\\\w*? (?!'''|\\\"\\\"\\\") [^!:\\\\.\\\\[}\\\\w]\\n           )\\n        .*?(?!'''|\\\"\\\"\\\")\\n        \\\\}\\n    )\\n\",\n      \"end\": \"(?='''|\\\"\\\"\\\")\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        }\n      ]\n    },\n    \"fstring-fnorm-quoted-single-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b[fF])([bBuU])?((['\\\"]))\",\n      \"end\": \"(\\\\3)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.python string.quoted.single.python storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-core\"\n        }\n      ]\n    },\n    \"fstring-normf-quoted-single-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b[bBuU])([fF])((['\\\"]))\",\n      \"end\": \"(\\\\3)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"2\": {\n          \"name\": \"string.interpolated.python string.quoted.single.python storage.type.string.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python string.quoted.single.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-core\"\n        }\n      ]\n    },\n    \"fstring-raw-quoted-single-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b(?:[R][fF]|[fF][R]))((['\\\"]))\",\n      \"end\": \"(\\\\2)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.python string.quoted.raw.single.python storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python string.quoted.raw.single.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-raw-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-raw-single-core\"\n        }\n      ]\n    },\n    \"fstring-single-core\": {\n      \"name\": \"string.interpolated.python string.quoted.single.python\",\n      \"match\": \"(?x)\\n  (.+?)\\n    (\\n      (?# .* and .*? in multi-line match need special handling of\\n        newlines otherwise SublimeText and Atom will match slightly\\n        differently.\\n\\n        The guard for newlines has to be separate from the\\n        lookahead because of special $ matching rule.)\\n      ($\\\\n?)\\n      |\\n      (?=[\\\\\\\\\\\\}\\\\{]|(['\\\"])|((?<!\\\\\\\\)\\\\n))\\n    )\\n  (?# due to how multiline regexps are matched we need a special case\\n    for matching a newline character)\\n  | \\\\n\\n\"\n    },\n    \"fstring-raw-single-core\": {\n      \"name\": \"string.interpolated.python string.quoted.raw.single.python\",\n      \"match\": \"(?x)\\n  (.+?)\\n    (\\n      (?# .* and .*? in multi-line match need special handling of\\n        newlines otherwise SublimeText and Atom will match slightly\\n        differently.\\n\\n        The guard for newlines has to be separate from the\\n        lookahead because of special $ matching rule.)\\n      ($\\\\n?)\\n      |\\n      (?=[\\\\\\\\\\\\}\\\\{]|(['\\\"])|((?<!\\\\\\\\)\\\\n))\\n    )\\n  (?# due to how multiline regexps are matched we need a special case\\n    for matching a newline character)\\n  | \\\\n\\n\"\n    },\n    \"fstring-single-brace\": {\n      \"comment\": \"value interpolation using { ... }\",\n      \"begin\": \"(\\\\{)\",\n      \"end\": \"(?x)\\n  (\\\\})|(?=\\\\n)\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-terminator-single\"\n        },\n        {\n          \"include\": \"#f-expression\"\n        }\n      ]\n    },\n    \"fstring-terminator-single\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(![rsa])(?=})\"\n        },\n        {\n          \"match\": \"(?x)\\n  (![rsa])?\\n    ( : \\\\w? [<>=^]? [-+ ]? \\\\#?\\n      \\\\d* ,? (\\\\.\\\\d+)? [bcdeEfFgGnosxX%]? )(?=})\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.format.python\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.format.python\"\n            }\n          }\n        },\n        {\n          \"include\": \"#fstring-terminator-single-tail\"\n        }\n      ]\n    },\n    \"fstring-terminator-single-tail\": {\n      \"begin\": \"(![rsa])?(:)(?=.*?{)\",\n      \"end\": \"(?=})|(?=\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.format.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.format.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-illegal-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-brace\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([bcdeEfFgGnosxX%])(?=})\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\.\\\\d+)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(,)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\d+)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\#)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([-+ ])\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([<>=^])\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\w)\"\n        }\n      ]\n    },\n    \"fstring-fnorm-quoted-multi-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b[fF])([bBuU])?('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\3)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.python string.quoted.multi.python storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-core\"\n        }\n      ]\n    },\n    \"fstring-normf-quoted-multi-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b[bBuU])([fF])('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\3)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"2\": {\n          \"name\": \"string.interpolated.python string.quoted.multi.python storage.type.string.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python string.quoted.multi.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-core\"\n        }\n      ]\n    },\n    \"fstring-raw-quoted-multi-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b(?:[R][fF]|[fF][R]))('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\2)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.python string.quoted.raw.multi.python storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python string.quoted.raw.multi.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-raw-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-raw-multi-core\"\n        }\n      ]\n    },\n    \"fstring-multi-core\": {\n      \"name\": \"string.interpolated.python string.quoted.multi.python\",\n      \"match\": \"(?x)\\n  (.+?)\\n    (\\n      (?# .* and .*? in multi-line match need special handling of\\n        newlines otherwise SublimeText and Atom will match slightly\\n        differently.\\n\\n        The guard for newlines has to be separate from the\\n        lookahead because of special $ matching rule.)\\n      ($\\\\n?)\\n      |\\n      (?=[\\\\\\\\\\\\}\\\\{]|'''|\\\"\\\"\\\")\\n    )\\n  (?# due to how multiline regexps are matched we need a special case\\n    for matching a newline character)\\n  | \\\\n\\n\"\n    },\n    \"fstring-raw-multi-core\": {\n      \"name\": \"string.interpolated.python string.quoted.raw.multi.python\",\n      \"match\": \"(?x)\\n  (.+?)\\n    (\\n      (?# .* and .*? in multi-line match need special handling of\\n        newlines otherwise SublimeText and Atom will match slightly\\n        differently.\\n\\n        The guard for newlines has to be separate from the\\n        lookahead because of special $ matching rule.)\\n      ($\\\\n?)\\n      |\\n      (?=[\\\\\\\\\\\\}\\\\{]|'''|\\\"\\\"\\\")\\n    )\\n  (?# due to how multiline regexps are matched we need a special case\\n    for matching a newline character)\\n  | \\\\n\\n\"\n    },\n    \"fstring-multi-brace\": {\n      \"comment\": \"value interpolation using { ... }\",\n      \"begin\": \"(\\\\{)\",\n      \"end\": \"(?x)\\n  (\\\\})\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-terminator-multi\"\n        },\n        {\n          \"include\": \"#f-expression\"\n        }\n      ]\n    },\n    \"fstring-terminator-multi\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(![rsa])(?=})\"\n        },\n        {\n          \"match\": \"(?x)\\n  (![rsa])?\\n    ( : \\\\w? [<>=^]? [-+ ]? \\\\#?\\n      \\\\d* ,? (\\\\.\\\\d+)? [bcdeEfFgGnosxX%]? )(?=})\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.format.python\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.format.python\"\n            }\n          }\n        },\n        {\n          \"include\": \"#fstring-terminator-multi-tail\"\n        }\n      ]\n    },\n    \"fstring-terminator-multi-tail\": {\n      \"begin\": \"(![rsa])?(:)(?=.*?{)\",\n      \"end\": \"(?=})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.format.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.format.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-illegal-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-brace\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([bcdeEfFgGnosxX%])(?=})\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\.\\\\d+)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(,)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\d+)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\#)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([-+ ])\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([<>=^])\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\w)\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/qml.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.qml\",\n  \"fileTypes\": [\"qml\", \"qmlproject\"],\n  \"patterns\": [\n    {\n      \"begin\": \"/\\\\*(?!/)\",\n      \"end\": \"\\\\*/\",\n      \"comment\": \"Block comment.\",\n      \"name\": \"comment.block.documentation.qml\"\n    },\n    {\n      \"comment\": \"Line comment.\",\n      \"match\": \"//.*$\",\n      \"name\": \"comment.line.double-slash.qml\"\n    },\n    {\n      \"begin\": \"\\\\b(import)\\\\s+\",\n      \"end\": \"$\",\n      \"comment\": \"import statement.\",\n      \"name\": \"meta.import.qml\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.other.import.qml\" } },\n      \"patterns\": [\n        {\n          \"match\": \"([\\\\w\\\\d\\\\.]+)\\\\s+(\\\\d+\\\\.\\\\d+)(?:\\\\s+(as)\\\\s+([A-Z][\\\\w\\\\d]*))?\",\n          \"comment\": \"import Namespace VersionMajor.VersionMinor [as SingletonTypeIdentifier]\",\n          \"name\": \"meta.import.namespace.qml\",\n          \"captures\": {\n            \"3\": { \"name\": \"keyword.other.import.qml\" },\n            \"1\": { \"name\": \"entity.name.class.qml\" },\n            \"4\": { \"name\": \"entity.name.class.qml\" },\n            \"2\": { \"name\": \"constant.numeric.qml\" }\n          }\n        },\n        {\n          \"match\": \"(\\\\\\\"[^\\\\\\\"]+\\\\\\\")(?:\\\\s+(as)\\\\s+([A-Z][\\\\w\\\\d]*))?\",\n          \"comment\": \"import <string> [as Script]\",\n          \"name\": \"meta.import.dirjs.qml\",\n          \"captures\": {\n            \"1\": { \"name\": \"string.quoted.double.qml\" },\n            \"2\": { \"name\": \"keyword.other.import.qml\" },\n            \"3\": { \"name\": \"entity.name.class.qml\" }\n          }\n        }\n      ]\n    },\n    {\n      \"comment\": \"Capitalized word (class or enum).\",\n      \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n      \"name\": \"support.class.qml\"\n    },\n    {\n      \"comment\": \"onSomething - handler.\",\n      \"match\": \"(((^|\\\\{)\\\\s*)|\\\\b)on[A-Z]\\\\w*\\\\b\",\n      \"name\": \"support.class.qml\"\n    },\n    {\n      \"match\": \"(?:^|\\\\{)\\\\s*(id)\\\\s*\\\\:\\\\s*([^;\\\\s]+)\\\\b\",\n      \"comment\": \"id: <something>\",\n      \"name\": \"meta.id.qml\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.qml\" },\n        \"2\": { \"name\": \"storage.modifier.qml\" }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(?:(default|readonly)\\\\s+)?(property)\\\\s+(?:(alias)|([\\\\w\\\\<\\\\>]+))\\\\s+(\\\\w+)\",\n      \"comment\": \"property definition.\",\n      \"name\": \"meta.propertydef.qml\",\n      \"captures\": {\n        \"3\": { \"name\": \"keyword.other.qml\" },\n        \"1\": { \"name\": \"keyword.other.qml\" },\n        \"4\": { \"name\": \"storage.type.qml\" },\n        \"2\": { \"name\": \"keyword.other.qml\" },\n        \"5\": { \"name\": \"entity.other.attribute-name.qml\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\b(signal)\\\\s+(\\\\w+)\\\\s*\",\n      \"end\": \";|(?=/)|$\",\n      \"comment\": \"signal <signalName>[([<type> <parameter>[, ...]])]\",\n      \"name\": \"meta.signal.qml\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.other.qml\" },\n        \"2\": { \"name\": \"support.function.qml\" }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\w+)\\\\s+(\\\\w+)\",\n          \"name\": \"meta.signal.parameters.qml\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.qml\" },\n            \"2\": { \"name\": \"variable.parameter.qml\" }\n          }\n        }\n      ]\n    },\n    {\n      \"match\": \"(?:\\\\b|\\\\s+)(?:(true|false|null|undefined)|(var|void)|(on|as|enum|connect|break|case|catch|continue|debugger|default|delete|do|else|finally|for|if|in|instanceof|new|return|switch|this|throw|try|typeof|while|with))\\\\b\",\n      \"comment\": \"js keywords.\",\n      \"name\": \"meta.keyword.qml\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.language.qml\" },\n        \"2\": { \"name\": \"storage.type.qml\" },\n        \"3\": { \"name\": \"keyword.control.qml\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(function)\\\\s+([\\\\w_]+)\\\\s*(?=\\\\()\",\n      \"comment\": \"function definition.\",\n      \"name\": \"meta.function.qml\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.qml\" },\n        \"2\": { \"name\": \"entity.name.function.untitled\" }\n      }\n    },\n    {\n      \"comment\": \"function call.\",\n      \"match\": \"\\\\b[\\\\w_]+\\\\s*(?=\\\\()\",\n      \"name\": \"support.function.qml\"\n    },\n    {\n      \"comment\": \"property  (property: <something>).\",\n      \"match\": \"(?:^|\\\\{|;)\\\\s*[a-z][\\\\w\\\\.]*\\\\s*(?=\\\\:)\",\n      \"name\": \"entity.other.attribute-name.qml\"\n    },\n    {\n      \"comment\": \"property of the variable (name.property).\",\n      \"match\": \"(?<=\\\\.)\\\\b\\\\w*\",\n      \"name\": \"entity.other.attribute-name.qml\"\n    },\n    {\n      \"comment\": \"All non colored words are assumed to be variables.\",\n      \"match\": \"\\\\b([a-z_]\\\\w*)\\\\b\",\n      \"name\": \"variable.parameter\"\n    },\n    { \"include\": \"source.js\" }\n  ],\n  \"name\": \"QML\",\n  \"uuid\": \"13a281e0-0507-45b4-bb6c-a57177630f10\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/r.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/Ikuyadeu/vscode-R/blob/master/syntax/r.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/Ikuyadeu/vscode-R/commit/ff60e426f66503f3c9533c7a62a8fd3f9f6c53df\",\n  \"name\": \"r\",\n  \"scopeName\": \"source.r\",\n  \"patterns\": [\n    {\n      \"include\": \"#roxygen\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#storage-type\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#brackets\"\n    },\n    {\n      \"include\": \"#function-declarations\"\n    },\n    {\n      \"include\": \"#lambda-functions\"\n    },\n    {\n      \"include\": \"#builtin-functions\"\n    },\n    {\n      \"include\": \"#function-calls\"\n    },\n    {\n      \"include\": \"#general-variables\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.pragma.r\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.pragma.name.r\"\n            }\n          },\n          \"match\": \"^(#pragma[ \\\\t]+mark)[ \\\\t](.*)\",\n          \"name\": \"comment.line.pragma-mark.r\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.r\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.r\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.number-sign.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(pi|letters|LETTERS|month\\\\.abb|month\\\\.name)\\\\b\",\n          \"name\": \"support.constant.misc.r\"\n        },\n        {\n          \"match\": \"\\\\b(TRUE|FALSE|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_|Inf|NaN)\\\\b\",\n          \"name\": \"constant.language.r\"\n        },\n        {\n          \"match\": \"\\\\b0(x|X)[0-9a-fA-F]+i\\\\b\",\n          \"name\": \"constant.numeric.imaginary.hexadecimal.r\"\n        },\n        {\n          \"match\": \"\\\\b[0-9]+\\\\.?[0-9]*(?:(e|E)(\\\\+|-)?[0-9]+)?i\\\\b\",\n          \"name\": \"constant.numeric.imaginary.decimal.r\"\n        },\n        {\n          \"match\": \"\\\\.[0-9]+(?:(e|E)(\\\\+|-)?[0-9]+)?i\\\\b\",\n          \"name\": \"constant.numeric.imaginary.decimal.r\"\n        },\n        {\n          \"match\": \"\\\\b0(x|X)[0-9a-fA-F]+L\\\\b\",\n          \"name\": \"constant.numeric.integer.hexadecimal.r\"\n        },\n        {\n          \"match\": \"\\\\b(?:[0-9]+\\\\.?[0-9]*)(?:(e|E)(\\\\+|-)?[0-9]+)?L\\\\b\",\n          \"name\": \"constant.numeric.integer.decimal.r\"\n        },\n        {\n          \"match\": \"\\\\b0(x|X)[0-9a-fA-F]+\\\\b\",\n          \"name\": \"constant.numeric.float.hexadecimal.r\"\n        },\n        {\n          \"match\": \"\\\\b[0-9]+\\\\.?[0-9]*(?:(e|E)(\\\\+|-)?[0-9]+)?\\\\b\",\n          \"name\": \"constant.numeric.float.decimal.r\"\n        },\n        {\n          \"match\": \"\\\\.[0-9]+(?:(e|E)(\\\\+|-)?[0-9]+)?\\\\b\",\n          \"name\": \"constant.numeric.float.decimal.r\"\n        }\n      ]\n    },\n    \"general-variables\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.r\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.r\"\n            }\n          },\n          \"match\": \"([[:alpha:].][[:alnum:]._]*)\\\\s*(=)(?=[^=])\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.r\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.r\"\n            }\n          },\n          \"match\": \"(`[^`]+`)\\\\s*(=)(?=[^=])\"\n        },\n        {\n          \"match\": \"\\\\b([\\\\d_][[:alnum:]._]+)\\\\b\",\n          \"name\": \"invalid.illegal.variable.other.r\"\n        },\n        {\n          \"match\": \"\\\\b([[:alnum:]_]+)(?=::)\",\n          \"name\": \"entity.namespace.r\"\n        },\n        {\n          \"match\": \"\\\\b([[:alnum:]._]+)\\\\b\",\n          \"name\": \"variable.other.r\"\n        },\n        {\n          \"match\": \"(`[^`]+`)\",\n          \"name\": \"variable.other.r\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(break|next|repeat|else|in)\\\\b\",\n          \"name\": \"keyword.control.r\"\n        },\n        {\n          \"match\": \"\\\\b(ifelse|if|for|return|switch|while|invisible)\\\\b(?=\\\\s*\\\\()\",\n          \"name\": \"keyword.control.r\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%\\\\/%|%%|%\\\\*%|%o%|%x%|\\\\^)\",\n          \"name\": \"keyword.operator.arithmetic.r\"\n        },\n        {\n          \"match\": \"(:=|<-|<<-|->|->>)\",\n          \"name\": \"keyword.operator.assignment.r\"\n        },\n        {\n          \"match\": \"(==|<=|>=|!=|<>|<|>|%in%)\",\n          \"name\": \"keyword.operator.comparison.r\"\n        },\n        {\n          \"match\": \"(!|&{1,2}|[|]{1,2})\",\n          \"name\": \"keyword.operator.logical.r\"\n        },\n        {\n          \"match\": \"(\\\\|>)\",\n          \"name\": \"keyword.operator.pipe.r\"\n        },\n        {\n          \"match\": \"(%between%|%chin%|%like%|%\\\\+%|%\\\\+replace%|%:%|%do%|%dopar%|%>%|%<>%|%T>%|%\\\\$%)\",\n          \"name\": \"keyword.operator.other.r\"\n        },\n        {\n          \"match\": \"(\\\\.\\\\.\\\\.|\\\\$|:|\\\\~|@)\",\n          \"name\": \"keyword.other.r\"\n        }\n      ]\n    },\n    \"storage-type\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(character|complex|double|expression|integer|list|logical|numeric|single|raw)\\\\b(?=\\\\s*\\\\()\",\n          \"name\": \"storage.type.r\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"[rR]\\\"(-*)\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\]\\\\1\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]'(-*)\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\]\\\\1'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.single.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]\\\"(-*)\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\}\\\\1\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]'(-*)\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\}\\\\1'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.single.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]\\\"(-*)\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\)\\\\1\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]'(-*)\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\)\\\\1'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.single.raw.r\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.r\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.double.r\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.r\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.r\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.single.r\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.r\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.r\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[(?!\\\\[)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.single.begin.r\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.single.end.r\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.double.begin.r\"\n            }\n          },\n          \"end\": \"\\\\]\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.double.end.r\"\n            }\n          },\n          \"contentName\": \"meta.item-access.arguments.r\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.braces.begin.r\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.braces.end.r\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-declarations\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?:`[^`\\\\\\\\]*(?:\\\\\\\\.[^`\\\\\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))\\\\s*(<?<-|=(?!=))\\\\s*(function|\\\\\\\\)(?!\\\\w)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.r\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.r\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.r\"\n            }\n          },\n          \"name\": \"meta.function.r\",\n          \"patterns\": [\n            {\n              \"include\": \"#lambda-functions\"\n            }\n          ]\n        }\n      ]\n    },\n    \"lambda-functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(function)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.r\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.parens.begin.r\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.r\"\n            }\n          },\n          \"name\": \"meta.function.r\",\n          \"contentName\": \"meta.function.parameters.r\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z._][\\\\w.]*|`[^`]+`)\",\n              \"name\": \"variable.other.r\"\n            },\n            {\n              \"begin\": \"(?==)\",\n              \"end\": \"(?=[,)])\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.r\"\n                }\n              ]\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.parameters.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-calls\": {\n      \"begin\": \"(?:\\\\b|(?=\\\\.))((?:[a-zA-Z._][\\\\w.]*|`[^`]+`))\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.function.r\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.parens.begin.r\"\n        }\n      },\n      \"contentName\": \"meta.function-call.arguments.r\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parens.end.r\"\n        }\n      },\n      \"name\": \"meta.function-call.r\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-call.r\",\n          \"contentName\": \"meta.function-call.parameters.r\"\n        },\n        {\n          \"match\": \"(?:[a-zA-Z._][\\\\w.]*|`[^`]+`)(?=\\\\s[^=])\",\n          \"name\": \"variable.other.r\"\n        },\n        {\n          \"begin\": \"(?==)\",\n          \"end\": \"(?=[,)])\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.parameters.r\"\n        },\n        {\n          \"include\": \"source.r\"\n        }\n      ]\n    },\n    \"roxygen\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#')\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.r\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.roxygen.r\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.r\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.r\"\n                }\n              },\n              \"match\": \"(@param)\\\\s*((?:[a-zA-Z._][\\\\w.]*|`[^`]+`))\"\n            },\n            {\n              \"match\": \"@[a-zA-Z0-9]+\",\n              \"name\": \"keyword.other.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(abbreviate|abs|acos|acosh|addNA|addTaskCallback|agrep|agrepl|alist|all|all\\\\.equal|all\\\\.equal.character|all\\\\.equal.default|all\\\\.equal.environment|all\\\\.equal.envRefClass|all\\\\.equal.factor|all\\\\.equal.formula|all\\\\.equal.language|all\\\\.equal.list|all\\\\.equal.numeric|all\\\\.equal.POSIXt|all\\\\.equal.raw|all\\\\.names|all\\\\.vars|any|anyDuplicated|anyDuplicated\\\\.array|anyDuplicated\\\\.data.frame|anyDuplicated\\\\.default|anyDuplicated\\\\.matrix|anyNA|anyNA\\\\.numeric_version|anyNA\\\\.POSIXlt|aperm|aperm\\\\.default|aperm\\\\.table|append|apply|Arg|args|array|arrayInd|as\\\\.array|as\\\\.array.default|as\\\\.call|as\\\\.character|as\\\\.character.condition|as\\\\.character.Date|as\\\\.character.default|as\\\\.character.error|as\\\\.character.factor|as\\\\.character.hexmode|as\\\\.character.numeric_version|as\\\\.character.octmode|as\\\\.character.POSIXt|as\\\\.character.srcref|as\\\\.complex|as\\\\.data.frame|as\\\\.data.frame.array|as\\\\.data.frame.AsIs|as\\\\.data.frame.character|as\\\\.data.frame.complex|as\\\\.data.frame.data.frame|as\\\\.data.frame.Date|as\\\\.data.frame.default|as\\\\.data.frame.difftime|as\\\\.data.frame.factor|as\\\\.data.frame.integer|as\\\\.data.frame.list|as\\\\.data.frame.logical|as\\\\.data.frame.matrix|as\\\\.data.frame.model.matrix|as\\\\.data.frame.noquote|as\\\\.data.frame.numeric|as\\\\.data.frame.numeric_version|as\\\\.data.frame.ordered|as\\\\.data.frame.POSIXct|as\\\\.data.frame.POSIXlt|as\\\\.data.frame.raw|as\\\\.data.frame.table|as\\\\.data.frame.ts|as\\\\.data.frame.vector|as\\\\.Date|as\\\\.Date.character|as\\\\.Date.date|as\\\\.Date.dates|as\\\\.Date.default|as\\\\.Date.factor|as\\\\.Date.numeric|as\\\\.Date.POSIXct|as\\\\.Date.POSIXlt|as\\\\.difftime|as\\\\.double|as\\\\.double.difftime|as\\\\.double.POSIXlt|as\\\\.environment|as\\\\.expression|as\\\\.expression.default|as\\\\.factor|as\\\\.function|as\\\\.function.default|as\\\\.hexmode|as\\\\.integer|as\\\\.list|as\\\\.list.data.frame|as\\\\.list.Date|as\\\\.list.default|as\\\\.list.environment|as\\\\.list.factor|as\\\\.list.function|as\\\\.list.numeric_version|as\\\\.list.POSIXct|as\\\\.logical|as\\\\.logical.factor|as\\\\.matrix|as\\\\.matrix.data.frame|as\\\\.matrix.default|as\\\\.matrix.noquote|as\\\\.matrix.POSIXlt|as\\\\.name|as\\\\.null|as\\\\.null.default|as\\\\.numeric|as\\\\.numeric_version|as\\\\.octmode|as\\\\.ordered|as\\\\.package_version|as\\\\.pairlist|as\\\\.POSIXct|as\\\\.POSIXct.date|as\\\\.POSIXct.Date|as\\\\.POSIXct.dates|as\\\\.POSIXct.default|as\\\\.POSIXct.numeric|as\\\\.POSIXct.POSIXlt|as\\\\.POSIXlt|as\\\\.POSIXlt.character|as\\\\.POSIXlt.date|as\\\\.POSIXlt.Date|as\\\\.POSIXlt.dates|as\\\\.POSIXlt.default|as\\\\.POSIXlt.factor|as\\\\.POSIXlt.numeric|as\\\\.POSIXlt.POSIXct|as\\\\.qr|as\\\\.raw|as\\\\.single|as\\\\.single.default|as\\\\.symbol|as\\\\.table|as\\\\.table.default|as\\\\.vector|as\\\\.vector.factor|asin|asinh|asNamespace|asS3|asS4|assign|atan|atan2|atanh|attach|attachNamespace|attr|attr\\\\.all.equal|attributes|autoload|autoloader|backsolve|baseenv|basename|besselI|besselJ|besselK|besselY|beta|bindingIsActive|bindingIsLocked|bindtextdomain|bitwAnd|bitwNot|bitwOr|bitwShiftL|bitwShiftR|bitwXor|body|bquote|break|browser|browserCondition|browserSetDebug|browserText|builtins|by|by\\\\.data.frame|by\\\\.default|bzfile|c|c\\\\.Date|c\\\\.difftime|c\\\\.noquote|c\\\\.numeric_version|c\\\\.POSIXct|c\\\\.POSIXlt|c\\\\.warnings|call|callCC|capabilities|casefold|cat|cbind|cbind\\\\.data.frame|ceiling|char\\\\.expand|character|charmatch|charToRaw|chartr|check_tzones|chkDots|chol|chol\\\\.default|chol2inv|choose|class|clearPushBack|close|close\\\\.connection|close\\\\.srcfile|close\\\\.srcfilealias|closeAllConnections|col|colMeans|colnames|colSums|commandArgs|comment|complex|computeRestarts|conditionCall|conditionCall\\\\.condition|conditionMessage|conditionMessage\\\\.condition|conflicts|Conj|contributors|cos|cosh|cospi|crossprod|Cstack_info|cummax|cummin|cumprod|cumsum|curlGetHeaders|cut|cut\\\\.Date|cut\\\\.default|cut\\\\.POSIXt|data\\\\.class|data\\\\.frame|data\\\\.matrix|date|debug|debuggingState|debugonce|default\\\\.stringsAsFactors|delayedAssign|deparse|det|detach|determinant|determinant\\\\.matrix|dget|diag|diff|diff\\\\.Date|diff\\\\.default|diff\\\\.difftime|diff\\\\.POSIXt|difftime|digamma|dim|dim\\\\.data.frame|dimnames|dimnames\\\\.data.frame|dir|dir\\\\.create|dir\\\\.exists|dirname|do\\\\.call|dontCheck|double|dput|dQuote|drop|droplevels|droplevels\\\\.data.frame|droplevels\\\\.factor|dump|duplicated|duplicated\\\\.array|duplicated\\\\.data.frame|duplicated\\\\.default|duplicated\\\\.matrix|duplicated\\\\.numeric_version|duplicated\\\\.POSIXlt|duplicated\\\\.warnings|dyn\\\\.load|dyn\\\\.unload|dynGet|eapply|eigen|emptyenv|enc2native|enc2utf8|encodeString|Encoding|endsWith|enquote|env\\\\.profile|environment|environmentIsLocked|environmentName|eval|eval\\\\.parent|evalq|exists|exp|expand\\\\.grid|expm1|expression|extSoftVersion|factor|factorial|fifo|file|file\\\\.access|file\\\\.append|file\\\\.choose|file\\\\.copy|file\\\\.create|file\\\\.exists|file\\\\.info|file\\\\.link|file\\\\.mode|file\\\\.mtime|file\\\\.path|file\\\\.remove|file\\\\.rename|file\\\\.show|file\\\\.size|file\\\\.symlink|Filter|Find|find\\\\.package|findInterval|findPackageEnv|findRestart|floor|flush|flush\\\\.connection|for|force|forceAndCall|formals|format|format\\\\.AsIs|format\\\\.data.frame|format\\\\.Date|format\\\\.default|format\\\\.difftime|format\\\\.factor|format\\\\.hexmode|format\\\\.info|format\\\\.libraryIQR|format\\\\.numeric_version|format\\\\.octmode|format\\\\.packageInfo|format\\\\.POSIXct|format\\\\.POSIXlt|format\\\\.pval|format\\\\.summaryDefault|formatC|formatDL|forwardsolve|function|gamma|gc|gc\\\\.time|gcinfo|gctorture|gctorture2|get|get0|getAllConnections|getCallingDLL|getCallingDLLe|getConnection|getDLLRegisteredRoutines|getDLLRegisteredRoutines\\\\.character|getDLLRegisteredRoutines\\\\.DLLInfo|getElement|geterrmessage|getExportedValue|getHook|getLoadedDLLs|getNamespace|getNamespaceExports|getNamespaceImports|getNamespaceInfo|getNamespaceName|getNamespaceUsers|getNamespaceVersion|getNativeSymbolInfo|getOption|getRversion|getSrcLines|getTaskCallbackNames|gettext|gettextf|getwd|gl|globalenv|gregexpr|grep|grepl|grepRaw|grouping|gsub|gzcon|gzfile|I|iconv|iconvlist|icuGetCollate|icuSetCollate|identical|identity|if|ifelse|Im|importIntoEnv|inherits|integer|interaction|interactive|intersect|intToBits|intToUtf8|inverse\\\\.rle|invisible|invokeRestart|invokeRestartInteractively|is\\\\.array|is\\\\.atomic|is\\\\.call|is\\\\.character|is\\\\.complex|is\\\\.data.frame|is\\\\.double|is\\\\.element|is\\\\.environment|is\\\\.expression|is\\\\.factor|is\\\\.finite|is\\\\.function|is\\\\.infinite|is\\\\.integer|is\\\\.language|is\\\\.list|is\\\\.loaded|is\\\\.logical|is\\\\.matrix|is\\\\.na|is\\\\.na.data.frame|is\\\\.na.numeric_version|is\\\\.na.POSIXlt|is\\\\.name|is\\\\.nan|is\\\\.null|is\\\\.numeric|is\\\\.numeric_version|is\\\\.numeric.Date|is\\\\.numeric.difftime|is\\\\.numeric.POSIXt|is\\\\.object|is\\\\.ordered|is\\\\.package_version|is\\\\.pairlist|is\\\\.primitive|is\\\\.qr|is\\\\.R|is\\\\.raw|is\\\\.recursive|is\\\\.single|is\\\\.symbol|is\\\\.table|is\\\\.unsorted|is\\\\.vector|isatty|isBaseNamespace|isdebugged|isIncomplete|isNamespace|isNamespaceLoaded|ISOdate|ISOdatetime|isOpen|isRestart|isS4|isSeekable|isSymmetric|isSymmetric\\\\.matrix|isTRUE|jitter|julian|julian\\\\.Date|julian\\\\.POSIXt|kappa|kappa\\\\.default|kappa\\\\.lm|kappa\\\\.qr|kronecker|l10n_info|La_library|La_version|La\\\\.svd|labels|labels\\\\.default|lapply|lazyLoad|lazyLoadDBexec|lazyLoadDBfetch|lbeta|lchoose|length|length\\\\.POSIXlt|lengths|levels|levels\\\\.default|lfactorial|lgamma|libcurlVersion|library|library\\\\.dynam|library\\\\.dynam.unload|licence|license|list|list\\\\.dirs|list\\\\.files|list2env|load|loadedNamespaces|loadingNamespaceInfo|loadNamespace|local|lockBinding|lockEnvironment|log|log10|log1p|log2|logb|logical|lower\\\\.tri|ls|make\\\\.names|make\\\\.unique|makeActiveBinding|Map|mapply|margin\\\\.table|mat\\\\.or.vec|match|match\\\\.arg|match\\\\.call|match\\\\.fun|Math\\\\.data.frame|Math\\\\.Date|Math\\\\.difftime|Math\\\\.factor|Math\\\\.POSIXt|matrix|max|max\\\\.col|mean|mean\\\\.Date|mean\\\\.default|mean\\\\.difftime|mean\\\\.POSIXct|mean\\\\.POSIXlt|mem\\\\.limits|memCompress|memDecompress|memory\\\\.profile|merge|merge\\\\.data.frame|merge\\\\.default|message|mget|min|missing|Mod|mode|months|months\\\\.Date|months\\\\.POSIXt|names|names\\\\.POSIXlt|namespaceExport|namespaceImport|namespaceImportClasses|namespaceImportFrom|namespaceImportMethods|nargs|nchar|ncol|NCOL|Negate|new\\\\.env|next|NextMethod|ngettext|nlevels|noquote|norm|normalizePath|nrow|NROW|numeric|numeric_version|nzchar|objects|oldClass|OlsonNames|on\\\\.exit|open|open\\\\.connection|open\\\\.srcfile|open\\\\.srcfilealias|open\\\\.srcfilecopy|Ops\\\\.data.frame|Ops\\\\.Date|Ops\\\\.difftime|Ops\\\\.factor|Ops\\\\.numeric_version|Ops\\\\.ordered|Ops\\\\.POSIXt|options|order|ordered|outer|package_version|packageEvent|packageHasNamespace|packageStartupMessage|packBits|pairlist|parent\\\\.env|parent\\\\.frame|parse|parseNamespaceFile|paste|paste0|path\\\\.expand|path\\\\.package|pcre_config|pipe|pmatch|pmax|pmax\\\\.int|pmin|pmin\\\\.int|polyroot|pos\\\\.to.env|Position|pretty|pretty\\\\.default|prettyNum|print|print\\\\.AsIs|print\\\\.by|print\\\\.condition|print\\\\.connection|print\\\\.data.frame|print\\\\.Date|print\\\\.default|print\\\\.difftime|print\\\\.Dlist|print\\\\.DLLInfo|print\\\\.DLLInfoList|print\\\\.DLLRegisteredRoutines|print\\\\.eigen|print\\\\.factor|print\\\\.function|print\\\\.hexmode|print\\\\.libraryIQR|print\\\\.listof|print\\\\.NativeRoutineList|print\\\\.noquote|print\\\\.numeric_version|print\\\\.octmode|print\\\\.packageInfo|print\\\\.POSIXct|print\\\\.POSIXlt|print\\\\.proc_time|print\\\\.restart|print\\\\.rle|print\\\\.simple.list|print\\\\.srcfile|print\\\\.srcref|print\\\\.summary.table|print\\\\.summaryDefault|print\\\\.table|print\\\\.warnings|prmatrix|proc\\\\.time|prod|prop\\\\.table|provideDimnames|psigamma|pushBack|pushBackLength|q|qr|qr\\\\.coef|qr\\\\.default|qr\\\\.fitted|qr\\\\.Q|qr\\\\.qty|qr\\\\.qy|qr\\\\.R|qr\\\\.resid|qr\\\\.solve|qr\\\\.X|quarters|quarters\\\\.Date|quarters\\\\.POSIXt|quit|quote|R_system_version|R\\\\.home|R\\\\.Version|range|range\\\\.default|rank|rapply|raw|rawConnection|rawConnectionValue|rawShift|rawToBits|rawToChar|rbind|rbind\\\\.data.frame|rcond|Re|read\\\\.dcf|readBin|readChar|readline|readLines|readRDS|readRenviron|Recall|Reduce|reg\\\\.finalizer|regexec|regexpr|registerS3method|registerS3methods|regmatches|remove|removeTaskCallback|rep|rep_len|rep\\\\.Date|rep\\\\.factor|rep\\\\.int|rep\\\\.numeric_version|rep\\\\.POSIXct|rep\\\\.POSIXlt|repeat|replace|replicate|require|requireNamespace|restartDescription|restartFormals|retracemem|return|returnValue|rev|rev\\\\.default|rle|rm|RNGkind|RNGversion|round|round\\\\.Date|round\\\\.POSIXt|row|row\\\\.names|row\\\\.names.data.frame|row\\\\.names.default|rowMeans|rownames|rowsum|rowsum\\\\.data.frame|rowsum\\\\.default|rowSums|sample|sample\\\\.int|sapply|save|save\\\\.image|saveRDS|scale|scale\\\\.default|scan|search|searchpaths|seek|seek\\\\.connection|seq|seq_along|seq_len|seq\\\\.Date|seq\\\\.default|seq\\\\.int|seq\\\\.POSIXt|sequence|serialize|set\\\\.seed|setdiff|setequal|setHook|setNamespaceInfo|setSessionTimeLimit|setTimeLimit|setwd|showConnections|shQuote|sign|signalCondition|signif|simpleCondition|simpleError|simpleMessage|simpleWarning|simplify2array|sin|single|sinh|sink|sink\\\\.number|sinpi|slice\\\\.index|socketConnection|socketSelect|solve|solve\\\\.default|solve\\\\.qr|sort|sort\\\\.default|sort\\\\.int|sort\\\\.list|sort\\\\.POSIXlt|source|split|split\\\\.data.frame|split\\\\.Date|split\\\\.default|split\\\\.POSIXct|sprintf|sqrt|sQuote|srcfile|srcfilealias|srcfilecopy|srcref|standardGeneric|startsWith|stderr|stdin|stdout|stop|stopifnot|storage\\\\.mode|strftime|strptime|strrep|strsplit|strtoi|strtrim|structure|strwrap|sub|subset|subset\\\\.data.frame|subset\\\\.default|subset\\\\.matrix|substitute|substr|substring|sum|summary|summary\\\\.connection|summary\\\\.data.frame|Summary\\\\.data.frame|summary\\\\.Date|Summary\\\\.Date|summary\\\\.default|Summary\\\\.difftime|summary\\\\.factor|Summary\\\\.factor|summary\\\\.matrix|Summary\\\\.numeric_version|Summary\\\\.ordered|summary\\\\.POSIXct|Summary\\\\.POSIXct|summary\\\\.POSIXlt|Summary\\\\.POSIXlt|summary\\\\.proc_time|summary\\\\.srcfile|summary\\\\.srcref|summary\\\\.table|suppressMessages|suppressPackageStartupMessages|suppressWarnings|svd|sweep|switch|sys\\\\.call|sys\\\\.calls|Sys\\\\.chmod|Sys\\\\.Date|sys\\\\.frame|sys\\\\.frames|sys\\\\.function|Sys\\\\.getenv|Sys\\\\.getlocale|Sys\\\\.getpid|Sys\\\\.glob|Sys\\\\.info|sys\\\\.load.image|Sys\\\\.localeconv|sys\\\\.nframe|sys\\\\.on.exit|sys\\\\.parent|sys\\\\.parents|Sys\\\\.readlink|sys\\\\.save.image|Sys\\\\.setenv|Sys\\\\.setFileTime|Sys\\\\.setlocale|Sys\\\\.sleep|sys\\\\.source|sys\\\\.status|Sys\\\\.time|Sys\\\\.timezone|Sys\\\\.umask|Sys\\\\.unsetenv|Sys\\\\.which|system|system\\\\.file|system\\\\.time|system2|t|t\\\\.data.frame|t\\\\.default|table|tabulate|tan|tanh|tanpi|tapply|taskCallbackManager|tcrossprod|tempdir|tempfile|testPlatformEquivalence|textConnection|textConnectionValue|tolower|topenv|toString|toString\\\\.default|toupper|trace|traceback|tracemem|tracingState|transform|transform\\\\.data.frame|transform\\\\.default|trigamma|trimws|trunc|trunc\\\\.Date|trunc\\\\.POSIXt|truncate|truncate\\\\.connection|try|tryCatch|typeof|unclass|undebug|union|unique|unique\\\\.array|unique\\\\.data.frame|unique\\\\.default|unique\\\\.matrix|unique\\\\.numeric_version|unique\\\\.POSIXlt|unique\\\\.warnings|units|units\\\\.difftime|unix\\\\.time|unlink|unlist|unloadNamespace|unlockBinding|unname|unserialize|unsplit|untrace|untracemem|unz|upper\\\\.tri|url|UseMethod|utf8ToInt|validEnc|validUTF8|vapply|vector|Vectorize|warning|warnings|weekdays|weekdays\\\\.Date|weekdays\\\\.POSIXt|which|which\\\\.max|which\\\\.min|while|with|with\\\\.default|withAutoprint|withCallingHandlers|within|within\\\\.data.frame|within\\\\.list|withRestarts|withVisible|write|write\\\\.dcf|writeBin|writeChar|writeLines|xor|xor\\\\.hexmode|xor\\\\.octmode|xpdrows\\\\.data.frame|xtfrm|xtfrm\\\\.AsIs|xtfrm\\\\.Date|xtfrm\\\\.default|xtfrm\\\\.difftime|xtfrm\\\\.factor|xtfrm\\\\.numeric_version|xtfrm\\\\.POSIXct|xtfrm\\\\.POSIXlt|xtfrm\\\\.Surv|xzfile|zapsmall)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(abline|arrows|assocplot|axis|Axis|axis\\\\.Date|Axis\\\\.Date|Axis\\\\.default|axis\\\\.POSIXct|Axis\\\\.POSIXt|Axis\\\\.table|axTicks|barplot|barplot\\\\.default|box|boxplot|boxplot\\\\.default|boxplot\\\\.formula|boxplot\\\\.matrix|bxp|cdplot|cdplot\\\\.default|cdplot\\\\.formula|clip|close\\\\.screen|co\\\\.intervals|contour|contour\\\\.default|coplot|curve|dotchart|erase\\\\.screen|filled\\\\.contour|fourfoldplot|frame|grconvertX|grconvertY|grid|hist|hist\\\\.Date|hist\\\\.default|hist\\\\.POSIXt|identify|identify\\\\.default|image|image\\\\.default|layout|layout\\\\.show|lcm|legend|lines|lines\\\\.default|lines\\\\.formula|lines\\\\.histogram|lines\\\\.table|locator|matlines|matplot|matpoints|mosaicplot|mosaicplot\\\\.default|mosaicplot\\\\.formula|mtext|pairs|pairs\\\\.default|pairs\\\\.formula|panel\\\\.smooth|par|persp|persp\\\\.default|pie|piechart|plot|plot\\\\.data.frame|plot\\\\.default|plot\\\\.design|plot\\\\.factor|plot\\\\.formula|plot\\\\.function|plot\\\\.histogram|plot\\\\.new|plot\\\\.raster|plot\\\\.table|plot\\\\.window|plot\\\\.xy|plotHclust|points|points\\\\.default|points\\\\.formula|points\\\\.table|polygon|polypath|rasterImage|rect|rug|screen|segments|smoothScatter|spineplot|spineplot\\\\.default|spineplot\\\\.formula|split\\\\.screen|stars|stem|strheight|stripchart|stripchart\\\\.default|stripchart\\\\.formula|strwidth|sunflowerplot|sunflowerplot\\\\.default|sunflowerplot\\\\.formula|symbols|text|text\\\\.default|text\\\\.formula|title|xinch|xspline|xyinch|yinch)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(adjustcolor|anyNA\\\\.raster|as\\\\.graphicsAnnot|as\\\\.matrix.raster|as\\\\.raster|as\\\\.raster.array|as\\\\.raster.character|as\\\\.raster.logical|as\\\\.raster.matrix|as\\\\.raster.numeric|as\\\\.raster.raster|as\\\\.raster.raw|axisTicks|bitmap|bmp|boxplot\\\\.stats|c2to3|cairo_pdf|cairo_ps|cairoVersion|check_for_XQuartz|check_gs_type|check\\\\.options|checkFont|checkFont\\\\.CIDFont|checkFont\\\\.default|checkFont\\\\.Type1Font|checkFontInUse|checkIntFormat|checkQuartzFont|checkX11Font|chromaticAdaptation|chull|CIDFont|cm|cm\\\\.colors|col2rgb|colorConverter|colorRamp|colorRampPalette|colors|colours|contourLines|convertColor|densCols|dev\\\\.capabilities|dev\\\\.capture|dev\\\\.control|dev\\\\.copy|dev\\\\.copy2eps|dev\\\\.copy2pdf|dev\\\\.cur|dev\\\\.displaylist|dev\\\\.flush|dev\\\\.hold|dev\\\\.interactive|dev\\\\.list|dev\\\\.new|dev\\\\.next|dev\\\\.off|dev\\\\.prev|dev\\\\.print|dev\\\\.set|dev\\\\.size|dev2bitmap|devAskNewPage|deviceIsInteractive|embedFonts|extendrange|getGraphicsEvent|getGraphicsEventEnv|graphics\\\\.off|gray|gray\\\\.colors|grey|grey\\\\.colors|grSoftVersion|guessEncoding|hcl|heat\\\\.colors|hsv|initPSandPDFfonts|is\\\\.na.raster|is\\\\.raster|isPDF|jpeg|make\\\\.rgb|matchEncoding|matchEncoding\\\\.CIDFont|matchEncoding\\\\.Type1Font|matchFont|n2mfrow|nclass\\\\.FD|nclass\\\\.scott|nclass\\\\.Sturges|Ops\\\\.raster|palette|pdf|pdf\\\\.options|pdfFonts|pictex|png|postscript|postscriptFonts|prettyDate|print\\\\.colorConverter|print\\\\.raster|print\\\\.recordedplot|print\\\\.RGBcolorConverter|printFont|printFont\\\\.CIDFont|printFont\\\\.Type1Font|printFonts|ps\\\\.options|quartz|quartz\\\\.options|quartz\\\\.save|quartzFont|quartzFonts|rainbow|recordGraphics|recordPalette|recordPlot|replayPlot|restoreRecordedPlot|rgb|rgb2hsv|savePlot|seqDtime|setEPS|setFonts|setGraphicsEventEnv|setGraphicsEventHandlers|setPS|setQuartzFonts|setX11Fonts|svg|terrain\\\\.colors|tiff|topo\\\\.colors|trans3d|trunc_POSIXt|Type1Font|x11|X11|X11\\\\.options|X11Font|X11FontError|X11Fonts|xfig|xy\\\\.coords|xyTable|xyz\\\\.coords)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(addNextMethod|allGenerics|allNames|Arith|as|asMethodDefinition|assignClassDef|assignMethodsMetaData|balanceMethodsList|bind_activation|cacheGenericsMetaData|cacheMetaData|cacheMethod|cacheOnAssign|callGeneric|callNextMethod|canCoerce|cbind|cbind2|checkAtAssignment|checkSlotAssignment|classesToAM|classGeneratorFunction|classLabel|classMetaName|className|coerce|Compare|completeClassDefinition|completeExtends|completeSubclasses|Complex|conformMethod|defaultDumpName|defaultPrototype|dispatchIsInternal|doPrimitiveMethod|dumpMethod|dumpMethods|el|elNamed|empty\\\\.dump|emptyMethodsList|envRefInferField|envRefSetField|evalOnLoad|evalqOnLoad|evalSource|existsFunction|existsMethod|extends|externalRefMethod|finalDefaultMethod|findClass|findFunction|findMethod|findMethods|findMethodSignatures|findUnique|fixPre1\\\\.8|formalArgs|fromNextMethod|functionBody|generic\\\\.skeleton|genericForBasic|getAccess|getAllMethods|getAllSuperClasses|getClass|getClassDef|getClasses|getClassName|getClassPackage|getDataPart|getExtends|getFunction|getGeneric|getGenericFromCall|getGenerics|getGroup|getGroupMembers|getLoadActions|getMethod|getMethods|getMethodsAndAccessors|getMethodsForDispatch|getMethodsMetaData|getPackageName|getProperties|getPrototype|getRefClass|getRefSuperClasses|getSlots|getSubclasses|getValidity|getVirtual|hasArg|hasLoadAction|hasMethod|hasMethods|implicitGeneric|inBasicFuns|inferProperties|inheritedSlotNames|inheritedSubMethodLists|initFieldArgs|initialize|initMethodDispatch|initRefFields|insertClassMethods|insertMethod|insertMethodInEmptyList|insertSource|installClassMethod|is|isBaseFun|isClass|isClassDef|isClassUnion|isGeneric|isGrammarSymbol|isGroup|isMixin|isRematched|isS3Generic|isSealedClass|isSealedMethod|isVirtualClass|isXS3Class|kronecker|languageEl|linearizeMlist|listFromMethods|listFromMlist|loadMethod|Logic|makeClassMethod|makeClassRepresentation|makeEnvRefMethods|makeExtends|makeGeneric|makeMethodsList|makePrototypeFromClassDef|makeStandardGeneric|matchDefaults|matchSignature|Math|Math2|mergeMethods|metaNameUndo|method\\\\.skeleton|MethodAddCoerce|methodSignatureMatrix|MethodsList|MethodsListSelect|methodsPackageMetaName|missingArg|mlistMetaName|multipleClasses|new|newBasic|newClassRepresentation|newEmptyObject|Ops|outerLabels|packageSlot|possibleExtends|print\\\\.MethodsList|printClassRepresentation|printPropertiesList|prohibitGeneric|promptClass|promptMethods|prototype|Quote|rbind|rbind2|reconcilePropertiesAndPrototype|refClassFields|refClassInformation|refClassMethods|refClassPrompt|refObjectClass|registerImplicitGenerics|rematchDefinition|removeClass|removeGeneric|removeMethod|removeMethods|removeMethodsObject|representation|requireMethods|resetClass|resetGeneric|S3Class|S3forS4Methods|S3Part|sealClass|seemsS4Object|selectMethod|selectSuperClasses|setAs|setCacheOnAssign|setClass|setClassUnion|setDataPart|setGeneric|setGenericImplicit|setGroupGeneric|setIs|setLoadAction|setLoadActions|setMethod|setNames|setOldClass|setPackageName|setPrimitiveMethods|setRefClass|setReplaceMethod|setValidity|show|showClass|showClassMethod|showDefault|showExtends|showExtraSlots|showMethods|showMlist|showRefClassDef|signature|SignatureMethod|sigToEnv|slot|slotNames|slotsFromS3|substituteDirect|substituteFunctionArgs|Summary|superClassDepth|superClassMethodName|tableNames|testInheritedMethods|testVirtual|traceOff|traceOn|tryNew|unRematchDefinition|useMTable|validObject|validSlotNames)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(acf|acf2AR|add\\\\.name|add1|add1\\\\.default|add1\\\\.glm|add1\\\\.lm|add1\\\\.mlm|addmargins|aggregate|aggregate\\\\.data.frame|aggregate\\\\.default|aggregate\\\\.formula|aggregate\\\\.ts|AIC|AIC\\\\.default|AIC\\\\.logLik|alias|alias\\\\.formula|alias\\\\.lm|anova|anova\\\\.glm|anova\\\\.glmlist|anova\\\\.lm|anova\\\\.lmlist|anova\\\\.loess|anova\\\\.mlm|anova\\\\.mlmlist|anova\\\\.nls|anovalist\\\\.nls|ansari\\\\.test|ansari\\\\.test.default|ansari\\\\.test.formula|aov|approx|approxfun|ar|ar\\\\.burg|ar\\\\.burg.default|ar\\\\.burg.mts|ar\\\\.mle|ar\\\\.ols|ar\\\\.yw|ar\\\\.yw.default|ar\\\\.yw.mts|arima|arima\\\\.sim|arima0|arima0\\\\.diag|ARMAacf|ARMAtoMA|as\\\\.data.frame.aovproj|as\\\\.data.frame.ftable|as\\\\.data.frame.logLik|as\\\\.dendrogram|as\\\\.dendrogram.dendrogram|as\\\\.dendrogram.hclust|as\\\\.dist|as\\\\.dist.default|as\\\\.formula|as\\\\.hclust|as\\\\.hclust.default|as\\\\.hclust.dendrogram|as\\\\.hclust.twins|as\\\\.matrix.dist|as\\\\.matrix.ftable|as\\\\.stepfun|as\\\\.stepfun.default|as\\\\.stepfun.isoreg|as\\\\.table.ftable|as\\\\.ts|as\\\\.ts.default|asOneSidedFormula|ave|bandwidth\\\\.kernel|bartlett\\\\.test|bartlett\\\\.test.default|bartlett\\\\.test.formula|BIC|BIC\\\\.default|BIC\\\\.logLik|binom\\\\.test|binomial|biplot|biplot\\\\.default|biplot\\\\.prcomp|biplot\\\\.princomp|Box\\\\.test|bw_pair_cnts|bw\\\\.bcv|bw\\\\.nrd|bw\\\\.nrd0|bw\\\\.SJ|bw\\\\.ucv|C|cancor|case\\\\.names|case\\\\.names.default|case\\\\.names.lm|cbind\\\\.ts|ccf|check_exact|chisq\\\\.test|cmdscale|coef|coef\\\\.aov|coef\\\\.Arima|coef\\\\.default|coef\\\\.listof|coef\\\\.maov|coef\\\\.nls|coefficients|complete\\\\.cases|confint|confint\\\\.default|confint\\\\.glm|confint\\\\.lm|confint\\\\.nls|constrOptim|contr\\\\.helmert|contr\\\\.poly|contr\\\\.SAS|contr\\\\.sum|contr\\\\.treatment|contrasts|convolve|cooks\\\\.distance|cooks\\\\.distance.glm|cooks\\\\.distance.lm|cophenetic|cophenetic\\\\.default|cophenetic\\\\.dendrogram|cor|cor\\\\.test|cor\\\\.test.default|cor\\\\.test.formula|cov|cov\\\\.wt|cov2cor|covratio|cpgram|cut\\\\.dendrogram|cutree|cycle|cycle\\\\.default|cycle\\\\.ts|D|dbeta|dbinom|dcauchy|dchisq|decompose|delete\\\\.response|deltat|deltat\\\\.default|dendrapply|density|density\\\\.default|deriv|deriv\\\\.default|deriv\\\\.formula|deriv3|deriv3\\\\.default|deriv3\\\\.formula|deviance|deviance\\\\.default|deviance\\\\.glm|deviance\\\\.lm|deviance\\\\.mlm|deviance\\\\.nls|dexp|df|df\\\\.kernel|df\\\\.residual|df\\\\.residual.default|df\\\\.residual.nls|dfbeta|dfbeta\\\\.lm|dfbetas|dfbetas\\\\.lm|dffits|dgamma|dgeom|dhyper|diff\\\\.ts|diffinv|diffinv\\\\.default|diffinv\\\\.ts|diffinv\\\\.vector|dist|dlnorm|dlogis|dmultinom|dnbinom|dnorm|dpois|drop\\\\.name|drop\\\\.terms|drop1|drop1\\\\.default|drop1\\\\.glm|drop1\\\\.lm|drop1\\\\.mlm|dsignrank|dt|dummy\\\\.coef|dummy\\\\.coef.aovlist|dummy\\\\.coef.lm|dunif|dweibull|dwilcox|ecdf|eff\\\\.aovlist|effects|effects\\\\.glm|effects\\\\.lm|embed|end|end\\\\.default|estVar|estVar\\\\.mlm|estVar\\\\.SSD|expand\\\\.model.frame|extractAIC|extractAIC\\\\.aov|extractAIC\\\\.coxph|extractAIC\\\\.glm|extractAIC\\\\.lm|extractAIC\\\\.negbin|extractAIC\\\\.survreg|factanal|factanal\\\\.fit.mle|factor\\\\.name|family|family\\\\.glm|family\\\\.lm|fft|filter|fisher\\\\.test|fitted|fitted\\\\.default|fitted\\\\.isoreg|fitted\\\\.kmeans|fitted\\\\.nls|fitted\\\\.smooth.spline|fitted\\\\.values|fivenum|fligner\\\\.test|fligner\\\\.test.default|fligner\\\\.test.formula|format_perc|format\\\\.dist|format\\\\.ftable|format\\\\.perc|formula|formula\\\\.character|formula\\\\.data.frame|formula\\\\.default|formula\\\\.formula|formula\\\\.glm|formula\\\\.lm|formula\\\\.nls|formula\\\\.terms|frequency|frequency\\\\.default|friedman\\\\.test|friedman\\\\.test.default|friedman\\\\.test.formula|ftable|ftable\\\\.default|ftable\\\\.formula|Gamma|gaussian|get_all_vars|getCall|getCall\\\\.default|getInitial|getInitial\\\\.default|getInitial\\\\.formula|getInitial\\\\.selfStart|glm|glm\\\\.control|glm\\\\.fit|hasTsp|hat|hatvalues|hatvalues\\\\.lm|hatvalues\\\\.smooth.spline|hclust|heatmap|HL|HoltWinters|hyman_filter|identify\\\\.hclust|influence|influence\\\\.glm|influence\\\\.lm|influence\\\\.measures|integrate|interaction\\\\.plot|inverse\\\\.gaussian|IQR|is\\\\.empty.model|is\\\\.leaf|is\\\\.mts|is\\\\.stepfun|is\\\\.ts|is\\\\.tskernel|isoreg|KalmanForecast|KalmanLike|KalmanRun|KalmanSmooth|kernapply|kernapply\\\\.default|kernapply\\\\.ts|kernapply\\\\.tskernel|kernapply\\\\.vector|kernel|kmeans|knots|knots\\\\.stepfun|kruskal\\\\.test|kruskal\\\\.test.default|kruskal\\\\.test.formula|ks\\\\.test|ksmooth|labels\\\\.dendrogram|labels\\\\.dist|labels\\\\.lm|labels\\\\.terms|lag|lag\\\\.default|lag\\\\.plot|line|lines\\\\.isoreg|lines\\\\.stepfun|lines\\\\.ts|lm|lm\\\\.fit|lm\\\\.influence|lm\\\\.wfit|loadings|loess|loess\\\\.control|loess\\\\.smooth|logLik|logLik\\\\.Arima|logLik\\\\.glm|logLik\\\\.lm|logLik\\\\.logLik|logLik\\\\.nls|loglin|lowess|ls\\\\.diag|ls\\\\.print|lsfit|mad|mahalanobis|make\\\\.link|make\\\\.tables.aovproj|make\\\\.tables.aovprojlist|makeARIMA|makepredictcall|makepredictcall\\\\.default|makepredictcall\\\\.poly|manova|mantelhaen\\\\.test|mauchly\\\\.test|mauchly\\\\.test.mlm|mauchly\\\\.test.SSD|mcnemar\\\\.test|median|median\\\\.default|medpolish|merge\\\\.dendrogram|midcache\\\\.dendrogram|model\\\\.extract|model\\\\.frame|model\\\\.frame.aovlist|model\\\\.frame.default|model\\\\.frame.glm|model\\\\.frame.lm|model\\\\.matrix|model\\\\.matrix.default|model\\\\.matrix.lm|model\\\\.offset|model\\\\.response|model\\\\.tables|model\\\\.tables.aov|model\\\\.tables.aovlist|model\\\\.weights|monthplot|monthplot\\\\.default|monthplot\\\\.stl|monthplot\\\\.StructTS|monthplot\\\\.ts|mood\\\\.test|mood\\\\.test.default|mood\\\\.test.formula|mvfft|n\\\\.knots|na\\\\.action|na\\\\.action.default|na\\\\.contiguous|na\\\\.contiguous.default|na\\\\.exclude|na\\\\.exclude.data.frame|na\\\\.exclude.default|na\\\\.fail|na\\\\.fail.default|na\\\\.omit|na\\\\.omit.data.frame|na\\\\.omit.default|na\\\\.omit.ts|na\\\\.pass|napredict|napredict\\\\.default|napredict\\\\.exclude|naprint|naprint\\\\.default|naprint\\\\.exclude|naprint\\\\.omit|naresid|naresid\\\\.default|naresid\\\\.exclude|nextn|nleaves|nlm|nlminb|nls|nls_port_fit|nls\\\\.control|nlsModel|nlsModel\\\\.plinear|NLSstAsymptotic|NLSstAsymptotic\\\\.sortedXyData|NLSstClosestX|NLSstClosestX\\\\.sortedXyData|NLSstLfAsymptote|NLSstLfAsymptote\\\\.sortedXyData|NLSstRtAsymptote|NLSstRtAsymptote\\\\.sortedXyData|nobs|nobs\\\\.default|nobs\\\\.dendrogram|nobs\\\\.glm|nobs\\\\.lm|nobs\\\\.logLik|nobs\\\\.nls|numericDeriv|offset|oneway\\\\.test|Ops\\\\.ts|optim|optimHess|optimise|optimize|order\\\\.dendrogram|p\\\\.adjust|pacf|pacf\\\\.default|pairwise\\\\.prop.test|pairwise\\\\.t.test|pairwise\\\\.table|pairwise\\\\.wilcox.test|pbeta|pbinom|pbirthday|pcauchy|pchisq|pexp|pf|pgamma|pgeom|phyper|Pillai|plclust|plnorm|plogis|plot\\\\.acf|plot\\\\.decomposed.ts|plot\\\\.dendrogram|plot\\\\.density|plot\\\\.ecdf|plot\\\\.hclust|plot\\\\.HoltWinters|plot\\\\.isoreg|plot\\\\.lm|plot\\\\.medpolish|plot\\\\.mlm|plot\\\\.ppr|plot\\\\.prcomp|plot\\\\.princomp|plot\\\\.profile.nls|plot\\\\.spec|plot\\\\.spec.coherency|plot\\\\.spec.phase|plot\\\\.stepfun|plot\\\\.stl|plot\\\\.ts|plot\\\\.tskernel|plot\\\\.TukeyHSD|plotNode|plotNodeLimit|pnbinom|pnorm|pointwise|poisson|poisson\\\\.test|poly|polym|port_get_named_v|port_msg|power|power\\\\.anova.test|power\\\\.prop.test|power\\\\.t.test|PP\\\\.test|ppoints|ppois|ppr|ppr\\\\.default|ppr\\\\.formula|prcomp|prcomp\\\\.default|prcomp\\\\.formula|predict|predict\\\\.ar|predict\\\\.Arima|predict\\\\.arima0|predict\\\\.glm|predict\\\\.HoltWinters|predict\\\\.lm|predict\\\\.loess|predict\\\\.mlm|predict\\\\.nls|predict\\\\.poly|predict\\\\.ppr|predict\\\\.prcomp|predict\\\\.princomp|predict\\\\.smooth.spline|predict\\\\.smooth.spline.fit|predict\\\\.StructTS|predLoess|preplot|princomp|princomp\\\\.default|princomp\\\\.formula|print\\\\.acf|print\\\\.anova|print\\\\.aov|print\\\\.aovlist|print\\\\.ar|print\\\\.Arima|print\\\\.arima0|print\\\\.dendrogram|print\\\\.density|print\\\\.dist|print\\\\.dummy_coef|print\\\\.dummy_coef_list|print\\\\.ecdf|print\\\\.factanal|print\\\\.family|print\\\\.formula|print\\\\.ftable|print\\\\.glm|print\\\\.hclust|print\\\\.HoltWinters|print\\\\.htest|print\\\\.infl|print\\\\.integrate|print\\\\.isoreg|print\\\\.kmeans|print\\\\.lm|print\\\\.loadings|print\\\\.loess|print\\\\.logLik|print\\\\.medpolish|print\\\\.mtable|print\\\\.nls|print\\\\.pairwise.htest|print\\\\.power.htest|print\\\\.ppr|print\\\\.prcomp|print\\\\.princomp|print\\\\.smooth.spline|print\\\\.stepfun|print\\\\.stl|print\\\\.StructTS|print\\\\.summary.aov|print\\\\.summary.aovlist|print\\\\.summary.ecdf|print\\\\.summary.glm|print\\\\.summary.lm|print\\\\.summary.loess|print\\\\.summary.manova|print\\\\.summary.nls|print\\\\.summary.ppr|print\\\\.summary.prcomp|print\\\\.summary.princomp|print\\\\.tables_aov|print\\\\.terms|print\\\\.ts|print\\\\.tskernel|print\\\\.TukeyHSD|print\\\\.tukeyline|print\\\\.tukeysmooth|print\\\\.xtabs|printCoefmat|profile|profile\\\\.nls|profiler|profiler\\\\.nls|proj|proj\\\\.aov|proj\\\\.aovlist|proj\\\\.default|proj\\\\.lm|proj\\\\.matrix|promax|prop\\\\.test|prop\\\\.trend.test|psignrank|pt|ptukey|punif|pweibull|pwilcox|qbeta|qbinom|qbirthday|qcauchy|qchisq|qexp|qf|qgamma|qgeom|qhyper|qlnorm|qlogis|qnbinom|qnorm|qpois|qqline|qqnorm|qqnorm\\\\.default|qqplot|qr\\\\.lm|qsignrank|qt|qtukey|quade\\\\.test|quade\\\\.test.default|quade\\\\.test.formula|quantile|quantile\\\\.default|quantile\\\\.ecdf|quantile\\\\.POSIXt|quasi|quasibinomial|quasipoisson|qunif|qweibull|qwilcox|r2dtable|Rank|rbeta|rbinom|rcauchy|rchisq|read\\\\.ftable|rect\\\\.hclust|reformulate|regularize\\\\.values|relevel|relevel\\\\.default|relevel\\\\.factor|relevel\\\\.ordered|reorder|reorder\\\\.default|reorder\\\\.dendrogram|replications|reshape|resid|residuals|residuals\\\\.default|residuals\\\\.glm|residuals\\\\.HoltWinters|residuals\\\\.isoreg|residuals\\\\.lm|residuals\\\\.nls|residuals\\\\.smooth.spline|residuals\\\\.tukeyline|rev\\\\.dendrogram|rexp|rf|rgamma|rgeom|rhyper|rlnorm|rlogis|rmultinom|rnbinom|rnorm|Roy|rpois|rsignrank|rstandard|rstandard\\\\.glm|rstandard\\\\.lm|rstudent|rstudent\\\\.glm|rstudent\\\\.lm|rt|runif|runmed|rweibull|rwilcox|rWishart|safe_pchisq|safe_pf|scatter\\\\.smooth|screeplot|screeplot\\\\.default|sd|se\\\\.aov|se\\\\.aovlist|se\\\\.contrast|se\\\\.contrast.aov|se\\\\.contrast.aovlist|selfStart|selfStart\\\\.default|selfStart\\\\.formula|setNames|shapiro\\\\.test|sigma|sigma\\\\.default|sigma\\\\.mlm|simpleLoess|simulate|simulate\\\\.lm|smooth|smooth\\\\.spline|smoothEnds|sortedXyData|sortedXyData\\\\.default|spec\\\\.ar|spec\\\\.pgram|spec\\\\.taper|spectrum|sphericity|spl_coef_conv|spline|splinefun|splinefunH|splinefunH0|SSasymp|SSasympOff|SSasympOrig|SSbiexp|SSD|SSD\\\\.mlm|SSfol|SSfpl|SSgompertz|SSlogis|SSmicmen|SSweibull|start|start\\\\.default|stat\\\\.anova|step|stepfun|stl|str\\\\.dendrogram|str\\\\.logLik|StructTS|summary\\\\.aov|summary\\\\.aovlist|summary\\\\.ecdf|summary\\\\.glm|summary\\\\.infl|summary\\\\.lm|summary\\\\.loess|summary\\\\.manova|summary\\\\.mlm|summary\\\\.nls|summary\\\\.ppr|summary\\\\.prcomp|summary\\\\.princomp|summary\\\\.stepfun|summary\\\\.stl|summary\\\\.tukeysmooth|supsmu|symnum|t\\\\.test|t\\\\.test.default|t\\\\.test.formula|t\\\\.ts|termplot|terms|terms\\\\.aovlist|terms\\\\.default|terms\\\\.formula|terms\\\\.terms|Thin\\\\.col|Thin\\\\.row|time|time\\\\.default|time\\\\.ts|toeplitz|Tr|ts|ts\\\\.intersect|ts\\\\.plot|ts\\\\.union|tsdiag|tsdiag\\\\.Arima|tsdiag\\\\.arima0|tsdiag\\\\.StructTS|tsp|tsSmooth|tsSmooth\\\\.StructTS|TukeyHSD|TukeyHSD\\\\.aov|uniroot|update|update\\\\.default|update\\\\.formula|var|var\\\\.test|var\\\\.test.default|var\\\\.test.formula|variable\\\\.names|variable\\\\.names.default|variable\\\\.names.lm|varimax|vcov|vcov\\\\.Arima|vcov\\\\.glm|vcov\\\\.lm|vcov\\\\.mlm|vcov\\\\.nls|vcov\\\\.summary.glm|vcov\\\\.summary.lm|weighted\\\\.mean|weighted\\\\.mean.Date|weighted\\\\.mean.default|weighted\\\\.mean.difftime|weighted\\\\.mean.POSIXct|weighted\\\\.mean.POSIXlt|weighted\\\\.residuals|weights|weights\\\\.default|weights\\\\.glm|weights\\\\.nls|wilcox\\\\.test|wilcox\\\\.test.default|wilcox\\\\.test.formula|Wilks|window|window\\\\.default|window\\\\.ts|write\\\\.ftable|xtabs)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(adist|alarm|apropos|aregexec|argNames|argsAnywhere|as\\\\.bibentry|as\\\\.bibentry.bibentry|as\\\\.bibentry.citation|as\\\\.character.person|as\\\\.character.roman|as\\\\.person|as\\\\.person.default|as\\\\.personList|as\\\\.personList.default|as\\\\.personList.person|as\\\\.relistable|as\\\\.roman|aspell|aspell_find_dictionaries|aspell_find_program|aspell_inspect_context|aspell_package|aspell_package_C_files|aspell_package_description|aspell_package_pot_files|aspell_package_R_files|aspell_package_Rd_files|aspell_package_vignettes|aspell_R_C_files|aspell_R_manuals|aspell_R_R_files|aspell_R_Rd_files|aspell_R_vignettes|aspell_write_personal_dictionary_file|assignInMyNamespace|assignInNamespace|attachedPackageCompletions|available\\\\.packages|bibentry|blank_out_ignores_in_lines|blank_out_regexp_matches|browseEnv|browseURL|browseVignettes|bug\\\\.report|bug\\\\.report.info|c\\\\.bibentry|c\\\\.person|capture\\\\.output|changedFiles|check_for_XQuartz|checkCRAN|chooseBioCmirror|chooseCRANmirror|citation|cite|citeNatbib|citEntry|citFooter|citHeader|close\\\\.socket|close\\\\.txtProgressBar|combn|compareVersion|contrib\\\\.url|correctFilenameToken|count\\\\.fields|CRAN\\\\.packages|create\\\\.post|data|data\\\\.entry|dataentry|de|de\\\\.ncols|de\\\\.restore|de\\\\.setup|debugcall|debugger|defaultUserAgent|demo|download\\\\.file|download\\\\.packages|dump\\\\.frames|edit|edit\\\\.data.frame|edit\\\\.default|edit\\\\.matrix|edit\\\\.vignette|emacs|example|expr2token|file_test|file\\\\.edit|fileCompletionPreferred|fileCompletions|fileSnapshot|filter_packages_by_depends_predicates|find|find_files_in_directories|findExactMatches|findFuzzyMatches|findGeneric|findLineNum|findMatches|fix|fixInNamespace|flush\\\\.console|fnLineNum|format\\\\.aspell|format\\\\.bibentry|format\\\\.citation|format\\\\.news_db|format\\\\.object_size|format\\\\.person|format\\\\.roman|formatOL|formatUL|functionArgs|fuzzyApropos|get_parse_data_for_message_strings|getAnywhere|getCRANmirrors|getDependencies|getFromNamespace|getIsFirstArg|getKnownS3generics|getParseData|getParseText|getRcode|getRcode\\\\.vignette|getS3method|getSrcDirectory|getSrcfile|getSrcFilename|getSrcLocation|getSrcref|getTxtProgressBar|glob2rx|globalVariables|hasName|head|head\\\\.data.frame|head\\\\.default|head\\\\.ftable|head\\\\.function|head\\\\.matrix|head\\\\.table|help|help\\\\.request|help\\\\.search|help\\\\.start|helpCompletions|history|hsearch_db|hsearch_db_concepts|hsearch_db_keywords|index\\\\.search|inFunction|install\\\\.packages|installed\\\\.packages|is\\\\.relistable|isBasePkg|isInsideQuotes|isS3method|isS3stdGeneric|keywordCompletions|limitedLabels|loadedPackageCompletions|loadhistory|localeToCharset|ls\\\\.str|lsf\\\\.str|maintainer|make_sysdata_rda|make\\\\.packages.html|make\\\\.socket|makeRegexpSafe|makeRweaveLatexCodeRunner|makeUserAgent|matchAvailableTopics|memory\\\\.limit|memory\\\\.size|menu|merge_demo_index|merge_vignette_index|methods|mirror2html|modifyList|new\\\\.packages|news|normalCompletions|nsl|object\\\\.size|offline_help_helper|old\\\\.packages|Ops\\\\.roman|package\\\\.skeleton|packageDescription|packageName|packageStatus|packageVersion|page|person|personList|pico|print\\\\.aspell|print\\\\.aspell_inspect_context|print\\\\.bibentry|print\\\\.Bibtex|print\\\\.browseVignettes|print\\\\.changedFiles|print\\\\.citation|print\\\\.fileSnapshot|print\\\\.findLineNumResult|print\\\\.getAnywhere|print\\\\.help_files_with_topic|print\\\\.hsearch|print\\\\.hsearch_db|print\\\\.Latex|print\\\\.ls_str|print\\\\.MethodsFunction|print\\\\.news_db|print\\\\.object_size|print\\\\.packageDescription|print\\\\.packageIQR|print\\\\.packageStatus|print\\\\.person|print\\\\.roman|print\\\\.sessionInfo|print\\\\.socket|print\\\\.summary.packageStatus|print\\\\.vignette|printhsearchInternal|process\\\\.events|prompt|prompt\\\\.data.frame|prompt\\\\.default|promptData|promptImport|promptPackage|rc\\\\.getOption|rc\\\\.options|rc\\\\.settings|rc\\\\.status|read\\\\.csv|read\\\\.csv2|read\\\\.delim|read\\\\.delim2|read\\\\.DIF|read\\\\.fortran|read\\\\.fwf|read\\\\.socket|read\\\\.table|readCitationFile|recover|registerNames|regquote|relist|relist\\\\.default|relist\\\\.factor|relist\\\\.list|relist\\\\.matrix|remove\\\\.packages|removeSource|rep\\\\.bibentry|rep\\\\.roman|resolvePkgType|Rprof|Rprof_memory_summary|Rprofmem|RShowDoc|RSiteSearch|rtags|rtags\\\\.file|Rtangle|RtangleFinish|RtangleRuncode|RtangleSetup|RtangleWritedoc|RweaveChunkPrefix|RweaveEvalWithOpt|RweaveLatex|RweaveLatexFinish|RweaveLatexOptions|RweaveLatexRuncode|RweaveLatexSetup|RweaveLatexWritedoc|RweaveTryStop|savehistory|select\\\\.list|sessionInfo|setBreakpoint|setIsFirstArg|setRepositories|setTxtProgressBar|shorten\\\\.to.string|simplifyRepos|sort\\\\.bibentry|specialCompletions|specialFunctionArgs|specialOpCompletionsHelper|specialOpLocs|stack|stack\\\\.data.frame|stack\\\\.default|Stangle|str|str\\\\.data.frame|str\\\\.Date|str\\\\.default|str\\\\.POSIXt|strcapture|strextract|strOptions|substr_with_tabs|summary\\\\.aspell|summary\\\\.packageStatus|summaryRprof|suppressForeignCheck|Sweave|SweaveGetSyntax|SweaveHooks|SweaveParseOptions|SweaveReadFile|SweaveSyntConv|tail|tail\\\\.data.frame|tail\\\\.default|tail\\\\.ftable|tail\\\\.function|tail\\\\.matrix|tail\\\\.table|tar|timestamp|toBibtex|toBibtex\\\\.bibentry|toBibtex\\\\.person|toLatex|toLatex\\\\.sessionInfo|topicName|txtProgressBar|type\\\\.convert|undebugcall|unique\\\\.bibentry|unlist\\\\.relistable|unstack|unstack\\\\.data.frame|unstack\\\\.default|untar|untar2|unzip|update\\\\.packages|update\\\\.packageStatus|upgrade|upgrade\\\\.packageStatus|url\\\\.show|URLdecode|URLencode|vi|View|vignette|write\\\\.csv|write\\\\.csv2|write\\\\.etags|write\\\\.socket|write\\\\.table|wsbrowser|xedit|xemacs|zip)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/raku.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/perl.tmbundle/blob/master/Syntaxes/Perl%206.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/perl.tmbundle/commit/d9841a0878239fa43f88c640f8d458590f97e8f5\",\n  \"name\": \"raku\",\n  \"scopeName\": \"source.perl.6\",\n  \"patterns\": [\n    {\n      \"begin\": \"^=begin\",\n      \"end\": \"^=end\",\n      \"name\": \"comment.block.perl\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.perl\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.perl\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.perl\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.perl.6\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.class.perl.6\"\n        }\n      },\n      \"match\": \"(class|enum|grammar|knowhow|module|package|role|slang|subset)(\\\\s+)(((?:::|')?(?:([a-zA-Z_\\\\x{C0}-\\\\x{FF}\\\\$])([a-zA-Z0-9_\\\\x{C0}-\\\\x{FF}\\\\\\\\$]|[\\\\-'][a-zA-Z0-9_\\\\x{C0}-\\\\x{FF}\\\\$])*))+)\",\n      \"name\": \"meta.class.perl.6\"\n    },\n    {\n      \"begin\": \"(?<=\\\\s)'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.single.perl\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\['\\\\\\\\]\",\n          \"name\": \"constant.character.escape.perl\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.double.perl\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[abtnfre\\\"\\\\\\\\]\",\n          \"name\": \"constant.character.escape.perl\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"q(q|to|heredoc)*\\\\s*:?(q|to|heredoc)*\\\\s*/(.+)/\",\n      \"end\": \"\\\\3\",\n      \"name\": \"string.quoted.single.heredoc.perl\"\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*{{\",\n      \"end\": \"}}\",\n      \"name\": \"string.quoted.double.heredoc.brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_brace_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\\(\\\\(\",\n      \"end\": \"\\\\)\\\\)\",\n      \"name\": \"string.quoted.double.heredoc.paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_paren_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\\[\\\\[\",\n      \"end\": \"\\\\]\\\\]\",\n      \"name\": \"string.quoted.double.heredoc.bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_bracket_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*{\",\n      \"end\": \"}\",\n      \"name\": \"string.quoted.single.heredoc.brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_brace_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*/\",\n      \"end\": \"/\",\n      \"name\": \"string.quoted.single.heredoc.slash.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_slash_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"string.quoted.single.heredoc.paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_paren_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\\[\",\n      \"end\": \"\\\\]\",\n      \"name\": \"string.quoted.single.heredoc.bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_bracket_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.heredoc.single.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_single_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.single.heredoc.double.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_double_string_content\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b\\\\$\\\\w+\\\\b\",\n      \"name\": \"variable.other.perl\"\n    },\n    {\n      \"match\": \"\\\\b(macro|sub|submethod|method|multi|proto|only|rule|token|regex|category)\\\\b\",\n      \"name\": \"storage.type.declare.routine.perl\"\n    },\n    {\n      \"match\": \"\\\\b(self)\\\\b\",\n      \"name\": \"variable.language.perl\"\n    },\n    {\n      \"match\": \"\\\\b(use|require)\\\\b\",\n      \"name\": \"keyword.other.include.perl\"\n    },\n    {\n      \"match\": \"\\\\b(if|else|elsif|unless)\\\\b\",\n      \"name\": \"keyword.control.conditional.perl\"\n    },\n    {\n      \"match\": \"\\\\b(let|my|our|state|temp|has|constant)\\\\b\",\n      \"name\": \"storage.type.variable.perl\"\n    },\n    {\n      \"match\": \"\\\\b(for|loop|repeat|while|until|gather|given)\\\\b\",\n      \"name\": \"keyword.control.repeat.perl\"\n    },\n    {\n      \"match\": \"\\\\b(take|do|when|next|last|redo|return|contend|maybe|defer|default|exit|make|continue|break|goto|leave|async|lift)\\\\b\",\n      \"name\": \"keyword.control.flowcontrol.perl\"\n    },\n    {\n      \"match\": \"\\\\b(is|as|but|trusts|of|returns|handles|where|augment|supersede)\\\\b\",\n      \"name\": \"storage.modifier.type.constraints.perl\"\n    },\n    {\n      \"match\": \"\\\\b(BEGIN|CHECK|INIT|START|FIRST|ENTER|LEAVE|KEEP|UNDO|NEXT|LAST|PRE|POST|END|CATCH|CONTROL|TEMP)\\\\b\",\n      \"name\": \"meta.function.perl\"\n    },\n    {\n      \"match\": \"\\\\b(die|fail|try|warn)\\\\b\",\n      \"name\": \"keyword.control.control-handlers.perl\"\n    },\n    {\n      \"match\": \"\\\\b(prec|irs|ofs|ors|export|deep|binary|unary|reparsed|rw|parsed|cached|readonly|defequiv|will|ref|copy|inline|tighter|looser|equiv|assoc|required)\\\\b\",\n      \"name\": \"storage.modifier.perl\"\n    },\n    {\n      \"match\": \"\\\\b(NaN|Inf)\\\\b\",\n      \"name\": \"constant.numeric.perl\"\n    },\n    {\n      \"match\": \"\\\\b(oo|fatal)\\\\b\",\n      \"name\": \"keyword.other.pragma.perl\"\n    },\n    {\n      \"match\": \"\\\\b(Object|Any|Junction|Whatever|Capture|MatchSignature|Proxy|Matcher|Package|Module|ClassGrammar|Scalar|Array|Hash|KeyHash|KeySet|KeyBagPair|List|Seq|Range|Set|Bag|Mapping|Void|UndefFailure|Exception|Code|Block|Routine|Sub|MacroMethod|Submethod|Regex|Str|str|Blob|Char|ByteCodepoint|Grapheme|StrPos|StrLen|Version|NumComplex|num|complex|Bit|bit|bool|True|FalseIncreasing|Decreasing|Ordered|Callable|AnyCharPositional|Associative|Ordering|KeyExtractorComparator|OrderingPair|IO|KitchenSink|RoleInt|int|int1|int2|int4|int8|int16|int32|int64Rat|rat|rat1|rat2|rat4|rat8|rat16|rat32|rat64Buf|buf|buf1|buf2|buf4|buf8|buf16|buf32|buf64UInt|uint|uint1|uint2|uint4|uint8|uint16|uint32uint64|Abstraction|utf8|utf16|utf32)\\\\b\",\n      \"name\": \"support.type.perl6\"\n    },\n    {\n      \"match\": \"\\\\b(div|xx|x|mod|also|leg|cmp|before|after|eq|ne|le|lt|not|gt|ge|eqv|ff|fff|and|andthen|or|xor|orelse|extra|lcm|gcd)\\\\b\",\n      \"name\": \"keyword.operator.perl\"\n    },\n    {\n      \"match\": \"(\\\\$|@|%|&)(\\\\*|:|!|\\\\^|~|=|\\\\?|(<(?=.+>)))?([a-zA-Z_\\\\x{C0}-\\\\x{FF}\\\\$])([a-zA-Z0-9_\\\\x{C0}-\\\\x{FF}\\\\$]|[\\\\-'][a-zA-Z0-9_\\\\x{C0}-\\\\x{FF}\\\\$])*\",\n      \"name\": \"variable.other.identifier.perl.6\"\n    },\n    {\n      \"match\": \"\\\\b(eager|hyper|substr|index|rindex|grep|map|sort|join|lines|hints|chmod|split|reduce|min|max|reverse|truncate|zip|cat|roundrobin|classify|first|sum|keys|values|pairs|defined|delete|exists|elems|end|kv|any|all|one|wrap|shape|key|value|name|pop|push|shift|splice|unshift|floor|ceiling|abs|exp|log|log10|rand|sign|sqrt|sin|cos|tan|round|strand|roots|cis|unpolar|polar|atan2|pick|chop|p5chop|chomp|p5chomp|lc|lcfirst|uc|ucfirst|capitalize|normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars|nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead|nothing|want|bless|chr|ord|gmtime|time|eof|localtime|gethost|getpw|chroot|getlogin|getpeername|kill|fork|wait|perl|graphs|codes|bytes|clone|print|open|read|write|readline|say|seek|close|opendir|readdir|slurp|spurt|shell|run|pos|fmt|vec|link|unlink|symlink|uniq|pair|asin|atan|sec|cosec|cotan|asec|acosec|acotan|sinh|cosh|tanh|asinh|done|acos|acosh|atanh|sech|cosech|cotanh|sech|acosech|acotanh|asech|ok|nok|plan_ok|dies_ok|lives_ok|skip|todo|pass|flunk|force_todo|use_ok|isa_ok|diag|is_deeply|isnt|like|skip_rest|unlike|cmp_ok|eval_dies_ok|nok_error|eval_lives_ok|approx|is_approx|throws_ok|version_lt|plan|EVAL|succ|pred|times|nonce|once|signature|new|connect|operator|undef|undefine|sleep|from|to|infix|postfix|prefix|circumfix|postcircumfix|minmax|lazy|count|unwrap|getc|pi|e|context|void|quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity|assuming|rewind|callwith|callsame|nextwith|nextsame|attr|eval_elsewhere|none|srand|trim|trim_start|trim_end|lastcall|WHAT|WHERE|HOW|WHICH|VAR|WHO|WHENCE|ACCEPTS|REJECTS|not|true|iterator|by|re|im|invert|flip|gist|flat|tree|is-prime|throws_like|trans)\\\\b\",\n      \"name\": \"support.function.perl\"\n    }\n  ],\n  \"repository\": {\n    \"qq_brace_string_content\": {\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_brace_string_content\"\n        }\n      ]\n    },\n    \"qq_bracket_string_content\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_bracket_string_content\"\n        }\n      ]\n    },\n    \"qq_double_string_content\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_double_string_content\"\n        }\n      ]\n    },\n    \"qq_paren_string_content\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_paren_string_content\"\n        }\n      ]\n    },\n    \"qq_single_string_content\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_single_string_content\"\n        }\n      ]\n    },\n    \"qq_slash_string_content\": {\n      \"begin\": \"\\\\\\\\/\",\n      \"end\": \"\\\\\\\\/\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_slash_string_content\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/razor.tmLanguage.json",
    "content": "{\n  \"name\": \"razor\",\n  \"scopeName\": \"text.aspnetcorerazor\",\n  \"fileTypes\": [\"razor\", \"cshtml\"],\n  \"patterns\": [\n    {\n      \"include\": \"#razor-control-structures\"\n    },\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"razor-control-structures\": {\n      \"patterns\": [\n        {\n          \"include\": \"#razor-comment\"\n        },\n        {\n          \"include\": \"#razor-codeblock\"\n        },\n        {\n          \"include\": \"#explicit-razor-expression\"\n        },\n        {\n          \"include\": \"#escaped-transition\"\n        },\n        {\n          \"include\": \"#directives\"\n        },\n        {\n          \"include\": \"#transitioned-csharp-control-structures\"\n        },\n        {\n          \"include\": \"#implicit-expression\"\n        }\n      ]\n    },\n    \"escaped-transition\": {\n      \"name\": \"constant.character.escape.razor.transition\",\n      \"match\": \"@@\"\n    },\n    \"transition\": {\n      \"match\": \"@\",\n      \"name\": \"keyword.control.cshtml.transition\"\n    },\n    \"razor-codeblock\": {\n      \"name\": \"meta.structure.razor.codeblock\",\n      \"begin\": \"(@)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.open\"\n        }\n      },\n      \"contentName\": \"source.cs\",\n      \"patterns\": [\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.close\"\n        }\n      }\n    },\n    \"razor-codeblock-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#text-tag\"\n        },\n        {\n          \"include\": \"#wellformed-html\"\n        },\n        {\n          \"include\": \"#razor-single-line-markup\"\n        },\n        {\n          \"include\": \"#razor-control-structures\"\n        },\n        {\n          \"include\": \"source.cs\"\n        }\n      ]\n    },\n    \"razor-single-line-markup\": {\n      \"match\": \"(\\\\@\\\\:)([^$]*)$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.singleLineMarkup\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#razor-control-structures\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      }\n    },\n    \"text-tag\": {\n      \"begin\": \"(<text\\\\s*>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.cshtml.transition.textTag.open\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#wellformed-html\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ],\n      \"end\": \"(</text>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.cshtml.transition.textTag.close\"\n        }\n      }\n    },\n    \"razor-comment\": {\n      \"name\": \"meta.comment.razor\",\n      \"begin\": \"(@)(\\\\*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.comment.star\"\n        }\n      },\n      \"contentName\": \"comment.block.razor\",\n      \"end\": \"(\\\\*)(@)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.comment.star\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        }\n      }\n    },\n    \"wellformed-html\": {\n      \"patterns\": [\n        {\n          \"include\": \"#void-tag\"\n        },\n        {\n          \"include\": \"#non-void-tag\"\n        }\n      ]\n    },\n    \"void-tag\": {\n      \"name\": \"meta.tag.structure.$3.void.html\",\n      \"begin\": \"(?i)(<)(!)?(area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)(?=\\\\s|/?>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"constant.character.escape.razor.tagHelperOptOut\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.html.basic#attribute\"\n        }\n      ],\n      \"end\": \"/?>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      }\n    },\n    \"non-void-tag\": {\n      \"begin\": \"(?=<(!)?([^/\\\\s>]+)(\\\\s|/?>))\",\n      \"end\": \"(</)(\\\\2)\\\\s*(>)|(/>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)(!)?([^/\\\\s>]+)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"constant.character.escape.razor.tagHelperOptOut\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"(?=/?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#razor-control-structures\"\n            },\n            {\n              \"include\": \"text.html.basic#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \">\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</)\",\n          \"patterns\": [\n            {\n              \"include\": \"#wellformed-html\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"explicit-razor-expression\": {\n      \"name\": \"meta.expression.explicit.cshtml\",\n      \"begin\": \"(@)\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.cshtml\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#expression\"\n        }\n      ],\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.cshtml\"\n        }\n      }\n    },\n    \"implicit-expression\": {\n      \"name\": \"meta.expression.implicit.cshtml\",\n      \"contentName\": \"source.cs\",\n      \"begin\": \"(?<![[:alpha:][:alnum:]])(@)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#await-prefix\"\n        },\n        {\n          \"include\": \"#implicit-expression-body\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#implicit-expression-invocation-start\"\n        },\n        {\n          \"include\": \"#implicit-expression-accessor-start\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-invocation-start\": {\n      \"begin\": \"([_[:alpha:]][_[:alnum:]]*)(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#implicit-expression-continuation\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-accessor-start\": {\n      \"begin\": \"([_[:alpha:]][_[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.object.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#implicit-expression-continuation\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-continuation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#balanced-parenthesis-csharp\"\n        },\n        {\n          \"include\": \"#balanced-brackets-csharp\"\n        },\n        {\n          \"include\": \"#implicit-expression-invocation\"\n        },\n        {\n          \"include\": \"#implicit-expression-accessor\"\n        },\n        {\n          \"include\": \"#implicit-expression-extension\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-accessor\": {\n      \"match\": \"(?<=\\\\.)[_[:alpha:]][_[:alnum:]]*\",\n      \"name\": \"variable.other.object.property.cs\"\n    },\n    \"implicit-expression-invocation\": {\n      \"match\": \"(?<=\\\\.)[_[:alpha:]][_[:alnum:]]*(?=\\\\()\",\n      \"name\": \"entity.name.function.cs\"\n    },\n    \"implicit-expression-operator\": {\n      \"patterns\": [\n        {\n          \"include\": \"#implicit-expression-dot-operator\"\n        },\n        {\n          \"include\": \"#implicit-expression-null-conditional-operator\"\n        },\n        {\n          \"include\": \"#implicit-expression-null-forgiveness-operator\"\n        }\n      ]\n    },\n    \"implicit-expression-dot-operator\": {\n      \"match\": \"(\\\\.)(?=[_[:alpha:]][_[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.cs\"\n        }\n      }\n    },\n    \"implicit-expression-null-conditional-operator\": {\n      \"match\": \"(\\\\?)(?=[.\\\\[])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.null-conditional.cs\"\n        }\n      }\n    },\n    \"implicit-expression-null-forgiveness-operator\": {\n      \"match\": \"(\\\\!)(?=(?:\\\\.[_[:alpha:]][_[:alnum:]]*)|\\\\?|[\\\\[\\\\(])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.logical.cs\"\n        }\n      }\n    },\n    \"balanced-parenthesis-csharp\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"name\": \"razor.test.balanced.parenthesis\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cs\"\n        }\n      ],\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      }\n    },\n    \"balanced-brackets-csharp\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        }\n      },\n      \"name\": \"razor.test.balanced.brackets\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cs\"\n        }\n      ],\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      }\n    },\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"include\": \"#code-directive\"\n        },\n        {\n          \"include\": \"#functions-directive\"\n        },\n        {\n          \"include\": \"#page-directive\"\n        },\n        {\n          \"include\": \"#addTagHelper-directive\"\n        },\n        {\n          \"include\": \"#removeTagHelper-directive\"\n        },\n        {\n          \"include\": \"#tagHelperPrefix-directive\"\n        },\n        {\n          \"include\": \"#model-directive\"\n        },\n        {\n          \"include\": \"#inherits-directive\"\n        },\n        {\n          \"include\": \"#implements-directive\"\n        },\n        {\n          \"include\": \"#namespace-directive\"\n        },\n        {\n          \"include\": \"#inject-directive\"\n        },\n        {\n          \"include\": \"#attribute-directive\"\n        },\n        {\n          \"include\": \"#section-directive\"\n        },\n        {\n          \"include\": \"#layout-directive\"\n        },\n        {\n          \"include\": \"#using-directive\"\n        }\n      ]\n    },\n    \"code-directive\": {\n      \"begin\": \"(@)(code)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.code\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#directive-codeblock\"\n        }\n      ],\n      \"end\": \"(?<=})|\\\\s\"\n    },\n    \"functions-directive\": {\n      \"begin\": \"(@)(functions)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.functions\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#directive-codeblock\"\n        }\n      ],\n      \"end\": \"(?<=})|\\\\s\"\n    },\n    \"directive-codeblock\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.open\"\n        }\n      },\n      \"name\": \"meta.structure.razor.directive.codeblock\",\n      \"contentName\": \"source.cs\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cs\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.close\"\n        }\n      }\n    },\n    \"page-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(page)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.page\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#string-literal\"\n            }\n          ]\n        }\n      }\n    },\n    \"addTagHelper-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(addTagHelper)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.addTagHelper\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tagHelper-directive-argument\"\n            }\n          ]\n        }\n      }\n    },\n    \"removeTagHelper-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(removeTagHelper)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.removeTagHelper\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tagHelper-directive-argument\"\n            }\n          ]\n        }\n      }\n    },\n    \"tagHelperPrefix-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(tagHelperPrefix)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.tagHelperPrefix\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tagHelper-directive-argument\"\n            }\n          ]\n        }\n      }\n    },\n    \"tagHelper-directive-argument\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#string-literal\"\n        },\n        {\n          \"include\": \"#unquoted-string-argument\"\n        }\n      ]\n    },\n    \"unquoted-string-argument\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"match\": \"[^$]+\"\n    },\n    \"model-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(model)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.model\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"inherits-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(inherits)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.inherits\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"implements-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(implements)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.implements\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"layout-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(layout)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.layout\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"namespace-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(namespace)\\\\s+([^\\\\s]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.namespace\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#namespace-directive-argument\"\n            }\n          ]\n        }\n      }\n    },\n    \"namespace-directive-argument\": {\n      \"match\": \"([_[:alpha:]][_[:alnum:]]*)(\\\\.)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.namespace.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.cs\"\n        }\n      }\n    },\n    \"inject-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(inject)\\\\s*([\\\\S\\\\s]+?)?\\\\s*([_[:alpha:]][_[:alnum:]]*)?\\\\s*(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.inject\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.variable.property.cs\"\n        }\n      }\n    },\n    \"attribute-directive\": {\n      \"name\": \"meta.directive\",\n      \"begin\": \"(@)(attribute)\\\\b\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.attribute\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#attribute-section\"\n        }\n      ],\n      \"end\": \"(?<=\\\\])|$\"\n    },\n    \"section-directive\": {\n      \"name\": \"meta.directive.block\",\n      \"begin\": \"(@)(section)\\\\b\\\\s+([_[:alpha:]][_[:alnum:]]*)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.section\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.razor.directive.sectionName\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#directive-markupblock\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"directive-markupblock\": {\n      \"name\": \"meta.structure.razor.directive.markblock\",\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.open\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.close\"\n        }\n      }\n    },\n    \"using-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(using)\\\\b\\\\s+(?!\\\\(|\\\\s)(.+?)?(;)?$\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.using.cs\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#using-static-directive\"\n            },\n            {\n              \"include\": \"#using-alias-directive\"\n            },\n            {\n              \"include\": \"#using-standard-directive\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"keyword.control.razor.optionalSemicolon\"\n        }\n      }\n    },\n    \"using-static-directive\": {\n      \"match\": \"(static)\\\\b\\\\s+(.+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.static.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"using-alias-directive\": {\n      \"match\": \"([_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*(=)\\\\s*(.+)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.alias.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.assignment.cs\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"using-standard-directive\": {\n      \"match\": \"([_[:alpha:]][_[:alnum:]]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.namespace.cs\"\n        }\n      }\n    },\n    \"transitioned-csharp-control-structures\": {\n      \"patterns\": [\n        {\n          \"include\": \"#using-statement\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"include\": \"#else-part\"\n        },\n        {\n          \"include\": \"#foreach-statement\"\n        },\n        {\n          \"include\": \"#for-statement\"\n        },\n        {\n          \"include\": \"#while-statement\"\n        },\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#lock-statement\"\n        },\n        {\n          \"include\": \"#do-statement\"\n        },\n        {\n          \"include\": \"#try-statement\"\n        }\n      ]\n    },\n    \"using-statement\": {\n      \"name\": \"meta.statement.using.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(using)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.using.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"if-statement\": {\n      \"name\": \"meta.statement.if.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(if)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.conditional.if.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"else-part\": {\n      \"name\": \"meta.statement.else.razor\",\n      \"begin\": \"(?:^|(?<=}))\\\\s*(else)\\\\b\\\\s*?(?: (if))?\\\\s*?(?=[\\\\n\\\\(\\\\{])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.else.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.conditional.if.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"for-statement\": {\n      \"name\": \"meta.statement.for.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(for)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.loop.for.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"foreach-statement\": {\n      \"name\": \"meta.statement.foreach.razor\",\n      \"begin\": \"(?:^\\\\s*|(@)(await\\\\s+)?)(foreach)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#await-prefix\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.loop.foreach.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#foreach-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"foreach-condition\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?:\\n  (\\\\bvar\\\\b)|\\n  (?<type-name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s+\\n\\\\b(in)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.var.cs\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cs#type\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"entity.name.variable.local.cs\"\n            },\n            \"8\": {\n              \"name\": \"keyword.control.loop.in.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) # match foreach (var (x, y) in ...)\\n(?:\\\\b(var)\\\\b\\\\s*)?\\n(?<tuple>\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s+\\n\\\\b(in)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.var.cs\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cs#tuple-declaration-deconstruction-element-list\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.control.loop.in.cs\"\n            }\n          }\n        },\n        {\n          \"include\": \"source.cs#expression\"\n        }\n      ]\n    },\n    \"do-statement\": {\n      \"name\": \"meta.statement.do.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(do)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.loop.do.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"while-statement\": {\n      \"name\": \"meta.statement.while.razor\",\n      \"begin\": \"(?:(@)|^\\\\s*|(?<=})\\\\s*)(while)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.loop.while.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})|(;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cs\"\n        }\n      }\n    },\n    \"switch-statement\": {\n      \"name\": \"meta.statement.switch.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(switch)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.switch.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#switch-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"switch-code-block\": {\n      \"name\": \"meta.structure.razor.csharp.codeblock.switch\",\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#switch-label\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      }\n    },\n    \"lock-statement\": {\n      \"name\": \"meta.statement.lock.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(lock)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.lock.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"try-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#try-block\"\n        },\n        {\n          \"include\": \"#catch-clause\"\n        },\n        {\n          \"include\": \"#finally-clause\"\n        }\n      ]\n    },\n    \"try-block\": {\n      \"name\": \"meta.statement.try.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(try)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.try.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"catch-clause\": {\n      \"name\": \"meta.statement.catch.razor\",\n      \"begin\": \"(?:^|(?<=}))\\\\s*(catch)\\\\b\\\\s*?(?=[\\\\n\\\\(\\\\{])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.catch.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#catch-condition\"\n        },\n        {\n          \"include\": \"source.cs#when-clause\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"catch-condition\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(?:(\\\\g<identifier>)\\\\b)?\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cs#type\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"entity.name.variable.local.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"finally-clause\": {\n      \"name\": \"meta.statement.finally.razor\",\n      \"begin\": \"(?:^|(?<=}))\\\\s*(finally)\\\\b\\\\s*?(?=[\\\\n\\\\{])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.finally.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"await-prefix\": {\n      \"name\": \"keyword.other.await.cs\",\n      \"match\": \"(await)\\\\s+\"\n    },\n    \"csharp-code-block\": {\n      \"name\": \"meta.structure.razor.csharp.codeblock\",\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      }\n    },\n    \"csharp-condition\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#local-variable-declaration\"\n        },\n        {\n          \"include\": \"source.cs#expression\"\n        },\n        {\n          \"include\": \"source.cs#punctuation-comma\"\n        },\n        {\n          \"include\": \"source.cs#punctuation-semicolon\"\n        }\n      ],\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/rdoc.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.rdoc\",\n  \"fileTypes\": [\"rdoc\"],\n  \"patterns\": [\n    {\n      \"match\": \"^\\\\s*(•).*$\\\\n?\",\n      \"name\": \"meta.bullet-point.strong.text\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.item.text\" } }\n    },\n    {\n      \"match\": \"^\\\\s*(·).*$\\\\n?\",\n      \"name\": \"meta.bullet-point.light.text\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.item.text\" } }\n    },\n    {\n      \"match\": \"^\\\\s*(\\\\*).*$\\\\n?\",\n      \"name\": \"meta.bullet-point.star.text\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.item.text\" } }\n    },\n    {\n      \"begin\": \"^([ \\\\t]*)(?=\\\\S)\",\n      \"end\": \"^(?!\\\\1(?=\\\\S))\",\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t( (https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt)://|mailto:)\\n\\t\\t\\t\\t\\t\\t[-:@a-zA-Z0-9_.,~%+/?=&#]+(?<![.,?:])\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"markup.underline.link.text\"\n        }\n      ],\n      \"contentName\": \"meta.paragraph.text\"\n    }\n  ],\n  \"name\": \"RDoc\",\n  \"uuid\": \"753B331D-F00D-435B-A7F5-3E6D311438D0\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/red.tmLanguage.json",
    "content": "{\n  \"name\": \"Red\",\n  \"scopeName\": \"source.red\",\n  \"uuid\": \"6BE0E13B-C4DD-478F-953A-2D84DBBCA2BA\",\n  \"fileTypes\": [\"red\", \"reds\"],\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#type-literal\"\n    },\n    {\n      \"include\": \"#logic\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#values\"\n    },\n    {\n      \"include\": \"#words\"\n    },\n    {\n      \"include\": \"#errors\"\n    }\n  ],\n  \"repository\": {\n    \"binary-base-sixty-four\": {\n      \"begin\": \"64#\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"string.other.base64.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-line\"\n        },\n        {\n          \"match\": \"[\\\\w+/=]+\",\n          \"name\": \"constant.character.base64.red\"\n        }\n      ]\n    },\n    \"binary-base-two\": {\n      \"begin\": \"2#\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"string.other.base2.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-line\"\n        },\n        {\n          \"match\": \"[01]+\",\n          \"name\": \"constant.character.base2.red\"\n        }\n      ]\n    },\n    \"binary-base-sixteen\": {\n      \"begin\": \"(16)?#\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"string.other.base16.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-line\"\n        },\n        {\n          \"match\": \"\\\\h+\",\n          \"name\": \"constant.character.base16.red\"\n        }\n      ]\n    },\n    \"block-blocks\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.red\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.red\"\n        }\n      },\n      \"name\": \"meta.group.block.red\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"block-parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"meta.group.paren.red\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"blocks\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-blocks\"\n        },\n        {\n          \"include\": \"#block-parens\"\n        }\n      ]\n    },\n    \"character\": {\n      \"begin\": \"#\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.character.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#character-inline\"\n        },\n        {\n          \"match\": \"[^\\\"^]\",\n          \"name\": \"string.character.red\"\n        }\n      ]\n    },\n    \"character-html\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.entity.html\"\n        }\n      },\n      \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n      \"name\": \"constant.character.entity.html\"\n    },\n    \"character-inline\": {\n      \"match\": \"\\\\^(\\\\((\\\\h{2,4}|[a-zA-Z]{3,6})\\\\)|.)\",\n      \"name\": \"constant.character.red\"\n    },\n    \"comment-line\": {\n      \"match\": \";([^%\\\\n]|%(?!>))*\",\n      \"name\": \"comment.line.semicolon.red\"\n    },\n    \"comment-multiline-block\": {\n      \"begin\": \"comment\\\\s*\\\\[\",\n      \"end\": \"\\\\]\",\n      \"name\": \"comment.block.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-multiline-block-nested\"\n        }\n      ]\n    },\n    \"comment-multiline-block-nested\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"name\": \"comment.block.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-multiline-block-nested\"\n        }\n      ]\n    },\n    \"comment-multiline-string\": {\n      \"begin\": \"comment\\\\s*\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"comment.block.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-multiline-string-nested\"\n        }\n      ]\n    },\n    \"comment-multiline-string-nested\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"comment.block.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-multiline-string-nested\"\n        }\n      ]\n    },\n    \"comment-tag\": {\n      \"begin\": \"(?<=^|[\\\\s\\\\[\\\\]()}\\\"])<!--\",\n      \"end\": \"-->\",\n      \"name\": \"comment.block.tag.red\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-shebang\"\n        },\n        {\n          \"include\": \"#comment-line\"\n        },\n        {\n          \"include\": \"#comment-multiline-string\"\n        },\n        {\n          \"include\": \"#comment-multiline-block\"\n        },\n        {\n          \"include\": \"#comment-tag\"\n        }\n      ]\n    },\n    \"comments-shebang\": {\n      \"match\": \"^#!/.*red.*\",\n      \"name\": \"comment.line.shebang.red\"\n    },\n    \"error-commas\": {\n      \"match\": \",\",\n      \"name\": \"invalid.illegal.comma.red\"\n    },\n    \"errors\": {\n      \"patterns\": [\n        {\n          \"include\": \"#error-commas\"\n        }\n      ]\n    },\n    \"logic\": {\n      \"match\": \"#\\\\[(true|false|none)\\\\]\",\n      \"name\": \"constant.language.logic.red\"\n    },\n    \"string-email\": {\n      \"match\": \"[^\\\\s\\\\n:/\\\\[\\\\]()]+@[^\\\\s\\\\n:/\\\\[\\\\]()]+\",\n      \"name\": \"string.email.red\"\n    },\n    \"string-rawstring\": {\n      \"begin\": \"(%+)\\\\{\",\n      \"end\": \"\\\\}\\\\1\",\n      \"name\": \"string.other.red\"\n    },\n    \"string-file\": {\n      \"match\": \"%[^\\\\s\\\\n\\\\[\\\\](){}]*\",\n      \"name\": \"string.other.file.red\"\n    },\n    \"string-file-quoted\": {\n      \"begin\": \"%\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.other.file.red\",\n      \"patterns\": [\n        {\n          \"match\": \"%\\\\h{2}\",\n          \"name\": \"constant.character.hex.red\"\n        }\n      ]\n    },\n    \"string-issue\": {\n      \"match\": \"#[^\\\\s\\\\n\\\\[\\\\]()]*\",\n      \"name\": \"string.other.issue.red\"\n    },\n    \"string-ref\": {\n      \"match\": \"(?<=^|[\\\\s()\\\\[\\\\]}/])@[^\\\\s\\\\n\\\\[\\\\](){}]+\",\n      \"name\": \"string.other.tag.red\"\n    },\n    \"string-multiline\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"string.other.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-rsp-tag\"\n        },\n        {\n          \"include\": \"#character-inline\"\n        },\n        {\n          \"include\": \"#character-html\"\n        },\n        {\n          \"include\": \"#string-nested-multiline\"\n        }\n      ]\n    },\n    \"string-nested-multiline\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"string.other.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-nested-multiline\"\n        }\n      ]\n    },\n    \"string-quoted\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-rsp-tag\"\n        },\n        {\n          \"include\": \"#character-inline\"\n        },\n        {\n          \"include\": \"#character-html\"\n        }\n      ]\n    },\n    \"string-rsp-tag\": {\n      \"begin\": \"<%(==?|:|!)? \",\n      \"end\": \" %>\",\n      \"name\": \"source.red.embedded.block.html\",\n      \"patterns\": [\n        {\n          \"include\": \"source.red\"\n        }\n      ]\n    },\n    \"string-tag\": {\n      \"begin\": \"<(?:/|%={0,2} |!)?(?:([\\\\w\\\\-]+):)?([\\\\w\\\\-:]+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.namespace.xml\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.xml\"\n        }\n      },\n      \"end\": \"(?:\\\\s/| %)?>\",\n      \"name\": \"meta.tag.red\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.namespace.xml\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.xml\"\n            }\n          },\n          \"match\": \" (?:([\\\\w-]+):)?([\\\\w-]+)\"\n        },\n        {\n          \"include\": \"#string-tag-double-quoted\"\n        },\n        {\n          \"include\": \"#string-tag-single-quoted\"\n        }\n      ]\n    },\n    \"string-tag-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.xml\"\n    },\n    \"string-tag-single-quoted\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.xml\"\n    },\n    \"string-url\": {\n      \"match\": \"[A-Za-z][\\\\w-]{1,15}:(/{0,3}[^\\\\s\\\\n\\\\[\\\\]()]+|//)\",\n      \"name\": \"string.other.url.red\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#character\"\n        },\n        {\n          \"include\": \"#string-quoted\"\n        },\n        {\n          \"include\": \"#string-rawstring\"\n        },\n        {\n          \"include\": \"#string-multiline\"\n        },\n        {\n          \"include\": \"#string-tag\"\n        },\n        {\n          \"include\": \"#string-file-quoted\"\n        },\n        {\n          \"include\": \"#string-file\"\n        },\n        {\n          \"include\": \"#string-url\"\n        },\n        {\n          \"include\": \"#string-email\"\n        },\n        {\n          \"include\": \"#binary-base-two\"\n        },\n        {\n          \"include\": \"#binary-base-sixty-four\"\n        },\n        {\n          \"include\": \"#binary-base-sixteen\"\n        },\n        {\n          \"include\": \"#string-issue\"\n        },\n        {\n          \"include\": \"#string-ref\"\n        }\n      ]\n    },\n    \"type-literal\": {\n      \"begin\": \"#\\\\[(?:([\\\\w\\\\-]+!))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.datatype.red\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"name\": \"meta.literal.red\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"value-date\": {\n      \"match\": \"\\\\d{1,4}\\\\-(Jan(u(a(ry?)?)?)?|Feb(r(u(a(ry?)?)?)?)?|Mar(ch?)?|Apr(il?)?|May|June?|July?|Aug(u(st?)?)?|Sep(t(e(m(b(er?)?)?)?)?)?|Oct(o(b(er?)?)?)?|Nov(e(m(b(er?)?)?)?)?|Dec(e(m(b(er?)?)?)?)?|[1-9]|1[012])\\\\-\\\\d{1,4}(/\\\\d{1,2}[:]\\\\d{1,2}([:]\\\\d{1,2}(\\\\.\\\\d{1,5})?)?([+-]\\\\d{1,2}[:]\\\\d{1,2})?)?\",\n      \"name\": \"constant.other.date.red\"\n    },\n    \"value-money\": {\n      \"match\": \"(?<!\\\\w)-?[a-zA-Z]*\\\\$\\\\d+(\\\\.\\\\d{2})?\",\n      \"name\": \"constant.numeric.money.red\"\n    },\n    \"value-number\": {\n      \"match\": \"(?<![\\\\w.,])([-+]?((\\\\d+[\\\\d']*[.,]?[\\\\d']*)|([.,]\\\\d+[\\\\d']*))([eE](\\\\+|-)?\\\\d+)?)(?=\\\\W)\",\n      \"name\": \"constant.numeric.red\"\n    },\n    \"value-hex\": {\n      \"match\": \"(?<!\\\\w)[0-9A-F]+[0-9A-F]*h(?=[\\\\s\\\\[\\\\](){\\\"]|$)\",\n      \"name\": \"constant.numeric.hex.red\"\n    },\n    \"value-pair\": {\n      \"match\": \"(?<!\\\\w)[-+]?\\\\d+[xX][-+]?\\\\d+\",\n      \"name\": \"constant.numeric.pair.red\"\n    },\n    \"value-time\": {\n      \"match\": \"[+-]?\\\\d+:\\\\d+(:\\\\d+(\\\\.\\\\d+)?)?\",\n      \"name\": \"constant.numeric.time.red\"\n    },\n    \"value-tuple\": {\n      \"match\": \"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){2,9}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.?\",\n      \"name\": \"constant.rgb-value.red\"\n    },\n    \"values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#value-date\"\n        },\n        {\n          \"include\": \"#value-time\"\n        },\n        {\n          \"include\": \"#value-tuple\"\n        },\n        {\n          \"include\": \"#value-number\"\n        },\n        {\n          \"include\": \"#value-hex\"\n        },\n        {\n          \"include\": \"#value-pair\"\n        },\n        {\n          \"include\": \"#value-money\"\n        }\n      ]\n    },\n    \"word-datatype\": {\n      \"match\": \"(?<=^|[\\\\s\\\\[\\\\]()}\\\"/])[A-Za-z_=\\\\-?!*+\\\\.`~&^][\\\\w=\\\\-?!*+\\\\.`~&'^]*(/([A-Za-z_=\\\\-?!*+\\\\.`~&^][\\\\w=\\\\-!?*+\\\\.`~&'^]*|[+-]?\\\\d+([xX][+-]?\\\\d+|[.,]\\\\d+([eE][+-]?\\\\d+)?)?))*\\\\!\",\n      \"name\": \"storage.type.cs.red\"\n    },\n    \"word-set\": {\n      \"match\": \"[A-Za-z_=\\\\-?!*+\\\\.`~&^][\\\\w=\\\\-?!*+\\\\.`~&'^]*(/([A-Za-z_=\\\\-?!*+\\\\.`~&^][\\\\w=\\\\-?!*+\\\\.`~&'^]*|[+-]?\\\\d+([xX][+-]?\\\\d+|[.,]\\\\d+([eE][+-]?\\\\d+)?)?))*:\",\n      \"name\": \"variable.name.red\"\n    },\n    \"word-get\": {\n      \"match\": \":[A-Za-z_=\\\\-?!*+\\\\.`~&^][\\\\w=\\\\-?!*+\\\\.`~&'^]*(/([A-Za-z_=\\\\-?!*+\\\\.`~&^][\\\\w=\\\\-?!*+\\\\.`~&'^]*|[+-]?\\\\d+([xX][+-]?\\\\d+|[.,]\\\\d+([eE][+-]?\\\\d+)?)?)*)*\",\n      \"name\": \"variable.other.getword.red\"\n    },\n    \"word-header\": {\n      \"match\": \"(?<=^\\\\[|^)(Red|Red(/System)?)(?=\\\\s*\\\\[)\",\n      \"name\": \"keyword.control.header.red\"\n    },\n    \"word-lit\": {\n      \"match\": \"(?<=^|[\\\\s\\\\[\\\\]()}\\\"/])'[A-Za-z_=\\\\-?!*+\\\\.`~&^][\\\\w=\\\\-?!*+\\\\.`~&'^]*(/([A-Za-z_=\\\\-?!*+\\\\.`~&^][\\\\w=\\\\-?!*+\\\\.`~&'^]*|[+-]?\\\\d+([xX][+-]?\\\\d+|[.,]\\\\d+([eE][+-]?\\\\d+)?)?))*\",\n      \"name\": \"constant.other.litword.red\"\n    },\n    \"word-native\": {\n      \"match\": \"(?<=^|[\\\\s\\\\[\\\\]()}\\\"])(datatype!|unset!|none!|logic!|block!|paren!|string!|file!|url!|char!|integer!|float!|word!|set-word!|lit-word!|get-word!|refinement!|issue!|native!|action!|op!|function!|path!|lit-path!|set-path!|get-path!|routine!|bitset!|point!|object!|typeset!|error!|vector!|hash!|pair!|percent!|tuple!|map!|binary!|series!|time!|tag!|email!|handle!|date!|image!|to|not|remove|while|collect|any|copy|insert|if|quote|set|case|change|clear|move|poke|put|random|reverse|sort|swap|take|trim|uppercase|lowercase|checksum|add|subtract|divide|on-parse-event|try|catch|multiply|browse|throw|math|event!|make|any-type!|return|reflect|form|mold|all|modify|absolute|number!|negate|power|remainder|round|even\\\\?|odd\\\\?|and~|complement|or~|xor~|append|at|back|any-object!|find|skip|last|tail|head|head\\\\?|index\\\\?|any-word!|length\\\\?|next|pick|scalar!|any-string!|select|any-function!|tail\\\\?|delete|query|read|source|as|write|unless|either|until|loop|repeat|forever|foreach|forall|remove-each|func|function|does|has|switch|do|expand|reduce|any-block!|compose|get|print|prin|equal\\\\?|not-equal\\\\?|strict-equal\\\\?|lesser\\\\?|greater\\\\?|lesser-or-equal\\\\?|greater-or-equal\\\\?|same\\\\?|type\\\\?|stats|show|bind|context|in|object|parse|input|union|unique|intersect|difference|exclude|complement\\\\?|dehex|negative\\\\?|positive\\\\?|max|min|shift|to-hex|sine|cosine|tangent|arcsine|arccosine|arctangent|arctangent2|NaN\\\\?|zero\\\\?|log-2|log-10|log-e|exp|square-root|construct|value\\\\?|as-pair|break|continue|exit|extend|debase|enbase|to-local-file|wait|unset|new-line|any-list!|new-line\\\\?|context\\\\?|set-env|get-env|list-env|now|sign\\\\?|any-path!|call|size\\\\?|decompress|recycle|transcode|on|off|quit|\\\\+|no|last-lf\\\\?|get-current-dir|dir|set-current-dir|make-dir|<|true|<>|%|<<|or|null|cause-error|view|unview|error\\\\?|quit-return|=|none|immediate!|all-word!|none\\\\?|any-block\\\\?|system|any-list\\\\?|word\\\\?|char\\\\?|tag\\\\?|any-string\\\\?|block\\\\?|series\\\\?|binary\\\\?|\\\\*|/|attempt|p-indent|newline|url\\\\?|string\\\\?|suffix\\\\?|file\\\\?|object\\\\?|body-of|yes|first|second|third|-|>|mod|<=|slash|clean-path|dir\\\\?|exists\\\\?|normalize-dir|empty\\\\?|dirize|create-dir|dbl-quote|to-red-file|space|offset\\\\?|what-dir|expand-directives|load|Red|split-path|change-dir|path-thru|save|load-thru|sum|to-local-date|false|float\\\\?|>=|charset|\\\\?|lf|tab|set-quiet|repend|set-word\\\\?|q|stop-reactor|words-of|replace|react|function\\\\?|spec-of|unset\\\\?|rebol|halt|op\\\\?|any-function\\\\?|to-paren|routine|as-color|as-rgba|\\\\*\\\\*|class-of|face!|rich-text|size-text|hex-to-rgb|tuple\\\\?|make-face|gui-console-ctx|debug-info\\\\?|find-flag\\\\?|draw|handle\\\\?|link-tabs-to-parent|link-sub-to-parent|on-face-deep-change\\\\*|update-font-faces|do-actor|do-safe|event\\\\?|do-events|white|font-fixed|font-sans-serif|font-serif|transparent|pair\\\\?|font!|foreach-face|cancel-captions|CR|LF|CRLF|pad|issue\\\\?|para!|alter|path\\\\?|typeset\\\\?|datatype\\\\?|set-flag|layout|extract|image\\\\?|rtd-layout|get-word\\\\?|to-logic|to-set-word|//|to-block|center-face|dump-face|scroller!|request-font|request-file|request-dir|rejoin|dot|ellipsize-at|any-object\\\\?|map\\\\?|keys-of|a-an|also|help-string|what|routine\\\\?|os-info|to-UTC-date|escape|ask|list-dir|probe|action\\\\?|native\\\\?|refinement\\\\?|to-word|comma|get-scroller|caret-to-offset|offset-to-caret|write-clipboard|read-clipboard|integer\\\\?|red-complete-ctx|highlight|to-string|fstk-logo|gray|shift-right|shift-left|shift-logical|as-ipv4|write-stdout|sp|crlf|pi|internal!|external!|default!|aqua|beige|black|blue|brick|brown|coal|coffee|crimson|cyan|forest|gold|green|ivory|khaki|leaf|linen|magenta|maroon|mint|navy|oldrab|olive|orange|papaya|pewter|pink|purple|reblue|rebolor|sienna|silver|sky|snow|tanned|teal|violet|water|wheat|yello|yellow|glass|alert|comment|\\\\?\\\\?|fourth|fifth|values-of|bitset\\\\?|email\\\\?|get-path\\\\?|hash\\\\?|lit-path\\\\?|lit-word\\\\?|logic\\\\?|paren\\\\?|percent\\\\?|set-path\\\\?|time\\\\?|date\\\\?|vector\\\\?|any-path\\\\?|any-word\\\\?|number\\\\?|immediate\\\\?|scalar\\\\?|all-word\\\\?|to-bitset|to-binary|to-char|to-email|to-file|to-float|to-get-path|to-get-word|to-hash|to-integer|to-issue|to-lit-path|to-lit-word|to-map|to-none|to-pair|to-path|to-percent|to-refinement|to-set-path|to-tag|to-time|to-typeset|to-tuple|to-unset|to-url|to-image|to-date|parse-trace|modulo|eval-set-path|extract-boot-args|flip-exe-flag|split|do-file|exists-thru\\\\?|read-thru|do-thru|cos|sin|tan|acos|asin|atan|atan2|sqrt|average|==|=\\\\?|>>|>>>|and|xor|reactor!|deep-reactor!|clear-reactions|dump-reactions|is|react\\\\?|preprocessor|within\\\\?|overlap\\\\?|distance\\\\?|face\\\\?|offset-to-char|metrics\\\\?|insert-event-func|remove-event-func|set-focus|help-ctx|help|fetch-help|about|ls|ll|pwd|cd|red-complete-input|tips!|self)((?=/[A-Za-z_=\\\\-?!*+\\\\.`~&^])|(?=[\\\\s\\\\[\\\\](){\\\"]|$))\",\n      \"name\": \"storage.type.function.red\"\n    },\n    \"word-native-reds\": {\n      \"match\": \"(?<=^|[\\\\s\\\\[\\\\]()}\\\"])(\\\\?\\\\?|as|assert|size\\\\?|if|either|case|switch|until|while|loop|any|all|exit|return|break|continue|catch|declare|use|null|context|with|comment|true|false|func|function|alias)((?=/[A-Za-z_=\\\\-?!*+\\\\.`~&^])|(?=[\\\\s\\\\[\\\\](){\\\"]|$))\",\n      \"name\": \"storage.type.function.reds.red\"\n    },\n    \"word-parse\": {\n      \"match\": \"(?<=^|[\\\\s\\\\[\\\\]()}\\\"])(thru|some|opt|end|into|ahead|then|fail|keep)(?=[\\\\s\\\\[\\\\](){\\\"]|$)\",\n      \"name\": \"keyword.control.parse.red\"\n    },\n    \"word-qm\": {\n      \"match\": \"(?<=^|[\\\\s\\\\[\\\\]()}\\\"])(qm|route|render|redirect-to|publish|response|validate|verify|get-param|get-cookie|set-cookie|require)(/(?=[A-Za-z_=\\\\-?!*+\\\\.`~&^])|(?=[\\\\s\\\\[\\\\](){\\\"]))\",\n      \"name\": \"keyword.control.qm.red\"\n    },\n    \"word-refine\": {\n      \"match\": \"/([A-Za-z_=\\\\-?!*+\\\\.`~&^][\\\\w=\\\\-!?*\\\\.`~&'^]*|[+-]?\\\\d+([xX][+-]?\\\\d+|[.,]\\\\d+([eE][+-]?\\\\d+)?)?)\",\n      \"name\": \"constant.other.word.refinement.red\"\n    },\n    \"words\": {\n      \"name\": \"meta.word.red\",\n      \"patterns\": [\n        {\n          \"include\": \"#word-datatype\"\n        },\n        {\n          \"include\": \"#word-set\"\n        },\n        {\n          \"include\": \"#word-get\"\n        },\n        {\n          \"include\": \"#word-lit\"\n        },\n        {\n          \"include\": \"#word-header\"\n        },\n        {\n          \"include\": \"#word-native\"\n        },\n        {\n          \"include\": \"#word-native-reds\"\n        },\n        {\n          \"include\": \"#word-refine\"\n        },\n        {\n          \"include\": \"#word-parse\"\n        },\n        {\n          \"include\": \"#word-qm\"\n        },\n        {\n          \"include\": \"#word\"\n        }\n      ]\n    }\n  },\n  \"version\": \"https://github.com/yoyocat/red-vscode/commit/47c7f19488476299148785c1d39c32860abfaa5a\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/regexp-extended.tmLanguage.json",
    "content": "{\n  \"name\": \"Regular Expression (Extended)\",\n  \"scopeName\": \"source.regexp.extended\",\n  \"firstLineMatch\": \"^\\\\s*(?:/\\\\s*)?(\\\\(\\\\?\\\\^?[A-Za-wyz]*x[A-Za-z]*[-A-Za-wyz]*\\\\))\",\n  \"patterns\": [\n    {\n      \"include\": \"#main\"\n    }\n  ],\n  \"repository\": {\n    \"main\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"source.regexp#comment\"\n        },\n        {\n          \"include\": \"source.regexp#variable\"\n        },\n        {\n          \"include\": \"source.regexp#anchor\"\n        },\n        {\n          \"include\": \"source.regexp#escape\"\n        },\n        {\n          \"include\": \"source.regexp#wildcard\"\n        },\n        {\n          \"include\": \"source.regexp#alternation\"\n        },\n        {\n          \"include\": \"source.regexp#quantifier\"\n        },\n        {\n          \"include\": \"#assertion\"\n        },\n        {\n          \"include\": \"#conditional\"\n        },\n        {\n          \"include\": \"#group\"\n        },\n        {\n          \"include\": \"source.regexp#class\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"name\": \"comment.line.number-sign.regexp\",\n      \"begin\": \"#\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.regexp\"\n        }\n      }\n    },\n    \"injection\": {\n      \"begin\": \"(?:\\\\A|\\\\G)\\\\s*(?:/\\\\s*)?(\\\\(\\\\?\\\\^?[A-Za-wyz]*x[A-Za-z]*[-A-Za-wyz]*\\\\))\",\n      \"end\": \"(?=A)B\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#group\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.embedded.regexp.extended\",\n      \"patterns\": [\n        {\n          \"include\": \"source.regexp.extended\"\n        }\n      ]\n    },\n    \"calloutBrackets\": {\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.bracket.curly.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.bracket.curly.end.regexp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#calloutBrackets\"\n        },\n        {\n          \"include\": \"#main\"\n        }\n      ]\n    },\n    \"assertion\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.assertion.positive.look-ahead.regexp\",\n          \"begin\": \"\\\\(\\\\?=\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.assertion.negative.look-ahead.regexp\",\n          \"begin\": \"\\\\(\\\\?!\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.assertion.negative.look-behind.regexp\",\n          \"begin\": \"\\\\(\\\\?<!\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.assertion.positive.look-behind.regexp\",\n          \"begin\": \"\\\\(\\\\?<=\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        }\n      ]\n    },\n    \"conditional\": {\n      \"name\": \"meta.conditional.regexp\",\n      \"begin\": \"(\\\\()(\\\\?)(?=\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.condition.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.condition.end.regexp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.condition.if-else.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"include\": \"#assertion\"\n        },\n        {\n          \"name\": \"meta.condition.function-call.regexp\",\n          \"begin\": \"\\\\G\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.condition.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.condition.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\GDEFINE\",\n              \"name\": \"storage.type.function.subpattern.regexp\"\n            },\n            {\n              \"match\": \"\\\\Gassert\",\n              \"name\": \"keyword.other.assertion.regexp\"\n            },\n            {\n              \"match\": \"\\\\G(?:(<)([^>]+)(>)|(')([^>]+)('))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.group-reference.bracket.angle.begin.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.group.name.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.group-reference.bracket.angle.end.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.group-reference.quote.single.begin.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"entity.group.name.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.group-reference.quote.single.end.regexp\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\G(R(&))(\\\\w+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.recursion.specific.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.reference.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"entity.group.name.regexp\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\GR\\\\d+\",\n              \"name\": \"keyword.other.recursion.specific-group.regexp\"\n            },\n            {\n              \"match\": \"\\\\GR\",\n              \"name\": \"keyword.other.recursion.overall.regexp\"\n            },\n            {\n              \"match\": \"\\\\G\\\\d+\",\n              \"name\": \"keyword.other.reference.absolute.regexp\"\n            },\n            {\n              \"match\": \"\\\\G[-+]\\\\d+\",\n              \"name\": \"keyword.other.reference.relative.regexp\"\n            },\n            {\n              \"match\": \"\\\\G\\\\w+\",\n              \"name\": \"entity.group.name.regexp\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#main\"\n        }\n      ]\n    },\n    \"group\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.regexp#fixedGroups\"\n        },\n        {\n          \"name\": \"meta.group.named.regexp\",\n          \"begin\": \"\\\\(\\\\?(?=P?[<'])\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"contentName\": \"entity.group.name.regexp\",\n              \"begin\": \"\\\\G(P?)(<)\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.function.named-group.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.named-group.bracket.angle.begin.regexp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.named-group.bracket.angle.end.regexp\"\n                }\n              }\n            },\n            {\n              \"contentName\": \"entity.group.name.regexp\",\n              \"begin\": \"\\\\G'\",\n              \"end\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.named-group.quote.single.begin.regexp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.named-group.quote.single.end.regexp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.non-capturing.regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ],\n          \"begin\": \"(\\\\(\\\\?)((?:y{[\\\\w]+}|[-A-Za-z^])*)(:)\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.regexp#scopedModifiers\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group.atomic.regexp\",\n          \"begin\": \"\\\\(\\\\?>\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.script-run.regexp\",\n          \"begin\": \"(\\\\(\\\\*)((?:atomic_)?script_run|a?sr)(:)\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.verb.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.callout.contents.regexp\",\n          \"begin\": \"(\\\\(\\\\?{1,2})({)\",\n          \"end\": \"(?x)\\n(})                                    # Last closing bracket\\n((\\\\[)([_A-Za-z][_A-Za-z0-9]*)(\\\\]))?  # [tag]\\n(X|<|>)?                               # Callout direction\\n(?:[^\\\\)]*)                            # Silently skip unexpected characters\\n(\\\\))                                  # Closing bracket\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.regexp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.callout-tag.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.callout-tag.begin.regexp\"\n            },\n            \"4\": {\n              \"name\": \"callout-tag.constant.other.regexp\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.callout-tag.end.regexp\"\n            },\n            \"6\": {\n              \"name\": \"constant.language.callout-direction.regexp\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#calloutBrackets\"\n            },\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.callout.regexp\",\n          \"begin\": \"(?x)\\n(\\\\(\\\\*)\\n([_A-Za-z][_A-Za-z0-9]*)               # Name\\n((\\\\[)([_A-Za-z][_A-Za-z0-9]*)(\\\\]))?  # [tag]\\n({)\",\n          \"end\": \"(?x)\\n(})\\n(?:[^\\\\)]*)\\n(?:(\\\\))|(?=$))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.callout.regexp\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.callout-tag.regexp\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.callout-tag.begin.regexp\"\n            },\n            \"5\": {\n              \"name\": \"callout-tag.constant.other.regexp\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.callout-tag.end.regexp\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.arguments.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.end.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            },\n            {\n              \"name\": \"variable.parameter.argument.regexp\",\n              \"match\": \"[-\\\\w]+\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.absent-function.regexp\",\n          \"begin\": \"(\\\\()(\\\\?~)(\\\\|)\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.flow.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.delimiter.pipe.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.separator.delimiter.pipe.regexp\",\n              \"match\": \"\\\\|\"\n            },\n            {\n              \"name\": \"variable.parameter.argument.regexp\",\n              \"match\": \"[-\\\\w]+\"\n            },\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/regexp-javascript.tmLanguage.json",
    "content": "{\n  \"hideFromUser\": true,\n  \"fileTypes\": [],\n  \"repository\": {\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[wWsSdD]|\\\\.\",\n          \"name\": \"constant.character.character-class.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\([0-7]{3}|x\\\\h\\\\h|u\\\\h\\\\h\\\\h\\\\h)\",\n          \"name\": \"constant.character.numeric.regexp\"\n        },\n        { \"match\": \"\\\\\\\\c[A-Z]\", \"name\": \"constant.character.control.regexp\" },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.backslash.regexp\"\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\",\n          \"name\": \"keyword.control.anchor.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9]\\\\d*\",\n          \"name\": \"keyword.other.back-reference.regexp\"\n        },\n        {\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\",\n          \"name\": \"keyword.operator.quantifier.regexp\"\n        },\n        { \"match\": \"\\\\|\", \"name\": \"keyword.operator.or.regexp\" },\n        {\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!))\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.group.regexp\" }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [{ \"include\": \"#regexp\" }],\n          \"name\": \"meta.group.assertion.regexp\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.group.regexp\" },\n            \"3\": { \"name\": \"meta.assertion.look-ahead.regexp\" },\n            \"4\": { \"name\": \"meta.assertion.negative-look-ahead.regexp\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\((\\\\?:)?\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.group.regexp\" }\n          },\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"#regexp\" }],\n          \"name\": \"meta.group.regexp\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.group.regexp\" }\n          }\n        },\n        {\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.character-class.regexp\" }\n          },\n          \"end\": \"(\\\\])\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h\\\\h|u\\\\h\\\\h\\\\h\\\\h))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h\\\\h|u\\\\h\\\\h\\\\h\\\\h))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"name\": \"constant.other.character-class.range.regexp\",\n              \"captures\": {\n                \"3\": { \"name\": \"constant.character.escape.backslash.regexp\" },\n                \"1\": { \"name\": \"constant.character.numeric.regexp\" },\n                \"6\": { \"name\": \"constant.character.escape.backslash.regexp\" },\n                \"4\": { \"name\": \"constant.character.numeric.regexp\" },\n                \"2\": { \"name\": \"constant.character.control.regexp\" },\n                \"5\": { \"name\": \"constant.character.control.regexp\" }\n              }\n            },\n            { \"include\": \"#regex-character-class\" }\n          ],\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.character-class.regexp\" },\n            \"2\": { \"name\": \"keyword.operator.negation.regexp\" }\n          }\n        },\n        { \"include\": \"#regex-character-class\" }\n      ]\n    }\n  },\n  \"uuid\": \"AC8679DE-3AC7-4056-84F9-69A7ADC29DDD\",\n  \"patterns\": [{ \"include\": \"#regexp\" }],\n  \"name\": \"Regular Expressions (JavaScript)\",\n  \"scopeName\": \"source.js.regexp\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/regexp-posix.tmLanguage.json",
    "content": "{\n  \"name\": \"Regular Expression (POSIX - Extended)\",\n  \"scopeName\": \"source.regexp.posix\",\n  \"patterns\": [\n    {\n      \"include\": \"#main\"\n    }\n  ],\n  \"repository\": {\n    \"main\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.regexp#alternation\"\n        },\n        {\n          \"include\": \"source.regexp#wildcard\"\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#brackets\"\n        },\n        {\n          \"include\": \"#bound\"\n        },\n        {\n          \"include\": \"#anchor\"\n        },\n        {\n          \"include\": \"#group\"\n        }\n      ]\n    },\n    \"anchor\": {\n      \"match\": \"\\\\^|\\\\$\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp#anchor\"\n            }\n          ]\n        }\n      }\n    },\n    \"bound\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\{,\"\n        },\n        {\n          \"include\": \"source.regexp#quantifier\"\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.character-class.set.empty.regexp\",\n          \"match\": \"(\\\\[)(\\\\])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.set.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.character-class.set.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.character-class.set.regexp\",\n          \"begin\": \"\\\\[\",\n          \"end\": \"(?!\\\\G)-?\\\\]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.set.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.set.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G(\\\\^)(?:-|\\\\])?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.regexp#classInnards\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"include\": \"#charRange\"\n            },\n            {\n              \"include\": \"#localeClasses\"\n            }\n          ]\n        }\n      ]\n    },\n    \"charClass\": {\n      \"name\": \"constant.language.$2-char.character-class.regexp.posix\",\n      \"match\": \"(\\\\[:)(\\\\^?)(\\\\w+)(:\\\\])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.character-class.set.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.logical.not.regexp\"\n        },\n        \"3\": {\n          \"name\": \"support.constant.posix-class.regexp\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.character-class.set.end.regexp\"\n        }\n      }\n    },\n    \"charRange\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.illegal.range.ambiguous-endpoint.regexp\",\n          \"match\": \"(?<=[^-])-[^\\\\[\\\\]\\\\\\\\]\"\n        },\n        {\n          \"name\": \"(?:[^\\\\]\\\\\\\\]|(?<=\\\\]))(-)(?:[^\\\\[\\\\]\\\\\\\\]|(?=[^\\\\\\\\[\\\\]\\\\\\\\]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.range.dash.regexp\"\n            }\n          }\n        }\n      ]\n    },\n    \"collatingElement\": {\n      \"name\": \"constant.language.collating-element.regexp.posix\",\n      \"match\": \"(\\\\[\\\\.)(.*?)(\\\\.\\\\])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.collating-element.set.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.var.regexp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.collating-element.set.end.regexp\"\n        }\n      }\n    },\n    \"equivalenceClass\": {\n      \"name\": \"constant.language.posix.equivalence-class.regexp\",\n      \"match\": \"(\\\\[=)(.*?)(=\\\\])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.class.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.regexp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.class.end.regexp\"\n        }\n      }\n    },\n    \"escape\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escapeMeta\"\n        },\n        {\n          \"include\": \"#escapeOther\"\n        }\n      ]\n    },\n    \"escapeMeta\": {\n      \"name\": \"constant.character.escape.literal-metacharacter.regexp\",\n      \"match\": \"\\\\\\\\[.^\\\\[$\\\\(\\\\)|*+?{\\\\\\\\]\"\n    },\n    \"escapeOther\": {\n      \"name\": \"constant.character.escape.misc.regexp\",\n      \"match\": \"\\\\\\\\.\"\n    },\n    \"group\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.group.empty.regexp\",\n          \"match\": \"(\\\\()(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        }\n      ]\n    },\n    \"localeClasses\": {\n      \"patterns\": [\n        {\n          \"include\": \"#collatingElement\"\n        },\n        {\n          \"include\": \"#equivalenceClass\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/regexp-python.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/MagicStack/MagicPython/blob/master/grammars/MagicRegExp.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/MagicStack/MagicPython/commit/c9b3409deb69acec31bbf7913830e93a046b30cc\",\n  \"name\": \"MagicRegExp\",\n  \"scopeName\": \"source.regexp.python\",\n  \"patterns\": [\n    {\n      \"include\": \"#regexp-expression\"\n    }\n  ],\n  \"repository\": {\n    \"regexp-base-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-quantifier\"\n        },\n        {\n          \"include\": \"#regexp-base-common\"\n        }\n      ]\n    },\n    \"fregexp-base-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-quantifier\"\n        },\n        {\n          \"include\": \"#fstring-formatting-braces\"\n        },\n        {\n          \"match\": \"\\\\{.*?\\\\}\"\n        },\n        {\n          \"include\": \"#regexp-base-common\"\n        }\n      ]\n    },\n    \"fstring-formatting-braces\": {\n      \"patterns\": [\n        {\n          \"comment\": \"empty braces are illegal\",\n          \"match\": \"({)(\\\\s*?)(})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.character.format.placeholder.other.python\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.brace.python\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.format.placeholder.other.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.character.escape.python\",\n          \"match\": \"({{|}})\"\n        }\n      ]\n    },\n    \"regexp-base-common\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.other.match.any.regexp\",\n          \"match\": \"\\\\.\"\n        },\n        {\n          \"name\": \"support.other.match.begin.regexp\",\n          \"match\": \"\\\\^\"\n        },\n        {\n          \"name\": \"support.other.match.end.regexp\",\n          \"match\": \"\\\\$\"\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[+*?]\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.disjunction.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"include\": \"#regexp-escape-sequence\"\n        }\n      ]\n    },\n    \"regexp-quantifier\": {\n      \"name\": \"keyword.operator.quantifier.regexp\",\n      \"match\": \"(?x)\\n  \\\\{(\\n    \\\\d+ | \\\\d+,(\\\\d+)? | ,\\\\d+\\n  )\\\\}\\n\"\n    },\n    \"fregexp-quantifier\": {\n      \"name\": \"keyword.operator.quantifier.regexp\",\n      \"match\": \"(?x)\\n  \\\\{\\\\{(\\n    \\\\d+ | \\\\d+,(\\\\d+)? | ,\\\\d+\\n  )\\\\}\\\\}\\n\"\n    },\n    \"regexp-backreference-number\": {\n      \"name\": \"meta.backreference.regexp\",\n      \"match\": \"(\\\\\\\\[1-9]\\\\d?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.backreference.regexp\"\n        }\n      }\n    },\n    \"regexp-backreference\": {\n      \"name\": \"meta.backreference.named.regexp\",\n      \"match\": \"(?x)\\n  (\\\\()  (\\\\?P= \\\\w+(?:\\\\s+[[:alnum:]]+)?)  (\\\\))\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.backreference.regexp\"\n        },\n        \"3\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp\"\n        }\n      }\n    },\n    \"regexp-flags\": {\n      \"name\": \"storage.modifier.flag.regexp\",\n      \"match\": \"\\\\(\\\\?[aiLmsux]+\\\\)\"\n    },\n    \"regexp-escape-special\": {\n      \"name\": \"support.other.escape.special.regexp\",\n      \"match\": \"\\\\\\\\([AbBdDsSwWZ])\"\n    },\n    \"regexp-escape-character\": {\n      \"name\": \"constant.character.escape.regexp\",\n      \"match\": \"(?x)\\n  \\\\\\\\ (\\n        x[0-9A-Fa-f]{2}\\n        | 0[0-7]{1,2}\\n        | [0-7]{3}\\n     )\\n\"\n    },\n    \"regexp-escape-unicode\": {\n      \"name\": \"constant.character.unicode.regexp\",\n      \"match\": \"(?x)\\n  \\\\\\\\ (\\n        u[0-9A-Fa-f]{4}\\n        | U[0-9A-Fa-f]{8}\\n     )\\n\"\n    },\n    \"regexp-escape-catchall\": {\n      \"name\": \"constant.character.escape.regexp\",\n      \"match\": \"\\\\\\\\(.|\\\\n)\"\n    },\n    \"regexp-escape-sequence\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-escape-special\"\n        },\n        {\n          \"include\": \"#regexp-escape-character\"\n        },\n        {\n          \"include\": \"#regexp-escape-unicode\"\n        },\n        {\n          \"include\": \"#regexp-backreference-number\"\n        },\n        {\n          \"include\": \"#regexp-escape-catchall\"\n        }\n      ]\n    },\n    \"regexp-charecter-set-escapes\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.regexp\",\n          \"match\": \"\\\\\\\\[abfnrtv\\\\\\\\]\"\n        },\n        {\n          \"include\": \"#regexp-escape-special\"\n        },\n        {\n          \"name\": \"constant.character.escape.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{1,3})\"\n        },\n        {\n          \"include\": \"#regexp-escape-character\"\n        },\n        {\n          \"include\": \"#regexp-escape-unicode\"\n        },\n        {\n          \"include\": \"#regexp-escape-catchall\"\n        }\n      ]\n    },\n    \"codetags\": {\n      \"match\": \"(?:\\\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.codetag.notation.python\"\n        }\n      }\n    },\n    \"regexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-base-expression\"\n        },\n        {\n          \"include\": \"#regexp-character-set\"\n        },\n        {\n          \"include\": \"#regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#regexp-lookahead\"\n        },\n        {\n          \"include\": \"#regexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#regexp-lookbehind\"\n        },\n        {\n          \"include\": \"#regexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#regexp-conditional\"\n        },\n        {\n          \"include\": \"#regexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#regexp-parentheses\"\n        }\n      ]\n    },\n    \"regexp-character-set\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\[ \\\\^? \\\\] (?! .*?\\\\])\\n\"\n        },\n        {\n          \"name\": \"meta.character.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?(\\\\])?\",\n          \"end\": \"(\\\\])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.begin.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.set.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.end.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp-charecter-set-escapes\"\n            },\n            {\n              \"name\": \"constant.character.set.regexp\",\n              \"match\": \"[^\\\\n]\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-comments\": {\n      \"name\": \"comment.regexp\",\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.comment.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comment.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"regexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-expression\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/regexp.tmLanguage.json",
    "content": "{\n  \"name\": \"Regular Expression\",\n  \"scopeName\": \"source.regexp\",\n  \"fileTypes\": [\"regexp\", \"regex\"],\n  \"patterns\": [\n    {\n      \"include\": \"source.regexp.extended#injection\"\n    },\n    {\n      \"include\": \"source.sy#injection\"\n    },\n    {\n      \"include\": \"#main\"\n    }\n  ],\n  \"repository\": {\n    \"main\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#anchor\"\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#wildcard\"\n        },\n        {\n          \"include\": \"#alternation\"\n        },\n        {\n          \"include\": \"#quantifier\"\n        },\n        {\n          \"include\": \"#assertion\"\n        },\n        {\n          \"include\": \"#conditional\"\n        },\n        {\n          \"include\": \"#group\"\n        },\n        {\n          \"include\": \"#class\"\n        }\n      ]\n    },\n    \"alternation\": {\n      \"name\": \"keyword.operator.logical.or.regexp\",\n      \"match\": \"\\\\|\"\n    },\n    \"anchor\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\^\",\n          \"name\": \"keyword.control.anchor.line-start.regexp\"\n        },\n        {\n          \"match\": \"\\\\$\",\n          \"name\": \"keyword.control.anchor.line-end.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\A\",\n          \"name\": \"keyword.control.anchor.string-start.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\Z\",\n          \"name\": \"keyword.control.anchor.string-end-line.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\z\",\n          \"name\": \"keyword.control.anchor.string-end.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\G\",\n          \"name\": \"keyword.control.anchor.search-start.regexp\"\n        },\n        {\n          \"name\": \"meta.unicode-boundary.regexp\",\n          \"match\": \"(?:(\\\\\\\\b)|(\\\\\\\\B))(\\\\{)(\\\\w+)(})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.anchor.word-boundary.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.anchor.non-word-boundary.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.unicode-boundary.bracket.curly.begin.regexp\"\n            },\n            \"4\": {\n              \"name\": \"entity.property.name.regexp\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.unicode-boundary.bracket.curly.end.regexp\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\b\",\n          \"name\": \"keyword.control.anchor.word-boundary.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\B\",\n          \"name\": \"keyword.control.anchor.non-word-boundary.regexp\"\n        }\n      ]\n    },\n    \"assertion\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.assertion.positive.look-ahead.regexp\",\n          \"begin\": \"\\\\(\\\\?=\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.assertion.negative.look-ahead.regexp\",\n          \"begin\": \"\\\\(\\\\?!\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.assertion.negative.look-behind.regexp\",\n          \"begin\": \"\\\\(\\\\?<!\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.assertion.positive.look-behind.regexp\",\n          \"begin\": \"\\\\(\\\\?<=\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.assertion.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        }\n      ]\n    },\n    \"calloutBrackets\": {\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.bracket.curly.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.bracket.curly.end.regexp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#calloutBrackets\"\n        },\n        {\n          \"include\": \"#main\"\n        }\n      ]\n    },\n    \"class\": {\n      \"name\": \"meta.character-class.set.regexp\",\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.character-class.set.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.character-class.set.end.regexp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#classInnards\"\n        }\n      ]\n    },\n    \"classInnards\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.logical.not.regexp\",\n          \"match\": \"\\\\G\\\\^\"\n        },\n        {\n          \"name\": \"constant.character.escape.backspace.regexp\",\n          \"match\": \"\\\\\\\\b\"\n        },\n        {\n          \"begin\": \"(&&)(\\\\[)\",\n          \"end\": \"\\\\]\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.intersect.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.character-class.set.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.set.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#classInnards\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.operator.logical.intersect.regexp\",\n          \"match\": \"&&\"\n        },\n        {\n          \"name\": \"punctuation.separator.range.dash.regexp\",\n          \"match\": \"(?<!\\\\G|\\\\\\\\[dwshDWSHN])-(?!\\\\])\"\n        },\n        {\n          \"include\": \"source.regexp.posix#charClass\"\n        },\n        {\n          \"name\": \"constant.character.escape.backslash.regexp\",\n          \"match\": \"\\\\\\\\\\\\[|\\\\\\\\\\\\]\"\n        },\n        {\n          \"match\": \"\\\\^|\\\\$|\\\\(|\\\\)|\\\\[\"\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#main\"\n        },\n        {\n          \"name\": \"constant.single.character.character-class.regexp\",\n          \"match\": \"[^\\\\]]\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"\\\\)\",\n      \"name\": \"comment.block.regexp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.backslash.regexp\"\n        }\n      ]\n    },\n    \"conditional\": {\n      \"name\": \"meta.conditional.regexp\",\n      \"begin\": \"(\\\\()(\\\\?)(?=\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.condition.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.condition.end.regexp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.condition.if-else.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"include\": \"#assertion\"\n        },\n        {\n          \"name\": \"meta.condition.function-call.regexp\",\n          \"begin\": \"\\\\G\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.condition.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.condition.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\GDEFINE\",\n              \"name\": \"storage.type.function.subpattern.regexp\"\n            },\n            {\n              \"match\": \"\\\\Gassert\",\n              \"name\": \"keyword.other.assertion.regexp\"\n            },\n            {\n              \"match\": \"\\\\G(?:(<)([^>]+)(>)|(')(['>]+)('))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.group-reference.bracket.angle.begin.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.group.name.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.group-reference.bracket.angle.end.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.group-reference.quote.single.begin.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"entity.group.name.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.group-reference.quote.single.end.regexp\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\G(R(&))(\\\\w+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.recursion.specific.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.reference.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"entity.group.name.regexp\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\GR\\\\d+\",\n              \"name\": \"keyword.other.recursion.specific-group.regexp\"\n            },\n            {\n              \"match\": \"\\\\GR\",\n              \"name\": \"keyword.other.recursion.overall.regexp\"\n            },\n            {\n              \"match\": \"\\\\G\\\\d+\",\n              \"name\": \"keyword.other.reference.absolute.regexp\"\n            },\n            {\n              \"match\": \"\\\\G[-+]\\\\d+\",\n              \"name\": \"keyword.other.reference.relative.regexp\"\n            },\n            {\n              \"match\": \"\\\\G\\\\w+\",\n              \"name\": \"entity.group.name.regexp\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#main\"\n        }\n      ]\n    },\n    \"escape\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\d\",\n          \"name\": \"constant.character.escape.decimal.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\s\",\n          \"name\": \"constant.character.escape.whitespace.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\w\",\n          \"name\": \"constant.character.escape.word-char.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\n\",\n          \"name\": \"constant.character.escape.newline.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\t\",\n          \"name\": \"constant.character.escape.tab.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\r\",\n          \"name\": \"constant.character.escape.return.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\D\",\n          \"name\": \"constant.character.escape.non-decimal.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\S\",\n          \"name\": \"constant.character.escape.non-whitespace.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\W\",\n          \"name\": \"constant.character.escape.non-word-char.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\a\",\n          \"name\": \"constant.character.escape.alarm.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\e\",\n          \"name\": \"constant.character.escape.escape-char.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\f\",\n          \"name\": \"constant.character.escape.form-feed.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\v\",\n          \"name\": \"constant.character.escape.vertical-tab.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\x[0-9A-Fa-f]{2}\",\n          \"name\": \"constant.character.escape.numeric.regexp\"\n        },\n        {\n          \"name\": \"meta.character-escape.hex.regexp\",\n          \"match\": \"(\\\\\\\\x)({)([0-9A-Fa-f]+(?>\\\\s+[0-9A-Fa-f]+)*)\\\\s*(})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.unicode-escape.hex.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.unicode-escape.bracket.curly.begin.regexp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\S+\",\n                  \"name\": \"constant.numeric.codepoint.hex.regexp\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.unicode-escape.bracket.curly.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.character-escape.octal.regexp\",\n          \"match\": \"(\\\\\\\\o)({)([0-7]+(?>\\\\s+[0-7]+)*)\\\\s*(})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.unicode-escape.octal.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.unicode-escape.bracket.curly.begin.regexp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\S+\",\n                  \"name\": \"constant.numeric.codepoint.octal.regexp\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.unicode-escape.bracket.curly.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.unicode-property.regexp\",\n          \"match\": \"(\\\\\\\\[Pp])(\\\\{)(\\\\^?)([^{}]+)(\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.unicode-property.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.unicode-escape.bracket.curly.begin.regexp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.logical.not.regexp\"\n            },\n            \"4\": {\n              \"name\": \"entity.property.name.regexp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#propInnards\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.unicode-escape.bracket.curly.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.unicode-property.single-letter.regexp\",\n          \"match\": \"(\\\\\\\\[Pp])(\\\\w)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.unicode-property.regexp\"\n            },\n            \"2\": {\n              \"name\": \"entity.property.name.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group-reference.regexp\",\n          \"contentName\": \"entity.group.name.regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"#groupRefInnards\"\n            }\n          ],\n          \"begin\": \"(\\\\\\\\[kg])(<)\",\n          \"end\": \">\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.group-reference.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group-reference.bracket.angle.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group-reference.bracket.angle.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group-reference.regexp\",\n          \"contentName\": \"entity.group.name.regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"#groupRefInnards\"\n            }\n          ],\n          \"begin\": \"(\\\\\\\\[kg])(')\",\n          \"end\": \"'\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.group-reference.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group-reference.quote.single.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group-reference.quote.single.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group-reference.regexp\",\n          \"contentName\": \"entity.group.name.regexp\",\n          \"begin\": \"(\\\\\\\\[kg])({)\",\n          \"end\": \"}\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.group-reference.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group-reference.bracket.curly.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group-reference.bracket.curly.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group-reference.single-letter.regexp\",\n          \"match\": \"(\\\\\\\\g)(\\\\d)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.group-reference.regexp\"\n            },\n            \"2\": {\n              \"name\": \"entity.group.name.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.named-char.regexp\",\n          \"match\": \"(\\\\\\\\N)(\\\\{)([^{}]+)(\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.named-char.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.unicode-escape.bracket.curly.begin.regexp\"\n            },\n            \"3\": {\n              \"name\": \"entity.character.name.regexp\",\n              \"patterns\": [\n                {\n                  \"name\": \"punctuation.separator.colon.regexp\",\n                  \"match\": \":\"\n                },\n                {\n                  \"name\": \"punctuation.separator.codepoint.regexp\",\n                  \"match\": \"(?<=U)\\\\+(?=[A-Fa-f0-9])\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.unicode-escape.bracket.curly.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.quoted-chars.regexp\",\n          \"begin\": \"\\\\\\\\Q(?=.*?\\\\\\\\E)\",\n          \"end\": \"\\\\\\\\E\",\n          \"contentName\": \"markup.raw.verbatim.string.regexp\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.quote-mode.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.quote-mode.end.regexp\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\(?:\\\\d{3}|0\\\\d)\",\n          \"name\": \"constant.character.escape.octal.numeric.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\0\",\n          \"name\": \"constant.character.escape.null-byte.numeric.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\(\\\\d{1,2})\",\n          \"name\": \"keyword.other.back-reference.$1.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\(?:c|C-)[?-_]\",\n          \"name\": \"constant.character.escape.control-char.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\h\",\n          \"name\": \"constant.character.escape.hex-digit.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\H\",\n          \"name\": \"constant.character.escape.non-hex-digit.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\E\",\n          \"name\": \"keyword.control.end-mode.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\Q\",\n          \"name\": \"keyword.control.quote-mode.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\F\",\n          \"name\": \"keyword.control.foldcase-mode.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\L\",\n          \"name\": \"keyword.control.lowercase-mode.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\U\",\n          \"name\": \"keyword.control.titlecase-mode.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\K\",\n          \"name\": \"keyword.control.keep-out.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\l\",\n          \"name\": \"constant.character.escape.lowercase-next.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\u\",\n          \"name\": \"constant.character.escape.titlecase-next.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\N\",\n          \"name\": \"constant.character.escape.non-newline.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\X\",\n          \"name\": \"constant.character.escape.extended-grapheme.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\R\",\n          \"name\": \"constant.character.escape.linebreak-grapheme.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\V\",\n          \"name\": \"constant.character.escape.non-vertical-whitespace.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\M-\\\\\\\\C-[?-_]\",\n          \"name\": \"constant.character.escape.meta-control.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\M-.\",\n          \"name\": \"constant.character.escape.meta-char.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\O\",\n          \"name\": \"constant.character.escape.any-char.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\[yY]\",\n          \"name\": \"keyword.control.anchor.text-boundary.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.misc.regexp\"\n        }\n      ]\n    },\n    \"fixedGroups\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.group-reference.reset.regexp\",\n          \"match\": \"(\\\\()(\\\\?[R0])(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.back-reference.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group.scoped-modifiers.regexp\",\n          \"match\": \"(\\\\(\\\\?)((?:y{[\\\\w]+}|[-A-Za-z^])*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#scopedModifiers\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.control-verb.regexp\",\n          \"match\": \"(\\\\(\\\\*)(\\\\w*)(?:([:=])([^\\\\s()]*))?(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.verb.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.key-value.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.control-verb.regexp\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group-reference.named.regexp\",\n          \"match\": \"(\\\\()(\\\\?(?:&|P[>=]))(\\\\w+)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.back-reference.regexp\"\n            },\n            \"3\": {\n              \"name\": \"entity.group.name.regexp\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group-reference.relative.regexp\",\n          \"match\": \"(\\\\()(\\\\?[-+]\\\\d+)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.back-reference.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.callout.regexp\",\n          \"match\": \"(\\\\()(\\\\?C\\\\d*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.callout.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.callout.regexp\",\n          \"match\": \"(?x)\\n(\\\\(\\\\*)\\n([_A-Za-z][_A-Za-z0-9]*)              # Name\\n((\\\\[)([_A-Za-z][_A-Za-z0-9]*)(\\\\]))  # [tag]\\n(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.callout.regexp\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.callout-tag.regexp\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.callout-tag.begin.regexp\"\n            },\n            \"5\": {\n              \"name\": \"callout-tag.constant.other.regexp\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.callout-tag.end.regexp\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.absent-function.clear-range.regexp\",\n          \"match\": \"(\\\\()(\\\\?~)(\\\\|)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.flow.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.delimiter.pipe.regexp\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.absent-stopper.regexp\",\n          \"match\": \"(\\\\()(\\\\?~)(\\\\|)([^|\\\\)]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.flow.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.delimiter.pipe.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.absent-function.regexp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.absent-expression.regexp\",\n          \"match\": \"(?x)\\n(\\\\()\\n(\\\\?~)\\n(\\\\|) ([^|\\\\)]*)\\n(\\\\|) ([^|\\\\)]*)\\n(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.flow.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.delimiter.pipe.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.absent-function.regexp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.delimiter.pipe.regexp\"\n            },\n            \"6\": {\n              \"name\": \"variable.parameter.absent-function.regexp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.absent-repeater.regexp\",\n          \"match\": \"(\\\\()(\\\\?~)([^|\\\\)]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.flow.regexp\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.absent-function.regexp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        }\n      ]\n    },\n    \"group\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fixedGroups\"\n        },\n        {\n          \"name\": \"meta.group.named.regexp\",\n          \"begin\": \"\\\\(\\\\?(?=P?[<'])\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"contentName\": \"entity.group.name.regexp\",\n              \"begin\": \"\\\\G(P?)(<)\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.function.named-group.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.named-group.bracket.angle.begin.regexp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.named-group.bracket.angle.end.regexp\"\n                }\n              }\n            },\n            {\n              \"contentName\": \"entity.group.name.regexp\",\n              \"begin\": \"\\\\G'\",\n              \"end\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.named-group.quote.single.begin.regexp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.named-group.quote.single.end.regexp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.non-capturing.regexp.extended\",\n          \"begin\": \"(\\\\(\\\\?)([A-Za-wyz]*x[A-Za-z]*[-A-Za-wyz]*)(:)\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#scopedModifiers\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"contentName\": \"source.embedded.regexp.extended\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp.extended#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.non-capturing.regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ],\n          \"begin\": \"(\\\\(\\\\?)((?:y{[\\\\w]+}|[-A-Za-z^])*)(:)\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#scopedModifiers\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group.atomic.regexp\",\n          \"begin\": \"\\\\(\\\\?>\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.script-run.regexp\",\n          \"begin\": \"(\\\\(\\\\*)((?:atomic_)?script_run|a?sr)(:)\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.verb.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.callout.contents.regexp\",\n          \"begin\": \"(\\\\(\\\\?{1,2})({)\",\n          \"end\": \"(?x)\\n(})                                    # Last closing bracket\\n((\\\\[)([_A-Za-z][_A-Za-z0-9]*)(\\\\]))?  # [tag]\\n(X|<|>)?                               # Callout direction\\n(?:[^\\\\)]*)                            # Silently skip unexpected characters\\n(\\\\))                                  # Closing bracket\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.regexp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.callout-tag.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.callout-tag.begin.regexp\"\n            },\n            \"4\": {\n              \"name\": \"callout-tag.constant.other.regexp\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.callout-tag.end.regexp\"\n            },\n            \"6\": {\n              \"name\": \"constant.language.callout-direction.regexp\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#calloutBrackets\"\n            },\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.callout.regexp\",\n          \"begin\": \"(?x)\\n(\\\\(\\\\*)\\n([_A-Za-z][_A-Za-z0-9]*)               # Name\\n((\\\\[)([_A-Za-z][_A-Za-z0-9]*)(\\\\]))?  # [tag]\\n({)\",\n          \"end\": \"(?x)\\n(})\\n(?:[^\\\\)]*)\\n(?:(\\\\))|(?=$))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.callout.regexp\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.callout-tag.regexp\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.callout-tag.begin.regexp\"\n            },\n            \"5\": {\n              \"name\": \"callout-tag.constant.other.regexp\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.callout-tag.end.regexp\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.arguments.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.end.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            },\n            {\n              \"name\": \"variable.parameter.argument.regexp\",\n              \"match\": \"[-\\\\w]+\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.absent-function.regexp\",\n          \"begin\": \"(\\\\()(\\\\?~)(\\\\|)\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.flow.regexp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.delimiter.pipe.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.separator.delimiter.pipe.regexp\",\n              \"match\": \"\\\\|\"\n            },\n            {\n              \"name\": \"variable.parameter.argument.regexp\",\n              \"match\": \"[-\\\\w]+\"\n            },\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.empty.regexp\",\n          \"match\": \"(\\\\()(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.begin.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.end.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        }\n      ]\n    },\n    \"groupRefInnards\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\-(?=\\\\d)\",\n          \"name\": \"keyword.operator.arithmetic.minus.regexp\"\n        },\n        {\n          \"match\": \"\\\\+(?=\\\\d)\",\n          \"name\": \"keyword.operator.arithmetic.plus.regexp\"\n        }\n      ]\n    },\n    \"propInnards\": {\n      \"patterns\": [\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.comparison.regexp\"\n        },\n        {\n          \"match\": \"True|False\",\n          \"name\": \"constant.language.boolean.${0:/downcase}.regexp\"\n        }\n      ]\n    },\n    \"quantifier\": {\n      \"patterns\": [\n        {\n          \"include\": \"#quantifierSymbolic\"\n        },\n        {\n          \"include\": \"#quantifierNumeric\"\n        }\n      ]\n    },\n    \"quantifierNumeric\": {\n      \"name\": \"keyword.operator.quantifier.specific.unescaped.regexp\",\n      \"match\": \"(\\\\{)(?:(\\\\d+)(,?)(\\\\d*)|(,)(\\\\d+))(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.quantifier.bracket.curly.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.quantifier.min.regexp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.delimiter.comma.regexp\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.quantifier.max.regexp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.delimiter.comma.regexp\"\n        },\n        \"6\": {\n          \"name\": \"keyword.operator.quantifier.max.regexp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.quantifier.bracket.curly.end.regexp\"\n        }\n      }\n    },\n    \"quantifierNumericOld\": {\n      \"name\": \"keyword.operator.quantifier.specific.escaped.regexp\",\n      \"match\": \"(\\\\\\\\{)(?:(\\\\d+)(,?)(\\\\d*)|(,)(\\\\d+))(\\\\\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.quantifier.bracket.curly.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.quantifier.min.regexp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.delimiter.comma.regexp\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.quantifier.max.regexp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.delimiter.comma.regexp\"\n        },\n        \"6\": {\n          \"name\": \"keyword.operator.quantifier.max.regexp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.quantifier.bracket.curly.end.regexp\"\n        }\n      }\n    },\n    \"quantifierSymbolic\": {\n      \"name\": \"keyword.operator.quantifier.regexp\",\n      \"match\": \"[*+?]\"\n    },\n    \"scopedModifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.text-segment-mode.regexp\",\n          \"match\": \"(y)({)(\\\\w+)(})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.flag.y.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.option.bracket.curly.begin.regexp\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.option-mode.regexp\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.option.bracket.curly.end.regexp\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(?<=\\\\?)|\\\\G|^)\\\\^\",\n          \"name\": \"keyword.operator.modifier.reset.regexp\"\n        },\n        {\n          \"match\": \"-\",\n          \"name\": \"keyword.operator.modifier.negate.regexp\"\n        },\n        {\n          \"match\": \"[A-Za-z]\",\n          \"name\": \"storage.modifier.flag.$0.regexp\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.other.regexp\",\n          \"match\": \"(?<![^\\\\\\\\]\\\\\\\\|^\\\\\\\\)\\\\$(?!\\\\d|-)[-\\\\w]+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"variable.other.bracket.regexp\",\n          \"match\": \"(?<![^\\\\\\\\]\\\\\\\\|^\\\\\\\\)(\\\\$\\\\{)\\\\s*(?!\\\\d|-)[-\\\\w]+\\\\s*(\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.begin.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.end.regexp\"\n            }\n          }\n        }\n      ]\n    },\n    \"wildcard\": {\n      \"name\": \"constant.character.wildcard.dot.match.any.regexp\",\n      \"match\": \"\\\\.\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/rst.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/trond-snekvik/vscode-rst/blob/master/syntaxes/rst.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/trond-snekvik/vscode-rst/commit/f0fe19ffde6509be52ad9267a57e1b3df665f072\",\n  \"scopeName\": \"source.rst\",\n  \"patterns\": [\n    {\n      \"include\": \"#body\"\n    }\n  ],\n  \"repository\": {\n    \"body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#title\"\n        },\n        {\n          \"include\": \"#inline-markup\"\n        },\n        {\n          \"include\": \"#anchor\"\n        },\n        {\n          \"include\": \"#line-block\"\n        },\n        {\n          \"include\": \"#replace-include\"\n        },\n        {\n          \"include\": \"#footnote\"\n        },\n        {\n          \"include\": \"#substitution\"\n        },\n        {\n          \"include\": \"#blocks\"\n        },\n        {\n          \"include\": \"#table\"\n        },\n        {\n          \"include\": \"#simple-table\"\n        },\n        {\n          \"include\": \"#options-list\"\n        }\n      ]\n    },\n    \"title\": {\n      \"match\": \"^(\\\\*{3,}|#{3,}|\\\\={3,}|~{3,}|\\\\+{3,}|-{3,}|`{3,}|\\\\^{3,}|:{3,}|\\\"{3,}|_{3,}|'{3,})$\",\n      \"name\": \"markup.heading\"\n    },\n    \"inline-markup\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escaped\"\n        },\n        {\n          \"include\": \"#ignore\"\n        },\n        {\n          \"include\": \"#ref\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#monospaced\"\n        },\n        {\n          \"include\": \"#citation\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#italic\"\n        },\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"#reference\"\n        },\n        {\n          \"include\": \"#footnote-ref\"\n        }\n      ]\n    },\n    \"ignore\": {\n      \"patterns\": [\n        {\n          \"match\": \"'[`*]+'\"\n        },\n        {\n          \"match\": \"<[`*]+>\"\n        },\n        {\n          \"match\": \"{[`*]+}\"\n        },\n        {\n          \"match\": \"\\\\([`*]+\\\\)\"\n        },\n        {\n          \"match\": \"\\\\[[`*]+\\\\]\"\n        },\n        {\n          \"match\": \"\\\"[`*]+\\\"\"\n        }\n      ]\n    },\n    \"table\": {\n      \"begin\": \"^\\\\s*\\\\+[=+-]+\\\\+\\\\s*$\",\n      \"end\": \"^(?![+|])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.table\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"[=+|-]\",\n          \"name\": \"keyword.control.table\"\n        }\n      ]\n    },\n    \"simple-table\": {\n      \"match\": \"^[=\\\\s]+$\",\n      \"name\": \"keyword.control.table\"\n    },\n    \"ref\": {\n      \"begin\": \"(:ref:)`\",\n      \"end\": \"`|^\\\\s*$\",\n      \"name\": \"entity.name.tag\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"<.*?>\",\n          \"name\": \"markup.underline.link\"\n        }\n      ]\n    },\n    \"reference\": {\n      \"match\": \"[\\\\w-]*[a-zA-Z\\\\d-]__?\\\\b\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"macro\": {\n      \"match\": \"\\\\|[^\\\\|]+\\\\|\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"literal\": {\n      \"match\": \"(:\\\\S+:)(`.*?`\\\\\\\\?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag\"\n        }\n      }\n    },\n    \"monospaced\": {\n      \"begin\": \"(?<=[\\\\s\\\"'(\\\\[{<]|^)``[^\\\\s`]\",\n      \"end\": \"``|^\\\\s*$\",\n      \"name\": \"string.interpolated\"\n    },\n    \"citation\": {\n      \"begin\": \"(?<=[\\\\s\\\"'(\\\\[{<]|^)`[^\\\\s`]\",\n      \"end\": \"`_{,2}|^\\\\s*$\",\n      \"name\": \"entity.name.tag\",\n      \"applyEndPatternLast\": 0\n    },\n    \"bold\": {\n      \"begin\": \"(?<=[\\\\s\\\"'(\\\\[{<]|^)\\\\*{2}[^\\\\s*]\",\n      \"end\": \"\\\\*{2}|^\\\\s*$\",\n      \"name\": \"markup.bold\"\n    },\n    \"italic\": {\n      \"begin\": \"(?<=[\\\\s\\\"'(\\\\[{<]|^)\\\\*[^\\\\s*]\",\n      \"end\": \"\\\\*|^\\\\s*$\",\n      \"name\": \"markup.italic\"\n    },\n    \"escaped\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape\"\n    },\n    \"list\": {\n      \"match\": \"^\\\\s*(\\\\d+\\\\.|\\\\* -|[a-zA-Z#]\\\\.|[iIvVxXmMcC]+\\\\.|\\\\(\\\\d+\\\\)|\\\\d+\\\\)|[*+-])\\\\s+\",\n      \"name\": \"keyword.control\"\n    },\n    \"line-block\": {\n      \"match\": \"^\\\\|\\\\s+\",\n      \"name\": \"keyword.control\"\n    },\n    \"raw-html\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+raw\\\\s*::)\\\\s+(html)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"text.html.derivative\"\n        }\n      ]\n    },\n    \"anchor\": {\n      \"match\": \"^\\\\.{2}\\\\s+(_[^:]+:)\\\\s*\",\n      \"name\": \"entity.name.tag.anchor\"\n    },\n    \"replace-include\": {\n      \"match\": \"^\\\\s*(\\\\.{2})\\\\s+(\\\\|[^\\\\|]+\\\\|)\\\\s+(replace::)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control\"\n        }\n      }\n    },\n    \"footnote\": {\n      \"match\": \"^\\\\s*\\\\.{2}\\\\s+\\\\[(?:[\\\\w\\\\.-]+|[#*]|#\\\\w+)\\\\]\\\\s+\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"footnote-ref\": {\n      \"match\": \"\\\\[(?:[\\\\w\\\\.-]+|[#*])\\\\]_\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"substitution\": {\n      \"match\": \"^\\\\.{2}\\\\s*\\\\|([^|]+)\\\\|\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"options-list\": {\n      \"match\": \"^((?:-\\\\w|--[\\\\w-]+|/\\\\w+)(?:,? ?[\\\\w-]+)*)(?:  |\\\\t|$)\",\n      \"name\": \"variable.parameter\"\n    },\n    \"blocks\": {\n      \"patterns\": [\n        {\n          \"include\": \"#domains\"\n        },\n        {\n          \"include\": \"#doctest\"\n        },\n        {\n          \"include\": \"#code-block-cpp\"\n        },\n        {\n          \"include\": \"#code-block-py\"\n        },\n        {\n          \"include\": \"#code-block-console\"\n        },\n        {\n          \"include\": \"#code-block-javascript\"\n        },\n        {\n          \"include\": \"#code-block-yaml\"\n        },\n        {\n          \"include\": \"#code-block-cmake\"\n        },\n        {\n          \"include\": \"#code-block-kconfig\"\n        },\n        {\n          \"include\": \"#code-block-ruby\"\n        },\n        {\n          \"include\": \"#code-block-dts\"\n        },\n        {\n          \"include\": \"#code-block\"\n        },\n        {\n          \"include\": \"#doctest-block\"\n        },\n        {\n          \"include\": \"#raw-html\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#literal-block\"\n        },\n        {\n          \"include\": \"#block-comment\"\n        }\n      ]\n    },\n    \"block-comment\": {\n      \"begin\": \"^(\\\\s*)\\\\.{2}\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"name\": \"comment.block\"\n    },\n    \"literal-block\": {\n      \"begin\": \"^(\\\\s*)(.*)(::)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline-markup\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control\"\n        }\n      }\n    },\n    \"block\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+\\\\S+::)(.*)\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"variable\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"block-param\": {\n      \"patterns\": [\n        {\n          \"match\": \"(:param\\\\s+(.+?):)(?:\\\\s|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter\"\n            }\n          }\n        },\n        {\n          \"match\": \"(:.+?:)(?:$|\\\\s+(.*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(0x[a-fA-F\\\\d]+|\\\\d+)\\\\b\",\n                  \"name\": \"constant.numeric\"\n                },\n                {\n                  \"include\": \"#inline-markup\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"domains\": {\n      \"patterns\": [\n        {\n          \"include\": \"#domain-cpp\"\n        },\n        {\n          \"include\": \"#domain-py\"\n        },\n        {\n          \"include\": \"#domain-auto\"\n        },\n        {\n          \"include\": \"#domain-js\"\n        }\n      ]\n    },\n    \"domain-cpp\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(?:cpp|c):(?:class|struct|function|member|var|type|enum|enum-struct|enum-class|enumerator|union|concept)::)\\\\s*(?:(@\\\\w+)|(.*))\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"domain-py\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+py:(?:module|function|data|exception|class|attribute|property|method|staticmethod|classmethod|decorator|decoratormethod)::)\\\\s*(.*)\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"domain-auto\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+auto(?:class|module|exception|function|decorator|data|method|attribute|property)::)\\\\s*(.*)\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control.py\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"domain-js\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+js:\\\\w+::)\\\\s*(.*)\",\n      \"end\": \"^(?!\\\\1[ \\\\t]|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"doctest\": {\n      \"begin\": \"^(>>>)\\\\s*(.*)\",\n      \"end\": \"^\\\\s*$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        }\n      }\n    },\n    \"code-block-cpp\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(c|c\\\\+\\\\+|cpp|C|C\\\\+\\\\+|CPP|Cpp)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.cpp\"\n        }\n      ]\n    },\n    \"code-block-console\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(console|shell|bash)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.console\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.shell\"\n        }\n      ]\n    },\n    \"code-block-py\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(python)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.py\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.python\"\n        }\n      ]\n    },\n    \"code-block-javascript\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(javascript)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"code-block-yaml\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(ya?ml)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.yaml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.yaml\"\n        }\n      ]\n    },\n    \"code-block-cmake\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(cmake)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.cmake\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.cmake\"\n        }\n      ]\n    },\n    \"code-block-kconfig\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*([kK]config)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.kconfig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.kconfig\"\n        }\n      ]\n    },\n    \"code-block-ruby\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(ruby)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.ruby\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    \"code-block-dts\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(dts|DTS|devicetree)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.dts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.dts\"\n        }\n      ]\n    },\n    \"code-block\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        }\n      ]\n    },\n    \"doctest-block\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+doctest::)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.python\"\n        }\n      ]\n    }\n  },\n  \"name\": \"rst\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/ruby.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/ruby.tmbundle/blob/master/Syntaxes/Ruby.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/ruby.tmbundle/commit/efcb8941c701343f1b2e9fb105c678152fea6892\",\n  \"name\": \"ruby\",\n  \"scopeName\": \"source.ruby\",\n  \"comment\": \"\\n\\tTODO: unresolved issues\\n\\n\\ttext:\\n\\t\\\"p <<end\\n\\tprint me!\\n\\tend\\\"\\n\\tsymptoms:\\n\\tnot recognized as a heredoc\\n\\tsolution:\\n\\tthere is no way to distinguish perfectly between the << operator and the start\\n\\tof a heredoc. Currently, we require assignment to recognize a heredoc. More\\n\\trefinement is possible.\\n\\t• Heredocs with indented terminators (<<-) are always distinguishable, however.\\n\\t• Nested heredocs are not really supportable at present\\n\\n\\ttext:\\n\\tprint <<-'THERE' \\n\\tThis is single quoted. \\n\\tThe above used #{Time.now} \\n\\tTHERE \\n\\tsymtoms:\\n\\tFrom Programming Ruby p306; should be a non-interpolated heredoc.\\n\\t\\n    text:\\n    val?(a):p(b)\\n    val?'a':'b'\\n    symptoms:\\n    ':p' is recognized as a symbol.. its 2 things ':' and 'p'.\\n    :'b' has same problem.\\n    solution:\\n    ternary operator rule, precedence stuff, symbol rule.\\n    but also consider 'a.b?(:c)' ??\\n\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.class.ruby\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.ruby\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.other.ruby\"\n        },\n        \"4\": {\n          \"name\": \"entity.other.inherited-class.ruby\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.other.ruby\"\n        },\n        \"6\": {\n          \"name\": \"variable.other.object.ruby\"\n        }\n      },\n      \"match\": \"^\\\\s*(class)\\\\s+(?:([.a-zA-Z0-9_:]+)(?:\\\\s*(<)\\\\s*([.a-zA-Z0-9_:]+))?|(<<)\\\\s*([.a-zA-Z0-9_:]+))\",\n      \"name\": \"meta.class.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.module.ruby\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.module.ruby\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.module.first.ruby\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.inheritance.ruby\"\n        },\n        \"5\": {\n          \"name\": \"entity.other.inherited-class.module.second.ruby\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.inheritance.ruby\"\n        },\n        \"7\": {\n          \"name\": \"entity.other.inherited-class.module.third.ruby\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.inheritance.ruby\"\n        }\n      },\n      \"match\": \"^\\\\s*(module)\\\\s+(([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))*[A-Z]\\\\w*)\",\n      \"name\": \"meta.module.ruby\"\n    },\n    {\n      \"comment\": \"else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.\",\n      \"match\": \"(?<!\\\\.)\\\\belse(\\\\s)+if\\\\b\",\n      \"name\": \"invalid.deprecated.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"comment\": \"symbols as hash key (1.9 syntax)\",\n      \"match\": \"(?>[a-zA-Z_]\\\\w*(?>[?!])?)(:)(?!:)\",\n      \"name\": \"constant.other.symbol.hashkey.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"comment\": \"symbols as hash key (1.8 syntax)\",\n      \"match\": \"(?<!:)(:)(?>[a-zA-Z_]\\\\w*(?>[?!])?)(?=\\\\s*=>)\",\n      \"name\": \"constant.other.symbol.hashkey.ruby\"\n    },\n    {\n      \"comment\": \"everything being a reserved word, not a value and needing a 'end' is a..\",\n      \"match\": \"(?<!\\\\.)\\\\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|for|if|in|module|rescue|then|unless|until|when|while)\\\\b(?![?!])\",\n      \"name\": \"keyword.control.ruby\"\n    },\n    {\n      \"comment\": \"contextual smart pair support for block parameters\",\n      \"match\": \"(?<!\\\\.)\\\\bdo\\\\b\",\n      \"name\": \"keyword.control.start-block.ruby\"\n    },\n    {\n      \"comment\": \"contextual smart pair support\",\n      \"match\": \"(?<=\\\\{)(\\\\s+)\",\n      \"name\": \"meta.syntax.ruby.start-block\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\b(alias|alias_method|block_given[?]|break|defined[?]|iterator[?]|next|redo|retry|return|super|undef|yield)(\\\\b|(?<=[?]))(?![?!])\",\n      \"name\": \"keyword.control.pseudo-method.ruby\"\n    },\n    {\n      \"match\": \"\\\\b(nil|true|false)\\\\b(?![?!])\",\n      \"name\": \"constant.language.ruby\"\n    },\n    {\n      \"match\": \"\\\\b(__(dir|FILE|LINE)__)\\\\b(?![?!])\",\n      \"name\": \"variable.language.ruby\"\n    },\n    {\n      \"begin\": \"^__END__\\\\n\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"string.unquoted.program-block.ruby\"\n        }\n      },\n      \"comment\": \"__END__ marker\",\n      \"contentName\": \"text.plain\",\n      \"end\": \"(?=not)impossible\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=<?xml|<(?i:html\\\\b)|!DOCTYPE (?i:html\\\\b))\",\n          \"end\": \"(?=not)impossible\",\n          \"name\": \"text.html.embedded.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(self)\\\\b(?![?!])\",\n      \"name\": \"variable.language.self.ruby\"\n    },\n    {\n      \"comment\": \" everything being a method but having a special function is a..\",\n      \"match\": \"\\\\b(initialize|new|loop|include|extend|prepend|fail|raise|attr_reader|attr_writer|attr_accessor|attr|catch|throw|private|private_class_method|module_function|public|public_class_method|protected|refine|using)\\\\b(?![?!])\",\n      \"name\": \"keyword.other.special-method.ruby\"\n    },\n    {\n      \"begin\": \"\\\\b(?<!\\\\.|::)(require|require_relative)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.special-method.ruby\"\n        }\n      },\n      \"end\": \"$|(?=#|\\\\})\",\n      \"name\": \"meta.require.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.ruby\"\n        }\n      },\n      \"match\": \"(@)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.instance.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.ruby\"\n        }\n      },\n      \"match\": \"(@@)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.class.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.ruby\"\n        }\n      },\n      \"match\": \"(\\\\$)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.global.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.ruby\"\n        }\n      },\n      \"match\": \"(\\\\$)(!|@|&|`|'|\\\\+|\\\\d+|~|=|/|\\\\\\\\|,|;|\\\\.|<|>|_|\\\\*|\\\\$|\\\\?|:|\\\"|-[0adFiIlpvw])\",\n      \"name\": \"variable.other.readwrite.global.pre-defined.ruby\"\n    },\n    {\n      \"begin\": \"\\\\b(ENV)\\\\[\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.constant.ruby\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"name\": \"meta.environment-variable.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b[A-Z]\\\\w*(?=((\\\\.|::)[A-Za-z]|\\\\[))\",\n      \"name\": \"support.class.ruby\"\n    },\n    {\n      \"match\": \"\\\\b(abort|at_exit|autoload[?]?|binding|callcc|caller|caller_locations|chomp|chop|eval|exec|exit|exit!|fork|format|gets|global_variables|gsub|lambda|load|local_variables|open|p|print|printf|proc|putc|puts|rand|readline|readlines|select|set_trace_func|sleep|spawn|sprintf|srand|sub|syscall|system|test|trace_var|trap|untrace_var|warn)(\\\\b|(?<=[?!]))(?![?!])\",\n      \"name\": \"support.function.kernel.ruby\"\n    },\n    {\n      \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n      \"name\": \"variable.other.constant.ruby\"\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t         (?=def\\\\b)                                                      # an optimization to help Oniguruma fail fast\\n\\t\\t\\t         (?<=^|\\\\s)(def)\\\\s+                                              # the def keyword\\n\\t\\t\\t         ( (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?                                   # a method name prefix\\n\\t\\t\\t           (?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?                              # the method name\\n\\t\\t\\t           |===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&`/\\\\|^]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?) )  # …or an operator method\\n\\t\\t\\t         \\\\s*(\\\\()                                                        # the openning parenthesis for arguments\\n\\t\\t\\t        \",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.def.ruby\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.ruby\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.ruby\"\n        }\n      },\n      \"comment\": \"the method pattern comes from the symbol pattern, see there for a explaination\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.ruby\"\n        }\n      },\n      \"name\": \"meta.function.method.with-arguments.ruby\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=[&*_a-zA-Z])\",\n          \"end\": \"(?=[,)])\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.variable.ruby\"\n                },\n                \"2\": {\n                  \"name\": \"constant.other.symbol.hashkey.parameter.function.ruby\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.constant.ruby\"\n                },\n                \"4\": {\n                  \"name\": \"variable.parameter.function.ruby\"\n                }\n              },\n              \"match\": \"\\\\G([&*]?)(?:([_a-zA-Z]\\\\w*(:))|([_a-zA-Z]\\\\w*))\"\n            },\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#braces\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"braces\": {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.begin.ruby\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.ruby\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#braces\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        \"parens\": {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.begin.ruby\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.ruby\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#braces\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t         (?=def\\\\b)                                                      # an optimization to help Oniguruma fail fast\\n\\t\\t\\t         (?<=^|\\\\s)(def)\\\\s+                                              # the def keyword\\n\\t\\t\\t         ( (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?                                   # a method name prefix\\n\\t\\t\\t           (?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?                              # the method name\\n\\t\\t\\t           |===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&`/\\\\|^]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?) )  # …or an operator method\\n\\t\\t\\t         [ \\\\t]                                                          # the space separating the arguments\\n\\t\\t\\t         (?=[ \\\\t]*[^\\\\s#;])                                              # make sure arguments and not a comment follow\\n\\t\\t\\t        \",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.def.ruby\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.ruby\"\n        }\n      },\n      \"comment\": \"same as the previous rule, but without parentheses around the arguments\",\n      \"end\": \"$\",\n      \"name\": \"meta.function.method.with-arguments.ruby\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?![\\\\s,])\",\n          \"end\": \"(?=,|$)\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.variable.ruby\"\n                },\n                \"2\": {\n                  \"name\": \"constant.other.symbol.hashkey.parameter.function.ruby\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.constant.ruby\"\n                },\n                \"4\": {\n                  \"name\": \"variable.parameter.function.ruby\"\n                }\n              },\n              \"match\": \"\\\\G([&*]?)(?:([_a-zA-Z]\\\\w*(:))|([_a-zA-Z]\\\\w*))\",\n              \"name\": \"variable.parameter.function.ruby\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.def.ruby\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.ruby\"\n        }\n      },\n      \"comment\": \" the optional name is just to catch the def also without a method-name\",\n      \"match\": \"(?x)\\n\\t\\t\\t         (?=def\\\\b)                                                           # an optimization to help Oniguruma fail fast\\n\\t\\t\\t         (?<=^|\\\\s)(def)\\\\b                                                    # the def keyword\\n\\t\\t\\t         ( \\\\s+                                                               # an optional group of whitespace followed by…\\n\\t\\t\\t           ( (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?                                      # a method name prefix\\n\\t\\t\\t             (?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?                                 # the method name\\n\\t\\t\\t             |===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&`/\\\\|^]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?) ) )?  # …or an operator method\\n\\t\\t\\t        \",\n      \"name\": \"meta.function.method.without-arguments.ruby\"\n    },\n    {\n      \"match\": \"\\\\b\\\\d(?>_?\\\\d)*(?=\\\\.\\\\d|[eE])(\\\\.\\\\d(?>_?\\\\d)*)?([eE][-+]?\\\\d(?>_?\\\\d)*)?r?i?\\\\b\",\n      \"name\": \"constant.numeric.float.ruby\"\n    },\n    {\n      \"match\": \"\\\\b(0|(0[dD]\\\\d|[1-9])(?>_?\\\\d)*)r?i?\\\\b\",\n      \"name\": \"constant.numeric.integer.ruby\"\n    },\n    {\n      \"match\": \"\\\\b0[xX]\\\\h(?>_?\\\\h)*r?i?\\\\b\",\n      \"name\": \"constant.numeric.hex.ruby\"\n    },\n    {\n      \"match\": \"\\\\b0[bB][01](?>_?[01])*r?i?\\\\b\",\n      \"name\": \"constant.numeric.binary.ruby\"\n    },\n    {\n      \"match\": \"\\\\b0([oO]?[0-7](?>_?[0-7])*)?r?i?\\\\b\",\n      \"name\": \"constant.numeric.octal.ruby\"\n    },\n    {\n      \"begin\": \":'\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"end\": \"'\",\n      \"name\": \"constant.other.symbol.single-quoted.ruby\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\['\\\\\\\\]\",\n          \"name\": \"constant.character.escape.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \":\\\"\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"name\": \"constant.other.symbol.double-quoted.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"Needs higher precedence than regular expressions.\",\n      \"match\": \"(?<!\\\\()/=\",\n      \"name\": \"keyword.operator.assignment.augmented.ruby\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"comment\": \"single quoted string (does not allow interpolation)\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.quoted.single.ruby\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\'|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"comment\": \"double quoted string (allows for interpolation)\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.quoted.double.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"comment\": \"execute string (allows for interpolation)\",\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.interpolated.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#percent_literals\"\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t   (?:\\n\\t\\t\\t     ^                      # beginning of line\\n\\t\\t\\t   | (?<=                   # or look-behind on:\\n\\t\\t\\t       [=>~(?:\\\\[,|&;]\\n\\t\\t\\t     | [\\\\s;]if\\\\s\\t\\t\\t# keywords\\n\\t\\t\\t     | [\\\\s;]elsif\\\\s\\n\\t\\t\\t     | [\\\\s;]while\\\\s\\n\\t\\t\\t     | [\\\\s;]unless\\\\s\\n\\t\\t\\t     | [\\\\s;]when\\\\s\\n\\t\\t\\t     | [\\\\s;]assert_match\\\\s\\n\\t\\t\\t     | [\\\\s;]or\\\\s\\t\\t\\t# boolean opperators\\n\\t\\t\\t     | [\\\\s;]and\\\\s\\n\\t\\t\\t     | [\\\\s;]not\\\\s\\n\\t\\t\\t     | [\\\\s.]index\\\\s\\t\\t\\t# methods\\n\\t\\t\\t     | [\\\\s.]scan\\\\s\\n\\t\\t\\t     | [\\\\s.]sub\\\\s\\n\\t\\t\\t     | [\\\\s.]sub!\\\\s\\n\\t\\t\\t     | [\\\\s.]gsub\\\\s\\n\\t\\t\\t     | [\\\\s.]gsub!\\\\s\\n\\t\\t\\t     | [\\\\s.]match\\\\s\\n\\t\\t\\t     )\\n\\t\\t\\t   | (?<=                  # or a look-behind with line anchor:\\n\\t\\t\\t        ^when\\\\s            # duplication necessary due to limits of regex\\n\\t\\t\\t      | ^if\\\\s\\n\\t\\t\\t      | ^elsif\\\\s\\n\\t\\t\\t      | ^while\\\\s\\n\\t\\t\\t      | ^unless\\\\s\\n\\t\\t\\t      )\\n\\t\\t\\t   )\\n\\t\\t\\t   \\\\s*((/))(?![*+{}?])\\n\\t\\t\\t\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.regexp.classic.ruby\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.ruby\"\n        }\n      },\n      \"comment\": \"regular expressions (normal)\\n\\t\\t\\twe only start a regexp if the character before it (excluding whitespace)\\n\\t\\t\\tis what we think is before a regexp\\n\\t\\t\\t\",\n      \"contentName\": \"string.regexp.classic.ruby\",\n      \"end\": \"((/[eimnosux]*))\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"comment\": \"symbols\",\n      \"match\": \"(?<!:)(:)(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?|(@@?|\\\\$)[a-zA-Z_]\\\\w*)\",\n      \"name\": \"constant.other.symbol.ruby\"\n    },\n    {\n      \"begin\": \"^=begin\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.ruby\"\n        }\n      },\n      \"comment\": \"multiline comments\",\n      \"end\": \"^=end\",\n      \"name\": \"comment.block.documentation.ruby\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.ruby\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ruby\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.ruby\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"\\n\\t\\t\\tmatches questionmark-letters.\\n\\n\\t\\t\\texamples (1st alternation = hex):\\n\\t\\t\\t?\\\\x1     ?\\\\x61\\n\\n\\t\\t\\texamples (2nd alternation = octal):\\n\\t\\t\\t?\\\\0      ?\\\\07     ?\\\\017\\n\\n\\t\\t\\texamples (3rd alternation = escaped):\\n\\t\\t\\t?\\\\n      ?\\\\b\\n\\n\\t\\t\\texamples (4th alternation = meta-ctrl):\\n\\t\\t\\t?\\\\C-a    ?\\\\M-a    ?\\\\C-\\\\M-\\\\C-\\\\M-a\\n\\n\\t\\t\\texamples (4th alternation = normal):\\n\\t\\t\\t?a       ?A       ?0 \\n\\t\\t\\t?*       ?\\\"       ?( \\n\\t\\t\\t?.       ?#\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\tthe negative lookbehind prevents against matching\\n\\t\\t\\tp(42.tainted?)\\n\\t\\t\\t\",\n      \"match\": \"(?<!\\\\w)\\\\?(\\\\\\\\(x\\\\h{1,2}(?!\\\\h)\\\\b|0[0-7]{0,2}(?![0-7])\\\\b|[^x0MC])|(\\\\\\\\[MC]-)+\\\\w|[^\\\\s\\\\\\\\])\",\n      \"name\": \"constant.numeric.ruby\"\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)HTML)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded html\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)HTML)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)XML)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded xml\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.xml\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)XML)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"text.xml\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)SQL)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded sql\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.sql\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)SQL)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.sql\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)CSS)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded css\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.css\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)CSS)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.css\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)CPP)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded c++\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.c++\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)CPP)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.c++\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.c++\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)C)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded c\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.c\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)C)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.c\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.c\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded javascript\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.js\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.js\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)JQUERY)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded jQuery javascript\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.js.jquery\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)JQUERY)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.js.jquery\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.js.jquery\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)(?:SH|SHELL))\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded shell\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.shell\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)(?:SH|SHELL))\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.shell\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.shell\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)LUA)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded lua\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.lua\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)LUA)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.lua\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.lua\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)RUBY)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded ruby\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.ruby\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)RUBY)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.ruby\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?>=\\\\s*<<(\\\\w+))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"end\": \"^\\\\1$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.unquoted.heredoc.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<[-~](\\\\w+))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"comment\": \"heredoc with indented terminator\",\n      \"end\": \"\\\\s*\\\\1$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.unquoted.heredoc.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<=\\\\{|do|\\\\{\\\\s|do\\\\s)(\\\\|)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.arguments.ruby\"\n        }\n      },\n      \"end\": \"(?<!\\\\|)(\\\\|)(?!\\\\|)\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"match\": \"[_a-zA-Z][_a-zA-Z0-9]*\",\n          \"name\": \"variable.other.block.ruby\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.variable.ruby\"\n        }\n      ]\n    },\n    {\n      \"match\": \"=>\",\n      \"name\": \"punctuation.separator.key-value\"\n    },\n    {\n      \"match\": \"->\",\n      \"name\": \"support.function.kernel.lambda.ruby\"\n    },\n    {\n      \"match\": \"<<=|%=|&{1,2}=|\\\\*=|\\\\*\\\\*=|\\\\+=|-=|\\\\^=|\\\\|{1,2}=|<<\",\n      \"name\": \"keyword.operator.assignment.augmented.ruby\"\n    },\n    {\n      \"match\": \"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\\\t])\\\\?\",\n      \"name\": \"keyword.operator.comparison.ruby\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\b(and|not|or)\\\\b(?![?!])\",\n      \"name\": \"keyword.operator.logical.ruby\"\n    },\n    {\n      \"comment\": \"Make sure this goes after assignment and comparison\",\n      \"match\": \"(?<=^|[ \\\\t])!|&&|\\\\|\\\\||\\\\^\",\n      \"name\": \"keyword.operator.logical.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.method.ruby\"\n        }\n      },\n      \"comment\": \"Safe navigation operator - Added in 2.3\",\n      \"match\": \"(&\\\\.)\\\\s*(?![A-Z])\"\n    },\n    {\n      \"match\": \"(%|&|\\\\*\\\\*|\\\\*|\\\\+|-|/)\",\n      \"name\": \"keyword.operator.arithmetic.ruby\"\n    },\n    {\n      \"match\": \"=\",\n      \"name\": \"keyword.operator.assignment.ruby\"\n    },\n    {\n      \"match\": \"\\\\||~|>>\",\n      \"name\": \"keyword.operator.other.ruby\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.separator.statement.ruby\"\n    },\n    {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.object.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.ruby\"\n        }\n      },\n      \"comment\": \"Mark as namespace separator if double colons followed by capital letter\",\n      \"match\": \"(::)\\\\s*(?=[A-Z])\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.method.ruby\"\n        }\n      },\n      \"comment\": \"Mark as method separator if double colons not followed by capital letter\",\n      \"match\": \"(\\\\.|::)\\\\s*(?![A-Z])\"\n    },\n    {\n      \"comment\": \"Must come after method and constant separators to prefer double colons\",\n      \"match\": \":\",\n      \"name\": \"punctuation.separator.other.ruby\"\n    },\n    {\n      \"match\": \"\\\\{\",\n      \"name\": \"punctuation.section.scope.begin.ruby\"\n    },\n    {\n      \"match\": \"\\\\}\",\n      \"name\": \"punctuation.section.scope.end.ruby\"\n    },\n    {\n      \"match\": \"\\\\[\",\n      \"name\": \"punctuation.section.array.begin.ruby\"\n    },\n    {\n      \"match\": \"\\\\]\",\n      \"name\": \"punctuation.section.array.end.ruby\"\n    },\n    {\n      \"match\": \"\\\\(|\\\\)\",\n      \"name\": \"punctuation.section.function.ruby\"\n    }\n  ],\n  \"repository\": {\n    \"escaped_char\": {\n      \"match\": \"\\\\\\\\(?:[0-7]{1,3}|x[\\\\da-fA-F]{1,2}|.)\",\n      \"name\": \"constant.character.escape.ruby\"\n    },\n    \"heredoc\": {\n      \"begin\": \"^<<[-~]?\\\\w+\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"interpolated_ruby\": {\n      \"patterns\": [\n        {\n          \"begin\": \"#\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.ruby\",\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.ruby\"\n            },\n            \"1\": {\n              \"name\": \"source.ruby\"\n            }\n          },\n          \"name\": \"meta.embedded.line.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ],\n          \"repository\": {\n            \"nest_curly_and_self\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.scope.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#nest_curly_and_self\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.instance.ruby\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#@@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.class.ruby\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#\\\\$)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.global.ruby\"\n        }\n      ]\n    },\n    \"percent_literals\": {\n      \"patterns\": [\n        {\n          \"begin\": \"%i(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.ruby\"\n            }\n          },\n          \"name\": \"meta.array.symbol.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#symbol\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\<|\\\\\\\\>\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\{|\\\\\\\\\\\\}\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\[|\\\\\\\\\\\\]\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\(|\\\\\\\\\\\\)\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"symbol\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\\\\\|\\\\\\\\[ ]\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"match\": \"\\\\S\\\\w*\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%I(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.ruby\"\n            }\n          },\n          \"name\": \"meta.array.symbol.interpolated.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#symbol\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"<\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\[\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\(\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"symbol\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"(?=\\\\\\\\|#\\\\{)\",\n                  \"end\": \"(?!\\\\G)\",\n                  \"name\": \"constant.other.symbol.ruby\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escaped_char\"\n                    },\n                    {\n                      \"include\": \"#interpolated_ruby\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\S\\\\w*\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%q(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.quoted.other.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\<|\\\\\\\\>|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\{|\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\[|\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\(|\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%Q?(?:([(\\\\[{<])|([^\\\\w\\\\s=]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.quoted.other.interpolated.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%r(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"end\": \"([)\\\\]}>]\\\\2|\\\\1\\\\2)[eimnosux]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.regexp.percent.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#regex_sub\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#regex_sub\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#regex_sub\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#regex_sub\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#regex_sub\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%s(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.constant.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.constant.end.ruby\"\n            }\n          },\n          \"name\": \"constant.other.symbol.percent.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\<|\\\\\\\\>|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\{|\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\[|\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\(|\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%w(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.ruby\"\n            }\n          },\n          \"name\": \"meta.array.string.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\<|\\\\\\\\>\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\{|\\\\\\\\\\\\}\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\[|\\\\\\\\\\\\]\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\(|\\\\\\\\\\\\)\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"string\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\\\\\|\\\\\\\\[ ]\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"match\": \"\\\\S\\\\w*\",\n                  \"name\": \"string.other.ruby\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%W(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.ruby\"\n            }\n          },\n          \"name\": \"meta.array.string.interpolated.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"<\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\[\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\(\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"string\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"(?=\\\\\\\\|#\\\\{)\",\n                  \"end\": \"(?!\\\\G)\",\n                  \"name\": \"string.other.ruby\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escaped_char\"\n                    },\n                    {\n                      \"include\": \"#interpolated_ruby\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\S\\\\w*\",\n                  \"name\": \"string.other.ruby\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%x(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.interpolated.percent.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"regex_sub\": {\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.quantifier.begin.ruby\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.quantifier.end.ruby\"\n            }\n          },\n          \"match\": \"(\\\\{)\\\\d+(,\\\\d+)?(\\\\})\",\n          \"name\": \"keyword.operator.quantifier.ruby\"\n        },\n        {\n          \"begin\": \"\\\\[\\\\^?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.begin.ruby\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.end.ruby\"\n            }\n          },\n          \"name\": \"constant.other.character-class.set.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\\\\?#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.ruby\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.ruby\"\n            }\n          },\n          \"name\": \"comment.line.number-sign.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.ruby\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"meta.group.regexp.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#regex_sub\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|\\\\s)(#)\\\\s(?=[[a-zA-Z0-9,. \\\\t?!-][^\\\\x{00}-\\\\x{7F}]]*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.ruby\"\n            }\n          },\n          \"comment\": \"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.\",\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.number-sign.ruby\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/rust.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/dustypomerleau/rust-syntax/blob/master/syntaxes/rust.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/dustypomerleau/rust-syntax/commit/20462d50ff97338f42c6b64c3f421c634fd60734\",\n  \"name\": \"rust\",\n  \"scopeName\": \"source.rust\",\n  \"patterns\": [\n    {\n      \"comment\": \"boxed slice literal\",\n      \"begin\": \"(<)(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brackets.angle.rust\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.brackets.square.rust\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.brackets.angle.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#gtypes\"\n        },\n        {\n          \"include\": \"#lvariables\"\n        },\n        {\n          \"include\": \"#lifetimes\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#types\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"macro type metavariables\",\n      \"name\": \"meta.macro.metavariable.type.rust\",\n      \"match\": \"(\\\\$)((crate)|([A-Z][A-Za-z0-9_]*))((:)(block|expr|ident|item|lifetime|literal|meta|path?|stmt|tt|ty|vis))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.macro.dollar.rust\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.crate.rust\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.metavariable.rust\"\n        },\n        \"6\": {\n          \"name\": \"keyword.operator.key-value.rust\"\n        },\n        \"7\": {\n          \"name\": \"variable.other.metavariable.specifier.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"macro metavariables\",\n      \"name\": \"meta.macro.metavariable.rust\",\n      \"match\": \"(\\\\$)([a-z][A-Za-z0-9_]*)((:)(block|expr|ident|item|lifetime|literal|meta|path?|stmt|tt|ty|vis))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.macro.dollar.rust\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.metavariable.name.rust\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.key-value.rust\"\n        },\n        \"5\": {\n          \"name\": \"variable.other.metavariable.specifier.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"macro rules\",\n      \"name\": \"meta.macro.rules.rust\",\n      \"match\": \"\\\\b(macro_rules!)\\\\s+(([a-z0-9_]+)|([A-Z][a-z0-9_]*))\\\\s+(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.macro.rules.rust\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.macro.rust\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.macro.rust\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.brackets.curly.rust\"\n        }\n      }\n    },\n    {\n      \"comment\": \"attributes\",\n      \"name\": \"meta.attribute.rust\",\n      \"begin\": \"(#)(\\\\!?)(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.attribute.rust\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.attribute.inner.rust\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.brackets.attribute.rust\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.brackets.attribute.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#lifetimes\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#gtypes\"\n        },\n        {\n          \"include\": \"#types\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"modules\",\n      \"match\": \"(mod)\\\\s+((?:r#(?!crate|[Ss]elf|super))?[a-z][A-Za-z0-9_]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.rust\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.module.rust\"\n        }\n      }\n    },\n    {\n      \"comment\": \"external crate imports\",\n      \"name\": \"meta.import.rust\",\n      \"begin\": \"\\\\b(extern)\\\\s+(crate)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.rust\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.crate.rust\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.semi.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"use statements\",\n      \"name\": \"meta.use.rust\",\n      \"begin\": \"\\\\b(use)\\\\s\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.rust\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.semi.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#namespaces\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#lvariables\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#block-comments\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#lvariables\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#gtypes\"\n    },\n    {\n      \"include\": \"#functions\"\n    },\n    {\n      \"include\": \"#types\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#lifetimes\"\n    },\n    {\n      \"include\": \"#macros\"\n    },\n    {\n      \"include\": \"#namespaces\"\n    },\n    {\n      \"include\": \"#punctuation\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#variables\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"comment\": \"documentation comments\",\n          \"name\": \"comment.line.documentation.rust\",\n          \"match\": \"^\\\\s*///.*\"\n        },\n        {\n          \"comment\": \"line comments\",\n          \"name\": \"comment.line.double-slash.rust\",\n          \"match\": \"\\\\s*//.*\"\n        }\n      ]\n    },\n    \"block-comments\": {\n      \"patterns\": [\n        {\n          \"comment\": \"empty block comments\",\n          \"name\": \"comment.block.rust\",\n          \"match\": \"/\\\\*\\\\*/\"\n        },\n        {\n          \"comment\": \"block documentation comments\",\n          \"name\": \"comment.block.documentation.rust\",\n          \"begin\": \"/\\\\*\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"block comments\",\n          \"name\": \"comment.block.rust\",\n          \"begin\": \"/\\\\*(?!\\\\*)\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"comment\": \"ALL CAPS constants\",\n          \"name\": \"constant.other.caps.rust\",\n          \"match\": \"\\\\b[A-Z]{2}[A-Z0-9_]*\\\\b\"\n        },\n        {\n          \"comment\": \"constant declarations\",\n          \"match\": \"\\\\b(const)\\\\s+([A-Z][A-Za-z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.caps.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"decimal integers and floats\",\n          \"name\": \"constant.numeric.decimal.rust\",\n          \"match\": \"\\\\b\\\\d[\\\\d_]*(\\\\.?)[\\\\d_]*(?:(E)([+-])([\\\\d_]+))?(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.dot.decimal.rust\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.exponent.rust\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.exponent.sign.rust\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.decimal.exponent.mantissa.rust\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"hexadecimal integers\",\n          \"name\": \"constant.numeric.hex.rust\",\n          \"match\": \"\\\\b0x[\\\\da-fA-F_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"octal integers\",\n          \"name\": \"constant.numeric.oct.rust\",\n          \"match\": \"\\\\b0o[0-7_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"binary integers\",\n          \"name\": \"constant.numeric.bin.rust\",\n          \"match\": \"\\\\b0b[01_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"booleans\",\n          \"name\": \"constant.language.bool.rust\",\n          \"match\": \"\\\\b(true|false)\\\\b\"\n        }\n      ]\n    },\n    \"escapes\": {\n      \"comment\": \"escapes: ASCII, byte, Unicode, quote, regex\",\n      \"name\": \"constant.character.escape.rust\",\n      \"match\": \"(\\\\\\\\)(?:(?:(x[0-7][0-7a-fA-F])|(u(\\\\{)[\\\\da-fA-F]{4,6}(\\\\}))|.))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.backslash.rust\"\n        },\n        \"2\": {\n          \"name\": \"constant.character.escape.bit.rust\"\n        },\n        \"3\": {\n          \"name\": \"constant.character.escape.unicode.rust\"\n        },\n        \"4\": {\n          \"name\": \"constant.character.escape.unicode.punctuation.rust\"\n        },\n        \"5\": {\n          \"name\": \"constant.character.escape.unicode.punctuation.rust\"\n        }\n      }\n    },\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"comment\": \"pub as a function\",\n          \"match\": \"\\\\b(pub)(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"function definition\",\n          \"name\": \"meta.function.definition.rust\",\n          \"begin\": \"\\\\b(fn)\\\\s+((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)((\\\\()|(<))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.fn.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.rust\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.brackets.angle.rust\"\n            }\n          },\n          \"end\": \"\\\\{|;\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.brackets.curly.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#lvariables\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#gtypes\"\n            },\n            {\n              \"include\": \"#functions\"\n            },\n            {\n              \"include\": \"#lifetimes\"\n            },\n            {\n              \"include\": \"#macros\"\n            },\n            {\n              \"include\": \"#namespaces\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#types\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"function/method calls, chaining\",\n          \"name\": \"meta.function.call.rust\",\n          \"begin\": \"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#lvariables\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#gtypes\"\n            },\n            {\n              \"include\": \"#functions\"\n            },\n            {\n              \"include\": \"#lifetimes\"\n            },\n            {\n              \"include\": \"#macros\"\n            },\n            {\n              \"include\": \"#namespaces\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#types\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"function/method calls with turbofish\",\n          \"name\": \"meta.function.call.rust\",\n          \"begin\": \"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(?=::<.*>\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.rust\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#lvariables\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#gtypes\"\n            },\n            {\n              \"include\": \"#functions\"\n            },\n            {\n              \"include\": \"#lifetimes\"\n            },\n            {\n              \"include\": \"#macros\"\n            },\n            {\n              \"include\": \"#namespaces\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#types\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"comment\": \"control flow keywords\",\n          \"name\": \"keyword.control.rust\",\n          \"match\": \"\\\\b(await|break|continue|do|else|for|if|loop|match|return|try|while|yield)\\\\b\"\n        },\n        {\n          \"comment\": \"storage keywords\",\n          \"name\": \"keyword.other.rust storage.type.rust\",\n          \"match\": \"\\\\b(extern|let|macro|mod)\\\\b\"\n        },\n        {\n          \"comment\": \"const keyword\",\n          \"name\": \"storage.modifier.rust\",\n          \"match\": \"\\\\b(const)\\\\b\"\n        },\n        {\n          \"comment\": \"type keyword\",\n          \"name\": \"keyword.declaration.type.rust storage.type.rust\",\n          \"match\": \"\\\\b(type)\\\\b\"\n        },\n        {\n          \"comment\": \"enum keyword\",\n          \"name\": \"keyword.declaration.enum.rust storage.type.rust\",\n          \"match\": \"\\\\b(enum)\\\\b\"\n        },\n        {\n          \"comment\": \"trait keyword\",\n          \"name\": \"keyword.declaration.trait.rust storage.type.rust\",\n          \"match\": \"\\\\b(trait)\\\\b\"\n        },\n        {\n          \"comment\": \"struct keyword\",\n          \"name\": \"keyword.declaration.struct.rust storage.type.rust\",\n          \"match\": \"\\\\b(struct)\\\\b\"\n        },\n        {\n          \"comment\": \"storage modifiers\",\n          \"name\": \"storage.modifier.rust\",\n          \"match\": \"\\\\b(abstract|static)\\\\b\"\n        },\n        {\n          \"comment\": \"other keywords\",\n          \"name\": \"keyword.other.rust\",\n          \"match\": \"\\\\b(as|async|become|box|dyn|move|final|impl|in|override|priv|pub|ref|typeof|union|unsafe|unsized|use|virtual|where)\\\\b\"\n        },\n        {\n          \"comment\": \"fn\",\n          \"name\": \"keyword.other.fn.rust\",\n          \"match\": \"\\\\bfn\\\\b\"\n        },\n        {\n          \"comment\": \"crate\",\n          \"name\": \"keyword.other.crate.rust\",\n          \"match\": \"\\\\bcrate\\\\b\"\n        },\n        {\n          \"comment\": \"mut\",\n          \"name\": \"storage.modifier.mut.rust\",\n          \"match\": \"\\\\bmut\\\\b\"\n        },\n        {\n          \"comment\": \"logical operators\",\n          \"name\": \"keyword.operator.logical.rust\",\n          \"match\": \"(\\\\^|\\\\||\\\\|\\\\||&&|<<|>>|!)(?!=)\"\n        },\n        {\n          \"comment\": \"logical AND, borrow references\",\n          \"name\": \"keyword.operator.borrow.and.rust\",\n          \"match\": \"&(?![&=])\"\n        },\n        {\n          \"comment\": \"assignment operators\",\n          \"name\": \"keyword.operator.assignment.rust\",\n          \"match\": \"(\\\\+=|-=|\\\\*=|/=|%=|\\\\^=|&=|\\\\|=|<<=|>>=)\"\n        },\n        {\n          \"comment\": \"single equal\",\n          \"name\": \"keyword.operator.assignment.equal.rust\",\n          \"match\": \"(?<![<>])=(?!=|>)\"\n        },\n        {\n          \"comment\": \"comparison operators\",\n          \"name\": \"keyword.operator.comparison.rust\",\n          \"match\": \"(=(=)?(?!>)|!=|<=|(?<!=)>=)\"\n        },\n        {\n          \"comment\": \"math operators\",\n          \"name\": \"keyword.operator.math.rust\",\n          \"match\": \"(([+%]|(\\\\*(?!\\\\w)))(?!=))|(-(?!>))|(/(?!/))\"\n        },\n        {\n          \"comment\": \"less than, greater than (special case)\",\n          \"match\": \"(?:\\\\b|(?:(\\\\))|(\\\\])|(\\\\})))[ \\\\t]+([<>])[ \\\\t]+(?:\\\\b|(?:(\\\\()|(\\\\[)|(\\\\{)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brackets.square.rust\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.brackets.curly.rust\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.comparison.rust\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.brackets.square.rust\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.brackets.curly.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"namespace operator\",\n          \"name\": \"keyword.operator.namespace.rust\",\n          \"match\": \"::\"\n        },\n        {\n          \"comment\": \"dereference asterisk\",\n          \"match\": \"(\\\\*)(?=\\\\w+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.dereference.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"subpattern binding\",\n          \"name\": \"keyword.operator.subpattern.rust\",\n          \"match\": \"@\"\n        },\n        {\n          \"comment\": \"dot access\",\n          \"name\": \"keyword.operator.access.dot.rust\",\n          \"match\": \"\\\\.(?!\\\\.)\"\n        },\n        {\n          \"comment\": \"ranges, range patterns\",\n          \"name\": \"keyword.operator.range.rust\",\n          \"match\": \"\\\\.{2}(=|\\\\.)?\"\n        },\n        {\n          \"comment\": \"colon\",\n          \"name\": \"keyword.operator.key-value.rust\",\n          \"match\": \":(?!:)\"\n        },\n        {\n          \"comment\": \"dashrocket, skinny arrow\",\n          \"name\": \"keyword.operator.arrow.skinny.rust\",\n          \"match\": \"->\"\n        },\n        {\n          \"comment\": \"hashrocket, fat arrow\",\n          \"name\": \"keyword.operator.arrow.fat.rust\",\n          \"match\": \"=>\"\n        },\n        {\n          \"comment\": \"dollar macros\",\n          \"name\": \"keyword.operator.macro.dollar.rust\",\n          \"match\": \"\\\\$\"\n        },\n        {\n          \"comment\": \"question mark operator, questionably sized, macro kleene matcher\",\n          \"name\": \"keyword.operator.question.rust\",\n          \"match\": \"\\\\?\"\n        }\n      ]\n    },\n    \"interpolations\": {\n      \"comment\": \"curly brace interpolations\",\n      \"name\": \"meta.interpolation.rust\",\n      \"match\": \"({)[^\\\"{}]*(})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.interpolation.rust\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.interpolation.rust\"\n        }\n      }\n    },\n    \"lifetimes\": {\n      \"patterns\": [\n        {\n          \"comment\": \"named lifetime parameters\",\n          \"match\": \"(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.lifetime.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.lifetime.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"borrowing references to named lifetimes\",\n          \"match\": \"(\\\\&)(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.borrow.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.lifetime.rust\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.lifetime.rust\"\n            }\n          }\n        }\n      ]\n    },\n    \"macros\": {\n      \"patterns\": [\n        {\n          \"comment\": \"macros\",\n          \"name\": \"meta.macro.rust\",\n          \"match\": \"(([a-z_][A-Za-z0-9_]*!)|([A-Z_][A-Za-z0-9_]*!))\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"entity.name.function.macro.rust\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.macro.rust\"\n            }\n          }\n        }\n      ]\n    },\n    \"namespaces\": {\n      \"patterns\": [\n        {\n          \"comment\": \"namespace (non-type, non-function path segment)\",\n          \"match\": \"(?<![A-Za-z0-9_])([a-z0-9_]+)((?<!super|self)::)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.namespace.rust\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.namespace.rust\"\n            }\n          }\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"comment\": \"numeric types\",\n          \"match\": \"(?<![A-Za-z])(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"parameterized types\",\n          \"begin\": \"\\\\b([A-Z][A-Za-z0-9]*)(<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brackets.angle.rust\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.brackets.angle.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#lvariables\"\n            },\n            {\n              \"include\": \"#lifetimes\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#types\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"primitive types\",\n          \"name\": \"entity.name.type.primitive.rust\",\n          \"match\": \"\\\\b(bool|char|str)\\\\b\"\n        },\n        {\n          \"comment\": \"trait declarations\",\n          \"match\": \"\\\\b(trait)\\\\s+([A-Z][A-Za-z0-9]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.trait.rust storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.trait.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"struct declarations\",\n          \"match\": \"\\\\b(struct)\\\\s+([A-Z][A-Za-z0-9]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.struct.rust storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.struct.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"enum declarations\",\n          \"match\": \"\\\\b(enum)\\\\s+([A-Z][A-Za-z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.enum.rust storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.enum.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"type declarations\",\n          \"match\": \"\\\\b(type)\\\\s+([A-Z][A-Za-z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.type.rust storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.declaration.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"types\",\n          \"name\": \"entity.name.type.rust\",\n          \"match\": \"\\\\b[A-Z][A-Za-z0-9]*\\\\b(?!!)\"\n        }\n      ]\n    },\n    \"gtypes\": {\n      \"patterns\": [\n        {\n          \"comment\": \"option types\",\n          \"name\": \"entity.name.type.option.rust\",\n          \"match\": \"\\\\b(Some|None)\\\\b\"\n        },\n        {\n          \"comment\": \"result types\",\n          \"name\": \"entity.name.type.result.rust\",\n          \"match\": \"\\\\b(Ok|Err)\\\\b\"\n        }\n      ]\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"comment\": \"comma\",\n          \"name\": \"punctuation.comma.rust\",\n          \"match\": \",\"\n        },\n        {\n          \"comment\": \"curly braces\",\n          \"name\": \"punctuation.brackets.curly.rust\",\n          \"match\": \"[{}]\"\n        },\n        {\n          \"comment\": \"parentheses, round brackets\",\n          \"name\": \"punctuation.brackets.round.rust\",\n          \"match\": \"[()]\"\n        },\n        {\n          \"comment\": \"semicolon\",\n          \"name\": \"punctuation.semi.rust\",\n          \"match\": \";\"\n        },\n        {\n          \"comment\": \"square brackets\",\n          \"name\": \"punctuation.brackets.square.rust\",\n          \"match\": \"[\\\\[\\\\]]\"\n        },\n        {\n          \"comment\": \"angle brackets\",\n          \"name\": \"punctuation.brackets.angle.rust\",\n          \"match\": \"(?<!=)[<>]\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"comment\": \"double-quoted strings and byte strings\",\n          \"name\": \"string.quoted.double.rust\",\n          \"begin\": \"(b?)(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.byte.raw.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.rust\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"include\": \"#interpolations\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"double-quoted raw strings and raw byte strings\",\n          \"name\": \"string.quoted.double.rust\",\n          \"begin\": \"(b?r)(#*)(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.byte.raw.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.raw.rust\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.rust\"\n            }\n          },\n          \"end\": \"(\\\")(\\\\2)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.raw.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"characters and bytes\",\n          \"name\": \"string.quoted.single.char.rust\",\n          \"begin\": \"(b)?(')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.byte.raw.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.char.rust\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.char.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"lvariables\": {\n      \"patterns\": [\n        {\n          \"comment\": \"self\",\n          \"name\": \"variable.language.self.rust\",\n          \"match\": \"\\\\b[Ss]elf\\\\b\"\n        },\n        {\n          \"comment\": \"super\",\n          \"name\": \"variable.language.super.rust\",\n          \"match\": \"\\\\bsuper\\\\b\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"comment\": \"variables\",\n          \"name\": \"variable.other.rust\",\n          \"match\": \"\\\\b(?<!(?<!\\\\.)\\\\.)(?:r#(?!(crate|[Ss]elf|super)))?[a-z0-9_]+\\\\b\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/sas.tmLanguage.json",
    "content": "{\n  \"name\": \"sas\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.sas\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.sas\"\n        }\n      },\n      \"match\": \"(?i:(proc) (\\\\w+))\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.sas\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.table-name.sas\"\n        }\n      },\n      \"match\": \"(?i:^(data) ([^\\\\s]+))\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.sas\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.library-name.sas\"\n        },\n        \"3\": {\n          \"name\": \"constant.other.table-name.sas\"\n        }\n      },\n      \"match\": \"(?i:\\\\b(data|out)=(\\\\w+\\\\.)?(\\\\w*)\\\\b)\"\n    },\n    {\n      \"match\": \"(?i:\\\\bsort|run|quit|output\\\\b)\",\n      \"name\": \"support.function.sas\"\n    },\n    {\n      \"match\": \"\\\\b\\\\d+(\\\\.\\\\d+)*\\\\b\",\n      \"name\": \"constant.numeric.sas\"\n    },\n    {\n      \"match\": \"\\\\blow|high\\\\b\",\n      \"name\": \"constant.sas\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.sas\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.sas\"\n        }\n      },\n      \"match\": \"(?i:\\\\b(by) ([^\\\\s]+)\\\\b)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.sas\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.sas\"\n        }\n      },\n      \"match\": \"(?i:(keep|drop|retain|format|class|var) ([\\\\w\\\\s]+))\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.sas\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.table-name.sas\"\n        }\n      },\n      \"match\": \"(?i:\\\\b(set|tables|merge) ([\\\\w\\\\s]+)\\\\b)\"\n    },\n    {\n      \"match\": \"\\\\b(if|else|then|end)\\\\b\",\n      \"name\": \"keyword.control.sas\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(descending)\\\\b\",\n      \"name\": \"keyword.other.order.sas\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(title)\\\\b\",\n      \"name\": \"keyword.other.sas\"\n    },\n    {\n      \"match\": \"\\\\*\",\n      \"name\": \"keyword.operator.star.sas\"\n    },\n    {\n      \"match\": \"\\\\b<|>|eq|ne\\\\b\",\n      \"name\": \"keyword.operator.comparison.sas\"\n    },\n    {\n      \"match\": \" \\\\. \",\n      \"name\": \"keyword.null.sas\"\n    },\n    {\n      \"match\": \"-|\\\\+|/\",\n      \"name\": \"keyword.operator.math.sas\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(avg|sum)(?=\\\\s*\\\\()\",\n      \"name\": \"support.function.aggregate.sas\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.library-name.sas\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.table-name.sas\"\n        }\n      },\n      \"match\": \"(\\\\w+?)\\\\.(\\\\w+)\"\n    },\n    {\n      \"begin\": \"proc sas;\",\n      \"end\": \"quit;\",\n      \"patterns\": [\n        {\n          \"include\": \"source.sas\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#strings\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sas\"\n            }\n          },\n          \"match\": \"^\\\\s*(\\\\*).*;\\\\s*$\\\\n?\",\n          \"name\": \"comment.line.asterisk.sas\"\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.sas\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.c\"\n        }\n      ]\n    },\n    \"string_escape\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape.sas\"\n    },\n    \"string_interpolation\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.sas\"\n        }\n      },\n      \"match\": \"(#\\\\{)([^\\\\}]*)(\\\\})\",\n      \"name\": \"string.interpolated.sas\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.sas\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.sas\"\n            }\n          },\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and sas files tend to have very long lines.\",\n          \"match\": \"(')[^'\\\\\\\\]*(')\",\n          \"name\": \"string.quoted.single.sas\"\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sas\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sas\"\n            }\n          },\n          \"name\": \"string.quoted.single.sas\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escape\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.sas\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.sas\"\n            }\n          },\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and sas files tend to have very long lines.\",\n          \"match\": \"(`)[^`\\\\\\\\]*(`)\",\n          \"name\": \"string.quoted.other.backtick.sas\"\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sas\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sas\"\n            }\n          },\n          \"name\": \"string.quoted.other.backtick.sas\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escape\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.sas\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.sas\"\n            }\n          },\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and sas files tend to have very long lines.\",\n          \"match\": \"(\\\")[^\\\"#]*(\\\")\",\n          \"name\": \"string.quoted.double.sas\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sas\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sas\"\n            }\n          },\n          \"name\": \"string.quoted.double.sas\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"%\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sas\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sas\"\n            }\n          },\n          \"name\": \"string.other.quoted.brackets.sas\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.sas\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/sass.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"\\\\*/|^\\\\s*$\",\n  \"foldingStartMarker\": \"/\\\\*|^#|^\\\\*|^\\\\b|^\\\\.\",\n  \"repository\": {\n    \"nested-parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#nested-parens\" }],\n      \"captures\": { \"0\": { \"name\": \"punctuation.section.scope.sass\" } }\n    },\n    \"double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.css.sass\"\n    },\n    \"placeholder-selector\": {\n      \"match\": \"%[a-zA-Z0-9_-]+\",\n      \"name\": \"entity.other.attribute-name.placeholder-selector.sass\"\n    },\n    \"single-quoted\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.css.sass\"\n    },\n    \"variable\": { \"match\": \"\\\\$[a-zA-Z0-9_-]+\", \"name\": \"variable\" }\n  },\n  \"keyEquivalent\": \"^~S\",\n  \"fileTypes\": [\"sass\", \"scss\"],\n  \"uuid\": \"0AB51F6F-7780-4BF2-BEE3-5405ABA6A6B9\",\n  \"patterns\": [\n    {\n      \"match\": \"(?i)(\\\\[)\\\\s*(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)(?:\\\\s*([~|^$*]?=)\\\\s*(?:(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)|((?>(['\\\"])(?:[^\\\\\\\\]|\\\\\\\\.)*?(\\\\6)))))?\\\\s*(\\\\])\",\n      \"name\": \"meta.attribute-selector.scss\",\n      \"captures\": {\n        \"7\": { \"name\": \"punctuation.definition.string.end.scss\" },\n        \"3\": { \"name\": \"punctuation.separator.operator.scss\" },\n        \"4\": { \"name\": \"string.unquoted.attribute-value.scss\" },\n        \"5\": { \"name\": \"string.quoted.double.attribute-value.scss\" },\n        \"1\": { \"name\": \"punctuation.definition.entity.scss\" },\n        \"6\": { \"name\": \"punctuation.definition.string.begin.scss\" },\n        \"2\": { \"name\": \"entity.other.attribute-name.attribute.scss\" }\n      }\n    },\n    {\n      \"match\": \"(?<=@include|@mixin)\\\\s[a-zA-Z0-9_-]+\",\n      \"name\": \"support.function.name.sass\"\n    },\n    {\n      \"match\": \"(@media\\\\s(all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)*)|(@else\\\\s(if)*)|@[a-zA-Z-]+\",\n      \"name\": \"keyword.control.at-rule.css.sass\"\n    },\n    { \"include\": \"#variable\" },\n    { \"include\": \"#placeholder-selector\" },\n    {\n      \"match\": \"[a-z-]+(?=:)|\\\\b(from|through|to|in)\\\\b\",\n      \"name\": \"support.type.property-name.css.sass\"\n    },\n    {\n      \"match\": \"@(import|for|else|each|mixin|include|charset|import|media|page|namespace|extend)\\\\s[\\\\%\\\\/\\\\.\\\\w-]*\\\\b\",\n      \"name\": \"keyword.control.at-rule.sass\"\n    },\n    {\n      \"match\": \"!(important|default|optional)\",\n      \"name\": \"keyword.other.important.css.sass\"\n    },\n    { \"match\": \"\\\\*\", \"name\": \"entity.name.tag.wildcard.scss\" },\n    {\n      \"match\": \"(?<=[\\\\d])(ch|cm|deg|dpi|dpcm|dppx|em|ex|grad|in|mm|ms|pc|pt|px|rad|rem|turn|s|vh|vmin|vw)\\\\b|%\",\n      \"name\": \"keyword.other.unit.scss\"\n    },\n    {\n      \"match\": \"\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b\",\n      \"name\": \"keyword.control.untitled\"\n    },\n    {\n      \"match\": \"(?<![!<>=a-zA-Z0-9_-]|[<>=a-zA-Z0-9_-] )[=+][a-zA-Z0-9_-]+\",\n      \"name\": \"keyword.control.mixin-shorthand.sass\"\n    },\n    {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escaped.sass\" }\n      ],\n      \"name\": \"string.quoted.single.sass\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escaped.sass\" }\n      ],\n      \"name\": \"string.quoted.double.sass\"\n    },\n    {\n      \"match\": \"[\\\\.%][a-zA-Z0-9_-]+\",\n      \"name\": \"entity.other.attribute-name.class.sass\"\n    },\n    {\n      \"match\": \"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\\\b\",\n      \"name\": \"constant.other.rgb-value.sass\"\n    },\n    {\n      \"match\": \"!(important|default|optional)\",\n      \"name\": \"keyword.other.important.css.sass\"\n    },\n    {\n      \"match\": \"#[a-zA-Z0-9_-]+\",\n      \"name\": \"entity.other.attribute-name.id.sass\"\n    },\n    { \"match\": \"[!\\\\$][a-zA-Z0-9_-]+\", \"name\": \"variable.parameter.sass\" },\n    { \"begin\": \"/\\\\*\", \"end\": \"\\\\*/\", \"name\": \"comment.block.sass\" },\n    { \"begin\": \"//\", \"end\": \"$\\\\n?\", \"name\": \"comment.line.double-slash.sass\" },\n    {\n      \"match\": \"(-|\\\\+)?\\\\s*[0-9]+(\\\\.[0-9]+)?\",\n      \"name\": \"constant.numeric.sass\"\n    },\n    {\n      \"match\": \"\\\\b(whitespace|wait|w-resize|visible|rect|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b\",\n      \"name\": \"support.constant.property-value.sass\"\n    },\n    {\n      \"match\": \"(left|right|true|false|top|bottom)(?!:)\",\n      \"name\": \"constant.string.sass\"\n    },\n    {\n      \"begin\": \"(headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|-o|-khtml|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:gradient|svg-gradient)|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi|translate(?:X|Y))\\\\s*(\\\\()\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.section.function.scss\" } },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [\n        { \"include\": \"#double-quoted\" },\n        { \"include\": \"#single-quoted\" },\n        { \"include\": \"#variable\" },\n        { \"match\": \"\\\\^|\\\\$|\\\\*|~\", \"name\": \"keyword.other.regex.sass\" },\n        { \"include\": \"#parameters\" }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.function.misc.scss\" },\n        \"2\": { \"name\": \"punctuation.section.function.scss\" }\n      }\n    },\n    { \"match\": \"&\", \"name\": \"keyword.control.untitled\" },\n    {\n      \"match\": \":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)\",\n      \"name\": \"entity.other.attribute-name.tag.pseudo-class\"\n    },\n    {\n      \"match\": \"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)\",\n      \"name\": \"entity.other.attribute-name.tag.pseudo-element\"\n    },\n    {\n      \"match\": \"\\\\b(-webkit-[A-Za-z]+|-moz-[A-Za-z]+|-o-[A-Za-z]+|-ms-[A-Za-z]+|-khtml-[A-Za-z]+|[0-9]{1,3}\\\\%|zoom|z-index|y|x|wrap|word-wrap|word-spacing|word-break|word|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode|trim|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform|top-width|top-style|top-right-radius|top-left-radius|top-color|top|timing-function|text-wrap|text-transform|text-shadow|text-replace|text-outline|text-justify|text-indent|text-height|text-emphasis|text-decoration|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-size|style-type|style-position|style-image|style|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|src|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shadow|respond-to|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-align|ruby|rows|rotation-point|rotation|role|right-width|right-style|right-color|right|richness|rest-before|rest-after|rest|resource|resolution|resize|reset|replace|repeat|rendering-intent|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|pointer-events|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|opacity|offset|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav|name|move-to|model|min-width|min-height|min|max-width|max-height|max|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|mask-image|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-height|line|level|letter-spacing|length|left-width|left-style|left-color|left|label|justify|iteration-count|inline-box-align|initial-value|initial-size|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|grid-rows|grid-columns|grid|gap|font-weight|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-family|font|float-offset|float|flex-group|flex|fit-position|fit|fill|filter|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-model|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-reset|counter-increment|counter|count|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color|collapse|clip|clear|character|caption-side|break-inside|break-before|break-after|break|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom-width|bottom-style|bottom-right-radius|bottom-left-radius|bottom-color|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-level|bookmark-label|bookmark|binding|bidi|before|baseline-shift|baseline|balance|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|backface-visibility|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-duration|animation-direction|animation-delay|animation|alignment-baseline|alignment-adjust|alignment|align-last|align|after|adjust)\\\\b\",\n      \"name\": \"support.type.property-name.sass\"\n    },\n    {\n      \"match\": \"(\\\\b(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace)\\\\b)\",\n      \"name\": \"support.constant.font-name.sass\"\n    },\n    {\n      \"match\": \"(?>-(webkit|moz|ms|o|apple|khtml|xv|wap|epub)[a-zA-Z0-9_-]+)(?!\\\\()\",\n      \"name\": \"support.type.property-name.sass\"\n    },\n    {\n      \"match\": \"(?<=\\\\s\\\\s)-?\\\\w\\\\n?\",\n      \"name\": \"helper.sublime.property-name.sass\"\n    },\n    {\n      \"match\": \"(?<=\\\\w: )\\\\w\\\\n?\",\n      \"name\": \"helper.sublime.property-value.sass\"\n    }\n  ],\n  \"name\": \"Sass\",\n  \"scopeName\": \"source.sass\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/sassdoc.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-sass/blob/master/grammars/sassdoc.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-sass/commit/303bbf0c250fe380b9e57375598cfd916110758b\",\n  \"name\": \"SassDoc\",\n  \"scopeName\": \"source.sassdoc\",\n  \"patterns\": [\n    {\n      \"match\": \"(?x)\\n((@)(?:access))\\n\\\\s+\\n(private|public)\\n\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        },\n        \"3\": {\n          \"name\": \"constant.language.access-type.sassdoc\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?x)\\n((@)author)\\n\\\\s+\\n(\\n  [^@\\\\s<>*/]\\n  (?:[^@<>*/]|\\\\*[^/])*\\n)\\n(?:\\n  \\\\s*\\n  (<)\\n  ([^>\\\\s]+)\\n  (>)\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.instance.sassdoc\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.bracket.angle.begin.sassdoc\"\n        },\n        \"5\": {\n          \"name\": \"constant.other.email.link.underline.sassdoc\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.bracket.angle.end.sassdoc\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.example.css.scss.sassdoc\",\n      \"begin\": \"(?x)\\n((@)example)\\n\\\\s+\\n(css|scss)\",\n      \"end\": \"(?=@|///$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.sassdoc\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"^///\\\\s+\"\n        },\n        {\n          \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"source.embedded.css.scss\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css.scss\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.example.html.sassdoc\",\n      \"begin\": \"(?x)\\n((@)example)\\n\\\\s+\\n(markup)\",\n      \"end\": \"(?=@|///$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.sassdoc\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"^///\\\\s+\"\n        },\n        {\n          \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"source.embedded.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.html\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.example.js.sassdoc\",\n      \"begin\": \"(?x)\\n((@)example)\\n\\\\s+\\n(javascript)\",\n      \"end\": \"(?=@|///$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.sassdoc\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"^///\\\\s+\"\n        },\n        {\n          \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"source.embedded.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"match\": \"(?x)\\n((@)link)\\n\\\\s+\\n(?:\\n  # URL\\n  (\\n    (?=https?://)\\n    (?:[^\\\\s*]|\\\\*[^/])+\\n  )\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.link.underline.sassdoc\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.instance.sassdoc\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?x)\\n(\\n  (@)\\n  (?:arg|argument|param|parameter|requires?|see|colors?|fonts?|ratios?|sizes?)\\n)\\n\\\\s+\\n(\\n  [A-Za-z_$%]\\n  [\\\\-\\\\w$.\\\\[\\\\]]*\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.sassdoc\"\n        }\n      }\n    },\n    {\n      \"begin\": \"((@)(?:arg|argument|param|parameter|prop|property|requires?|see|sizes?))\\\\s+(?={)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        }\n      },\n      \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n      \"patterns\": [\n        {\n          \"include\": \"#sassdoctype\"\n        },\n        {\n          \"match\": \"([A-Za-z_$%][\\\\-\\\\w$.\\\\[\\\\]]*)\",\n          \"name\": \"variable.other.sassdoc\"\n        },\n        {\n          \"name\": \"variable.other.sassdoc\",\n          \"match\": \"(?x)\\n(\\\\[)\\\\s*\\n[\\\\w$]+\\n(?:\\n  (?:\\\\[\\\\])?                                        # Foo[].bar properties within an array\\n  \\\\.                                                # Foo.Bar namespaced parameter\\n  [\\\\w$]+\\n)*\\n(?:\\n  \\\\s*\\n  (=)                                                # [foo=bar] Default parameter value\\n  \\\\s*\\n  (\\n    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\\n    (?>\\n      \\\"(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!\\\"))|[^*\\\\\\\\])*?\\\" |  # [foo=\\\"bar\\\"] Double-quoted\\n      '(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!'))|[^*\\\\\\\\])*?' |  # [foo='bar'] Single-quoted\\n      \\\\[ (?:(?:\\\\*(?!/))|[^*])*? \\\\] |              # [foo=[1,2]] Array literal\\n      (?:(?:\\\\*(?!/))|\\\\s(?!\\\\s*\\\\])|\\\\[.*?(?:\\\\]|(?=\\\\*/))|[^*\\\\s\\\\[\\\\]])* # Everything else (sorry)\\n    )*\\n  )\\n)?\\n\\\\s*(?:(\\\\])((?:[^*\\\\s]|\\\\*[^\\\\s/])+)?|(?=\\\\*/))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.optional-value.begin.bracket.square.sassdoc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.sassdoc\"\n            },\n            \"3\": {\n              \"name\": \"source.embedded.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.optional-value.end.bracket.square.sassdoc\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.syntax.sassdoc\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n(\\n  (@)\\n  (?:returns?|throws?|exception|outputs?)\\n)\\n\\\\s+(?={)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        }\n      },\n      \"end\": \"(?=\\\\s|[^{}\\\\[\\\\]A-Za-z_$])\",\n      \"patterns\": [\n        {\n          \"include\": \"#sassdoctype\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?x)\\n(\\n  (@)\\n  (?:type)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [A-Za-z |]+\\n  )\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.instance.sassdoc\",\n          \"patterns\": [\n            {\n              \"include\": \"#sassdoctypedelimiter\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"match\": \"(?x)\\n(\\n  (@)\\n  (?:alias|group|name|requires?|see|icons?)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [^{}@\\\\s*] | \\\\*[^/]\\n  )+\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.sassdoc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.instance.sassdoc\"\n        }\n      }\n    },\n    {\n      \"name\": \"storage.type.class.sassdoc\",\n      \"match\": \"(?x)\\n(@)\\n(?:access|alias|author|content|deprecated|example|exception|group\\n|ignore|name|prop|property|requires?|returns?|see|since|throws?|todo\\n|type|outputs?)\\n\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.tag.sassdoc\"\n        }\n      }\n    }\n  ],\n  \"repository\": {\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}|(?=$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"sassdoctypedelimiter\": {\n      \"match\": \"(\\\\|)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.delimiter.sassdoc\"\n        }\n      }\n    },\n    \"sassdoctype\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.illegal.type.sassdoc\",\n          \"match\": \"\\\\G{(?:[^}*]|\\\\*[^/}])+$\"\n        },\n        {\n          \"begin\": \"\\\\G({)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.instance.sassdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.sassdoc\"\n            }\n          },\n          \"contentName\": \"entity.name.type.instance.sassdoc\",\n          \"end\": \"((}))\\\\s*|(?=$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.instance.sassdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.sassdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/scad.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"\\\\*\\\\*/|^\\\\s*\\\\}\",\n  \"foldingStartMarker\": \"/\\\\*\\\\*|\\\\{\\\\s*$\",\n  \"keyEquivalent\": \"^~S\",\n  \"fileTypes\": [\"scad\"],\n  \"uuid\": \"ED71CA06-521E-4D30-B9C0-480808749662\",\n  \"patterns\": [\n    {\n      \"match\": \"^(module)\\\\s.*$\",\n      \"name\": \"meta.function.scad\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.scad\" } }\n    },\n    {\n      \"match\": \"\\\\b(if|else|for|intersection_for|assign|render|function|include|use)\\\\b\",\n      \"name\": \"keyword.control.scad\"\n    },\n    {\n      \"begin\": \"/\\\\*\\\\*(?!/)\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.documentation.scad\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.scad\" } }\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.scad\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.scad\" } }\n    },\n    {\n      \"match\": \"(//).*$\\\\n?\",\n      \"name\": \"comment.line.double-slash.scad\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.comment.scad\" } }\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.scad\" }\n      ],\n      \"name\": \"string.quoted.double.scad\"\n    },\n    {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.scad\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\",\n          \"name\": \"constant.character.escape.scad\"\n        }\n      ],\n      \"name\": \"string.quoted.single.scad\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.scad\" }\n      }\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.scad\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)\",\n          \"name\": \"constant.character.escape.scad\"\n        }\n      ],\n      \"name\": \"string.quoted.double.scad\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.scad\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(abs|acos|asun|atan|atan2|ceil|cos|exp|floor|ln|log|lookup|max|min|pow|rands|round|sign|sin|sqrt|tan|str|cube|sphere|cylinder|polyhedron|scale|rotate|translate|mirror|multimatrix|color|minkowski|hull|union|difference|intersection|echo)\\\\b\",\n      \"name\": \"support.function.scad\"\n    },\n    { \"match\": \"\\\\;\", \"name\": \"punctuation.terminator.statement.scad\" },\n    { \"match\": \",[ |\\\\t]*\", \"name\": \"meta.delimiter.object.comma.scad\" },\n    { \"match\": \"\\\\.\", \"name\": \"meta.delimiter.method.period.scad\" },\n    { \"match\": \"\\\\{|\\\\}\", \"name\": \"meta.brace.curly.scad\" },\n    { \"match\": \"\\\\(|\\\\)\", \"name\": \"meta.brace.round.scad\" },\n    { \"match\": \"\\\\[|\\\\]\", \"name\": \"meta.brace.square.scad\" },\n    {\n      \"match\": \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(in|instanceof|new|delete|typeof|void)\\\\b\",\n      \"name\": \"keyword.operator.scad\"\n    },\n    {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\\\\.[0-9]+)?))\\\\b\",\n      \"name\": \"constant.numeric.scad\"\n    },\n    { \"match\": \"\\\\btrue\\\\b\", \"name\": \"constant.language.boolean.true.scad\" },\n    { \"match\": \"\\\\bfalse\\\\b\", \"name\": \"constant.language.boolean.false.scad\" }\n  ],\n  \"name\": \"OpenSCAD\",\n  \"scopeName\": \"source.scad\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/scala.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"scala\"],\n  \"firstLineMatch\": \"^#!/.*\\\\b\\\\w*scala\\\\b\",\n  \"foldingStartMarker\": \"/\\\\*\\\\*|\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"\\\\*\\\\*/|^\\\\s*\\\\}\",\n  \"keyEquivalent\": \"^~S\",\n  \"repository\": {\n    \"empty-parentheses\": {\n      \"match\": \"(\\\\(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.bracket.scala\"\n        }\n      },\n      \"name\": \"meta.parentheses.scala\"\n    },\n    \"imports\": {\n      \"end\": \"(?<=[\\\\n;])\",\n      \"begin\": \"\\\\b(import)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.scala\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"\\\\b(given)\\\\b\",\n          \"name\": \"keyword.other.import.given.scala\"\n        },\n        {\n          \"match\": \"[A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?\",\n          \"name\": \"entity.name.class.import.scala\"\n        },\n        {\n          \"match\": \"(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\",\n          \"name\": \"entity.name.import.scala\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.definition.import\"\n        },\n        {\n          \"end\": \"}\",\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)(given\\\\s)?\\\\s*(?:([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)))\\\\s*(=>)\\\\s*(?:([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)))\\\\s*\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.import.given.scala\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.class.import.renamed-from.scala\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.import.renamed-from.scala\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.other.arrow.scala\"\n                },\n                \"5\": {\n                  \"name\": \"entity.name.class.import.renamed-to.scala\"\n                },\n                \"6\": {\n                  \"name\": \"entity.name.import.renamed-to.scala\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\b(given)\\\\b\",\n              \"name\": \"keyword.other.import.given.scala\"\n            },\n            {\n              \"match\": \"(given\\\\s+)?(?:([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.import.given.scala\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.class.import.scala\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.import.scala\"\n                }\n              }\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"name\": \"meta.import.selector.scala\"\n        }\n      ],\n      \"name\": \"meta.import.scala\"\n    },\n    \"exports\": {\n      \"end\": \"(?<=[\\\\n;])\",\n      \"begin\": \"\\\\b(export)\\\\s+(given\\\\s+)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.export.scala\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.export.given.scala\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\",\n          \"name\": \"entity.name.export.scala\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.definition.export\"\n        },\n        {\n          \"end\": \"}\",\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\\\s*(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\\\\s*(=>)\\\\s*(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\\\\s*\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.export.renamed-from.scala\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.arrow.scala\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.export.renamed-to.scala\"\n                }\n              }\n            },\n            {\n              \"match\": \"([^\\\\s.,}]+)\",\n              \"name\": \"entity.name.export.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"name\": \"meta.export.selector.scala\"\n        }\n      ],\n      \"name\": \"meta.export.scala\"\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(false|null|true)\\\\b\",\n          \"name\": \"constant.language.scala\"\n        },\n        {\n          \"match\": \"\\\\b(0[xX][0-9a-fA-F_]*)\\\\b\",\n          \"name\": \"constant.numeric.scala\"\n        },\n        {\n          \"match\": \"\\\\b(([0-9][0-9_]*(\\\\.[0-9][0-9_]*)?)([eE](\\\\+|-)?[0-9][0-9_]*)?|[0-9][0-9_]*)[LlFfDd]?\\\\b\",\n          \"name\": \"constant.numeric.scala\"\n        },\n        {\n          \"match\": \"(\\\\.[0-9][0-9_]*)([eE](\\\\+|-)?[0-9][0-9_]*)?[LlFfDd]?\\\\b\",\n          \"name\": \"constant.numeric.scala\"\n        },\n        {\n          \"match\": \"\\\\b(this|super)\\\\b\",\n          \"name\": \"variable.language.scala\"\n        }\n      ]\n    },\n    \"script-header\": {\n      \"match\": \"^#!(.*)$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.unquoted.shebang.scala\"\n        }\n      },\n      \"name\": \"comment.block.shebang.scala\"\n    },\n    \"code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#script-header\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#declarations\"\n        },\n        {\n          \"include\": \"#inheritance\"\n        },\n        {\n          \"include\": \"#extension\"\n        },\n        {\n          \"include\": \"#imports\"\n        },\n        {\n          \"include\": \"#exports\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#initialization\"\n        },\n        {\n          \"include\": \"#xml-literal\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#using\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#scala-symbol\"\n        },\n        {\n          \"include\": \"#singleton-type\"\n        },\n        {\n          \"include\": \"#inline\"\n        },\n        {\n          \"include\": \"#scala-quoted\"\n        },\n        {\n          \"include\": \"#char-literal\"\n        },\n        {\n          \"include\": \"#empty-parentheses\"\n        },\n        {\n          \"include\": \"#parameter-list\"\n        },\n        {\n          \"include\": \"#qualifiedClassName\"\n        },\n        {\n          \"include\": \"#backQuotedVariable\"\n        },\n        {\n          \"include\": \"#curly-braces\"\n        },\n        {\n          \"include\": \"#meta-brackets\"\n        },\n        {\n          \"include\": \"#meta-bounds\"\n        },\n        {\n          \"include\": \"#meta-colons\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n          \"begin\": \"\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\\\\\\\\\|\\\\\\\\u[0-9A-Fa-f]{4}\",\n              \"name\": \"constant.character.escape.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.scala\"\n            }\n          },\n          \"name\": \"string.quoted.triple.scala\"\n        },\n        {\n          \"begin\": \"\\\\b(raw)(\\\"\\\"\\\")\",\n          \"end\": \"(\\\"\\\"\\\")(?!\\\")|\\\\$\\n|(\\\\$[^\\\\$\\\"_{A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.interpolation.scala\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\$[\\\\$\\\"]\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"include\": \"#string-interpolation\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.triple.interpolated.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\b((?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?))(\\\"\\\"\\\")\",\n          \"end\": \"(\\\"\\\"\\\")(?!\\\")|\\\\$\\n|(\\\\$[^\\\\$\\\"_{A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.interpolation.scala\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\\\\\|\\\\\\\\u[0-9A-Fa-f]{4}\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.triple.interpolated.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          }\n        },\n        {\n          \"end\": \"\\\"\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(?:[btnfr\\\\\\\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.scala\"\n            }\n          },\n          \"name\": \"string.quoted.double.scala\"\n        },\n        {\n          \"begin\": \"\\\\b(raw)(\\\")\",\n          \"end\": \"(\\\")|\\\\$\\n|(\\\\$[^\\\\$\\\"_{A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.interpolation.scala\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\$[\\\\$\\\"]\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"include\": \"#string-interpolation\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.double.interpolated.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.double.interpolated.scala punctuation.definition.string.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\b((?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?))(\\\")\",\n          \"end\": \"(\\\")|\\\\$\\n|(\\\\$[^\\\\$\\\"_{A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.interpolation.scala\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\$[\\\\$\\\"]\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"include\": \"#string-interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\(?:[btnfr\\\\\\\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.double.interpolated.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.double.interpolated.scala punctuation.definition.string.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"using\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\()\\\\s*(using)\\\\s\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"string-interpolation\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.interpolation.scala\",\n          \"match\": \"\\\\$\\\\$\"\n        },\n        {\n          \"name\": \"meta.template.expression.scala\",\n          \"match\": \"(\\\\$)([A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.template-expression.begin.scala\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.template.expression.scala\",\n          \"begin\": \"\\\\$\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.template-expression.begin.scala\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.template-expression.end.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ],\n          \"contentName\": \"meta.embedded.line.scala\"\n        }\n      ]\n    },\n    \"xml-entity\": {\n      \"match\": \"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.xml\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.constant.xml\"\n        }\n      },\n      \"name\": \"constant.character.entity.xml\"\n    },\n    \"xml-singlequotedString\": {\n      \"end\": \"'\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xml-entity\"\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xml\"\n        }\n      },\n      \"name\": \"string.quoted.single.xml\"\n    },\n    \"meta-colons\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!:):(?!:)\",\n          \"name\": \"meta.colon.scala\"\n        }\n      ],\n      \"comment\": \"For themes: Matching type colons\"\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(return|throw)\\\\b\",\n          \"name\": \"keyword.control.flow.jump.scala\"\n        },\n        {\n          \"match\": \"\\\\b(classOf|isInstanceOf|asInstanceOf)\\\\b\",\n          \"name\": \"support.function.type-of.scala\"\n        },\n        {\n          \"match\": \"\\\\b(else|if|then|do|while|for|yield|match|case)\\\\b\",\n          \"name\": \"keyword.control.flow.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(if|while|for|match)(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"name\": \"keyword.control.flow.end.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(val)(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"name\": \"keyword.declaration.stable.end.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(var)(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"name\": \"keyword.declaration.volatile.end.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(?:(new|extension)|([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?))(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.end.scala\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(catch|finally|try)\\\\b\",\n          \"name\": \"keyword.control.exception.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(try)(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"name\": \"keyword.control.exception.end.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))?(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"(==?|!=|<=|>=|<>|<|>)\",\n          \"name\": \"keyword.operator.comparison.scala\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|/(?![/*])|%|~)\",\n          \"name\": \"keyword.operator.arithmetic.scala\"\n        },\n        {\n          \"match\": \"(?<![!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]|_)(!|&&|\\\\|\\\\|)(?![!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}])\",\n          \"name\": \"keyword.operator.logical.scala\"\n        },\n        {\n          \"match\": \"(<-|←|->|→|=>|⇒|\\\\?|\\\\:+|@|\\\\|)+\",\n          \"name\": \"keyword.operator.scala\"\n        }\n      ]\n    },\n    \"singleton-type\": {\n      \"match\": \"\\\\.(type)(?![A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[0-9])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.type.scala\"\n        }\n      }\n    },\n    \"inline\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(inline)(?=\\\\s+((?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`)\\\\s*:)\",\n          \"name\": \"storage.modifier.other\"\n        },\n        {\n          \"match\": \"\\\\b(inline)\\\\b(?=(?:.(?!\\\\b(?:val|def|given)\\\\b))*\\\\b(if|match)\\\\b)\",\n          \"name\": \"keyword.control.flow.scala\"\n        }\n      ]\n    },\n    \"scala-quoted\": {\n      \"patterns\": [\n        {\n          \"match\": \"['$]\\\\{(?!')\",\n          \"name\": \"punctuation.section.block.begin.scala\"\n        },\n        {\n          \"match\": \"'\\\\[(?!')\",\n          \"name\": \"meta.bracket.scala\"\n        }\n      ]\n    },\n    \"xml-doublequotedString\": {\n      \"end\": \"\\\"\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xml-entity\"\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xml\"\n        }\n      },\n      \"name\": \"string.quoted.double.xml\"\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(def)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(trait)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.class.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:(case)\\\\s+)?(class|object|enum)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.class.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(type)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:(val)|(var))\\\\b\\\\s*(?!//|/\\\\*)(?=(?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`)?\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.stable.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.volatile.scala\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:(val)|(var))\\\\b\\\\s*(?!//|/\\\\*)(?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`)(?=\\\\s*,)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.stable.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.volatile.scala\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:(val)|(var))\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.stable.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.volatile.scala\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.declaration.scala\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(package)\\\\s+(object)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.scoping.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.class.declaration\"\n            }\n          }\n        },\n        {\n          \"end\": \"(?<=[\\\\n;])\",\n          \"begin\": \"\\\\b(package)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.import.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\",\n              \"name\": \"entity.name.package.scala\"\n            },\n            {\n              \"match\": \"\\\\.\",\n              \"name\": \"punctuation.definition.package\"\n            }\n          ],\n          \"name\": \"meta.package.scala\"\n        },\n        {\n          \"match\": \"\\\\b(given)\\\\b\\\\s*([_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|`[^`]+`)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.given.declaration\"\n            }\n          }\n        }\n      ]\n    },\n    \"char-literal\": {\n      \"end\": \"'|$\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.character.begin.scala\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(?:[btnfr\\\\\\\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})\",\n          \"name\": \"constant.character.escape.scala\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-character-escape.scala\"\n        },\n        {\n          \"match\": \"[^']{2,}\",\n          \"name\": \"invalid.illegal.character-literal-too-long\"\n        },\n        {\n          \"match\": \"(?<!')[^']\",\n          \"name\": \"invalid.illegal.character-literal-too-long\"\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.character.end.scala\"\n        }\n      },\n      \"name\": \"string.quoted.other constant.character.literal.scala\"\n    },\n    \"initialization\": {\n      \"match\": \"\\\\b(new)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.declaration.scala\"\n        }\n      }\n    },\n    \"scala-symbol\": {\n      \"match\": \"(?>'(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))(?!')\",\n      \"name\": \"constant.other.symbol.scala\"\n    },\n    \"curly-braces\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.begin.scala\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.end.scala\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"meta-brackets\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\{\",\n          \"comment\": \"The punctuation.section.*.begin is needed for return snippet in source bundle\",\n          \"name\": \"punctuation.section.block.begin.scala\"\n        },\n        {\n          \"match\": \"\\\\}\",\n          \"comment\": \"The punctuation.section.*.end is needed for return snippet in source bundle\",\n          \"name\": \"punctuation.section.block.end.scala\"\n        },\n        {\n          \"match\": \"{|}|\\\\(|\\\\)|\\\\[|\\\\]\",\n          \"name\": \"meta.bracket.scala\"\n        }\n      ],\n      \"comment\": \"For themes: Brackets look nice when colored.\"\n    },\n    \"qualifiedClassName\": {\n      \"match\": \"(\\\\b([A-Z][\\\\w]*)(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.class\"\n        }\n      }\n    },\n    \"backQuotedVariable\": {\n      \"match\": \"`[^`]+`\"\n    },\n    \"storage-modifiers\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(private\\\\[\\\\S+\\\\]|protected\\\\[\\\\S+\\\\]|private|protected)\\\\b\",\n          \"name\": \"storage.modifier.access\"\n        },\n        {\n          \"match\": \"\\\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|override|@transient|@native)\\\\b\",\n          \"name\": \"storage.modifier.other\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)\\\\b(transparent|opaque|infix|open|inline)\\\\b(?=[a-z\\\\s]*\\\\b(def|val|var|given|type|class|trait|object|enum)\\\\b)\",\n          \"name\": \"storage.modifier.other\"\n        }\n      ]\n    },\n    \"meta-bounds\": {\n      \"match\": \"<%|=:=|<:<|<%<|>:|<:\",\n      \"comment\": \"For themes: Matching view bounds\",\n      \"name\": \"meta.bounds.scala\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"end\": \"(?!\\\\G)\",\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"end\": \"\\\\n\",\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.scala\"\n                }\n              },\n              \"name\": \"comment.line.double-slash.scala\"\n            }\n          ]\n        }\n      ]\n    },\n    \"block-comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"/\\\\*\\\\*/\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.scala\"\n            }\n          },\n          \"name\": \"comment.block.empty.scala\"\n        },\n        {\n          \"end\": \"\\\\*/\",\n          \"begin\": \"^\\\\s*(/\\\\*\\\\*)(?!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(@param)\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.scaladoc.scala\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.scala\"\n                }\n              }\n            },\n            {\n              \"match\": \"(@(?:tparam|throws))\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.scaladoc.scala\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.class\"\n                }\n              }\n            },\n            {\n              \"match\": \"@(return|see|note|example|constructor|usecase|author|version|since|todo|deprecated|migration|define|inheritdoc)\\\\b\",\n              \"name\": \"keyword.other.documentation.scaladoc.scala\"\n            },\n            {\n              \"match\": \"(\\\\[\\\\[)([^\\\\]]+)(\\\\]\\\\])\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.documentation.link.scala\"\n                },\n                \"2\": {\n                  \"name\": \"string.other.link.title.markdown\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.documentation.link.scala\"\n                }\n              }\n            },\n            {\n              \"include\": \"#block-comments\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.scala\"\n            }\n          },\n          \"name\": \"comment.block.documentation.scala\"\n        },\n        {\n          \"end\": \"\\\\*/\",\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            }\n          ],\n          \"name\": \"comment.block.scala\"\n        }\n      ]\n    },\n    \"xml-embedded-content\": {\n      \"patterns\": [\n        {\n          \"end\": \"}\",\n          \"begin\": \"{\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ],\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"name\": \"meta.source.embedded.scala\"\n        },\n        {\n          \"match\": \" (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)=\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.namespace.xml\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.xml\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"4\": {\n              \"name\": \"entity.other.attribute-name.localname.xml\"\n            }\n          }\n        },\n        {\n          \"include\": \"#xml-doublequotedString\"\n        },\n        {\n          \"include\": \"#xml-singlequotedString\"\n        }\n      ]\n    },\n    \"inheritance\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(extends|with|derives)\\\\b\\\\s*([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|`[^`]+`|(?=\\\\([^\\\\)]+=>)|(?=(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))|(?=\\\"))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.inherited-class.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"extension\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(extension)\\\\s+(?=[\\\\[\\\\(])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"parameter-list\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=[^\\\\._$a-zA-Z0-9])(`[^`]+`|[_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)\\\\s*(:)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.scala\"\n            },\n            \"2\": {\n              \"name\": \"meta.colon.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"xml-literal\": {\n      \"patterns\": [\n        {\n          \"end\": \"(>(<))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]*[_a-zA-Z0-9])(>)\",\n          \"begin\": \"(<)((?:([_a-zA-Z0-9][_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*))(?=(\\\\s[^>]*)?></\\\\2>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.xml\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.namespace.xml\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.xml\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.tag.localname.xml\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-embedded-content\"\n            }\n          ],\n          \"comment\": \"We do not allow a tag name to start with a - since this would likely conflict with the <- operator. This is not very common for tag names anyway.  Also code such as -- if (val <val2 || val> val3) will falsly be recognized as an xml tag.  The solution is to put a space on either side of the comparison operator\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.xml\"\n            },\n            \"2\": {\n              \"name\": \"meta.scope.between-tag-pair.xml\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.namespace.xml\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.xml\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.tag.localname.xml\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.tag.xml\"\n            }\n          },\n          \"name\": \"meta.tag.no-content.xml\"\n        },\n        {\n          \"end\": \"(/?>)\",\n          \"begin\": \"(</?)(?:([_a-zA-Z0-9][-_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*)(?=[^>]*?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#xml-embedded-content\"\n            }\n          ],\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.xml\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.namespace.xml\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.xml\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.tag.localname.xml\"\n            }\n          },\n          \"name\": \"meta.tag.xml\"\n        },\n        {\n          \"include\": \"#xml-entity\"\n        }\n      ]\n    }\n  },\n  \"uuid\": \"158C0929-299A-40C8-8D89-316BE0C446E8\",\n  \"patterns\": [\n    {\n      \"include\": \"#code\"\n    }\n  ],\n  \"name\": \"scala\",\n  \"scopeName\": \"source.scala\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/scheme.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"(?x)^ [ \\\\t]* \\\\(\\n\\t  (?<par>\\n\\t    ( [^()\\\\n]++ | \\\\( \\\\g<par> \\\\)? )*+\\n\\t  )\\n\\t$\",\n  \"foldingStopMarker\": \"^\\\\s*$\",\n  \"keyEquivalent\": \"^~S\",\n  \"fileTypes\": [\"scm\", \"sch\"],\n  \"repository\": {\n    \"quoted\": {\n      \"patterns\": [\n        { \"include\": \"#string\" },\n        {\n          \"begin\": \"(\\\\()\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.section.expression.end.scheme\" }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [{ \"include\": \"#quoted\" }],\n          \"name\": \"meta.expression.scheme\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.section.expression.begin.scheme\" }\n          }\n        },\n        { \"include\": \"#quote\" },\n        { \"include\": \"#illegal\" }\n      ]\n    },\n    \"illegal\": {\n      \"match\": \"[()\\\\[\\\\]]\",\n      \"name\": \"invalid.illegal.parenthesis.scheme\"\n    },\n    \"string\": {\n      \"begin\": \"(\\\")\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.end.scheme\" }\n      },\n      \"end\": \"(\\\")\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.scheme\" }\n      ],\n      \"name\": \"string.quoted.double.scheme\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.string.begin.scheme\" }\n      }\n    },\n    \"quote\": {\n      \"comment\": \"\\n\\t\\t\\t\\tWe need to be able to quote any kind of item, which creates\\n\\t\\t\\t\\ta tiny bit of complexity in our grammar.  It is hopefully\\n\\t\\t\\t\\tnot overwhelming complexity.\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tNote: the first two matches are special cases.  quoted\\n\\t\\t\\t\\tsymbols, and quoted empty lists are considered constant.other\\n\\t\\t\\t\\t\\n\\t\\t\\t\",\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(')\\\\s*\\n\\t\\t\\t\\t\\t\\t([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.symbol.scheme\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.section.quoted.symbol.scheme\" }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(')\\\\s*\\n\\t\\t\\t\\t\\t\\t((\\\\()\\\\s*(\\\\)))\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.empty-list.schem\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.section.expression.begin.scheme\" },\n            \"1\": { \"name\": \"punctuation.section.quoted.empty-list.scheme\" },\n            \"4\": { \"name\": \"punctuation.section.expression.end.scheme\" },\n            \"2\": { \"name\": \"meta.expression.scheme\" }\n          }\n        },\n        {\n          \"begin\": \"(')\\\\s*\",\n          \"end\": \"(?=[\\\\s()])|(?<=\\\\n)\",\n          \"comment\": \"quoted double-quoted string or s-expression\",\n          \"name\": \"string.other.quoted-object.scheme\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.section.quoted.scheme\" }\n          },\n          \"patterns\": [{ \"include\": \"#quoted\" }]\n        }\n      ]\n    },\n    \"quote-sexp\": {\n      \"begin\": \"(?<=\\\\()\\\\s*(quote)\\\\b\\\\s*\",\n      \"end\": \"(?=[\\\\s)])|(?<=\\\\n)\",\n      \"comment\": \"\\n\\t\\t\\t\\tSomething quoted with (quote «thing»).  In this case «thing»\\n\\t\\t\\t\\twill not be evaluated, so we are considering it a string.\\n\\t\\t\\t\",\n      \"contentName\": \"string.other.quote.scheme\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.control.quote.scheme\" } },\n      \"patterns\": [{ \"include\": \"#quoted\" }]\n    },\n    \"language-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\(|\\\\[)) # preceded by space or ( \\n\\t\\t\\t\\t\\t\\t( do|or|and|else|quasiquote|begin|if|case|set!|\\n\\t\\t\\t\\t\\t\\t  cond|let|unquote|define|let\\\\*|unquote-splicing|delay|\\n\\t\\t\\t\\t\\t\\t  letrec)\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\())\",\n          \"name\": \"keyword.control.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tThese functions run a test, and return a boolean\\n\\t\\t\\t\\t\\t\\tanswer.\\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( char-alphabetic|char-lower-case|char-numeric|\\n\\t\\t\\t\\t\\t\\t  char-ready|char-upper-case|char-whitespace|\\n\\t\\t\\t\\t\\t\\t  (?:char|string)(?:-ci)?(?:=|<=?|>=?)|\\n\\t\\t\\t\\t\\t\\t  atom|boolean|bound-identifier=|char|complex|\\n\\t\\t\\t\\t\\t\\t  identifier|integer|symbol|free-identifier=|inexact|\\n\\t\\t\\t\\t\\t\\t  eof-object|exact|list|(?:input|output)-port|pair|\\n\\t\\t\\t\\t\\t\\t  real|rational|zero|vector|negative|odd|null|string|\\n\\t\\t\\t\\t\\t\\t  eq|equal|eqv|even|number|positive|procedure\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(\\\\?)\\t\\t# name ends with ? sign\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"support.function.boolean-test.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tThese functions change one type into another.\\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( char->integer|exact->inexact|inexact->exact|\\n\\t\\t\\t\\t\\t\\t  integer->char|symbol->string|list->vector|\\n\\t\\t\\t\\t\\t\\t  list->string|identifier->symbol|vector->list|\\n\\t\\t\\t\\t\\t\\t  string->list|string->number|string->symbol|\\n\\t\\t\\t\\t\\t\\t  number->string\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"support.function.convert-type.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tThese functions are potentially dangerous because\\n\\t\\t\\t\\t\\t\\tthey have side-effects which could affect other\\n\\t\\t\\t\\t\\t\\tparts of the program.\\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( set-(?:car|cdr)|\\t\\t\\t\\t # set car/cdr\\n\\t\\t\\t\\t\\t\\t  (?:vector|string)-(?:fill|set) # fill/set string/vector\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(!)\\t\\t\\t# name ends with ! sign\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"support.function.with-side-effects.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\t+, -, *, /, =, >, etc. \\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( >=?|<=?|=|[*/+-])\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\n\\t\\t\\t\\t\\t\\t\",\n          \"name\": \"keyword.operator.arithmetic.scheme\"\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( append|apply|approximate|\\n\\t\\t\\t\\t\\t\\t  call-with-current-continuation|call/cc|catch|\\n\\t\\t\\t\\t\\t\\t  construct-identifier|define-syntax|display|foo|\\n\\t\\t\\t\\t\\t\\t  for-each|force|cd|gen-counter|gen-loser|\\n\\t\\t\\t\\t\\t\\t  generate-identifier|last-pair|length|let-syntax|\\n\\t\\t\\t\\t\\t\\t  letrec-syntax|list|list-ref|list-tail|load|log|\\n\\t\\t\\t\\t\\t\\t  macro|magnitude|map|map-streams|max|member|memq|\\n\\t\\t\\t\\t\\t\\t  memv|min|newline|nil|not|peek-char|rationalize|\\n\\t\\t\\t\\t\\t\\t  read|read-char|return|reverse|sequence|substring|\\n\\t\\t\\t\\t\\t\\t  syntax|syntax-rules|transcript-off|transcript-on|\\n\\t\\t\\t\\t\\t\\t  truncate|unwrap-syntax|values-list|write|write-char|\\n\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t  # cons, car, cdr, etc\\n\\t\\t\\t\\t\\t\\t  cons|c(a|d){1,4}r| \\n                          \\n\\t\\t\\t\\t\\t\\t  # unary math operators\\n\\t\\t\\t\\t\\t\\t  abs|acos|angle|asin|assoc|assq|assv|atan|ceiling|\\n\\t\\t\\t\\t\\t\\t  cos|floor|round|sin|sqrt|tan|\\n\\t\\t\\t\\t\\t\\t  (?:real|imag)-part|numerator|denominator\\n                          \\n\\t\\t\\t\\t\\t\\t  # other math operators\\n\\t\\t\\t\\t\\t\\t  modulo|exp|expt|remainder|quotient|lcm|\\n                          \\n\\t\\t\\t\\t\\t\\t  # ports / files\\n\\t\\t\\t\\t\\t\\t  call-with-(?:input|output)-file|\\n\\t\\t\\t\\t\\t\\t  (?:close|current)-(?:input|output)-port|\\n\\t\\t\\t\\t\\t\\t  with-(?:input|output)-from-file|\\n\\t\\t\\t\\t\\t\\t  open-(?:input|output)-file|\\n\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t  # char-«foo»\\n\\t\\t\\t\\t\\t\\t  char-(?:downcase|upcase|ready)|\\n\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t  # make-«foo»\\n\\t\\t\\t\\t\\t\\t  make-(?:polar|promise|rectangular|string|vector)\\n\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t  # string-«foo», vector-«foo»\\n\\t\\t\\t\\t\\t\\t  string(?:-(?:append|copy|length|ref))?|\\n\\t\\t\\t\\t\\t\\t  vector(?:-length|-ref)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"support.function.general.scheme\"\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\()) # preceded by (\\n\\t\\t\\t\\t\\t\\t( \\n\\t\\t\\t\\t\\t\\t\\t# nullary operators\\n\\t\\t\\t\\t\\t\\t\\tlist|newline\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(?=(\\\\))) # followed by )\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"support.function.general.scheme.nullary\"\n        }\n      ]\n    },\n    \"sexp\": {\n      \"begin\": \"(\\\\()\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.section.expression.end.scheme\" },\n        \"2\": { \"name\": \"meta.after-expression.scheme\" }\n      },\n      \"end\": \"(\\\\))(\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#comment\" },\n        { \"include\": \"#constants\" },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=\\\\()       # preceded by (\\n\\t\\t\\t\\t\\t\\t(define)\\\\s+   # define\\n\\t\\t\\t\\t\\t\\t(\\\\()          # list of parameters\\n\\t\\t\\t\\t\\t\\t  ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\\n\\t\\t\\t\\t\\t\\t  ((\\\\s+\\n\\t\\t\\t\\t\\t\\t    ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._])\\n\\t\\t\\t\\t\\t\\t   )*\\n\\t\\t\\t\\t\\t\\t  )\\\\s*\\n\\t\\t\\t\\t\\t\\t(\\\\))\\n\\t\\t\\t\\t\\t\",\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            { \"include\": \"#comment\" },\n            { \"include\": \"#constants\" },\n            { \"include\": \"#sexp\" },\n            { \"include\": \"#illegal\" }\n          ],\n          \"name\": \"meta.declaration.procedure.scheme\",\n          \"captures\": {\n            \"3\": { \"name\": \"entity.name.function.scheme\" },\n            \"1\": { \"name\": \"keyword.control.scheme\" },\n            \"4\": { \"name\": \"variable.parameter.function.scheme\" },\n            \"2\": { \"name\": \"punctuation.definition.function.scheme\" },\n            \"7\": { \"name\": \"punctuation.definition.function.scheme\" }\n          }\n        },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=\\\\() # preceded by (\\n\\t\\t\\t\\t\\t\\t(lambda)\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\\\() # opening paren\\n\\t\\t\\t\\t\\t\\t((?:\\n\\t\\t\\t\\t\\t\\t  ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._])\\n\\t\\t\\t\\t\\t\\t  \\\\s+\\n\\t\\t\\t\\t\\t\\t)*(?:\\n\\t\\t\\t\\t\\t\\t  ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._])\\n\\t\\t\\t\\t\\t\\t)?)\\n\\t\\t\\t\\t\\t\\t(\\\\)) # closing paren\\n\\t\\t\\t\\t\\t\",\n          \"end\": \"(?=\\\\))\",\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tNot sure this one is quite correct.  That \\\\s* is\\n\\t\\t\\t\\t\\t\\tparticularly troubling\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"meta.declaration.procedure.scheme\",\n          \"captures\": {\n            \"3\": { \"name\": \"variable.parameter.scheme\" },\n            \"1\": { \"name\": \"keyword.control.scheme\" },\n            \"6\": { \"name\": \"punctuation.definition.variable.scheme\" },\n            \"2\": { \"name\": \"punctuation.definition.variable.scheme\" }\n          },\n          \"patterns\": [\n            { \"include\": \"#comment\" },\n            { \"include\": \"#constants\" },\n            { \"include\": \"#sexp\" },\n            { \"include\": \"#illegal\" }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\()(define)\\\\s([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\\\\s*.*?\",\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            { \"include\": \"#comment\" },\n            { \"include\": \"#constants\" },\n            { \"include\": \"#sexp\" },\n            { \"include\": \"#illegal\" }\n          ],\n          \"name\": \"meta.declaration.variable.scheme\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.control.scheme\" },\n            \"2\": { \"name\": \"variable.other.scheme\" }\n          }\n        },\n        { \"include\": \"#quote-sexp\" },\n        { \"include\": \"#quote\" },\n        { \"include\": \"#language-functions\" },\n        { \"include\": \"#string\" },\n        { \"include\": \"#constants\" },\n        {\n          \"match\": \"(?<=[\\\\(\\\\s])(#\\\\\\\\)(space|newline|tab)(?=[\\\\s\\\\)])\",\n          \"name\": \"constant.character.named.scheme\"\n        },\n        {\n          \"match\": \"(?<=[\\\\(\\\\s])(#\\\\\\\\)x[0-9A-F]{2,4}(?=[\\\\s\\\\)])\",\n          \"name\": \"constant.character.hex-literal.scheme\"\n        },\n        {\n          \"match\": \"(?<=[\\\\(\\\\s])(#\\\\\\\\).(?=[\\\\s\\\\)])\",\n          \"name\": \"constant.character.escape.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tthe . in (a . b) which conses together two elements\\n\\t\\t\\t\\t\\t\\ta and b. (a b c) == (a . (b . (c . nil)))\\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?<=[ ()])\\\\.(?=[ ()])\",\n          \"name\": \"punctuation.separator.cons.scheme\"\n        },\n        { \"include\": \"#sexp\" },\n        { \"include\": \"#illegal\" }\n      ],\n      \"name\": \"meta.expression.scheme\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.section.expression.begin.scheme\" }\n      }\n    },\n    \"comment\": {\n      \"match\": \"(;).*$\\\\n?\",\n      \"name\": \"comment.line.semicolon.scheme\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.comment.scheme\" } }\n    },\n    \"constants\": {\n      \"patterns\": [\n        { \"match\": \"#[t|f]\", \"name\": \"constant.language.boolean.scheme\" },\n        {\n          \"match\": \"(?<=[\\\\(\\\\s])((#e|#i)?[0-9]+(\\\\.[0-9]+)?|(#x)[0-9a-fA-F]+|(#o)[0-7]+|(#b)[01]+)(?=[\\\\s;()'\\\",\\\\[\\\\]])\",\n          \"name\": \"constant.numeric.scheme\"\n        }\n      ]\n    }\n  },\n  \"uuid\": \"3EC2CFD0-909C-4692-AC29-1A60ADBC161E\",\n  \"patterns\": [\n    { \"include\": \"#comment\" },\n    { \"include\": \"#sexp\" },\n    { \"include\": \"#string\" },\n    { \"include\": \"#language-functions\" },\n    { \"include\": \"#quote\" },\n    { \"include\": \"#illegal\" },\n    { \"include\": \"#constants\" }\n  ],\n  \"comment\": \"\\n\\t\\tThe foldings do not currently work the way I want them to. This\\n\\t\\tmay be a limitation of the way they are applied rather than the\\n\\t\\tregexps in use. Nonetheless, the foldings will end on the last\\n\\t\\tidentically indented blank line following an s-expression. Not\\n\\t\\tideal perhaps, but it works. Also, the #illegal pattern never\\n\\t\\tmatches an unpaired ( as being illegal. Why?! -- Rob Rix\\n\\t\\t\\n\\t\\tOk, hopefully this grammar works better on quoted stuff now.  It\\n\\t\\tmay break for fancy macros, but should generally work pretty\\n\\t\\tsmoothly.  -- Jacob Rus\\n\\t\\t\\n\\t\\tI have attempted to get this under control but because of the way folding\\n\\t\\tand indentation interact in Textmate, I am not sure if it is possible. In the\\n\\t\\tmeantime, I have implemented Python-style folding anchored at newlines.\\n\\t\\tAdditionally, I have made some minor improvements to the numeric constant\\n\\t\\thighlighting. Next up is square bracket expressions, I guess, but that\\n\\t\\tshould be trivial. -- ozy`\\n\\t\",\n  \"name\": \"Scheme\",\n  \"scopeName\": \"source.scheme\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/scrypt.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"scrypt\"],\n  \"name\": \"sCrypt\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#import\"\n    },\n    {\n      \"include\": \"#alias\"\n    },\n    {\n      \"include\": \"#operator\"\n    },\n    {\n      \"include\": \"#control\"\n    },\n    {\n      \"include\": \"#constant\"\n    },\n    {\n      \"include\": \"#number\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#type\"\n    },\n    {\n      \"include\": \"#global\"\n    },\n    {\n      \"include\": \"#declaration\"\n    },\n    {\n      \"include\": \"#function-call\"\n    },\n    {\n      \"include\": \"#punctuation\"\n    },\n    {\n      \"include\": \"#asm-keywords\"\n    },\n    {\n      \"include\": \"#std-contracts\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-line\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        }\n      ]\n    },\n    \"comment-line\": {\n      \"match\": \"(?<!tp:)//.*?$\",\n      \"name\": \"comment.line.scrypt\"\n    },\n    \"comment-block\": {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.scrypt\"\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"include\": \"#operator-logic\"\n        },\n        {\n          \"include\": \"#operator-arithmetic\"\n        },\n        {\n          \"include\": \"#operator-binary\"\n        },\n        {\n          \"include\": \"#operator-assignment\"\n        }\n      ]\n    },\n    \"operator-logic\": {\n      \"match\": \"(==|!=|!(?!=)|<(?!<)|<=|>(?!>)|>=|\\\\&\\\\&|\\\\|\\\\||\\\\:(?!=)|\\\\?)\",\n      \"name\": \"keyword.operator.logic.scrypt\"\n    },\n    \"operator-arithmetic\": {\n      \"match\": \"(\\\\+|\\\\-|\\\\/|\\\\%|(?<!\\\\*)\\\\*(?!\\\\*))\",\n      \"name\": \"keyword.operator.arithmetic.scrypt\"\n    },\n    \"operator-binary\": {\n      \"match\": \"(\\\\~|\\\\^|\\\\&|\\\\||<<|>>)\",\n      \"name\": \"keyword.operator.binary.scrypt\"\n    },\n    \"operator-assignment\": {\n      \"match\": \"(\\\\:?=)\",\n      \"name\": \"keyword.operator.assignment.scrypt\"\n    },\n    \"control\": {\n      \"patterns\": [\n        {\n          \"include\": \"#control-flow\"\n        },\n        {\n          \"include\": \"#control-new\"\n        },\n        {\n          \"include\": \"#control-seperator\"\n        }\n      ]\n    },\n    \"control-flow\": {\n      \"match\": \"\\\\b(if|else|loop|returns?)\\\\b\",\n      \"name\": \"keyword.control.flow.scrypt\"\n    },\n    \"control-new\": {\n      \"match\": \"\\\\b(new)\\\\b\",\n      \"name\": \"keyword.control.new.scrypt\"\n    },\n    \"control-seperator\": {\n      \"match\": \"(\\\\*{3,})\",\n      \"name\": \"keyword.other.seperator.scrypt\"\n    },\n    \"constant\": {\n      \"patterns\": [\n        {\n          \"include\": \"#constant-boolean\"\n        }\n      ]\n    },\n    \"constant-boolean\": {\n      \"match\": \"\\\\b(true|false)\\\\b\",\n      \"name\": \"constant.language.boolean.scrypt\"\n    },\n    \"number\": {\n      \"patterns\": [\n        {\n          \"include\": \"#number-decimal\"\n        },\n        {\n          \"include\": \"#number-hex\"\n        }\n      ]\n    },\n    \"number-decimal\": {\n      \"match\": \"\\\\b(\\\\d+(\\\\.\\\\d+)?)\\\\b\",\n      \"name\": \"constant.numeric.decimal.scrypt\"\n    },\n    \"number-hex\": {\n      \"match\": \"\\\\b(0[xX][a-fA-F0-9]+)\\\\b\",\n      \"name\": \"constant.numeric.hexadecimal.scrypt\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#single-byte\"\n        },\n        {\n          \"include\": \"#string-bytes\"\n        }\n      ]\n    },\n    \"single-byte\": {\n      \"match\": \"('[0-9a-fA-F]*')\",\n      \"name\": \"string.quoted.single.bytes.scrypt\"\n    },\n    \"string-bytes\": {\n      \"match\": \"\\\\b(b'[0-9a-fA-F]*')\",\n      \"name\": \"string.quoted.single.bytes.scrypt\"\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-const\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"match\": \"\\\\b(bool|int|bytes|PrivKey|PubKey|Sig|Ripemd160|Sha1|Sha256|SigHashType|SigHashPreimage|OpCodeType)\\\\b\",\n      \"name\": \"support.type.primitive.scrypt\"\n    },\n    \"type-const\": {\n      \"match\": \"\\\\b(const)\\\\b\",\n      \"name\": \"keyword.other.const.scrypt\"\n    },\n    \"global\": {\n      \"patterns\": [\n        {\n          \"include\": \"#global-variables\"\n        },\n        {\n          \"include\": \"#global-functions\"\n        }\n      ]\n    },\n    \"global-variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(this)\\\\b\",\n          \"name\": \"variable.language.this.scrypt\"\n        }\n      ]\n    },\n    \"global-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(require)\\\\b\",\n          \"name\": \"keyword.control.exceptions.scrypt\"\n        },\n        {\n          \"match\": \"\\\\b(exit)\\\\b\",\n          \"name\": \"keyword.control.exceptions.scrypt\"\n        },\n        {\n          \"match\": \"\\\\b(abs|min|max|within|ripemd160|sha1|sha256|hash160|hash256|checkSig|checkMultiSig|num2bin|pack|unpack|len|reverseBytes|repeat)\\\\b\",\n          \"name\": \"support.function.math.scrypt\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration-contract\"\n        },\n        {\n          \"include\": \"#declaration-function\"\n        },\n        {\n          \"include\": \"#declaration-constructor\"\n        },\n        {\n          \"include\": \"#declaration-struct\"\n        }\n      ]\n    },\n    \"declaration-contract\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(contract|library)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.contract.scrypt\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.contract.scrypt\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-struct\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(struct)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct.scrypt\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.struct.scrypt\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-constructor\": {\n      \"match\": \"\\\\b(constructor)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.constructor.scrypt\"\n        }\n      }\n    },\n    \"declaration-function\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(function)\\\\s+([A-Za-z_]\\\\w*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.scrypt\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.scrypt\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(public|private)\\\\b\",\n          \"name\": \"storage.type.modifier.scrypt\"\n        },\n        {\n          \"match\": \"\\\\b(static)\\\\b\",\n          \"name\": \"storage.type.modifier.scrypt\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"match\": \"\\\\b\\\\.\\\\s*([A-Za-z_]\\\\w*)\\\\s*\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.scrypt\"\n        }\n      }\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.statement.scrypt\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.accessor.scrypt\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.scrypt\"\n        }\n      ]\n    },\n    \"asm-keywords\": {\n      \"begin\": \"(asm)\\\\s*(?=\\\\{)\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.other.scrypt\" }\n      },\n      \"end\": \"(?<=\\\\s*)\\\\}\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s(\\\\$\\\\w+)\\\\b\",\n          \"name\": \"variable.other.scrypt\"\n        },\n        {\n          \"comment\": \"Numeric constant\",\n          \"name\": \"constant.numeric.hexadecimal.scrypt\",\n          \"match\": \"\\\\b([A-Fa-f0-9]+)\\\\b\"\n        },\n        {\n          \"name\": \"support.other\",\n          \"match\": \"(?i)\\\\b(OP_PUSHDATA1|OP_PUSHDATA2|OP_PUSHDATA4)\\\\b\"\n        },\n        {\n          \"name\": \"constant.language\",\n          \"match\": \"(?i)\\\\b(OP_0|OP_FALSE|OP_1NEGATE|OP_1|OP_TRUE|OP_2|OP_3|OP_4|OP_5|OP_6|OP_7|OP_8|OP_9|OP_10|OP_11|OP_12|OP_13|OP_14|OP_15|OP_16)\\\\b\"\n        },\n        {\n          \"name\": \"support.function\",\n          \"match\": \"(?i)\\\\b(OP_1ADD|OP_1SUB|OP_NEGATE|OP_ABS|OP_NOT|OP_0NOTEQUAL|OP_ADD|OP_SUB|OP_MUL|OP_DIV|OP_MOD|OP_LSHIFT|OP_RSHIFT|OP_BOOLAND|OP_BOOLOR|OP_NUMEQUAL|OP_NUMEQUALVERIFY|OP_NUMNOTEQUAL|OP_LESSTHAN|OP_GREATERTHAN|OP_LESSTHANOREQUAL|OP_GREATERTHANOREQUAL|OP_MIN|OP_MAX|OP_WITHIN)\\\\b\"\n        },\n        {\n          \"name\": \"support.function\",\n          \"match\": \"(?i)\\\\b(OP_CAT|OP_SPLIT|OP_BIN2NUM|OP_NUM2BIN|OP_SIZE)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control\",\n          \"match\": \"(?i)\\\\b(OP_NOP|OP_IF|OP_NOTIF|OP_ELSE|OP_ENDIF|OP_VERIFY|OP_RETURN)\\\\b\"\n        },\n        {\n          \"name\": \"support.function\",\n          \"match\": \"(?i)\\\\b(OP_TOALTSTACK|OP_FROMALTSTACK|OP_IFDUP|OP_DEPTH|OP_DROP|OP_DUP|OP_NIP|OP_OVER|OP_PICK|OP_ROLL|OP_ROT|OP_SWAP|OP_TUCK|OP_2DROP|OP_2DUP|OP_3DUP|OP_2OVER|OP_2ROT|OP_2SWAP)\\\\b\"\n        },\n        {\n          \"name\": \"support.function\",\n          \"match\": \"(?i)\\\\b(OP_RIPEMD160|OP_SHA1|OP_SHA256|OP_HASH160|OP_HASH256|OP_CODESEPARATOR|OP_CHECKSIG|OP_CHECKSIGVERIFY|OP_CHECKMULTISIG|OP_CHECKMULTISIGVERIFY)\\\\b\"\n        },\n        {\n          \"name\": \"support.function\",\n          \"match\": \"(?i)\\\\b(OP_INVERT|OP_AND|OP_OR|OP_XOR|OP_EQUAL|OP_EQUALVERIFY)\\\\b\"\n        },\n        {\n          \"name\": \"invalid.illegal\",\n          \"match\": \"(?i)\\\\b(OP_VER|OP_VERIF|OP_VERNOTIF|OP_2MUL|OP_2DIV|OP_RESERVED|OP_VER|OP_VERIF|OP_VERNOTIF|OP_RESERVED1|OP_RESERVED2|OP_NOP1|OP_NOP2|OP_NOP3|OP_NOP4|OP_NOP5|OP_NOP6|OP_NOP7|OP_NOP8|OP_NOP9|OP_NOP10)\\\\b\"\n        },\n        {\n          \"include\": \"#comment-line\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        }\n      ]\n    },\n    \"std-contracts\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.type.contract.scrypt\",\n          \"match\": \"\\\\b(P2PKH|P2PK|Tx|HashPuzzleRipemd160|HashPuzzleSha1|HashPuzzleSha256|HashPuzzleHash160)\\\\b\"\n        }\n      ]\n    },\n    \"import\": {\n      \"begin\": \"\\\\b(import)\\\\s\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.scrypt\"\n        }\n      },\n      \"end\": \"\\\\s*(;|\\n)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.scrypt\"\n        }\n      },\n      \"name\": \"meta.import.scrypt\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.scrypt\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.scrypt\"\n            }\n          },\n          \"contentName\": \"string.quoted.double.bytes.scrypt\"\n        }\n      ]\n    },\n    \"alias\": {\n      \"begin\": \"\\\\b(type)\\\\s\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.type.scrypt\"\n        }\n      },\n      \"end\": \"\\\\s*(;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.scrypt\"\n        }\n      },\n      \"name\": \"meta.alias.scrypt\",\n      \"contentName\": \"string.quoted.double.bytes.scrypt\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([A-Za-z_]\\\\w*)\\\\s*(=)\\\\s*([A-Za-z_]\\\\w*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.alias.scrypt\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.scrypt\"\n            },\n            \"3\": {\n              \"name\": \"support.type.primitive.scrypt\"\n            }\n          }\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.scrypt\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/scss.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-sass/blob/master/grammars/scss.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-sass/commit/f52ab12f7f9346cc2568129d8c4419bd3d506b47\",\n  \"name\": \"SCSS\",\n  \"scopeName\": \"source.css.scss\",\n  \"patterns\": [\n    {\n      \"include\": \"#variable_setting\"\n    },\n    {\n      \"include\": \"#at_rule_forward\"\n    },\n    {\n      \"include\": \"#at_rule_use\"\n    },\n    {\n      \"include\": \"#at_rule_include\"\n    },\n    {\n      \"include\": \"#at_rule_import\"\n    },\n    {\n      \"include\": \"#general\"\n    },\n    {\n      \"include\": \"#flow_control\"\n    },\n    {\n      \"include\": \"#rules\"\n    },\n    {\n      \"include\": \"#property_list\"\n    },\n    {\n      \"include\": \"#at_rule_mixin\"\n    },\n    {\n      \"include\": \"#at_rule_media\"\n    },\n    {\n      \"include\": \"#at_rule_function\"\n    },\n    {\n      \"include\": \"#at_rule_charset\"\n    },\n    {\n      \"include\": \"#at_rule_option\"\n    },\n    {\n      \"include\": \"#at_rule_namespace\"\n    },\n    {\n      \"include\": \"#at_rule_fontface\"\n    },\n    {\n      \"include\": \"#at_rule_page\"\n    },\n    {\n      \"include\": \"#at_rule_keyframes\"\n    },\n    {\n      \"include\": \"#at_rule_at_root\"\n    },\n    {\n      \"include\": \"#at_rule_supports\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.rule.css\"\n    }\n  ],\n  \"repository\": {\n    \"at_rule_charset\": {\n      \"begin\": \"\\\\s*((@)charset\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.charset.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=;|$))\",\n      \"name\": \"meta.at-rule.charset.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        }\n      ]\n    },\n    \"at_rule_content\": {\n      \"begin\": \"\\\\s*((@)content\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.content.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=;))\",\n      \"name\": \"meta.content.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#selectors\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_each\": {\n      \"begin\": \"\\\\s*((@)each\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.each.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=}))\",\n      \"name\": \"meta.at-rule.each.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(in|,)\\\\b\",\n          \"name\": \"keyword.control.operator\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"at_rule_else\": {\n      \"begin\": \"\\\\s*((@)else(\\\\s*(if)?))\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.else.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?={)\",\n      \"name\": \"meta.at-rule.else.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#conditional_operators\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_extend\": {\n      \"begin\": \"\\\\s*((@)extend\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.extend.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=;)\",\n      \"name\": \"meta.at-rule.extend.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#selectors\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_fontface\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((@)font-face\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.fontface.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(?={)\",\n          \"name\": \"meta.at-rule.fontface.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule_for\": {\n      \"begin\": \"\\\\s*((@)for\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.for.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?={)\",\n      \"name\": \"meta.at-rule.for.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"(==|!=|<=|>=|<|>|from|to|through)\",\n          \"name\": \"keyword.control.operator\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"at_rule_forward\": {\n      \"begin\": \"\\\\s*((@)forward\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.forward.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=;)\",\n      \"name\": \"meta.at-rule.forward.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(as|hide|show)\\\\b\",\n          \"name\": \"keyword.control.operator\"\n        },\n        {\n          \"match\": \"\\\\b([\\\\w-]+)(\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.module.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.wildcard.scss\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b[\\\\w-]+\\\\b\",\n          \"name\": \"entity.name.function.scss\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        }\n      ]\n    },\n    \"at_rule_function\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*((@)function\\\\b)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.function.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(?={)\",\n          \"name\": \"meta.at-rule.function.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.function.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          },\n          \"match\": \"\\\\s*((@)function\\\\b)\\\\s*\",\n          \"name\": \"meta.at-rule.function.scss\"\n        }\n      ]\n    },\n    \"at_rule_if\": {\n      \"begin\": \"\\\\s*((@)if\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.if.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?={)\",\n      \"name\": \"meta.at-rule.if.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#conditional_operators\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_import\": {\n      \"begin\": \"\\\\s*((@)import\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.import.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=;)|(?=}))\",\n      \"name\": \"meta.at-rule.import.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        }\n      ]\n    },\n    \"at_rule_include\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=@include)\\\\s+(?:([\\\\w-]+)\\\\s*(\\\\.))?([\\\\w-]+)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.access.module.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.include.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=@include)\\\\s+(?:([\\\\w-]+)\\\\s*(\\\\.))?([\\\\w-]+)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.at-rule.include.scss\"\n            },\n            \"1\": {\n              \"name\": \"variable.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.access.module.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          }\n        },\n        {\n          \"match\": \"((@)include)\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.at-rule.include.scss\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.include.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          }\n        }\n      ]\n    },\n    \"at_rule_keyframes\": {\n      \"begin\": \"(?<=^|\\\\s)(@)(?:-(?:webkit|moz)-)?keyframes\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.at-rule.keyframes.scss\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"(?<=})\",\n      \"name\": \"meta.at-rule.keyframes.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<=@keyframes)\\\\s+((?:[_A-Za-z][-\\\\w]|-[_A-Za-z])[-\\\\w]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?<=@keyframes)\\\\s+(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.scss\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.scss\"\n            }\n          },\n          \"name\": \"string.quoted.double.scss\",\n          \"contentName\": \"entity.name.function.scss\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(\\\\h{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=@keyframes)\\\\s+(')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.scss\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.scss\"\n            }\n          },\n          \"name\": \"string.quoted.single.scss\",\n          \"contentName\": \"entity.name.function.scss\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(\\\\h{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.keyframes.begin.scss\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.keyframes.end.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(?:(?:100|[1-9]\\\\d|\\\\d)%|from|to)(?=\\\\s*{)\",\n              \"name\": \"entity.other.attribute-name.scss\"\n            },\n            {\n              \"include\": \"#flow_control\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"#property_list\"\n            },\n            {\n              \"include\": \"#rules\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule_media\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((@)media)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.media.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(?={)\",\n          \"name\": \"meta.at-rule.media.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_docblock\"\n            },\n            {\n              \"include\": \"#comment_block\"\n            },\n            {\n              \"include\": \"#comment_line\"\n            },\n            {\n              \"match\": \"\\\\b(only)\\\\b\",\n              \"name\": \"keyword.control.operator.css.scss\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.media-query.begin.bracket.round.scss\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.media-query.end.bracket.round.scss\"\n                }\n              },\n              \"name\": \"meta.property-list.media-query.scss\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<![-a-z])(?=[-a-z])\",\n                  \"end\": \"$|(?![-a-z])\",\n                  \"name\": \"meta.property-name.media-query.scss\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.css#media-features\"\n                    },\n                    {\n                      \"include\": \"source.css#property-names\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(:)\\\\s*(?!(\\\\s*{))\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.separator.key-value.scss\"\n                    }\n                  },\n                  \"end\": \"\\\\s*(;|(?=}|\\\\)))\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.terminator.rule.scss\"\n                    }\n                  },\n                  \"contentName\": \"meta.property-value.media-query.scss\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#general\"\n                    },\n                    {\n                      \"include\": \"#property_values\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#conditional_operators\"\n            },\n            {\n              \"include\": \"source.css#media-types\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule_mixin\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=@mixin)\\\\s+([\\\\w-]+)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.mixin.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=@mixin)\\\\s+([\\\\w-]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.mixin.scss\"\n        },\n        {\n          \"match\": \"((@)mixin)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.mixin.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.mixin.scss\"\n        }\n      ]\n    },\n    \"at_rule_namespace\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=@namespace)\\\\s+(?=url)\",\n          \"end\": \"(?=;|$)\",\n          \"name\": \"meta.at-rule.namespace.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#property_values\"\n            },\n            {\n              \"include\": \"#string_single\"\n            },\n            {\n              \"include\": \"#string_double\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=@namespace)\\\\s+([\\\\w-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.namespace-prefix.scss\"\n            }\n          },\n          \"end\": \"(?=;|$)\",\n          \"name\": \"meta.at-rule.namespace.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#property_values\"\n            },\n            {\n              \"include\": \"#string_single\"\n            },\n            {\n              \"include\": \"#string_double\"\n            }\n          ]\n        },\n        {\n          \"match\": \"((@)namespace)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.namespace.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.namespace.scss\"\n        }\n      ]\n    },\n    \"at_rule_option\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.charset.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"match\": \"^\\\\s*((@)option\\\\b)\\\\s*\",\n      \"name\": \"meta.at-rule.option.scss\"\n    },\n    \"at_rule_page\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((@)page)(?=:|\\\\s)\\\\s*([-:\\\\w]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.page.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(?={)\",\n          \"name\": \"meta.at-rule.page.scss\"\n        }\n      ]\n    },\n    \"at_rule_return\": {\n      \"begin\": \"\\\\s*((@)(return)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.return.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=;))\",\n      \"name\": \"meta.at-rule.return.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_at_root\": {\n      \"begin\": \"\\\\s*((@)(at-root))(\\\\s+|$)\",\n      \"end\": \"\\\\s*(?={)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.at-root.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"name\": \"meta.at-rule.at-root.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_attributes\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#selectors\"\n        }\n      ]\n    },\n    \"at_rule_supports\": {\n      \"begin\": \"(?<=^|\\\\s)(@)supports\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control.at-rule.supports.scss\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"(?={)|$\",\n      \"name\": \"meta.at-rule.supports.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#logical_operators\"\n        },\n        {\n          \"include\": \"#properties\"\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.definition.condition.begin.bracket.round.scss\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"punctuation.definition.condition.end.bracket.round.scss\"\n        }\n      ]\n    },\n    \"at_rule_use\": {\n      \"begin\": \"\\\\s*((@)use\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.use.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=;)\",\n      \"name\": \"meta.at-rule.use.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(as|with)\\\\b\",\n          \"name\": \"keyword.control.operator\"\n        },\n        {\n          \"match\": \"\\\\b[\\\\w-]+\\\\b\",\n          \"name\": \"variable.scss\"\n        },\n        {\n          \"match\": \"\\\\*\",\n          \"name\": \"variable.language.expanded-namespace.scss\"\n        },\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule_warn\": {\n      \"begin\": \"\\\\s*((@)(warn|debug|error)\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.warn.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=;)\",\n      \"name\": \"meta.at-rule.warn.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#string_single\"\n        }\n      ]\n    },\n    \"at_rule_while\": {\n      \"begin\": \"\\\\s*((@)while\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.while.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=})\",\n      \"name\": \"meta.at-rule.while.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#conditional_operators\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"comment_docblock\": {\n      \"name\": \"comment.block.documentation.scss\",\n      \"begin\": \"///\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.scss\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"include\": \"source.sassdoc\"\n        }\n      ]\n    },\n    \"comment_block\": {\n      \"begin\": \"/\\\\*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.scss\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.scss\"\n        }\n      },\n      \"name\": \"comment.block.scss\"\n    },\n    \"comment_line\": {\n      \"begin\": \"//\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.scss\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"name\": \"comment.line.scss\"\n    },\n    \"constant_default\": {\n      \"match\": \"!default\",\n      \"name\": \"keyword.other.default.scss\"\n    },\n    \"constant_functions\": {\n      \"begin\": \"(?:([\\\\w-]+)(\\\\.))?([\\\\w-]+)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.access.module.scss\"\n        },\n        \"3\": {\n          \"name\": \"support.function.misc.scss\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.section.function.scss\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.function.scss\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameters\"\n        }\n      ]\n    },\n    \"constant_important\": {\n      \"match\": \"!important\",\n      \"name\": \"keyword.other.important.scss\"\n    },\n    \"constant_mathematical_symbols\": {\n      \"match\": \"\\\\b(\\\\+|-|\\\\*|/)\\\\b\",\n      \"name\": \"support.constant.mathematical-symbols.scss\"\n    },\n    \"constant_optional\": {\n      \"match\": \"!optional\",\n      \"name\": \"keyword.other.optional.scss\"\n    },\n    \"constant_sass_functions\": {\n      \"begin\": \"(headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:gradient|svg-gradient)|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi|translate(?:X|Y))(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.misc.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.function.scss\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.function.scss\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameters\"\n        }\n      ]\n    },\n    \"flow_control\": {\n      \"patterns\": [\n        {\n          \"include\": \"#at_rule_if\"\n        },\n        {\n          \"include\": \"#at_rule_else\"\n        },\n        {\n          \"include\": \"#at_rule_warn\"\n        },\n        {\n          \"include\": \"#at_rule_for\"\n        },\n        {\n          \"include\": \"#at_rule_while\"\n        },\n        {\n          \"include\": \"#at_rule_each\"\n        },\n        {\n          \"include\": \"#at_rule_return\"\n        }\n      ]\n    },\n    \"function_attributes\": {\n      \"patterns\": [\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.key-value.scss\"\n        },\n        {\n          \"include\": \"#general\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"match\": \"[={}\\\\?;@]\",\n          \"name\": \"invalid.illegal.scss\"\n        }\n      ]\n    },\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([\\\\w-]{1,})(\\\\()\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.scss\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameters\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([\\\\w-]{1,})\",\n          \"name\": \"support.function.misc.scss\"\n        }\n      ]\n    },\n    \"general\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#comment_docblock\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"begin\": \"#{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.interpolation.begin.bracket.curly.scss\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.interpolation.end.bracket.curly.scss\"\n        }\n      },\n      \"name\": \"variable.interpolation.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"conditional_operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comparison_operators\"\n        },\n        {\n          \"include\": \"#logical_operators\"\n        }\n      ]\n    },\n    \"comparison_operators\": {\n      \"match\": \"==|!=|<=|>=|<|>\",\n      \"name\": \"keyword.operator.comparison.scss\"\n    },\n    \"logical_operators\": {\n      \"match\": \"\\\\b(not|or|and)\\\\b\",\n      \"name\": \"keyword.operator.logical.scss\"\n    },\n    \"map\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.map.begin.bracket.round.scss\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.map.end.bracket.round.scss\"\n        }\n      },\n      \"name\": \"meta.definition.variable.map.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_docblock\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        },\n        {\n          \"match\": \"\\\\b([\\\\w-]+)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.map.key.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.scss\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.scss\"\n        },\n        {\n          \"include\": \"#map\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"match\": \"[-+*/](?!\\\\s*[-+*/])\",\n      \"name\": \"keyword.operator.css\"\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.round.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"match\": \"[^'\\\",) \\\\t]+\",\n          \"name\": \"variable.parameter.url.scss\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.scss\"\n        }\n      ]\n    },\n    \"properties\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![-a-z])(?=[-a-z])\",\n          \"end\": \"$|(?![-a-z])\",\n          \"name\": \"meta.property-name.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css#property-names\"\n            },\n            {\n              \"include\": \"#at_rule_include\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*(?!(\\\\s*{))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(;|(?=}|\\\\)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.rule.scss\"\n            }\n          },\n          \"contentName\": \"meta.property-value.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#general\"\n            },\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        }\n      ]\n    },\n    \"property_list\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.begin.bracket.curly.scss\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.end.bracket.curly.scss\"\n        }\n      },\n      \"name\": \"meta.property-list.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#flow_control\"\n        },\n        {\n          \"include\": \"#rules\"\n        },\n        {\n          \"include\": \"#properties\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"property_values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#constant_functions\"\n        },\n        {\n          \"include\": \"#constant_sass_functions\"\n        },\n        {\n          \"include\": \"#constant_important\"\n        },\n        {\n          \"include\": \"#constant_default\"\n        },\n        {\n          \"include\": \"#constant_optional\"\n        },\n        {\n          \"include\": \"source.css#numeric-values\"\n        },\n        {\n          \"include\": \"source.css#property-keywords\"\n        },\n        {\n          \"include\": \"source.css#color-keywords\"\n        },\n        {\n          \"include\": \"source.css#property-names\"\n        },\n        {\n          \"include\": \"#constant_mathematical_symbols\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.round.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#general\"\n            },\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        }\n      ]\n    },\n    \"rules\": {\n      \"patterns\": [\n        {\n          \"include\": \"#general\"\n        },\n        {\n          \"include\": \"#at_rule_extend\"\n        },\n        {\n          \"include\": \"#at_rule_content\"\n        },\n        {\n          \"include\": \"#at_rule_include\"\n        },\n        {\n          \"include\": \"#at_rule_media\"\n        },\n        {\n          \"include\": \"#selectors\"\n        }\n      ]\n    },\n    \"selector_attribute\": {\n      \"match\": \"(?xi)\\n(\\\\[)\\n\\\\s*\\n(\\n  (?:\\n    [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]       # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\.?\\\\$                          # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+?\\n)\\n(?:\\n  \\\\s*([~|^$*]?=)\\\\s*\\n  (?:\\n    (\\n      (?:\\n        [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]       # Valid identifier characters\\n        | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n        | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n        | \\\\.?\\\\$                          # Possible start of interpolation variable\\n        | }                                # Possible end of interpolation\\n      )+\\n    )\\n    |\\n    ((\\\")(.*?)(\\\"))\\n    |\\n    ((')(.*?)('))\\n  )\\n)?\\n\\\\s*\\n(\\\\])\",\n      \"name\": \"meta.attribute-selector.scss\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.attribute-selector.begin.bracket.square.scss\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.attribute-name.attribute.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.scss\"\n        },\n        \"4\": {\n          \"name\": \"string.unquoted.attribute-value.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"string.quoted.double.attribute-value.scss\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.scss\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.end.scss\"\n        },\n        \"9\": {\n          \"name\": \"string.quoted.single.attribute-value.scss\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.string.begin.scss\"\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"punctuation.definition.string.end.scss\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.attribute-selector.end.bracket.square.scss\"\n        }\n      }\n    },\n    \"selector_class\": {\n      \"match\": \"(?x)\\n(\\\\.)                                  # Valid class-name\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\.?\\\\$                          # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+\\n)                                      # Followed by either:\\n(?= $                                  # - End of the line\\n  | [\\\\s,\\\\#)\\\\[:{>+~|]                # - Another selector\\n  | \\\\.[^$]                            # - Class selector, negating module variable\\n  | /\\\\*                               # - A block comment\\n  | ;                                  # - A semicolon\\n)\",\n      \"name\": \"entity.other.attribute-name.class.css\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        }\n      }\n    },\n    \"selector_custom\": {\n      \"match\": \"\\\\b([a-zA-Z0-9]+(-[a-zA-Z0-9]+)+)(?=\\\\.|\\\\s++[^:]|\\\\s*[,\\\\[{]|:(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-(child|last-child|of-type|last-of-type)|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not|valid|invalid)(\\\\([0-9A-Za-z]*\\\\))?)\",\n      \"name\": \"entity.name.tag.custom.scss\"\n    },\n    \"selector_id\": {\n      \"match\": \"(?x)\\n(\\\\#)                                  # Valid id-name\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\.?\\\\$                          # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+\\n)                                      # Followed by either:\\n(?= $                                  # - End of the line\\n  | [\\\\s,\\\\#)\\\\[:{>+~|]                # - Another selector\\n  | \\\\.[^$]                            # - Class selector, negating module variable\\n  | /\\\\*                               # - A block comment\\n)\",\n      \"name\": \"entity.other.attribute-name.id.css\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.identifier.scss\"\n            }\n          ]\n        }\n      }\n    },\n    \"selector_placeholder\": {\n      \"match\": \"(?x)\\n(%)                                    # Valid placeholder-name\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\.\\\\$                           # Possible start of interpolation module scope variable\\n    | \\\\$                              # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+\\n)                                      # Followed by either:\\n(?= ;                                  # - End of statement\\n  | $                                  # - End of the line\\n  | [\\\\s,\\\\#)\\\\[:{>+~|]                # - Another selector\\n  | \\\\.[^$]                            # - Class selector, negating module variable\\n  | /\\\\*                               # - A block comment\\n)\",\n      \"name\": \"entity.other.attribute-name.placeholder.css\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.identifier.scss\"\n            }\n          ]\n        }\n      }\n    },\n    \"parent_selector_suffix\": {\n      \"match\": \"(?x)\\n(?<=&)\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\$                              # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+\\n)                                      # Followed by either:\\n(?= $                                  # - End of the line\\n  | [\\\\s,.\\\\#)\\\\[:{>+~|]               # - Another selector\\n  | /\\\\*                               # - A block comment\\n)\",\n      \"name\": \"entity.other.attribute-name.parent-selector-suffix.css\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.identifier.scss\"\n            }\n          ]\n        }\n      }\n    },\n    \"selector_pseudo_class\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((:)\\\\bnth-(?:child|last-child|of-type|last-of-type))(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.pseudo-class.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.pseudo-class.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\d+\",\n              \"name\": \"constant.numeric.css\"\n            },\n            {\n              \"match\": \"(?<=\\\\d)n\\\\b|\\\\b(n|even|odd)\\\\b\",\n              \"name\": \"constant.other.scss\"\n            },\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.css#pseudo-classes\"\n        },\n        {\n          \"include\": \"source.css#pseudo-elements\"\n        },\n        {\n          \"include\": \"source.css#functional-pseudo-classes\"\n        }\n      ]\n    },\n    \"selectors\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.css#tag-names\"\n        },\n        {\n          \"include\": \"#selector_custom\"\n        },\n        {\n          \"include\": \"#selector_class\"\n        },\n        {\n          \"include\": \"#selector_id\"\n        },\n        {\n          \"include\": \"#selector_pseudo_class\"\n        },\n        {\n          \"include\": \"#tag_wildcard\"\n        },\n        {\n          \"include\": \"#tag_parent_reference\"\n        },\n        {\n          \"include\": \"source.css#pseudo-elements\"\n        },\n        {\n          \"include\": \"#selector_attribute\"\n        },\n        {\n          \"include\": \"#selector_placeholder\"\n        },\n        {\n          \"include\": \"#parent_selector_suffix\"\n        }\n      ]\n    },\n    \"string_double\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.scss\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.scss\"\n        }\n      },\n      \"name\": \"string.quoted.double.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(\\\\h{1,6}|.)\",\n          \"name\": \"constant.character.escape.scss\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"string_single\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.scss\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.scss\"\n        }\n      },\n      \"name\": \"string.quoted.single.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(\\\\h{1,6}|.)\",\n          \"name\": \"constant.character.escape.scss\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"tag_parent_reference\": {\n      \"match\": \"&\",\n      \"name\": \"entity.name.tag.reference.scss\"\n    },\n    \"tag_wildcard\": {\n      \"match\": \"\\\\*\",\n      \"name\": \"entity.name.tag.wildcard.scss\"\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"variable_setting\": {\n      \"begin\": \"(?=\\\\$[\\\\w-]+\\\\s*:)\",\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.rule.scss\"\n        }\n      },\n      \"contentName\": \"meta.definition.variable.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\$[\\\\w-]+(?=\\\\s*:)\",\n          \"name\": \"variable.scss\"\n        },\n        {\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.key-value.scss\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_docblock\"\n            },\n            {\n              \"include\": \"#comment_block\"\n            },\n            {\n              \"include\": \"#comment_line\"\n            },\n            {\n              \"include\": \"#map\"\n            },\n            {\n              \"include\": \"#property_values\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.delimiter.scss\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([\\\\w-]+)(\\\\.)(\\\\$[\\\\w-]+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.access.module.scss\"\n            },\n            \"3\": {\n              \"name\": \"variable.scss\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\$|\\\\-\\\\-)[A-Za-z0-9_-]+\\\\b\",\n          \"name\": \"variable.scss\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/shell-unix-bash.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-shellscript/blob/master/grammars/shell-unix-bash.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-shellscript/commit/4f8d7bb5cc4d1643674551683df10fe552dd5a6f\",\n  \"name\": \"Shell Script\",\n  \"scopeName\": \"source.shell\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#pipeline\"\n    },\n    {\n      \"include\": \"#list\"\n    },\n    {\n      \"include\": \"#compound-command\"\n    },\n    {\n      \"include\": \"#loop\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#function-definition\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"include\": \"#interpolation\"\n    },\n    {\n      \"include\": \"#heredoc\"\n    },\n    {\n      \"include\": \"#herestring\"\n    },\n    {\n      \"include\": \"#redirection\"\n    },\n    {\n      \"include\": \"#pathname\"\n    },\n    {\n      \"include\": \"#keyword\"\n    },\n    {\n      \"include\": \"#support\"\n    }\n  ],\n  \"repository\": {\n    \"case-clause\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\S)\",\n          \"end\": \";;\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.case-clause.shell\"\n            }\n          },\n          \"name\": \"meta.scope.case-clause.shell\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(|(?=\\\\S)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.case-pattern.shell\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.case-pattern.shell\"\n                }\n              },\n              \"name\": \"meta.scope.case-pattern.shell\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\|\",\n                  \"name\": \"punctuation.separator.pipe-sign.shell\"\n                },\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"#interpolation\"\n                },\n                {\n                  \"include\": \"#pathname\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(?=;;)\",\n              \"name\": \"meta.scope.case-clause-body.shell\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"comment\": {\n      \"begin\": \"(^\\\\s+)?(?<=^|\\\\W)(?<!-)(?=#)(?!#{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.shell\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#!\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.shebang.shell\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"comment.line.number-sign.shebang.shell\"\n        },\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.shell\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"comment.line.number-sign.shell\"\n        }\n      ]\n    },\n    \"compound-command\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[{1,2}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.logical-expression.shell\"\n            }\n          },\n          \"end\": \"\\\\]{1,2}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.logical-expression.shell\"\n            }\n          },\n          \"name\": \"meta.scope.logical-expression.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"#logical-expression\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\({2}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\\){2}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.other.math.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"#math\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.subshell.shell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.subshell.shell\"\n            }\n          },\n          \"name\": \"meta.scope.subshell.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\s|^){(?=\\\\s|$)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;)\\\\s*(})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.shell\"\n            }\n          },\n          \"name\": \"meta.scope.group.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-definition\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(function)\\\\s+([^\\\\s\\\\\\\\]+)(?:\\\\s*(\\\\(\\\\)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.shell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.shell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.shell\"\n            }\n          },\n          \"end\": \";|&|$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.function.shell\"\n            }\n          },\n          \"name\": \"meta.function.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)([^\\\\s\\\\\\\\=]+)\\\\s*(\\\\(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.shell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.shell\"\n            }\n          },\n          \"end\": \";|&|$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.function.shell\"\n            }\n          },\n          \"name\": \"meta.function.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(RUBY)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(RUBY)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.ruby.shell\",\n          \"contentName\": \"source.ruby.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(RUBY)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(RUBY)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby.shell\",\n          \"contentName\": \"source.ruby.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(PYTHON)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(PYTHON)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.python.shell\",\n          \"contentName\": \"source.python.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(PYTHON)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(PYTHON)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.python.shell\",\n          \"contentName\": \"source.python.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(APPLESCRIPT)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(APPLESCRIPT)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.applescript.shell\",\n          \"contentName\": \"source.applescript.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(APPLESCRIPT)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(APPLESCRIPT)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.applescript.shell\",\n          \"contentName\": \"source.applescript.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(HTML)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(HTML)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.html.shell\",\n          \"contentName\": \"text.html.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(HTML)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(HTML)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.html.shell\",\n          \"contentName\": \"text.html.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(MARKDOWN)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(MARKDOWN)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.markdown.shell\",\n          \"contentName\": \"text.html.markdown.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(MARKDOWN)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(MARKDOWN)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.markdown.shell\",\n          \"contentName\": \"text.html.markdown.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(TEXTILE)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(TEXTILE)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.textile.shell\",\n          \"contentName\": \"text.html.textile.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.textile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(TEXTILE)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(TEXTILE)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.textile.shell\",\n          \"contentName\": \"text.html.textile.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.textile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(SHELL)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(\\\\3)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"contentName\": \"source.shell.embedded.shell\",\n          \"name\": \"string.unquoted.heredoc.no-indent.shell.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(SHELL)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(\\\\3)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.shell.shell\",\n          \"contentName\": \"source.shell.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|')\\\\s*\\\\\\\\?([^;&<\\\\s]+)\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(\\\\3)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.shell\"\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|')\\\\s*\\\\\\\\?([^;&<\\\\s]+)\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(\\\\3)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.shell\"\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*\\\\\\\\?([^;&<\\\\s]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(\\\\2)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.expanded.no-indent.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\[\\\\$`\\\\\\\\\\\\n]\",\n              \"name\": \"constant.character.escape.shell\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*\\\\\\\\?([^;&<\\\\s]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(\\\\2)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.expanded.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\[\\\\$`\\\\\\\\\\\\n]\",\n              \"name\": \"constant.character.escape.shell\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"herestring\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*(('))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.herestring.shell\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.single.shell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"(')\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.shell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"meta.herestring.shell\",\n          \"contentName\": \"string.quoted.single.shell\"\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*((\\\"))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.herestring.shell\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.double.shell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"(\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.shell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"meta.herestring.shell\",\n          \"contentName\": \"string.quoted.double.shell\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.herestring.shell\"\n            },\n            \"2\": {\n              \"name\": \"string.unquoted.herestring.shell\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(<<<)\\\\s*(([^\\\\s)\\\\\\\\]|\\\\\\\\.)+)\",\n          \"name\": \"meta.herestring.shell\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\$\\\\({2}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\\){2}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.other.math.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"#math\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.interpolated.backtick.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\[`\\\\\\\\$]\",\n              \"name\": \"constant.character.escape.shell\"\n            },\n            {\n              \"begin\": \"(?<=\\\\W)(?=#)(?!#{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.whitespace.comment.leading.shell\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"#\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.comment.shell\"\n                    }\n                  },\n                  \"end\": \"(?=`)\",\n                  \"name\": \"comment.line.number-sign.shell\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\$\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.interpolated.dollar.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return)(?=\\\\s|;|&|$)\",\n          \"name\": \"keyword.control.shell\"\n        },\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(?:export|declare|typeset|local|readonly)(?=\\\\s|;|&|$)\",\n          \"name\": \"storage.modifier.shell\"\n        }\n      ]\n    },\n    \"list\": {\n      \"patterns\": [\n        {\n          \"match\": \";|&&|&|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.list.shell\"\n        }\n      ]\n    },\n    \"logical-expression\": {\n      \"patterns\": [\n        {\n          \"comment\": \"do we want a special rule for ( expr )?\",\n          \"match\": \"=[=~]?|!=?|<|>|&&|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.shell\"\n        },\n        {\n          \"match\": \"(?<!\\\\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])\",\n          \"name\": \"keyword.operator.logical.shell\"\n        }\n      ]\n    },\n    \"loop\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(for)\\\\s+(?=\\\\({2})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)done(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.for-loop.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(for)\\\\s+(.+?)\\\\s+(in)(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.loop.shell\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)done(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.for-in-loop.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(while|until)(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)done(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.while-loop.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(select)\\\\s+((?:[^\\\\s\\\\\\\\]|\\\\\\\\.)+)(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.loop.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)(done)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.select-block.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)case(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)esac(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.case-block.shell\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=^|;|&|\\\\s)in(?=\\\\s|;|&|$)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.shell\"\n                }\n              },\n              \"end\": \"(?<=^|;|&|\\\\s)(?=esac(\\\\s|;|&|$))\",\n              \"name\": \"meta.scope.case-body.shell\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#case-clause\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)if(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)fi(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.if-block.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"math\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"match\": \"\\\\+{1,2}|-{1,2}|!|~|\\\\*{1,2}|/|%|<[<=]?|>[>=]?|==|!=|^|\\\\|{1,2}|&{1,2}|\\\\?|\\\\:|,|=|[*/%+\\\\-&^|]=|<<=|>>=\",\n          \"name\": \"keyword.operator.arithmetic.shell\"\n        },\n        {\n          \"match\": \"0[xX][0-9A-Fa-f]+\",\n          \"name\": \"constant.numeric.hex.shell\"\n        },\n        {\n          \"match\": \"0\\\\d+\",\n          \"name\": \"constant.numeric.octal.shell\"\n        },\n        {\n          \"match\": \"\\\\d{1,2}#[0-9a-zA-Z@_]+\",\n          \"name\": \"constant.numeric.other.shell\"\n        },\n        {\n          \"match\": \"\\\\d+\",\n          \"name\": \"constant.numeric.integer.shell\"\n        }\n      ]\n    },\n    \"pathname\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\s|:|=|^)~\",\n          \"name\": \"keyword.operator.tilde.shell\"\n        },\n        {\n          \"match\": \"\\\\*|\\\\?\",\n          \"name\": \"keyword.operator.glob.shell\"\n        },\n        {\n          \"begin\": \"([?*+@!])(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.extglob.shell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.extglob.shell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.extglob.shell\"\n            }\n          },\n          \"name\": \"meta.structure.extglob.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"pipeline\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(time)(?=\\\\s|;|&|$)\",\n          \"name\": \"keyword.other.shell\"\n        },\n        {\n          \"match\": \"[|!]\",\n          \"name\": \"keyword.operator.pipe.shell\"\n        }\n      ]\n    },\n    \"redirection\": {\n      \"patterns\": [\n        {\n          \"begin\": \"[><]\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.interpolated.process-substitution.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![<>])(&>|\\\\d*>&\\\\d*|\\\\d*(>>|>|<)|\\\\d*<&|\\\\d*<>)(?![<>])\",\n          \"name\": \"keyword.operator.redirect.shell\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.shell\"\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.quoted.single.shell\"\n        },\n        {\n          \"begin\": \"\\\\$?\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.quoted.double.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\[\\\\$`\\\"\\\\\\\\\\\\n]\",\n              \"name\": \"constant.character.escape.shell\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\$'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.quoted.single.dollar.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(a|b|e|f|n|r|t|v|\\\\\\\\|')\",\n              \"name\": \"constant.character.escape.ansi-c.shell\"\n            },\n            {\n              \"match\": \"\\\\\\\\[0-9]{3}\",\n              \"name\": \"constant.character.escape.octal.shell\"\n            },\n            {\n              \"match\": \"\\\\\\\\x[0-9a-fA-F]{2}\",\n              \"name\": \"constant.character.escape.hex.shell\"\n            },\n            {\n              \"match\": \"\\\\\\\\c.\",\n              \"name\": \"constant.character.escape.control-char.shell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(?::|\\\\.)(?=\\\\s|;|&|$)\",\n          \"name\": \"support.function.builtin.shell\"\n        },\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(?:alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|dirs|disown|echo|enable|eval|exec|exit|false|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|read|readonly|set|shift|shopt|source|suspend|test|times|trap|true|type|ulimit|umask|unalias|unset|wait)(?=\\\\s|;|&|$)\",\n          \"name\": \"support.function.builtin.shell\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"match\": \"(\\\\$)[a-zA-Z_][a-zA-Z0-9_]*\",\n          \"name\": \"variable.other.normal.shell\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"match\": \"(\\\\$)[-*@#?$!0_]\",\n          \"name\": \"variable.other.special.shell\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"match\": \"(\\\\$)[1-9]\",\n          \"name\": \"variable.other.positional.shell\"\n        },\n        {\n          \"begin\": \"\\\\${\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"name\": \"variable.other.bracket.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"!|:[-=?]?|\\\\*|@|#{1,2}|%{1,2}|/\",\n              \"name\": \"keyword.operator.expansion.shell\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.array.shell\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.section.array.shell\"\n                }\n              },\n              \"match\": \"(\\\\[)([^\\\\]]+)(\\\\])\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/sjs.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"sjs\",\n  \"patterns\": [\n    { \"include\": \"source.js\" },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#keywords\"\n    }\n  ],\n  \"repository\": {\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.sjs\",\n          \"match\": \"\\\\b(if|while|for|return)\\\\b\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"name\": \"string.quoted.double.sjs\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.sjs\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.sjs\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/slim.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"^\\\\s*$\",\n  \"foldingStartMarker\": \"^\\\\s*([-%#\\\\:\\\\.\\\\w\\\\=].*)\\\\s$\",\n  \"repository\": {\n    \"interpolated-ruby\": {\n      \"begin\": \"=(?=\\\\b)\",\n      \"end\": \"\\\\s|\\\\w$\",\n      \"name\": \"source.ruby.embedded.html\"\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        { \"include\": \"#tag-attribute\" },\n        { \"include\": \"#interpolated-ruby\" },\n        { \"include\": \"#delimited-ruby-a\" },\n        { \"include\": \"#delimited-ruby-b\" },\n        { \"include\": \"#delimited-ruby-c\" },\n        { \"include\": \"#rubyline\" },\n        { \"include\": \"#embedded-ruby\" }\n      ]\n    },\n    \"delimited-ruby-b\": {\n      \"begin\": \"=\\\\[\",\n      \"end\": \"\\\\](?=( \\\\w|$))\",\n      \"patterns\": [{ \"include\": \"source.ruby\" }],\n      \"name\": \"source.ruby.embedded.slim\"\n    },\n    \"root-class-id-tag\": {\n      \"match\": \"(\\\\.|#)([\\\\w\\\\d\\\\-]+)\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.separator.key-value.html\" },\n        \"2\": { \"name\": \"entity.other.attribute-name.html\" }\n      }\n    },\n    \"string-double-quoted\": {\n      \"end\": \"\\\"\",\n      \"begin\": \"(\\\")(?=.*\\\")\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      },\n      \"contentName\": \"meta.toc-list.id.html\",\n      \"patterns\": [{ \"include\": \"#embedded-ruby\" }, { \"include\": \"#entities\" }],\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"name\": \"string.quoted.double.html\"\n    },\n    \"tag-attribute\": {\n      \"begin\": \"([\\\\w.#_-]+)=(?!\\\\s)(true|false|nil)?(\\\\s*\\\\(|\\\\{)?\",\n      \"end\": \"\\\\}|\\\\)|$\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" }\n      ],\n      \"captures\": {\n        \"1\": { \"name\": \"entity.other.attribute-name.event.slim\" },\n        \"2\": { \"name\": \"constant.language.slim\" }\n      }\n    },\n    \"delimited-ruby-c\": {\n      \"begin\": \"=\\\\{\",\n      \"end\": \"\\\\}(?=( \\\\w|$))\",\n      \"patterns\": [{ \"include\": \"source.ruby\" }],\n      \"name\": \"source.ruby.embedded.slim\"\n    },\n    \"delimited-ruby-a\": {\n      \"begin\": \"=\\\\(\",\n      \"end\": \"\\\\)(?=( \\\\w|$))\",\n      \"patterns\": [{ \"include\": \"source.ruby\" }],\n      \"name\": \"source.ruby.embedded.slim\"\n    },\n    \"string-single-quoted\": {\n      \"end\": \"'\",\n      \"begin\": \"(')(?=.*')\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      },\n      \"contentName\": \"meta.toc-list.id.html\",\n      \"patterns\": [{ \"include\": \"#embedded-ruby\" }, { \"include\": \"#entities\" }],\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"name\": \"string.quoted.single.html\"\n    },\n    \"continuation\": {\n      \"match\": \"([\\\\\\\\,])\\\\s*\\\\n\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.separator.continuation.slim\" } }\n    },\n    \"embedded-ruby\": {\n      \"begin\": \"(?<!\\\\\\\\)#\\\\{{1,2}\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.section.embedded.ruby\" } },\n      \"end\": \"\\\\}{1,2}\",\n      \"patterns\": [{ \"include\": \"source.ruby\" }],\n      \"name\": \"source.ruby.embedded.html\",\n      \"beginCaptures\": { \"0\": { \"name\": \"punctuation.section.embedded.ruby\" } }\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.entity.html\" },\n            \"3\": { \"name\": \"punctuation.definition.entity.html\" }\n          }\n        },\n        { \"match\": \"&\", \"name\": \"invalid.illegal.bad-ampersand.html\" }\n      ]\n    },\n    \"rubyline\": {\n      \"begin\": \"(==|=)(<>|><|<'|'<|<|>)?|-\",\n      \"end\": \"(?<!\\\\\\\\|,|,\\\\n|\\\\\\\\\\\\n)$\",\n      \"patterns\": [\n        {\n          \"comment\": \"Hack to let ruby comments work in this context properly\",\n          \"match\": \"#.*$\",\n          \"name\": \"comment.line.number-sign.ruby\"\n        },\n        { \"include\": \"#continuation\" },\n        { \"include\": \"source.ruby\" }\n      ],\n      \"contentName\": \"source.ruby.embedded.slim\",\n      \"name\": \"meta.line.ruby.slim\"\n    }\n  },\n  \"keyEquivalent\": \"^~S\",\n  \"fileTypes\": [\"slim\", \"skim\"],\n  \"uuid\": \"36302CC1-1E76-4910-B7B6-F1915EBBA0D3\",\n  \"patterns\": [\n    {\n      \"begin\": \"^(\\\\s*)(ruby):$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [{ \"include\": \"source.ruby\" }],\n      \"name\": \"text.ruby.filter.slim\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.ruby.filter.slim\" }\n      }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(javascript):$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [{ \"include\": \"source.js\" }],\n      \"name\": \"text.javascript.filter.slim\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.javascript.filter.slim\" }\n      }\n    },\n    {\n      \"begin\": \"^(---)\\\\s*\\\\n\",\n      \"endCaptures\": { \"1\": { \"name\": \"storage.frontmatter.slim\" } },\n      \"end\": \"^(---)\\\\s*\\\\n\",\n      \"patterns\": [{ \"include\": \"source.yaml\" }],\n      \"name\": \"source.yaml.meta.slim\",\n      \"beginCaptures\": { \"1\": { \"name\": \"storage.frontmatter.slim\" } }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(coffee):$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [{ \"include\": \"source.coffee\" }],\n      \"name\": \"text.coffeescript.filter.slim\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.coffeescript.filter.slim\" }\n      }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(markdown):$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [{ \"include\": \"source.md\" }],\n      \"name\": \"text.markdown.filter.slim\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.markdown.filter.slim\" }\n      }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(css):$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [{ \"include\": \"source.css\" }],\n      \"name\": \"text.css.filter.slim\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.css.filter.slim\" }\n      }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(sass):$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [{ \"include\": \"source.sass\" }],\n      \"name\": \"text.sass.filter.slim\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.sass.filter.slim\" }\n      }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(scss):$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [{ \"include\": \"source.scss\" }],\n      \"name\": \"text.scss.filter.slim\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.scss.filter.slim\" }\n      }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(less):$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [{ \"include\": \"source.less\" }],\n      \"name\": \"text.less.filter.slim\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.less.filter.slim\" }\n      }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(erb):$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [{ \"include\": \"source.erb\" }],\n      \"name\": \"text.erb.filter.slim\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.erb.filter.slim\" }\n      }\n    },\n    {\n      \"match\": \"^(! )($|\\\\s.*)\",\n      \"name\": \"meta.prolog.slim\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.prolog.slim\" } }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(/)\\\\s*.*$\",\n      \"end\": \"^(?!\\\\1  )\",\n      \"name\": \"comment.block.slim\",\n      \"beginCaptures\": { \"1\": { \"name\": \"punctuation.section.comment.slim\" } }\n    },\n    {\n      \"match\": \"^\\\\s*(/)\\\\s*\\\\S.*$\\\\n?\",\n      \"name\": \"comment.line.slash.slim\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.section.comment.slim\" } }\n    },\n    {\n      \"begin\": \"^\\\\s*(?=-)\",\n      \"end\": \"$\",\n      \"patterns\": [{ \"include\": \"#rubyline\" }]\n    },\n    {\n      \"begin\": \"(?==+|~)\",\n      \"end\": \"$\",\n      \"patterns\": [{ \"include\": \"#rubyline\" }]\n    },\n    { \"include\": \"#tag-attribute\" },\n    { \"include\": \"#embedded-ruby\" },\n    {\n      \"begin\": \"^\\\\s*(\\\\.|#|[a-zA-Z0-9]+)([\\\\w-]+)?\",\n      \"end\": \"$|(?!\\\\.|#|=|:|-|~|/|\\\\}|\\\\]|\\\\*|\\\\s?[\\\\*\\\\{])\",\n      \"comment\": \"1 - dot OR hash OR any combination of word, number; 2 - OPTIONAL any combination of word, number, dash or underscore (following a . or\",\n      \"name\": \"meta.tag\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.slim\" },\n        \"2\": { \"name\": \"entity.other.attribute-name.event.slim\" }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(:[\\\\w\\\\d]+)+\",\n          \"end\": \"$|\\\\s\",\n          \"comment\": \"XML\",\n          \"name\": \"entity.name.tag.slim\"\n        },\n        {\n          \"begin\": \"(:\\\\s)(\\\\.|#|[a-zA-Z0-9]+)([\\\\w-]+)?\",\n          \"end\": \"$|(?!\\\\.|#|=|-|~|/|\\\\}|\\\\]|\\\\*|\\\\s?[\\\\*\\\\{])\",\n          \"comment\": \"Inline HTML / 1 - colon; 2 - dot OR hash OR any combination of word, number; 3 - OPTIONAL any combination of word, number, dash or underscore (following a . or\",\n          \"patterns\": [\n            { \"include\": \"#root-class-id-tag\" },\n            { \"include\": \"#tag-attribute\" }\n          ],\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.slim\" },\n            \"2\": { \"name\": \"entity.name.tag.slim\" },\n            \"3\": { \"name\": \"entity.other.attribute-name.event.slim\" }\n          }\n        },\n        {\n          \"end\": \"(\\\\})|$|^(?!.*\\\\|\\\\s*$)\",\n          \"begin\": \"(\\\\*\\\\{)(?=.*\\\\}|.*\\\\|\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.section.embedded.ruby\" }\n          },\n          \"patterns\": [{ \"include\": \"#embedded-ruby\" }],\n          \"comment\": \"Splat attributes\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.section.embedded.ruby\" }\n          },\n          \"name\": \"source.ruby.embedded.slim\"\n        },\n        { \"include\": \"#root-class-id-tag\" },\n        { \"include\": \"#rubyline\" },\n        { \"match\": \"/\", \"name\": \"punctuation.terminator.tag.slim\" }\n      ]\n    },\n    {\n      \"match\": \"^\\\\s*(\\\\\\\\.)\",\n      \"captures\": { \"1\": { \"name\": \"meta.escape.slim\" } }\n    },\n    {\n      \"begin\": \"^\\\\s*(?=\\\\||')\",\n      \"end\": \"$\",\n      \"patterns\": [\n        { \"include\": \"#embedded-ruby\" },\n        { \"include\": \"text.html.basic\" }\n      ]\n    },\n    {\n      \"begin\": \"(?=<[\\\\w\\\\d\\\\:]+)\",\n      \"end\": \"$|\\\\/\\\\>\",\n      \"comment\": \"Inline and root-level HTML tags\",\n      \"patterns\": [{ \"include\": \"text.html.basic\" }]\n    }\n  ],\n  \"name\": \"Slim\",\n  \"scopeName\": \"text.slim\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/slm.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"slm\"],\n  \"foldingStartMarker\": \"^\\\\s*([-%#\\\\:\\\\.\\\\w\\\\=].*)\\\\s$\",\n  \"foldingStopMarker\": \"^\\\\s*$\",\n  \"name\": \"Slm\",\n  \"patterns\": [\n    {\n      \"begin\": \"^(\\\\s*)(javascript):$\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.javascript.filter.slm\" }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"text.javascript.filter.slm\",\n      \"patterns\": [{ \"include\": \"source.js\" }]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(coffee):$\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.coffeescript.filter.slm\" }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"text.coffeescript.filter.slm\",\n      \"patterns\": [{ \"include\": \"source.coffee\" }]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(markdown):$\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"constant.language.name.markdown.filter.slm\" }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"text.markdown.filter.slm\",\n      \"patterns\": [{ \"include\": \"source.md\" }]\n    },\n    {\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.prolog.slm\" }\n      },\n      \"match\": \"^(! )($|\\\\s.*)\",\n      \"name\": \"meta.prolog.slm\"\n    },\n    {\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.section.comment.slm\" }\n      },\n      \"match\": \"^\\\\s*(/)\\\\s*\\\\S.*$\\\\n?\",\n      \"name\": \"comment.line.slash.slm\"\n    },\n    {\n      \"begin\": \"^(\\\\s*)(/)\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"punctuation.section.comment.slm\" }\n      },\n      \"end\": \"^(?!\\\\1  )\",\n      \"name\": \"comment.block.slm\",\n      \"patterns\": [{ \"include\": \"text.slm\" }]\n    },\n    {\n      \"begin\": \"^\\\\s*(?===|=|-|~)\",\n      \"end\": \"$\",\n      \"patterns\": [{ \"include\": \"#rubyline\" }]\n    },\n    { \"include\": \"#inline-html-tag\" },\n    { \"include\": \"#normal-html-tag\" },\n    { \"include\": \"#embedded-ruby\" },\n    {\n      \"begin\": \"^\\\\s*([\\\\w.#_-]*[\\\\w]+)\\\\s*\",\n      \"captures\": {\n        \"0\": { \"name\": \"entity.name.tag.slm\" }\n      },\n      \"end\": \"$|(?!\\\\.|#|\\\\{|\\\\[|=|-|~|/)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{(?=.*\\\\}|.*\\\\|\\\\s*$)\",\n          \"end\": \"\\\\}|$|^(?!.*\\\\|\\\\s*$)\",\n          \"name\": \"meta.section.attributes.slm\",\n          \"patterns\": [\n            { \"include\": \"source.js\" },\n            { \"include\": \"#continuation\" }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[(?=.*\\\\]|.*\\\\|\\\\s*$)\",\n          \"end\": \"\\\\]|$|^(?!.*\\\\|\\\\s*$)\",\n          \"name\": \"meta.section.object.slm\",\n          \"patterns\": [\n            { \"include\": \"source.js\" },\n            { \"include\": \"#continuation\" }\n          ]\n        },\n        { \"include\": \"#rubyline\" },\n        {\n          \"match\": \"/\",\n          \"name\": \"punctuation.terminator.tag.slm\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": { \"name\": \"meta.escape.slm\" }\n      },\n      \"match\": \"^\\\\s*(\\\\\\\\.)\"\n    },\n    {\n      \"begin\": \"^\\\\s*(?=\\\\||')\",\n      \"end\": \"$\",\n      \"patterns\": [\n        { \"include\": \"#embedded-ruby\" },\n        { \"include\": \"text.html.basic\" }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"continuation\": {\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.separator.continuation.slm\" }\n      },\n      \"match\": \"([\\\\\\\\,])\\\\s*\\\\n\"\n    },\n    \"delimited-ruby-a\": {\n      \"begin\": \"=\\\\(\",\n      \"end\": \"\\\\)(?=( \\\\w|$))\",\n      \"name\": \"source.js.embedded.slm\",\n      \"patterns\": [{ \"include\": \"source.js\" }]\n    },\n    \"delimited-ruby-b\": {\n      \"begin\": \"=\\\\[\",\n      \"end\": \"\\\\](?=( \\\\w|$))\",\n      \"name\": \"source.js.embedded.slm\",\n      \"patterns\": [{ \"include\": \"source.js\" }]\n    },\n    \"embedded-ruby\": {\n      \"begin\": \"(?<!\\\\\\\\)\\\\${\",\n      \"end\": \"}\",\n      \"name\": \"source.js.embedded.html\",\n      \"patterns\": [{ \"include\": \"source.js\" }]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.entity.html\" },\n            \"3\": { \"name\": \"punctuation.definition.entity.html\" }\n          },\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\"\n        },\n        {\n          \"match\": \"&\",\n          \"name\": \"invalid.illegal.bad-ampersand.html\"\n        }\n      ]\n    },\n    \"inline-html-tag\": {\n      \"begin\": \"^(\\\\s*([\\\\w.#_-]+( [\\\\w.#_-]+=(\\\".*?\\\"))*: )*)([\\\\w.#_-]+( [\\\\w.#_-]+=(\\\".*?\\\"))*:)(?=\\\\s)\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.slm\" },\n        \"2\": { \"name\": \"entity.name.tag.slm\" },\n        \"3\": { \"name\": \"entity.name.tag.slm\" },\n        \"4\": { \"name\": \"string.quoted.double.html\" },\n        \"5\": { \"name\": \"entity.name.tag.slm\" },\n        \"6\": { \"name\": \"entity.name.tag.slm\" },\n        \"7\": { \"name\": \"string.quoted.double.html\" }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        { \"include\": \"#normal-inline-html-tag\" },\n        { \"include\": \"#tag-stuff\" }\n      ]\n    },\n    \"interpolated-ruby\": {\n      \"begin\": \"=(?=\\\\b)\",\n      \"end\": \"\\\\s|\\\\w$\",\n      \"name\": \"source.js.embedded.html\"\n    },\n    \"normal-html-tag\": {\n      \"begin\": \"([\\\\w.#_-]+=)\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.slm\" }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" }\n      ]\n    },\n    \"normal-inline-html-tag\": {\n      \"begin\": \"([\\\\w.#_-]+)\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.slm\" }\n      },\n      \"end\": \"$\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }]\n    },\n    \"rubyline\": {\n      \"begin\": \"(==.|=.|==|=|-)\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.slm\" }\n      },\n      \"contentName\": \"source.js.embedded.slm\",\n      \"end\": \"$\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"source.js.embedded.html\" },\n        \"2\": { \"name\": \"keyword.control.js.start-block\" }\n      },\n      \"name\": \"meta.line.js.slm\",\n      \"patterns\": [\n        {\n          \"comment\": \"Hack to let ruby comments work in this context properly\",\n          \"match\": \"////.*$\",\n          \"name\": \"comment.line.number-sign.js\"\n        },\n        { \"include\": \"#continuation\" },\n        { \"include\": \"source.js\" }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      },\n      \"contentName\": \"meta.toc-list.id.html\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"name\": \"string.quoted.double.html\",\n      \"patterns\": [{ \"include\": \"#embedded-ruby\" }, { \"include\": \"#entities\" }]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      },\n      \"contentName\": \"meta.toc-list.id.html\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"name\": \"string.quoted.single.html\",\n      \"patterns\": [{ \"include\": \"#embedded-ruby\" }, { \"include\": \"#entities\" }]\n    },\n    \"tag-id-attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.other.attribute-name.id.html\" },\n        \"2\": { \"name\": \"punctuation.separator.key-value.html\" }\n      },\n      \"end\": \"(?<='|\\\")\",\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"patterns\": [\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" }\n      ]\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        { \"include\": \"#inline-html-tag\" },\n        { \"include\": \"#normal-html-tag\" },\n        { \"include\": \"#tag-id-attribute\" },\n        { \"include\": \"#interpolated-ruby\" },\n        { \"include\": \"#delimited-ruby-a\" },\n        { \"include\": \"#delimited-ruby-b\" },\n        { \"include\": \"#rubyline\" },\n        { \"include\": \"#embedded-ruby\" }\n      ]\n    }\n  },\n  \"scopeName\": \"text.slm\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/smalltalk.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/smalltalk.tmbundle/blob/master/Syntaxes/SmallTalk.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"name\": \"smalltalk\",\n  \"foldingStartMarker\": \"\\\\[\",\n  \"foldingStopMarker\": \"^\\\\s*\\\\]|^\\\\s\\\\]\",\n  \"keyEquivalent\": \"^~S\",\n  \"fileTypes\": [\"st\"],\n  \"patterns\": [\n    {\n      \"match\": \"\\\\$.\",\n      \"name\": \"constant.character.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(class)\\\\b\",\n      \"name\": \"storage.type.$1.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(extend|super|self)\\\\b\",\n      \"name\": \"storage.modifier.$1.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(yourself|new|Smalltalk)\\\\b\",\n      \"name\": \"keyword.control.$1.smalltalk\"\n    },\n    {\n      \"match\": \":=\",\n      \"name\": \"keyword.operator.assignment.smalltalk\"\n    },\n    {\n      \"comment\": \"Parse the variable declaration like: |a b c|\",\n      \"match\": \"/^:\\\\w*\\\\s*\\\\|/\",\n      \"name\": \"constant.other.block.smalltalk\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.instance-variables.begin.smalltalk\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"support.type.variable.declaration.smalltalk\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.instance-variables.end.smalltalk\"\n        }\n      },\n      \"match\": \"(\\\\|)(\\\\s*\\\\w[\\\\w ]*)(\\\\|)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \":\\\\w+\",\n              \"name\": \"entity.name.function.block.smalltalk\"\n            }\n          ]\n        }\n      },\n      \"comment\": \"Parse the blocks like: [ :a :b | ...... ]\",\n      \"match\": \"\\\\[((\\\\s+|:\\\\w+)*)\\\\|\"\n    },\n    {\n      \"include\": \"#numeric\"\n    },\n    {\n      \"match\": \"<(?!<|=)|>(?!<|=|>)|<=|>=|=|==|~=|~~|>>|\\\\^\",\n      \"name\": \"keyword.operator.comparison.smalltalk\"\n    },\n    {\n      \"match\": \"(\\\\*|\\\\+|\\\\-|/|\\\\\\\\)\",\n      \"name\": \"keyword.operator.arithmetic.smalltalk\"\n    },\n    {\n      \"match\": \"(?<=[ \\\\t])!+|\\\\bnot\\\\b|&|\\\\band\\\\b|\\\\||\\\\bor\\\\b\",\n      \"name\": \"keyword.operator.logical.smalltalk\"\n    },\n    {\n      \"comment\": \"Fake reserved word -> main Smalltalk messages\",\n      \"match\": \"(?<!\\\\.)\\\\b(ensure|resume|retry|signal)\\\\b(?![?!])\",\n      \"name\": \"keyword.control.smalltalk\"\n    },\n    {\n      \"comment\": \"Fake conditionals. Smalltalk Methods.\",\n      \"match\": \"ifCurtailed:|ifTrue:|ifFalse:|whileFalse:|whileTrue:\",\n      \"name\": \"keyword.control.conditionals.smalltalk\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.inherited-class.smalltalk\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.smalltalk\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.smalltalk\"\n        }\n      },\n      \"match\": \"(\\\\w+)(\\\\s+(subclass:))\\\\s*(\\\\w*)\",\n      \"name\": \"meta.class.smalltalk\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.comment.begin.smalltalk\"\n        }\n      ],\n      \"end\": \"\\\"\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.comment.end.smalltalk\"\n        }\n      ],\n      \"name\": \"comment.block.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(true|false)\\\\b\",\n      \"name\": \"constant.language.boolean.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(nil)\\\\b\",\n      \"name\": \"constant.language.nil.smalltalk\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.smalltalk\"\n        }\n      },\n      \"comment\": \"messages/methods\",\n      \"match\": \"(?>[a-zA-Z_]\\\\w*(?>[?!])?)(:)(?!:)\",\n      \"name\": \"constant.other.messages.smalltalk\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.smalltalk\"\n        }\n      },\n      \"comment\": \"symbols\",\n      \"match\": \"(#)[a-zA-Z_][a-zA-Z0-9_:]*\",\n      \"name\": \"constant.other.symbol.smalltalk\"\n    },\n    {\n      \"begin\": \"#\\\\[\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.constant.begin.smalltalk\"\n        }\n      ],\n      \"end\": \"\\\\]\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.constant.end.smalltalk\"\n        }\n      ],\n      \"name\": \"meta.array.byte.smalltalk\",\n      \"patterns\": [\n        {\n          \"match\": \"[0-9]+(r[a-zA-Z0-9]+)?\",\n          \"name\": \"constant.numeric.integer.smalltalk\"\n        },\n        {\n          \"match\": \"[^\\\\s\\\\]]+\",\n          \"name\": \"invalid.illegal.character-not-allowed-here.smalltalk\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"#\\\\(\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.constant.begin.smalltalk\"\n        }\n      ],\n      \"comment\": \"Array Constructor\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.constant.end.smalltalk\"\n        }\n      ],\n      \"name\": \"constant.other.array.smalltalk\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.smalltalk\"\n        }\n      ],\n      \"end\": \"'\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.smalltalk\"\n        }\n      ],\n      \"name\": \"string.quoted.single.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n      \"name\": \"variable.other.constant.smalltalk\"\n    }\n  ],\n  \"repository\": {\n    \"numeric\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\w)[0-9]+\\\\.[0-9]+s[0-9]*\",\n          \"name\": \"constant.numeric.float.scaled.smalltalk\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)[0-9]+\\\\.[0-9]+([edq]-?[0-9]+)?\",\n          \"name\": \"constant.numeric.float.smalltalk\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)-?[0-9]+r[a-zA-Z0-9]+\",\n          \"name\": \"constant.numeric.integer.radix.smalltalk\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)-?[0-9]+([edq]-?[0-9]+)?\",\n          \"name\": \"constant.numeric.integer.smalltalk\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.smalltalk\",\n  \"uuid\": \"1ED64A34-BCB1-44E1-A0FE-84053003E232\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/smarty.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"tpl\"],\n  \"injections\": {\n    \"text.html.smarty - (meta.embedded | meta.tag | comment.block | meta.block.literal), L:text.html.smarty meta.tag\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#blocks\"\n        }\n      ]\n    }\n  },\n  \"keyEquivalent\": \"^~S\",\n  \"name\": \"Smarty\",\n  \"patterns\": [\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"blocks\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\{)(literal)(\\\\})\",\n          \"captures\": [\n            {\n              \"name\": \"meta.embedded.line.tag.literal.smarty\"\n            },\n            {\n              \"name\": \"punctuation.definition.tag.begin.smarty\"\n            },\n            {\n              \"name\": \"support.function.built-in.smarty\"\n            },\n            {\n              \"name\": \"punctuation.definition.tag.end.smarty\"\n            }\n          ],\n          \"end\": \"(\\\\{/)(literal)(\\\\})\",\n          \"name\": \"meta.block.literal.smarty\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\{%?)\",\n          \"beginCaptures\": [\n            {\n              \"name\": \"source.smarty\"\n            },\n            {\n              \"name\": \"punctuation.section.embedded.begin.smarty\"\n            }\n          ],\n          \"contentName\": \"source.smarty\",\n          \"end\": \"(%?\\\\})\",\n          \"endCaptures\": [\n            {\n              \"name\": \"source.smarty\"\n            },\n            {\n              \"name\": \"punctuation.section.embedded.end.smarty\"\n            }\n          ],\n          \"name\": \"meta.embedded.line.tag.smarty\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#lang\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\{%?)\\\\*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.smarty\"\n            }\n          },\n          \"end\": \"\\\\*(%?\\\\})\",\n          \"name\": \"comment.block.smarty\",\n          \"patterns\": []\n        }\n      ]\n    },\n    \"lang\": {\n      \"patterns\": [\n        {\n          \"match\": \"(!==|!=|!|<=|>=|<|>|===|==|%|&&|\\\\|\\\\|)|\\\\b(and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\\\b\",\n          \"name\": \"keyword.operator.smarty\"\n        },\n        {\n          \"match\": \"\\\\b(TRUE|FALSE|true|false)\\\\b\",\n          \"name\": \"constant.language.smarty\"\n        },\n        {\n          \"match\": \"\\\\b(if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\\\b\",\n          \"name\": \"keyword.control.smarty\"\n        },\n        {\n          \"captures\": [\n            {\n              \"name\": \"variable.parameter.smarty\"\n            }\n          ],\n          \"match\": \"\\\\b([a-zA-Z]+)=\",\n          \"name\": \"meta.attribute.smarty\"\n        },\n        {\n          \"match\": \"\\\\b(capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\\\b\",\n          \"name\": \"support.function.built-in.smarty\"\n        },\n        {\n          \"match\": \"\\\\|(capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)\",\n          \"name\": \"support.function.variable-modifier.smarty\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": [\n            {\n              \"name\": \"punctuation.definition.string.begin.smarty\"\n            }\n          ],\n          \"end\": \"'\",\n          \"endCaptures\": [\n            {\n              \"name\": \"punctuation.definition.string.end.smarty\"\n            }\n          ],\n          \"name\": \"string.quoted.single.smarty\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.smarty\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": [\n            {\n              \"name\": \"punctuation.definition.string.begin.smarty\"\n            }\n          ],\n          \"end\": \"\\\"\",\n          \"endCaptures\": [\n            {\n              \"name\": \"punctuation.definition.string.end.smarty\"\n            }\n          ],\n          \"name\": \"string.quoted.double.smarty\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.smarty\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.smarty\"\n            }\n          },\n          \"match\": \"\\\\b(\\\\$)Smarty\\\\.\",\n          \"name\": \"variable.other.global.smarty\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.smarty\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.smarty\"\n            }\n          },\n          \"match\": \"(\\\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n          \"name\": \"variable.other.smarty\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.smarty\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.smarty\"\n            }\n          },\n          \"match\": \"(->)([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n          \"name\": \"variable.other.smarty\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.smarty\"\n            },\n            \"2\": {\n              \"name\": \"meta.function-call.object.smarty\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.smarty\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.smarty\"\n            }\n          },\n          \"match\": \"(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\\\().*?(\\\\))\",\n          \"name\": \"variable.other.smarty\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.smarty\",\n  \"uuid\": \"4D6BBA54-E3FC-4296-9CA1-662B2AD537C6\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/smithy.tmLanguage.json",
    "content": "{\n  \"name\": \"Smithy\",\n  \"fileTypes\": [\"smithy\"],\n  \"scopeName\": \"source.smithy\",\n  \"uuid\": \"9c3e617f-4d4a-4370-9194-2e82173c1610\",\n  \"foldingStartMarker\": \"(\\\\{|\\\\[)\\\\s*\",\n  \"foldingStopMarker\": \"\\\\s*(\\\\}|\\\\])\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"name\": \"meta.keyword.statement.control.smithy\",\n      \"begin\": \"^(\\\\$)([A-Z-a-z_][A-Z-a-z0-9_]*)(:)\\\\s*\",\n      \"end\": \"\\\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.control.smithy\"\n        },\n        \"2\": {\n          \"name\": \"support.type.property-name.smithy\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.dictionary.pair.smithy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#value\"\n        },\n        {\n          \"match\": \"[^\\\\n]\",\n          \"name\": \"invalid.illegal.control.smithy\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.keyword.statement.metadata.smithy\",\n      \"begin\": \"^(metadata)\\\\s+(.+)\\\\s*(=)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.smithy\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.smithy\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.smithy\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#value\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.keyword.statement.namespace.smithy\",\n      \"begin\": \"^(namespace)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.smithy\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"match\": \"[A-Z-a-z_][A-Z-a-z0-9_]*(\\\\.[A-Z-a-z_][A-Z-a-z0-9_]*)*\",\n          \"name\": \"entity.name.type.smithy\"\n        },\n        {\n          \"match\": \"[^\\\\n]\",\n          \"name\": \"invalid.illegal.namespace.smithy\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.keyword.statement.use.smithy\",\n      \"begin\": \"^(use)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.smithy\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"match\": \"[A-Z-a-z_][A-Z-a-z0-9_]*(\\\\.[A-Z-a-z_][A-Z-a-z0-9_]*)*#[A-Z-a-z_][A-Z-a-z0-9_]*(\\\\.[A-Z-a-z_][A-Z-a-z0-9_]*)*\",\n          \"name\": \"entity.name.type.smithy\"\n        },\n        {\n          \"match\": \"[^\\\\n]\",\n          \"name\": \"invalid.illegal.use.smithy\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#trait\"\n    },\n    {\n      \"name\": \"meta.keyword.statement.shape.smithy\",\n      \"begin\": \"^(byte|short|integer|long|float|double|bigInteger|bigDecimal|boolean|blob|string|timestamp|document|list|set|map|union|service|operation|resource|enum|intEnum)\\\\s+([A-Z-a-z_][A-Z-a-z0-9_]*)\\\\s+(with)\\\\s+(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.smithy\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.smithy\"\n        },\n        \"3\": {\n          \"name\": \"keyword.statement.with.smithy\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.array.begin.smithy\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.smithy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#identifier\",\n          \"name\": \"entity.name.type.smithy\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.smithy\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.keyword.statement.shape.smithy\",\n      \"match\": \"^(byte|short|integer|long|float|double|bigInteger|bigDecimal|boolean|blob|string|timestamp|document|list|set|map|union|service|operation|resource|enum|intEnum)\\\\s+([A-Z-a-z_][A-Z-a-z0-9_]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.smithy\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.smithy\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.keyword.statement.shape.smithy\",\n      \"begin\": \"^(structure)\\\\s+([A-Z-a-z_][A-Z-a-z0-9_]*)(?:\\\\s+(for)\\\\s+([0-9a-zA-Z\\\\.#-]+))?\\\\s+(with)\\\\s+(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.smithy\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.smithy\"\n        },\n        \"3\": {\n          \"name\": \"keyword.statement.for-resource.smithy\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.smithy\"\n        },\n        \"5\": {\n          \"name\": \"keyword.statement.with.smithy\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.array.begin.smithy\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.smithy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#identifier\",\n          \"name\": \"entity.name.type.smithy\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.smithy\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.keyword.statement.shape.smithy\",\n      \"match\": \"^(structure)\\\\s+([A-Z-a-z_][A-Z-a-z0-9_]*)(?:\\\\s+(for)\\\\s+([0-9a-zA-Z\\\\.#-]+))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.smithy\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.smithy\"\n        },\n        \"3\": {\n          \"name\": \"keyword.statement.for-resource.smithy\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.smithy\"\n        }\n      }\n    },\n    {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.begin.smithy\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.end.smithy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#shape_inner\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.keyword.statement.apply.smithy\",\n      \"begin\": \"^(apply)\\\\s+([A-Z-a-z0-9_]+)\\\\s+\",\n      \"end\": \"\\\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.smithy\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.smithy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#trait\"\n        },\n        {\n          \"match\": \"[^\\\\n]\",\n          \"name\": \"invalid.illegal.apply.smithy\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"with_statement\": {\n      \"begin\": \"(with)\\\\s+(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.with.smithy\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.array.begin.smithy\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.smithy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.smithy\"\n        },\n        {\n          \"include\": \"#identifier\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#doc_comment\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        }\n      ]\n    },\n    \"doc_comment\": {\n      \"match\": \"(///.*)\",\n      \"name\": \"comment.block.documentation.smithy\"\n    },\n    \"line_comment\": {\n      \"match\": \"(//.*)\",\n      \"name\": \"comment.line.double-slash.smithy\"\n    },\n    \"trait\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.keyword.statement.trait.smithy\",\n          \"begin\": \"(@)([0-9a-zA-Z\\\\.#-]+)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation.smithy\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.annotation.smithy\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.dictionary.begin.smithy\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.dictionary.end.smithy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#object_inner\"\n            },\n            {\n              \"include\": \"#value\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.keyword.statement.trait.smithy\",\n          \"match\": \"(@)([0-9a-zA-Z\\\\.#-]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation.smithy\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.annotation.smithy\"\n            }\n          }\n        }\n      ]\n    },\n    \"value\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array\"\n        },\n        {\n          \"include\": \"#object\"\n        }\n      ]\n    },\n    \"array\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.smithy\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.smithy\"\n        }\n      },\n      \"name\": \"meta.structure.array.smithy\",\n      \"patterns\": [\n        {\n          \"include\": \"#value\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.smithy\"\n        },\n        {\n          \"match\": \"[^\\\\s\\\\]]\",\n          \"name\": \"invalid.illegal.array.smithy\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"match\": \"\\\\b(?:true|false|null)\\\\b\",\n      \"name\": \"constant.language.smithy\"\n    },\n    \"number\": {\n      \"match\": \"(?x:            # turn on extended mode\\n                         -?         # an optional minus\\n                         (?:\\n                           0        # a zero\\n                           |        # ...or...\\n                           [1-9]    # a 1-9 character\\n                           \\\\d*      # followed by zero or more digits\\n                         )\\n                         (?:\\n                           (?:\\n                             \\\\.     # a period\\n                             \\\\d+    # followed by one or more digits\\n                           )?\\n                           (?:\\n                             [eE]   # an e character\\n                             [+-]?  # followed by an option +/-\\n                             \\\\d+    # followed by one or more digits\\n                           )?       # make exponent optional\\n                         )?         # make decimal portion optional\\n                       )\",\n      \"name\": \"constant.numeric.smithy\"\n    },\n    \"object\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.begin.smithy\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.end.smithy\"\n        }\n      },\n      \"name\": \"meta.structure.dictionary.smithy\",\n      \"patterns\": [\n        {\n          \"include\": \"#object_inner\"\n        }\n      ]\n    },\n    \"object_inner\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string_key\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.dictionary.key-value.smithy\"\n        },\n        {\n          \"name\": \"meta.structure.dictionary.value.smithy\",\n          \"include\": \"#value\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.dictionary.pair.smithy\"\n        }\n      ]\n    },\n    \"shape_inner\": {\n      \"patterns\": [\n        {\n          \"include\": \"#trait\"\n        },\n        {\n          \"match\": \":=\",\n          \"name\": \"punctuation.separator.dictionary.inline-struct.smithy\"\n        },\n        {\n          \"include\": \"#with_statement\"\n        },\n        {\n          \"include\": \"#elided_target\"\n        },\n        {\n          \"include\": \"#object_inner\"\n        }\n      ]\n    },\n    \"string_key\": {\n      \"patterns\": [\n        {\n          \"include\": \"#identifier_key\"\n        },\n        {\n          \"include\": \"#dquote_key\"\n        }\n      ]\n    },\n    \"identifier_key\": {\n      \"name\": \"support.type.property-name.smithy\",\n      \"match\": \"[A-Z-a-z0-9_\\\\.#$]+(?=\\\\s*:)\"\n    },\n    \"dquote_key\": {\n      \"name\": \"support.type.property-name.smithy\",\n      \"match\": \"\\\".*\\\"(?=\\\\s*:)\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#textblock\"\n        },\n        {\n          \"include\": \"#dquote\"\n        },\n        {\n          \"include\": \"#shapeid\"\n        }\n      ]\n    },\n    \"textblock\": {\n      \"name\": \"string.quoted.double.smithy\",\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.smithy\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.smithy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.smithy\"\n        }\n      ]\n    },\n    \"dquote\": {\n      \"name\": \"string.quoted.double.smithy\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.smithy\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.smithy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.smithy\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"name\": \"entity.name.type.smithy\",\n      \"match\": \"[A-Z-a-z_][A-Z-a-z0-9_]*\"\n    },\n    \"shapeid\": {\n      \"name\": \"entity.name.type.smithy\",\n      \"match\": \"[A-Z-a-z_][A-Z-a-z0-9_\\\\.#$]*\"\n    },\n    \"elided_target\": {\n      \"match\": \"(\\\\$)([A-Z-a-z0-9_\\\\.#$]+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.statement.elision.smithy\"\n        },\n        \"2\": {\n          \"name\": \"support.type.property-name.smithy\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/solidity.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"sol\"],\n  \"name\": \"solidity\",\n  \"patterns\": [\n    {\n      \"include\": \"#natspec\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#operator\"\n    },\n    {\n      \"include\": \"#global\"\n    },\n    {\n      \"include\": \"#control\"\n    },\n    {\n      \"include\": \"#constant\"\n    },\n    {\n      \"include\": \"#primitive\"\n    },\n    {\n      \"include\": \"#type-primitive\"\n    },\n    {\n      \"include\": \"#type-modifier-extended-scope\"\n    },\n    {\n      \"include\": \"#declaration\"\n    },\n    {\n      \"include\": \"#function-call\"\n    },\n    {\n      \"include\": \"#assembly\"\n    },\n    {\n      \"include\": \"#punctuation\"\n    }\n  ],\n  \"repository\": {\n    \"natspec\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation\",\n          \"patterns\": [\n            {\n              \"include\": \"#natspec-tags\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"///\",\n          \"end\": \"$\",\n          \"name\": \"comment.block.documentation\",\n          \"patterns\": [\n            {\n              \"include\": \"#natspec-tags\"\n            }\n          ]\n        }\n      ]\n    },\n    \"natspec-tags\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-todo\"\n        },\n        {\n          \"include\": \"#natspec-tag-title\"\n        },\n        {\n          \"include\": \"#natspec-tag-author\"\n        },\n        {\n          \"include\": \"#natspec-tag-notice\"\n        },\n        {\n          \"include\": \"#natspec-tag-dev\"\n        },\n        {\n          \"include\": \"#natspec-tag-param\"\n        },\n        {\n          \"include\": \"#natspec-tag-return\"\n        }\n      ]\n    },\n    \"natspec-tag-title\": {\n      \"match\": \"(@title)\\\\b\",\n      \"name\": \"storage.type.title.natspec\"\n    },\n    \"natspec-tag-author\": {\n      \"match\": \"(@author)\\\\b\",\n      \"name\": \"storage.type.author.natspec\"\n    },\n    \"natspec-tag-notice\": {\n      \"match\": \"(@notice)\\\\b\",\n      \"name\": \"storage.type.dev.natspec\"\n    },\n    \"natspec-tag-dev\": {\n      \"match\": \"(@dev)\\\\b\",\n      \"name\": \"storage.type.dev.natspec\"\n    },\n    \"natspec-tag-param\": {\n      \"match\": \"(@param)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.param.natspec\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.natspec\"\n        }\n      }\n    },\n    \"natspec-tag-return\": {\n      \"match\": \"(@return)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.return.natspec\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.natspec\"\n        }\n      }\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-line\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        }\n      ]\n    },\n    \"comment-todo\": {\n      \"match\": \"(?i)\\\\b(FIXME|TODO|CHANGED|XXX|IDEA|HACK|NOTE|REVIEW|NB|BUG|QUESTION|COMBAK|TEMP|SUPPRESS|LINT|\\\\w+-disable|\\\\w+-suppress)\\\\b(?-i)\",\n      \"name\": \"keyword.comment.todo\"\n    },\n    \"comment-line\": {\n      \"begin\": \"(?<!tp:)//\",\n      \"end\": \"$\",\n      \"name\": \"comment.line\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-todo\"\n        }\n      ]\n    },\n    \"comment-block\": {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-todo\"\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"include\": \"#operator-logic\"\n        },\n        {\n          \"include\": \"#operator-mapping\"\n        },\n        {\n          \"include\": \"#operator-arithmetic\"\n        },\n        {\n          \"include\": \"#operator-binary\"\n        },\n        {\n          \"include\": \"#operator-assignment\"\n        }\n      ]\n    },\n    \"operator-logic\": {\n      \"match\": \"(==|\\\\!=|<(?!<)|<=|>(?!>)|>=|\\\\&\\\\&|\\\\|\\\\||\\\\:(?!=)|\\\\?|\\\\!)\",\n      \"name\": \"keyword.operator.logic\"\n    },\n    \"operator-mapping\": {\n      \"match\": \"(=>)\",\n      \"name\": \"keyword.operator.mapping\"\n    },\n    \"operator-arithmetic\": {\n      \"match\": \"(\\\\+|\\\\-|\\\\/|\\\\*)\",\n      \"name\": \"keyword.operator.arithmetic\"\n    },\n    \"operator-binary\": {\n      \"match\": \"(\\\\^|\\\\&|\\\\||<<|>>)\",\n      \"name\": \"keyword.operator.binary\"\n    },\n    \"operator-assignment\": {\n      \"match\": \"(\\\\:?=)\",\n      \"name\": \"keyword.operator.assignment\"\n    },\n    \"control\": {\n      \"patterns\": [\n        {\n          \"include\": \"#control-flow\"\n        },\n        {\n          \"include\": \"#control-using\"\n        },\n        {\n          \"include\": \"#control-import\"\n        },\n        {\n          \"include\": \"#control-pragma\"\n        },\n        {\n          \"include\": \"#control-underscore\"\n        },\n        {\n          \"include\": \"#control-unchecked\"\n        },\n        {\n          \"include\": \"#control-other\"\n        }\n      ]\n    },\n    \"control-flow\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(if|else|for|while|do|break|continue|try|catch|finally|throw|return)\\\\b\",\n          \"name\": \"keyword.control.flow\"\n        },\n        {\n          \"begin\": \"\\\\b(returns)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.return\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#declaration-function-parameters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"control-using\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(using)\\\\b\\\\s+\\\\b([A-Za-z\\\\d_]+)\\\\b\\\\s+\\\\b(for)\\\\b\\\\s+\\\\b([A-Za-z\\\\d_]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.using\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.library\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.for\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(using)\\\\b\",\n          \"name\": \"keyword.control.using\"\n        }\n      ]\n    },\n    \"control-import\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(import)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import\"\n            }\n          },\n          \"end\": \"(?=\\\\;)\",\n          \"patterns\": [\n            {\n              \"begin\": \"((?=\\\\{))\",\n              \"end\": \"((?=\\\\}))\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(\\\\w+)\\\\b\",\n                  \"name\": \"entity.name.type.interface\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(from)\\\\b\",\n              \"name\": \"keyword.control.import.from\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(import)\\\\b\",\n          \"name\": \"keyword.control.import\"\n        }\n      ]\n    },\n    \"control-unchecked\": {\n      \"match\": \"\\\\b(unchecked)\\\\b\",\n      \"name\": \"keyword.control.unchecked\"\n    },\n    \"control-pragma\": {\n      \"match\": \"\\\\b(pragma)(?:\\\\s+([A-Za-z_]\\\\w+)\\\\s+([^\\\\s]+))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.pragma\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.pragma\"\n        },\n        \"3\": {\n          \"name\": \"constant.other.pragma\"\n        }\n      }\n    },\n    \"control-underscore\": {\n      \"match\": \"\\\\b(_)\\\\b\",\n      \"name\": \"constant.other.underscore\"\n    },\n    \"control-other\": {\n      \"match\": \"\\\\b(new|delete|emit)\\\\b\",\n      \"name\": \"keyword.control\"\n    },\n    \"constant\": {\n      \"patterns\": [\n        {\n          \"include\": \"#constant-boolean\"\n        },\n        {\n          \"include\": \"#constant-time\"\n        },\n        {\n          \"include\": \"#constant-currency\"\n        }\n      ]\n    },\n    \"constant-boolean\": {\n      \"match\": \"\\\\b(true|false)\\\\b\",\n      \"name\": \"constant.language.boolean\"\n    },\n    \"constant-time\": {\n      \"match\": \"\\\\b(seconds|minutes|hours|days|weeks|years)\\\\b\",\n      \"name\": \"constant.language.time\"\n    },\n    \"constant-currency\": {\n      \"match\": \"\\\\b(ether|wei|gwei|finney|szabo)\\\\b\",\n      \"name\": \"constant.language.currency\"\n    },\n    \"number\": {\n      \"patterns\": [\n        {\n          \"include\": \"#number-decimal\"\n        },\n        {\n          \"include\": \"#number-hex\"\n        },\n        {\n          \"include\": \"#number-scientific\"\n        }\n      ]\n    },\n    \"number-decimal\": {\n      \"match\": \"\\\\b([0-9_]+(\\\\.[0-9_]+)?)\\\\b\",\n      \"name\": \"constant.numeric.decimal\"\n    },\n    \"number-hex\": {\n      \"match\": \"\\\\b(0[xX][a-fA-F0-9]+)\\\\b\",\n      \"name\": \"constant.numeric.hexadecimal\"\n    },\n    \"number-scientific\": {\n      \"match\": \"\\\\b(?:0\\\\.(?:0[1-9]|[1-9][0-9_]?)|[1-9][0-9_]*(?:\\\\.\\\\d{1,2})?)(?:e[+-]?[0-9_]+)?\",\n      \"name\": \"constant.numeric.scientific\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\".*?\\\\\\\"\",\n          \"name\": \"string.quoted.double\"\n        },\n        {\n          \"match\": \"\\\\'.*?\\\\'\",\n          \"name\": \"string.quoted.single\"\n        }\n      ]\n    },\n    \"primitive\": {\n      \"patterns\": [\n        {\n          \"include\": \"#number-decimal\"\n        },\n        {\n          \"include\": \"#number-hex\"\n        },\n        {\n          \"include\": \"#number-scientific\"\n        },\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(address|string\\\\d*|bytes\\\\d*|int\\\\d*|uint\\\\d*|bool|hash\\\\d*)\\\\b(?:\\\\[\\\\])(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.type.primitive\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#primitive\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#global\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(address|string\\\\d*|bytes\\\\d*|int\\\\d*|uint\\\\d*|bool|hash\\\\d*)\\\\b\",\n          \"name\": \"support.type.primitive\"\n        }\n      ]\n    },\n    \"global\": {\n      \"patterns\": [\n        {\n          \"include\": \"#global-variables\"\n        },\n        {\n          \"include\": \"#global-functions\"\n        }\n      ]\n    },\n    \"global-variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(this)\\\\b\",\n          \"name\": \"variable.language.this\"\n        },\n        {\n          \"match\": \"\\\\b(super)\\\\b\",\n          \"name\": \"variable.language.super\"\n        },\n        {\n          \"match\": \"\\\\b(abi)\\\\b\",\n          \"name\": \"variable.language.builtin.abi\"\n        },\n        {\n          \"match\": \"\\\\b(msg\\\\.sender|msg|block|tx|now)\\\\b\",\n          \"name\": \"variable.language.transaction\"\n        },\n        {\n          \"match\": \"\\\\b(tx\\\\.origin|tx\\\\.gasprice|msg\\\\.data|msg\\\\.sig|msg\\\\.value)\\\\b\",\n          \"name\": \"variable.language.transaction\"\n        }\n      ]\n    },\n    \"global-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(require|assert|revert)\\\\b\",\n          \"name\": \"keyword.control.exceptions\"\n        },\n        {\n          \"match\": \"\\\\b(selfdestruct|suicide)\\\\b\",\n          \"name\": \"keyword.control.contract\"\n        },\n        {\n          \"match\": \"\\\\b(addmod|mulmod|keccak256|sha256|sha3|ripemd160|ecrecover)\\\\b\",\n          \"name\": \"support.function.math\"\n        },\n        {\n          \"match\": \"\\\\b(unicode)\\\\b\",\n          \"name\": \"support.function.string\"\n        },\n        {\n          \"match\": \"\\\\b(blockhash|gasleft)\\\\b\",\n          \"name\": \"variable.language.transaction\"\n        },\n        {\n          \"match\": \"\\\\b(type)\\\\b\",\n          \"name\": \"variable.language.type\"\n        }\n      ]\n    },\n    \"type-modifier-access\": {\n      \"match\": \"\\\\b(internal|external|private|public)\\\\b\",\n      \"name\": \"storage.type.modifier.access\"\n    },\n    \"type-modifier-payable\": {\n      \"match\": \"\\\\b(nonpayable|payable)\\\\b\",\n      \"name\": \"storage.type.modifier.payable\"\n    },\n    \"type-modifier-constant\": {\n      \"match\": \"\\\\b(constant)\\\\b\",\n      \"name\": \"storage.type.modifier.readonly\"\n    },\n    \"type-modifier-immutable\": {\n      \"match\": \"\\\\b(immutable)\\\\b\",\n      \"name\": \"storage.type.modifier.readonly\"\n    },\n    \"type-modifier-extended-scope\": {\n      \"match\": \"\\\\b(pure|view|inherited|indexed|storage|memory|virtual|calldata|override|abstract)\\\\b\",\n      \"name\": \"storage.type.modifier.extendedscope\"\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(\\\\_\\\\w+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.function\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:\\\\.)(\\\\w+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.variable.property\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(\\\\w+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.other\"\n            }\n          }\n        }\n      ]\n    },\n    \"modifier-call\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\w+)\\\\b\",\n          \"name\": \"entity.name.function.modifier\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration-contract\"\n        },\n        {\n          \"include\": \"#declaration-interface\"\n        },\n        {\n          \"include\": \"#declaration-library\"\n        },\n        {\n          \"include\": \"#declaration-function\"\n        },\n        {\n          \"include\": \"#declaration-modifier\"\n        },\n        {\n          \"include\": \"#declaration-constructor\"\n        },\n        {\n          \"include\": \"#declaration-event\"\n        },\n        {\n          \"include\": \"#declaration-storage\"\n        },\n        {\n          \"include\": \"#declaration-error\"\n        }\n      ]\n    },\n    \"declaration-storage-field\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#control\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-modifier-access\"\n        },\n        {\n          \"include\": \"#type-modifier-immutable\"\n        },\n        {\n          \"include\": \"#type-modifier-extend-scope\"\n        },\n        {\n          \"include\": \"#type-modifier-payable\"\n        },\n        {\n          \"include\": \"#type-modifier-constant\"\n        },\n        {\n          \"include\": \"#primitive\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        }\n      ]\n    },\n    \"declaration-storage\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration-storage-mapping\"\n        },\n        {\n          \"include\": \"#declaration-struct\"\n        },\n        {\n          \"include\": \"#declaration-enum\"\n        },\n        {\n          \"include\": \"#declaration-storage-field\"\n        }\n      ]\n    },\n    \"declaration-contract\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(contract)\\\\b\\\\s+(\\\\w+)\\\\b\\\\s+\\\\b(is)\\\\b\\\\s+\",\n          \"end\": \"(?=\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.contract\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.contract\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.is\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(\\\\w+)\\\\b\",\n              \"name\": \"entity.name.type.contract.extend\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(contract)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.contract\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.contract\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-interface\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(interface)\\\\b\\\\s+(\\\\w+)\\\\b\\\\s+\\\\b(is)\\\\b\\\\s+\",\n          \"end\": \"(?=\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.is\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(\\\\w+)\\\\b\",\n              \"name\": \"entity.name.type.interface.extend\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(interface)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-library\": {\n      \"match\": \"\\\\b(library)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.library\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.library\"\n        }\n      }\n    },\n    \"declaration-struct\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(struct)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.struct\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\b(struct)\\\\b\\\\s*(\\\\w+)?\\\\b\\\\s*(?=\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.struct\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-primitive\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"declaration-event\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(event)\\\\b(?:\\\\s+(\\\\w+)\\\\b)?\",\n          \"end\": \"(?=\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.event\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.event\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type-primitive\"\n            },\n            {\n              \"match\": \"\\\\b(?:(indexed)\\\\s)?(\\\\w+)(?:,\\\\s*|)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.indexed\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.event\"\n                }\n              }\n            },\n            {\n              \"include\": \"#punctuation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(event)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.event\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.event\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-constructor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(constructor)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.constructor\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\s*(?=\\\\()\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#declaration-function-parameters\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(?=\\\\{)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-modifier-access\"\n                },\n                {\n                  \"include\": \"#function-call\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(constructor)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.constructor\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-enum\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(enum)\\\\s+(\\\\w+)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.enum\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(\\\\w+)\\\\b\",\n              \"name\": \"variable.other.enummember\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(enum)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.enum\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-function-parameters\": {\n      \"begin\": \"\\\\G\\\\s*(?=\\\\()\",\n      \"end\": \"(?=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-modifier-extended-scope\"\n        },\n        {\n          \"match\": \"\\\\b([A-Z]\\\\w*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct\"\n            }\n          }\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"declaration-function\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(function)\\\\s+(\\\\w+)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function\"\n            }\n          },\n          \"end\": \"(?=\\\\{|;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#natspec\"\n            },\n            {\n              \"include\": \"#global\"\n            },\n            {\n              \"include\": \"#declaration-function-parameters\"\n            },\n            {\n              \"include\": \"#type-modifier-access\"\n            },\n            {\n              \"include\": \"#type-modifier-payable\"\n            },\n            {\n              \"include\": \"#type-modifier-immutable\"\n            },\n            {\n              \"include\": \"#type-modifier-extended-scope\"\n            },\n            {\n              \"include\": \"#control-flow\"\n            },\n            {\n              \"include\": \"#function-call\"\n            },\n            {\n              \"include\": \"#modifier-call\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(function)\\\\s+([A-Za-z_]\\\\w*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.function\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-modifier\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(modifier)\\\\b\\\\s*(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.modifier\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.modifier\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#declaration-function-parameters\"\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(?=\\\\{)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#declaration-function-parameters\"\n                },\n                {\n                  \"include\": \"#type-modifier-access\"\n                },\n                {\n                  \"include\": \"#type-modifier-payable\"\n                },\n                {\n                  \"include\": \"#type-modifier-immutable\"\n                },\n                {\n                  \"include\": \"#type-modifier-extended-scope\"\n                },\n                {\n                  \"include\": \"#function-call\"\n                },\n                {\n                  \"include\": \"#modifier-call\"\n                },\n                {\n                  \"include\": \"#control-flow\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(modifier)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.modifier\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-storage-mapping\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(mapping)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.mapping\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#declaration-storage-mapping\"\n            },\n            {\n              \"include\": \"#type-primitive\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#operator\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(mapping)\\\\b\",\n          \"name\": \"storage.type.mapping\"\n        }\n      ]\n    },\n    \"declaration-error\": {\n      \"match\": \"\\\\b(error)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.error\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.error\"\n        }\n      }\n    },\n    \"function-call\": {\n      \"match\": \"\\\\b([A-Za-z_]\\\\w*)\\\\s*(\\\\()\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parameters.begin\"\n        }\n      }\n    },\n    \"assembly\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(assembly)\\\\b\",\n          \"name\": \"keyword.control.assembly\"\n        },\n        {\n          \"match\": \"\\\\b(let)\\\\b\",\n          \"name\": \"storage.type.assembly\"\n        }\n      ]\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.statement\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.accessor\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator\"\n        },\n        {\n          \"match\": \"\\\\{\",\n          \"name\": \"punctuation.brace.curly.begin\"\n        },\n        {\n          \"match\": \"\\\\}\",\n          \"name\": \"punctuation.brace.curly.end\"\n        },\n        {\n          \"match\": \"\\\\[\",\n          \"name\": \"punctuation.brace.square.begin\"\n        },\n        {\n          \"match\": \"\\\\]\",\n          \"name\": \"punctuation.brace.square.end\"\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.parameters.begin\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"punctuation.parameters.end\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.solidity\",\n  \"uuid\": \"ad87d2cd-8575-4afe-984e-9421a3788933\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/soytemplate.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"\\\\{\\\\s*template\\\\s+[^\\\\}]*\\\\}\",\n  \"firstLineMatch\": \"\\\\{\\\\s*namespace\\\\b\",\n  \"foldingStopMarker\": \"\\\\{\\\\s*/\\\\s*template\\\\s*\\\\}\",\n  \"fileTypes\": [\"soy\"],\n  \"repository\": {\n    \"comment-doc\": {\n      \"begin\": \"(/\\\\*\\\\*)(?!/)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.end.soy\" }\n      },\n      \"end\": \"(\\\\*/)\",\n      \"patterns\": [\n        {\n          \"match\": \"(@param|@param\\\\?)\\\\s+(\\\\w+)\",\n          \"captures\": {\n            \"1\": { \"name\": \"support.type.soy\" },\n            \"2\": { \"name\": \"variable.parameter.soy\" }\n          }\n        }\n      ],\n      \"name\": \"comment.block.documentation.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.begin.soy\" }\n      }\n    },\n    \"operator\": {\n      \"match\": \"==|!=|\\\\band\\\\b|\\\\bor\\\\b|\\\\bnot\\\\b|-|\\\\+|(?<!\\\\{)/|\\\\?:\",\n      \"name\": \"keyword.operator.soy\"\n    },\n    \"print-parameter\": {\n      \"patterns\": [\n        { \"match\": \"\\\\|\", \"name\": \"keyword.operator.soy\" },\n        {\n          \"match\": \"noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate\",\n          \"name\": \"variable.parameter.soy\"\n        }\n      ]\n    },\n    \"param\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(param)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#variable\" },\n        {\n          \"match\": \"\\\\b([\\\\w]*)\\\\s*(:)?\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.other.attribute-name.soy\" },\n            \"2\": { \"name\": \"keyword.operator.soy\" }\n          }\n        }\n      ],\n      \"name\": \"meta.tag.param.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    },\n    \"comment-line\": {\n      \"match\": \"\\\\s+(//).*$\\\\n?\",\n      \"name\": \"comment.line.double-slash.soy\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.comment.soy\" } }\n    },\n    \"call\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(call|delcall)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#string-quoted-single\" },\n        { \"include\": \"#string-quoted-double\" },\n        {\n          \"match\": \"(?<=call|delcall)\\\\s+[\\\\.\\\\w]+\",\n          \"name\": \"variable.parameter.soy\"\n        },\n        {\n          \"match\": \"\\\\b(data)\\\\s*(=)\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.other.attribute-name.soy\" },\n            \"2\": { \"name\": \"keyword.operator.soy\" }\n          }\n        }\n      ],\n      \"name\": \"meta.tag.call.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    },\n    \"print\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(print)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#variable\" },\n        { \"include\": \"#print-parameter\" },\n        { \"include\": \"#number\" },\n        { \"include\": \"#primitive\" },\n        { \"include\": \"#attribute-lookup\" }\n      ],\n      \"name\": \"meta.tag.print.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    },\n    \"template\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(template|deltemplate)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<=template|deltemplate)\\\\s+([\\\\.\\\\w]+)\",\n          \"captures\": { \"1\": { \"name\": \"entity.name.function.soy\" } }\n        },\n        {\n          \"match\": \"\\\\b(private)\\\\s*(=)\\\\s*(\\\"true\\\"|\\\"false\\\")\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.other.attribute-name.soy\" },\n            \"2\": { \"name\": \"keyword.operator.soy\" },\n            \"3\": { \"name\": \"string.quoted.double.soy\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b(private)\\\\s*(=)\\\\s*('true'|'false')\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.other.attribute-name.soy\" },\n            \"2\": { \"name\": \"keyword.operator.soy\" },\n            \"3\": { \"name\": \"string.quoted.single.soy\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b(autoescape)\\\\s*(=)\\\\s*(\\\"true\\\"|\\\"false\\\"|\\\"contextual\\\")\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.other.attribute-name.soy\" },\n            \"2\": { \"name\": \"keyword.operator.soy\" },\n            \"3\": { \"name\": \"string.quoted.double.soy\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b(autoescape)\\\\s*(=)\\\\s*('true'|'false'|'contextual')\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.other.attribute-name.soy\" },\n            \"2\": { \"name\": \"keyword.operator.soy\" },\n            \"3\": { \"name\": \"string.quoted.single.soy\" }\n          }\n        }\n      ],\n      \"name\": \"meta.tag.template.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    },\n    \"primitive\": {\n      \"match\": \"\\\\b(null|false|true)\\\\b\",\n      \"name\": \"constant.language.soy\"\n    },\n    \"tag\": {\n      \"begin\": \"(\\\\{)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#namespace\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#special-character\" },\n        { \"include\": \"#tag-simple\" },\n        { \"include\": \"#function\" },\n        { \"include\": \"#operator\" },\n        { \"include\": \"#attribute-lookup\" },\n        { \"include\": \"#number\" },\n        { \"include\": \"#primitive\" },\n        { \"include\": \"#print-parameter\" }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" }\n      }\n    },\n    \"attribute-lookup\": {\n      \"begin\": \"(\\\\[)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.attribute-lookup.end.soy\" }\n      },\n      \"end\": \"(\\\\])\",\n      \"patterns\": [\n        { \"include\": \"#variable\" },\n        { \"include\": \"#function\" },\n        { \"include\": \"#operator\" },\n        { \"include\": \"#number\" },\n        { \"include\": \"#primitive\" },\n        { \"include\": \"#string-quoted-single\" },\n        { \"include\": \"#string-quoted-double\" }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.attribute-lookup.begin.soy\" }\n      }\n    },\n    \"special-character\": {\n      \"match\": \"(\\\\bsp\\\\b|\\\\bnil\\\\b|\\\\\\\\r|\\\\\\\\n|\\\\\\\\t|\\\\blb\\\\b|\\\\brb\\\\b)\",\n      \"name\": \"support.constant.soy\"\n    },\n    \"number\": { \"match\": \"[\\\\d]+\", \"name\": \"constant.numeric\" },\n    \"function\": {\n      \"match\": \"\\\\b(isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\\\b\",\n      \"name\": \"support.function.soy\"\n    },\n    \"namespace\": {\n      \"match\": \"(namespace|delpackage)\\\\s+([\\\\w\\\\.]+)\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.soy\" },\n        \"2\": { \"name\": \"variable.parameter.soy\" }\n      }\n    },\n    \"comment-block\": {\n      \"begin\": \"(/\\\\*)(?!\\\\*)\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.end.soy\" }\n      },\n      \"end\": \"(\\\\*/)\",\n      \"name\": \"comment.block.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.comment.begin.soy\" }\n      }\n    },\n    \"switch\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(switch|case)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#variable\" },\n        { \"include\": \"#function\" },\n        { \"include\": \"#number\" },\n        { \"include\": \"#string-quoted-single\" },\n        { \"include\": \"#string-quoted-double\" }\n      ],\n      \"name\": \"meta.tag.switch.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    },\n    \"for\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(for)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"match\": \"\\\\bin\\\\b\", \"name\": \"keyword.operator.soy\" },\n        { \"match\": \"\\\\brange\\\\b\", \"name\": \"support.function.soy\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#number\" },\n        { \"include\": \"#primitive\" }\n      ],\n      \"name\": \"meta.tag.for.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    },\n    \"if\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(if|elseif)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#variable\" },\n        { \"include\": \"#operator\" },\n        { \"include\": \"#function\" },\n        { \"include\": \"#string-quoted-single\" },\n        { \"include\": \"#string-quoted-double\" }\n      ],\n      \"name\": \"meta.tag.if.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    },\n    \"foreach\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(foreach)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"match\": \"\\\\bin\\\\b\", \"name\": \"keyword.operator.soy\" },\n        { \"include\": \"#variable\" }\n      ],\n      \"name\": \"meta.tag.foreach.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    },\n    \"string-quoted-double\": {\n      \"match\": \"\\\"[^\\\"]*\\\"\",\n      \"name\": \"string.quoted.double\"\n    },\n    \"string-quoted-single\": {\n      \"match\": \"'[^']*'\",\n      \"name\": \"string.quoted.single\"\n    },\n    \"tag-simple\": {\n      \"match\": \"(?<=\\\\{|\\\\{/)\\\\s*(literal|else|ifempty|default)\\\\s*(?=\\\\})\",\n      \"name\": \"entity.name.tag.soy\"\n    },\n    \"variable\": { \"match\": \"\\\\$[\\\\w\\\\.]+\", \"name\": \"variable.other.soy\" },\n    \"msg\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(msg)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        { \"include\": \"#string-quoted-single\" },\n        { \"include\": \"#string-quoted-double\" },\n        {\n          \"match\": \"\\\\b(meaning|desc)\\\\s*(=)\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.other.attribute-name.soy\" },\n            \"2\": { \"name\": \"keyword.operator.soy\" }\n          }\n        }\n      ],\n      \"name\": \"meta.tag.msg.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    },\n    \"css\": {\n      \"begin\": \"(\\\\{/?)\\\\s*(css)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.soy\" } },\n      \"end\": \"(\\\\})\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\\\b\",\n          \"name\": \"support.constant.soy\"\n        }\n      ],\n      \"name\": \"meta.tag.css.soy\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.soy\" },\n        \"2\": { \"name\": \"entity.name.tag.soy\" }\n      }\n    }\n  },\n  \"uuid\": \"C56846DE-CB9A-4DB5-9D38-DC417DEA4D5F\",\n  \"patterns\": [\n    { \"include\": \"#template\" },\n    { \"include\": \"#if\" },\n    { \"include\": \"#comment-line\" },\n    { \"include\": \"#comment-block\" },\n    { \"include\": \"#comment-doc\" },\n    { \"include\": \"#call\" },\n    { \"include\": \"#css\" },\n    { \"include\": \"#param\" },\n    { \"include\": \"#print\" },\n    { \"include\": \"#msg\" },\n    { \"include\": \"#for\" },\n    { \"include\": \"#foreach\" },\n    { \"include\": \"#switch\" },\n    { \"include\": \"#tag\" },\n    { \"include\": \"text.html.basic\" }\n  ],\n  \"comment\": \"SoyTemplate\",\n  \"name\": \"SoyTemplate\",\n  \"scopeName\": \"source.soy\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/sql.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/vscode-mssql/blob/master/syntaxes/SQL.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/vscode-mssql/commit/b8b58864526c048002b7c3964bdac8aac3713bd9\",\n  \"name\": \"SQL\",\n  \"scopeName\": \"source.sql\",\n  \"patterns\": [\n    {\n      \"match\": \"((?<!@)@)\\\\b(\\\\w+)\\\\b\",\n      \"name\": \"text.variable\"\n    },\n    {\n      \"match\": \"(\\\\[)[^\\\\]]*(\\\\])\",\n      \"name\": \"text.bracketed\"\n    },\n    {\n      \"match\": \"\\\\b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|add|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|alter|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference|automatic|autopilot|availability|availability_mode|backup_priority|base64|basic|batches|batchsize|before|between|bigint|binary|binding|bit|block|blocksize|bmk|break|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|cleanup_policy|clear|clear_port|close|clustered|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|continue|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create(\\\\s+or\\\\s+alter)?|credential|cross|cryptographic|cryptographic_provider|cube|cursor|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime|datetime2|datetimeoffset|days|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|deallocate|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distinct|distributed|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|edition|elements|else|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|except|exec|executable|execute|exists|expand|expiredate|expiry_date|explicit|external|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|fetch|field_terminator|fieldterminator|file|filelistonly|filegroup|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|first_row|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|goto|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hours|http|identity|identity_value|if|ifnull|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|index|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intersect|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kill|kilobytes_per_batch|labelonly|langid|language|last|lastrow|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|matched|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minutes|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nonclustered|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|open|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|proc(edure)?|procedure_name|profile|provider|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|raiserror|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|reconfigure|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|restart|restore|restricted_user|resume|retaindays|retention|return|revert|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowguidcol|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|save|schema|schemabinding|scoped|scroll|scroll_locks|sddl|secexpr|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|session|sessions|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|shutdown|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics|statistics_incremental|statistics_norecompute|statistics_only|statman|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablock|tablockx|take|tape|target|target_index|target_partition|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|to|top|torn_page_detection|track_columns_updated|tran|transaction|transfer|triple_des|triple_des_3key|truncate|trustworthy|try|tsql|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|unique|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|value|values|varbinary|varchar|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|waitfor|webmethod|weekday|weight|well_formed_xml|when|while|widechar|widechar_ansi|widenative|window|windows|with|within|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|zone)\\\\b\",\n      \"name\": \"keyword.other.sql\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.create.sql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.sql\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.function.sql\"\n        }\n      },\n      \"match\": \"(?i:^\\\\s*(create(?:\\\\s+or\\\\s+replace)?)\\\\s+(aggregate|conversion|database|domain|function|group|(unique\\\\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\s+)(['\\\"`]?)(\\\\w+)\\\\4\",\n      \"name\": \"meta.create.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.create.sql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.sql\"\n        }\n      },\n      \"match\": \"(?i:^\\\\s*(drop)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))\",\n      \"name\": \"meta.drop.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.create.sql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.table.sql\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.sql\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.cascade.sql\"\n        }\n      },\n      \"match\": \"(?i:\\\\s*(drop)\\\\s+(table)\\\\s+(\\\\w+)(\\\\s+cascade)?\\\\b)\",\n      \"name\": \"meta.drop.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.create.sql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.table.sql\"\n        }\n      },\n      \"match\": \"(?i:^\\\\s*(alter)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|proc(edure)?|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\s+)\",\n      \"name\": \"meta.alter.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"5\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"6\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"7\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"8\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"9\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"10\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"11\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"12\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"13\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"14\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"15\": {\n          \"name\": \"storage.type.sql\"\n        }\n      },\n      \"match\": \"(?xi)\\n\\n\\t\\t\\t\\t# normal stuff, capture 1\\n\\t\\t\\t\\t \\\\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\\\\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\\\\b\\n\\n\\t\\t\\t\\t# numeric suffix, capture 2 + 3i\\n\\t\\t\\t\\t|\\\\b(bit\\\\svarying|character\\\\s(?:varying)?|tinyint|var\\\\schar|float|interval)\\\\((\\\\d+)\\\\)\\n\\n\\t\\t\\t\\t# optional numeric suffix, capture 4 + 5i\\n\\t\\t\\t\\t|\\\\b(char|number|varchar\\\\d?)\\\\b(?:\\\\((\\\\d+)\\\\))?\\n\\n\\t\\t\\t\\t# special case, capture 6 + 7i + 8i\\n\\t\\t\\t\\t|\\\\b(numeric|decimal)\\\\b(?:\\\\((\\\\d+),(\\\\d+)\\\\))?\\n\\n\\t\\t\\t\\t# special case, captures 9, 10i, 11\\n\\t\\t\\t\\t|\\\\b(times?)\\\\b(?:\\\\((\\\\d+)\\\\))?(\\\\swith(?:out)?\\\\stime\\\\szone\\\\b)?\\n\\n\\t\\t\\t\\t# special case, captures 12, 13, 14i, 15\\n\\t\\t\\t\\t|\\\\b(timestamp)(?:(s|tz))?\\\\b(?:\\\\((\\\\d+)\\\\))?(\\\\s(with|without)\\\\stime\\\\szone\\\\b)?\\n\\n\\t\\t\\t\"\n    },\n    {\n      \"match\": \"(?i:\\\\b((?:primary|foreign)\\\\s+key|references|on\\\\sdelete(\\\\s+cascade)?|nocheck|check|constraint|collate|default)\\\\b)\",\n      \"name\": \"storage.modifier.sql\"\n    },\n    {\n      \"match\": \"\\\\b\\\\d+\\\\b\",\n      \"name\": \"constant.numeric.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(select(\\\\s+distinct)?|insert\\\\s+(ignore\\\\s+)?into|update|delete|from|set|where|group\\\\s+by|or|like|and|union(\\\\s+all)?|having|order\\\\s+by|limit|(inner|cross)\\\\s+join|join|straight_join|full\\\\s+outer\\\\s+join|(left|right)(\\\\s+outer)?\\\\s+join|natural(\\\\s+(left|right)(\\\\s+outer)?)?\\\\s+join)\\\\b)\",\n      \"name\": \"keyword.other.DML.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(on|off|((is\\\\s+)?not\\\\s+)?null)\\\\b)\",\n      \"name\": \"keyword.other.DDL.create.II.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\bvalues\\\\b)\",\n      \"name\": \"keyword.other.DML.II.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(begin(\\\\s+work)?|start\\\\s+transaction|commit(\\\\s+work)?|rollback(\\\\s+work)?)\\\\b)\",\n      \"name\": \"keyword.other.LUW.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(grant(\\\\swith\\\\sgrant\\\\soption)?|revoke)\\\\b)\",\n      \"name\": \"keyword.other.authorization.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\bin\\\\b)\",\n      \"name\": \"keyword.other.data-integrity.sql\"\n    },\n    {\n      \"match\": \"(?i:^\\\\s*(comment\\\\s+on\\\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\\\s+.*?\\\\s+(is)\\\\s+)\",\n      \"name\": \"keyword.other.object-comments.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\bAS\\\\b\",\n      \"name\": \"keyword.other.alias.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(DESC|ASC)\\\\b\",\n      \"name\": \"keyword.other.order.sql\"\n    },\n    {\n      \"match\": \"\\\\*\",\n      \"name\": \"keyword.operator.star.sql\"\n    },\n    {\n      \"match\": \"[!<>]?=|<>|<|>\",\n      \"name\": \"keyword.operator.comparison.sql\"\n    },\n    {\n      \"match\": \"-|\\\\+|/\",\n      \"name\": \"keyword.operator.math.sql\"\n    },\n    {\n      \"match\": \"\\\\|\\\\|\",\n      \"name\": \"keyword.operator.concatenator.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(aggregate|approx_count_distinct|avg|checksum_agg|count|count_big|grouping|grouping_id|max|min|sum|stdev|stdevp|var|varp)\\\\b\",\n      \"name\": \"support.function.aggregate.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(cume_dist|first_value|lag|last_value|lead|percent_rank|percentile_cont|percentile_disc)\\\\b\",\n      \"name\": \"support.function.analytic.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(cast|convert|parse|try_cast|try_convert|try_parse)\\\\b\",\n      \"name\": \"support.function.conversion.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(collationproperty|tertiary_weights)\\\\b\",\n      \"name\": \"support.function.collation.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(asymkey_id|asymkeyproperty|certproperty|cert_id|crypt_gen_random|decryptbyasymkey|decryptbycert|decryptbykey|decryptbykeyautoasymkey|decryptbykeyautocert|decryptbypassphrase|encryptbyasymkey|encryptbycert|encryptbykey|encryptbypassphrase|hashbytes|is_objectsigned|key_guid|key_id|key_name|signbyasymkey|signbycert|symkeyproperty|verifysignedbycert|verifysignedbyasymkey)\\\\b\",\n      \"name\": \"support.function.cryptographic.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(cursor_status)\\\\b\",\n      \"name\": \"support.function.cursor.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(sysdatetime|sysdatetimeoffset|sysutcdatetime|current_time(stamp)?|getdate|getutcdate|datename|datepart|day|month|year|datefromparts|datetime2fromparts|datetimefromparts|datetimeoffsetfromparts|smalldatetimefromparts|timefromparts|datediff|dateadd|eomonth|switchoffset|todatetimeoffset|isdate|date_bucket)\\\\b\",\n      \"name\": \"support.function.datetime.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(datalength|ident_current|ident_incr|ident_seed|identity|sql_variant_property)\\\\b\",\n      \"name\": \"support.function.datatype.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(coalesce|nullif)\\\\b\",\n      \"name\": \"support.function.expression.sql\"\n    },\n    {\n      \"match\": \"(?<!@)@@(?i)\\\\b(cursor_rows|connections|cpu_busy|datefirst|dbts|error|fetch_status|identity|idle|io_busy|langid|language|lock_timeout|max_connections|max_precision|nestlevel|options|packet_errors|pack_received|pack_sent|procid|remserver|rowcount|servername|servicename|spid|textsize|timeticks|total_errors|total_read|total_write|trancount|version)\\\\b\",\n      \"name\": \"support.function.globalvar.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(json|isjson|json_object|json_array|json_value|json_query|json_modify|json_path_exists)\\\\b\",\n      \"name\": \"support.function.json.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(choose|iif|greatest|least)\\\\b\",\n      \"name\": \"support.function.logical.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(abs|acos|asin|atan|atn2|ceiling|cos|cot|degrees|exp|floor|log|log10|pi|power|radians|rand|round|sign|sin|sqrt|square|tan)\\\\b\",\n      \"name\": \"support.function.mathematical.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(app_name|applock_mode|applock_test|assemblyproperty|col_length|col_name|columnproperty|database_principal_id|databasepropertyex|db_id|db_name|file_id|file_idex|file_name|filegroup_id|filegroup_name|filegroupproperty|fileproperty|fulltextcatalogproperty|fulltextserviceproperty|index_col|indexkey_property|indexproperty|object_definition|object_id|object_name|object_schema_name|objectproperty|objectpropertyex|original_db_name|parsename|schema_id|schema_name|scope_identity|serverproperty|stats_date|type_id|type_name|typeproperty)\\\\b\",\n      \"name\": \"support.function.metadata.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(rank|dense_rank|ntile|row_number)\\\\b\",\n      \"name\": \"support.function.ranking.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(generate_series|opendatasource|openjson|openrowset|openquery|openxml|predict|string_split)\\\\b\",\n      \"name\": \"support.function.rowset.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(certencoded|certprivatekey|current_user|database_principal_id|has_perms_by_name|is_member|is_rolemember|is_srvrolemember|original_login|permissions|pwdcompare|pwdencrypt|schema_id|schema_name|session_user|suser_id|suser_sid|suser_sname|system_user|suser_name|user_id|user_name)\\\\b\",\n      \"name\": \"support.function.security.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(ascii|char|charindex|concat|difference|format|left|len|lower|ltrim|nchar|nodes|patindex|quotename|replace|replicate|reverse|right|rtrim|soundex|space|str|string_agg|string_escape|string_split|stuff|substring|translate|trim|unicode|upper)\\\\b\",\n      \"name\": \"support.function.string.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(binary_checksum|checksum|compress|connectionproperty|context_info|current_request_id|current_transaction_id|decompress|error_line|error_message|error_number|error_procedure|error_severity|error_state|formatmessage|get_filestream_transaction_context|getansinull|host_id|host_name|isnull|isnumeric|min_active_rowversion|newid|newsequentialid|rowcount_big|session_context|session_id|xact_state)\\\\b\",\n      \"name\": \"support.function.system.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(patindex|textptr|textvalid)\\\\b\",\n      \"name\": \"support.function.textimage.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.database-name.sql\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.table-name.sql\"\n        }\n      },\n      \"match\": \"(\\\\w+?)\\\\.(\\\\w+)\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#regexps\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.sql\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.scope.end.sql\"\n        }\n      },\n      \"comment\": \"Allow for special ↩ behavior\",\n      \"match\": \"(\\\\()(\\\\))\",\n      \"name\": \"meta.block.sql\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.sql\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"--\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.sql\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.sql\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": []\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.c\"\n        }\n      ]\n    },\n    \"regexps\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/(?=\\\\S.*/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.regexp.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\/\",\n              \"name\": \"constant.character.escape.slash.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"%r\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"comment\": \"We should probably handle nested bracket pairs!?! -- Allan\",\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.regexp.modr.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string_escape\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape.sql\"\n    },\n    \"string_interpolation\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.sql\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.sql\"\n        }\n      },\n      \"match\": \"(#\\\\{)([^\\\\}]*)(\\\\})\",\n      \"name\": \"string.interpolated.sql\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"match\": \"(N)?(')[^']*(')\",\n          \"name\": \"string.quoted.single.sql\"\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.quoted.single.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escape\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"match\": \"(`)[^`\\\\\\\\]*(`)\",\n          \"name\": \"string.quoted.other.backtick.sql\"\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.quoted.other.backtick.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escape\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"match\": \"(\\\")[^\\\"#]*(\\\")\",\n          \"name\": \"string.quoted.double.sql\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.quoted.double.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"%\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.other.quoted.brackets.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/stylus.tmLanguage.json",
    "content": "{\n  \"name\": \"stylus\",\n  \"scopeName\": \"source.stylus\",\n  \"fileTypes\": [\"styl\", \"stylus\", \"css.styl\", \"css.stylus\"],\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#at_rule\"\n    },\n    {\n      \"include\": \"#language_keywords\"\n    },\n    {\n      \"include\": \"#language_constants\"\n    },\n    {\n      \"include\": \"#variable_declaration\"\n    },\n    {\n      \"include\": \"#function\"\n    },\n    {\n      \"include\": \"#selector\"\n    },\n    {\n      \"include\": \"#declaration\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.property-list.begin.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.property-list.end.css\"\n        }\n      },\n      \"match\": \"(\\\\{)(\\\\})\",\n      \"name\": \"meta.brace.curly.css\"\n    },\n    {\n      \"match\": \"\\\\{|\\\\}\",\n      \"name\": \"meta.brace.curly.css\"\n    },\n    {\n      \"include\": \"#numeric\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#operator\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        }\n      ]\n    },\n    \"comment_block\": {\n      \"begin\": \"/\\\\*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.begin.css\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.css\"\n        }\n      },\n      \"name\": \"comment.block.css\"\n    },\n    \"comment_line\": {\n      \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.stylus\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"//\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.stylus\"\n            }\n          },\n          \"end\": \"(?=\\\\n)\",\n          \"name\": \"comment.line.double-slash.stylus\"\n        }\n      ]\n    },\n    \"selector\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(a|abbr|acronym|address|area|article|aside|audio|b|base|bdi|bdo|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|data|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|main|map|mark|math|menu|menuitem|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|rb|rp|rt|rtc|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|svg|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|u|ul|var|video|wbr)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"entity.name.tag.css\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(vkern|view|use|tspan|tref|title|textPath|text|symbol|switch|svg|style|stop|set|script|rect|radialGradient|polyline|polygon|pattern|path|mpath|missing-glyph|metadata|mask|marker|linearGradient|line|image|hkern|glyphRef|glyph|g|foreignObject|font-face-uri|font-face-src|font-face-name|font-face-format|font-face|font|filter|feTurbulence|feTile|feSpotLight|feSpecularLighting|fePointLight|feOffset|feMorphology|feMergeNode|feMerge|feImage|feGaussianBlur|feFuncR|feFuncG|feFuncB|feFuncA|feFlood|feDistantLight|feDisplacementMap|feDiffuseLighting|feConvolveMatrix|feComposite|feComponentTransfer|feColorMatrix|feBlend|ellipse|desc|defs|cursor|color-profile|clipPath|circle|animateTransform|animateMotion|animateColor|animate|altGlyphItem|altGlyphDef|altGlyph|a)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"entity.name.tag.svg.css\"\n        },\n        {\n          \"match\": \"\\\\s*(\\\\,)\\\\s*\",\n          \"name\": \"meta.selector.stylus\"\n        },\n        {\n          \"match\": \"\\\\*\",\n          \"name\": \"meta.selector.stylus\"\n        },\n        {\n          \"match\": \"\\\\s*(\\\\&)([a-zA-Z0-9_-]+)\\\\s*\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.parent-selector-suffix.stylus\"\n            }\n          },\n          \"name\": \"meta.selector.stylus\"\n        },\n        {\n          \"match\": \"\\\\s*(\\\\&)\\\\s*\",\n          \"name\": \"meta.selector.stylus\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(\\\\.)[a-zA-Z0-9_-]+\",\n          \"name\": \"entity.other.attribute-name.class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(#)[a-zA-Z][a-zA-Z0-9_-]*\",\n          \"name\": \"entity.other.attribute-name.id.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(:+)(after|before|content|first-letter|first-line|host|(-(moz|webkit|ms)-)?selection)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-element.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(:)((first|last)-child|(first|last|only)-of-type|empty|root|target|first|left|right)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-class.ui-state.css\"\n        },\n        {\n          \"begin\": \"((:)not)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#selector\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.css\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.css\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"match\": \"((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\\\\()(\\\\-?(?:\\\\d+n?|n)(?:\\\\+\\\\d+)?|even|odd)(\\\\))\"\n        },\n        {\n          \"match\": \"((:)dir)\\\\s*(?:(\\\\()(ltr|rtl)?(\\\\)))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"puncutation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.css\"\n            },\n            \"4\": {\n              \"name\": \"constant.language.css\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          }\n        },\n        {\n          \"match\": \"((:)lang)\\\\s*(?:(\\\\()(\\\\w+(-\\\\w+)?)?(\\\\)))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"puncutation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.css\"\n            },\n            \"4\": {\n              \"name\": \"constant.language.css\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          }\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(:)(active|hover|link|visited|focus)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(::)(shadow)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.attribute.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.operator.css\"\n            },\n            \"4\": {\n              \"name\": \"string.unquoted.attribute-value.css\"\n            },\n            \"5\": {\n              \"name\": \"string.quoted.double.attribute-value.css\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(?i)(\\\\[)\\\\s*(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)(?:\\\\s*([~|^$*]?=)\\\\s*(?:(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)|((?>(['\\\"])(?:[^\\\\\\\\]|\\\\\\\\.)*?(\\\\6)))))?\\\\s*(\\\\])\",\n          \"name\": \"meta.attribute-selector.css\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    \"variable_declaration\": {\n      \"begin\": \"^[^\\\\S\\\\n]*(\\\\$?[a-zA-Z_-][a-zA-Z0-9_-]*)[^\\\\S\\\\n]*(\\\\=|\\\\?\\\\=|\\\\:\\\\=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.stylus\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.stylus\"\n        }\n      },\n      \"end\": \"(\\\\n)|(;)|(?=\\\\})\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"begin\": \"((?<=^)[^\\\\S\\\\n]+)|((?<=;)[^\\\\S\\\\n]*)|((?<=\\\\{)[^\\\\S\\\\n]*)\",\n      \"end\": \"(?=\\\\n)|(;)|(?=\\\\})|(\\\\n)\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"name\": \"meta.property-list.css\",\n      \"patterns\": [\n        {\n          \"match\": \"(?x) (?<![\\\\w-])\\n--\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n          \"name\": \"variable.css\"\n        },\n        {\n          \"include\": \"#language_keywords\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"match\": \"(?:(?<=^)[^\\\\S\\\\n]+(\\\\n))\"\n        },\n        {\n          \"match\": \"\\\\G\\\\s*(counter-reset|counter-increment)(?:(:)|[^\\\\S\\\\n])[^\\\\S\\\\n]*([a-zA-Z_-][a-zA-Z0-9_-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.property-name.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.css\"\n            },\n            \"3\": {\n              \"name\": \"variable.section.css\"\n            }\n          },\n          \"name\": \"meta.property.counter.css\"\n        },\n        {\n          \"begin\": \"\\\\G\\\\s*(filter)(?:(:)|[^\\\\S\\\\n])[^\\\\S\\\\n]*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.type.property-name.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.css\"\n            }\n          },\n          \"end\": \"(?=\\\\n|;|\\\\}|$)\",\n          \"name\": \"meta.property.filter.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#function\"\n            },\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#property\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"property\": {\n      \"begin\": \"(?x:\\\\G\\\\s*(?:\\n  (-webkit-[-A-Za-z]+|-moz-[-A-Za-z]+|-o-[-A-Za-z]+|-ms-[-A-Za-z]+|-khtml-[-A-Za-z]+|zoom|z-index|y|x|wrap|word-wrap|word-spacing|word-break|word|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode-range|unicode|trim|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform|touch-action|top-width|top-style|top-right-radius|top-left-radius|top-color|top|timing-function|text-wrap|text-transform|text-shadow|text-replace|text-rendering|text-overflow|text-outline|text-justify|text-indent|text-height|text-emphasis|text-decoration|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-size|style-type|style-position|style-image|style|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|src|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shadow|respond-to|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-align|ruby|rows|rotation-point|rotation|role|right-width|right-style|right-color|right|richness|rest-before|rest-after|rest|resource|resize|reset|replace|repeat|rendering-intent|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|pointer-events|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|order|opacity|offset|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav|name|move-to|model|mix-blend-mode|min-width|min-height|min|max-width|max-height|max|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|mask-image|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-height|line-break|level|letter-spacing|length|left-width|left-style|left-color|left|label|justify-content|justify|iteration-count|inline-box-align|initial-value|initial-size|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|gap|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-start|grid-row|grid-row-end|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|row-gap|gap|font-kerning|font-language-override|font-weight|font-variant-caps|font-variant|font-style|font-synthesis|font-stretch|font-size-adjust|font-size|font-family|font|float-offset|float|flex-wrap|flex-shrink|flex-grow|flex-group|flex-flow|flex-direction|flex-basis|flex|fit-position|fit|fill|filter|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-model|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-reset|counter-increment|counter|count|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color|collapse|clip|clear|character|caption-side|break-inside|break-before|break-after|break|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom-width|bottom-style|bottom-right-radius|bottom-left-radius|bottom-color|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-level|bookmark-label|bookmark|binding|bidi|before|baseline-shift|baseline|balance|background-blend-mode|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-duration|animation-direction|animation-delay|animation-fill-mode|animation|alignment-baseline|alignment-adjust|alignment|align-self|align-last|align-items|align-content|align|after|adjust|will-change)|\\n  (writing-mode|text-anchor|stroke-width|stroke-opacity|stroke-miterlimit|stroke-linejoin|stroke-linecap|stroke-dashoffset|stroke-dasharray|stroke|stop-opacity|stop-color|shape-rendering|marker-start|marker-mid|marker-end|lighting-color|kerning|image-rendering|glyph-orientation-vertical|glyph-orientation-horizontal|flood-opacity|flood-color|fill-rule|fill-opacity|fill|enable-background|color-rendering|color-interpolation-filters|color-interpolation|clip-rule|clip-path)|\\n  ([a-zA-Z_-][a-zA-Z0-9_-]*)\\n)(?!([^\\\\S\\\\n]*&)|([^\\\\S\\\\n]*\\\\{))(?=:|([^\\\\S\\\\n]+[^\\\\s])))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type.property-name.css\"\n        },\n        \"2\": {\n          \"name\": \"support.type.property-name.svg.css\"\n        },\n        \"3\": {\n          \"name\": \"support.function.mixin.stylus\"\n        }\n      },\n      \"end\": \"(;)|(?=\\\\n|\\\\}|$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#property_value\"\n        }\n      ]\n    },\n    \"property_value\": {\n      \"begin\": \"\\\\G(?:(:)|(\\\\s))(\\\\s*)(?!&)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.key-value.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.css\"\n        }\n      },\n      \"end\": \"(?=\\\\n|;|\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"name\": \"meta.property-value.css\",\n      \"patterns\": [\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"match\": \"[^\\\\n]+?\"\n        }\n      ]\n    },\n    \"property_values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#language_keywords\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(wrap-reverse|wrap|whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|unicase|underline|ultra-expanded|ultra-condensed|transparent|transform|top|titling-caps|thin|thick|text-top|text-bottom|text|tb-rl|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table|sw-resize|super|strict|stretch|step-start|step-end|static|square|space-between|space-around|space|solid|soft-light|small-caps|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|saturation|s-resize|running|rtl|row-reverse|row-resize|row|round|right|ridge|reverse|repeat-y|repeat-x|repeat|relative|progressive|progress|pre-wrap|pre-line|pre|pointer|petite-caps|paused|pan-x|pan-left|pan-right|pan-y|pan-up|pan-down|padding-box|overline|overlay|outside|outset|optimizeSpeed|optimizeLegibility|opacity|oblique|nw-resize|nowrap|not-allowed|normal|none|no-repeat|no-drop|newspaper|ne-resize|n-resize|multiply|move|middle|medium|max-height|manipulation|main-size|luminosity|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|local|list-item|linear(?!-)|line-through|line-edge|line|lighter|lighten|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline-block|inline|inherit|infinite|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|hue|horizontal|hidden|help|hard-light|hand|groove|geometricPrecision|forwards|flex-start|flex-end|flex|fixed|extra-expanded|extra-condensed|expanded|exclusion|ellipsis|ease-out|ease-in-out|ease-in|ease|e-resize|double|dotted|distribute-space|distribute-letter|distribute-all-lines|distribute|disc|disabled|difference|default|decimal|dashed|darken|currentColor|crosshair|cover|content-box|contain|condensed|column-reverse|column|color-dodge|color-burn|color|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|border-box|bolder|bold|block|bidi-override|below|baseline|balance|backwards|auto|antialiased|always|alternate-reverse|alternate|all-small-caps|all-scroll|all-petite-caps|all|absolute)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.constant.property-value.css\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(start|sRGB|square|round|optimizeSpeed|optimizeQuality|nonzero|miter|middle|linearRGB|geometricPrecision |evenodd |end |crispEdges|butt|bevel)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.constant.property-value.svg.css\"\n        },\n        {\n          \"include\": \"#font_name\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#color\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"\\\\!\\\\s*important\",\n          \"name\": \"keyword.other.important.css\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#stylus_keywords\"\n        },\n        {\n          \"include\": \"#property_variable\"\n        }\n      ]\n    },\n    \"numeric\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.unit.css\"\n            }\n          },\n          \"match\": \"(?x) (?<!\\\\w|-)(?:(?:-|\\\\+)?(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+)) ((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|dppx|fr|ms|s|turn|vh|vmax|vmin|vw)\\\\b|%)?\",\n          \"name\": \"constant.numeric.css\"\n        }\n      ]\n    },\n    \"color\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(rgb|rgba|hsl|hsla)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.color.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"name\": \"meta.function.color.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#property_variable\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.css\"\n            }\n          },\n          \"match\": \"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\\\b\",\n          \"name\": \"constant.other.color.rgb-value.css\"\n        },\n        {\n          \"comment\": \"http://www.w3.org/TR/CSS21/syndata.html#value-def-color\",\n          \"match\": \"\\\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\\\b\",\n          \"name\": \"support.constant.color.w3c-standard-color-name.css\"\n        },\n        {\n          \"comment\": \"http://www.w3.org/TR/css3-color/#svg-color\",\n          \"match\": \"\\\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\\\b\",\n          \"name\": \"support.constant.color.w3c-extended-color-name.css\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.double.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([a-fA-F0-9]{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.single.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([a-fA-F0-9]{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*((@)(import|require))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.import.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"end\": \"\\\\s*((?=;|$|\\\\n))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.import.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*((@)(extend[s]?)\\\\b)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.extend.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"end\": \"\\\\s*((?=;|$|\\\\n))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.extend.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#selector\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^\\\\s*((@)font-face)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.fontface.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"name\": \"meta.at-rule.fontface.stylus\"\n        },\n        {\n          \"match\": \"^\\\\s*((@)css)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.css.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"name\": \"meta.at-rule.css.stylus\"\n        },\n        {\n          \"begin\": \"\\\\s*((@)charset)\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.charset.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"end\": \"\\\\s*((?=;|$|\\\\n))\",\n          \"name\": \"meta.at-rule.charset.stylus\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*((@)keyframes)\\\\b\\\\s+([a-zA-Z_-][a-zA-Z0-9_-]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.keyframes.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.keyframe.stylus\"\n            }\n          },\n          \"end\": \"\\\\s*((?=\\\\{|$|\\\\n))\",\n          \"name\": \"meta.at-rule.keyframes.stylus\"\n        },\n        {\n          \"begin\": \"(?=(\\\\b(\\\\d+%|from\\\\b|to\\\\b)))\",\n          \"end\": \"(?=(\\\\{|\\\\n))\",\n          \"name\": \"meta.at-rule.keyframes.stylus\",\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\b(\\\\d+%|from\\\\b|to\\\\b))\",\n              \"name\": \"entity.other.attribute-name.stylus\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^\\\\s*((@)media)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.media.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"name\": \"meta.at-rule.media.stylus\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(width|scan|resolution|orientation|monochrome|min-width|min-resolution|min-monochrome|min-height|min-device-width|min-device-height|min-device-aspect-ratio|min-color-index|min-color|min-aspect-ratio|max-width|max-resolution|max-monochrome|max-height|max-device-width|max-device-height|max-device-aspect-ratio|max-color-index|max-color|max-aspect-ratio|height|grid|device-width|device-height|device-aspect-ratio|color-index|color|aspect-ratio)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.type.property-name.media-feature.media.css\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.constant.media-type.media.css\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(portrait|landscape)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.constant.property-value.media-property.media.css\"\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?:\\\\?|:|!|~|\\\\+|(\\\\s-\\\\s)|(?:\\\\*)?\\\\*|\\\\/|%|(\\\\.)?\\\\.\\\\.|<|>|(?:=|:|\\\\?|\\\\+|-|\\\\*|\\\\/|%|<|>)?=|!=)|\\\\b(?:in|is(?:nt)?|(?<!:)not|or|and)\\\\b)\",\n          \"name\": \"keyword.operator.stylus\"\n        },\n        {\n          \"include\": \"#char_escape\"\n        }\n      ]\n    },\n    \"font_name\": {\n      \"match\": \"(\\\\b(?i:arial|century|comic|courier|cursive|fantasy|futura|garamond|georgia|helvetica|impact|lucida|monospace|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif)\\\\b)\",\n      \"name\": \"support.constant.font-name.css\"\n    },\n    \"variable\": {\n      \"match\": \"(\\\\$[a-zA-Z_-][a-zA-Z0-9_-]*)\",\n      \"name\": \"variable.stylus\"\n    },\n    \"property_variable\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"match\": \"(?<!^)(\\\\@[a-zA-Z_-][a-zA-Z0-9_-]*)\",\n          \"name\": \"variable.property.stylus\"\n        }\n      ]\n    },\n    \"function\": {\n      \"begin\": \"(?=[a-zA-Z_-][a-zA-Z0-9_-]*\\\\()\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.function.css\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(format|url|local)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.misc.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?<=\\\\()[^\\\\)\\\\s]*(?=\\\\))\",\n              \"name\": \"string.css\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#operator\"\n            },\n            {\n              \"match\": \"\\\\s*\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(counter)(\\\\()([a-zA-Z_-][a-zA-Z0-9_-]*)(?=\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.counter.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            },\n            \"3\": {\n              \"name\": \"variable.section.css\"\n            }\n          },\n          \"name\": \"meta.function.misc.counter.css\"\n        },\n        {\n          \"begin\": \"(counters)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.counters.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.misc.counters.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G[a-zA-Z_-][a-zA-Z0-9_-]*\",\n              \"name\": \"variable.section.css\"\n            },\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(attr)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.attr.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.misc.attr.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G[a-zA-Z_-][a-zA-Z0-9_-]*\",\n              \"name\": \"entity.other.attribute-name.attribute.css\"\n            },\n            {\n              \"match\": \"(?<=[a-zA-Z0-9_-])\\\\s*\\\\b(string|color|url|integer|number|length|em|ex|px|rem|vw|vh|vmin|vmax|mm|cm|in|pt|pc|angle|deg|grad|rad|time|s|ms|frequency|Hz|kHz|%)\\\\b\",\n              \"name\": \"support.type.attr.css\"\n            },\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(calc)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.calc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.misc.calc.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(cubic-bezier)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.timing.cubic-bezier.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.timing.cubic-bezier.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(steps)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.timing.steps.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.timing.steps.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"match\": \"\\\\b(start|end)\\\\b\",\n              \"name\": \"support.constant.timing.steps.direction.css\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.gradient.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.gradient.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#color\"\n            },\n            {\n              \"match\": \"\\\\b(to|bottom|right|left|top|circle|ellipse|center|closest-side|closest-corner|farthest-side|farthest-corner|at)\\\\b\",\n              \"name\": \"support.constant.gradient.css\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(blur|brightness|contrast|grayscale|hue-rotate|invert|opacity|saturate|sepia)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.filter.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.filter.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#property_variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(drop-shadow)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.filter.drop-shadow.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.filter.drop-shadow.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#color\"\n            },\n            {\n              \"include\": \"#property_variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.transform.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.transform.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#property_variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(url|local|format|counter|counters|attr|calc)(?=\\\\()\",\n          \"name\": \"support.function.misc.css\"\n        },\n        {\n          \"match\": \"(cubic-bezier|steps)(?=\\\\()\",\n          \"name\": \"support.function.timing.css\"\n        },\n        {\n          \"match\": \"(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(?=\\\\()\",\n          \"name\": \"support.function.gradient.css\"\n        },\n        {\n          \"match\": \"(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)(?=\\\\()\",\n          \"name\": \"support.function.filter.css\"\n        },\n        {\n          \"match\": \"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(?=\\\\()\",\n          \"name\": \"support.function.transform.css\"\n        },\n        {\n          \"begin\": \"([a-zA-Z_-][a-zA-Z0-9_-]*)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.stylus\",\n          \"patterns\": [\n            {\n              \"name\": \"variable.argument.stylus\",\n              \"match\": \"(?x)\\n--\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\"\n            },\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.section.function.css\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"name\": \"meta.interpolation.stylus\",\n      \"begin\": \"(?:(\\\\{)[^\\\\S\\\\n]*)(?=[^;=]*[^\\\\S\\\\n]*\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.curly\"\n        }\n      },\n      \"end\": \"(?:[^\\\\S\\\\n]*(\\\\}))|\\\\n|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.curly\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#operator\"\n        }\n      ]\n    },\n    \"char_escape\": {\n      \"name\": \"constant.character.escape.stylus\",\n      \"match\": \"\\\\\\\\(.)\"\n    },\n    \"language_constants\": {\n      \"match\": \"\\\\b(true|false|null)\\\\b\",\n      \"name\": \"constant.language.stylus\"\n    },\n    \"language_keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\b|\\\\s)(return|else|for|unless|if|else)\\\\b\",\n          \"name\": \"keyword.control.stylus\"\n        },\n        {\n          \"match\": \"(\\\\b|\\\\s)(!important|in|is defined|is a)\\\\b\",\n          \"name\": \"keyword.other.stylus\"\n        },\n        {\n          \"match\": \"\\\\barguments\\\\b\",\n          \"name\": \"variable.language.stylus\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/svg.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"^\\\\s*(</[^>]+>|[/%]>|-->)\\\\s*$\",\n  \"foldingStartMarker\": \"^\\\\s*(<[^!?%/](?!.+?(/>|</.+?>))|<[!%]--(?!.+?--%?>)|<%[!]?(?!.+?%>))\",\n  \"keyEquivalent\": \"^~S\",\n  \"fileTypes\": [\"svg\"],\n  \"uuid\": \"60E1A653-2588-410D-8F89-9DA05E8BF163\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(if|while|for|return)\\\\b\",\n      \"name\": \"keyword.control.untitled\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escaped.untitled\" }\n      ],\n      \"name\": \"string.quoted.double.untitled\"\n    },\n    { \"include\": \"text.xml\" },\n    {\n      \"begin\": \"(?:^\\\\s+)?<((?i:style))\\\\b(?![^>]*/>)\",\n      \"end\": \"</((?i:style))>(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \">\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [\n            { \"include\": \"#embedded-code\" },\n            { \"include\": \"source.css\" }\n          ]\n        }\n      ],\n      \"name\": \"source.css.embedded.svg\",\n      \"captures\": { \"1\": { \"name\": \"entity.name.tag.style.svg\" } }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?<((?i:script))\\\\b(?![^>]*/>)\",\n      \"end\": \"(?<=</(script))>(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(?<!</(?:script))>\",\n          \"end\": \"</((?i:script))\",\n          \"patterns\": [{ \"include\": \"source.js\" }]\n        }\n      ],\n      \"name\": \"source.js.embedded.svg\",\n      \"captures\": { \"1\": { \"name\": \"entity.name.tag.script.svg\" } }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?<((?i:handler))\\\\b(?![^>]*/>)\",\n      \"end\": \"(?<=</(script))>(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(?<!</(?:handler))>\",\n          \"end\": \"</((?i:handler))\",\n          \"patterns\": [{ \"include\": \"source.js\" }]\n        }\n      ],\n      \"name\": \"source.js.embedded.svg\",\n      \"captures\": { \"1\": { \"name\": \"entity.name.tag.handler.svg\" } }\n    }\n  ],\n  \"name\": \"SVG\",\n  \"scopeName\": \"text.xml.svg\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/swift.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/swift.tmbundle/blob/master/Syntaxes/Swift.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/swift.tmbundle/commit/7a35637eb70aef3114b091c4ff6fbf6a2faa881b\",\n  \"name\": \"swift\",\n  \"scopeName\": \"source.swift\",\n  \"comment\": \"See swift.tmbundle/grammar-test.swift for test cases.\",\n  \"patterns\": [\n    {\n      \"include\": \"#root\"\n    }\n  ],\n  \"repository\": {\n    \"async-throws\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.await-must-precede-throws.swift\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.exception.swift\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.async.swift\"\n        }\n      },\n      \"match\": \"\\\\b(?:(throws\\\\s+async|rethrows\\\\s+async)|(throws|rethrows)|(async))\\\\b\"\n    },\n    \"attributes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((@)available)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.attribute.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.attribute.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"name\": \"meta.attribute.available.swift\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.platform.os.swift\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.swift\"\n                }\n              },\n              \"match\": \"\\\\b(swift|(?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\\\b(?:\\\\s+([0-9]+(?:\\\\.[0-9]+)*\\\\b))?\"\n            },\n            {\n              \"begin\": \"\\\\b(introduced|deprecated|obsoleted)\\\\s*(:)\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.key-value.swift\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b[0-9]+(?:\\\\.[0-9]+)*\\\\b\",\n                  \"name\": \"constant.numeric.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\b(message|renamed)\\\\s*(:)\\\\s*(?=\\\")\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.key-value.swift\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literals\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.platform.all.swift\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.swift\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              },\n              \"match\": \"(?:(\\\\*)|\\\\b(deprecated|unavailable|noasync)\\\\b)\\\\s*(.*?)(?=[,)])\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((@)objc)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.attribute.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.attribute.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"name\": \"meta.attribute.objc.swift\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"invalid.illegal.missing-colon-after-selector-piece.swift\"\n                }\n              },\n              \"match\": \"\\\\w*(?::(?:\\\\w*:)*(\\\\w*))?\",\n              \"name\": \"entity.name.function.swift\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(@)(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.attribute.swift\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.attribute.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"comment\": \"any other attribute\",\n          \"end\": \"(?!\\\\G\\\\()\",\n          \"name\": \"meta.attribute.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.arguments.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.arguments.end.swift\"\n                }\n              },\n              \"name\": \"meta.arguments.attribute.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expressions\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Member functions in the standard library in Swift 3 which may be used with trailing closures and no parentheses\",\n          \"match\": \"(?<=\\\\.)(?:s(?:ort(?:ed)?|plit)|contains|index|partition|f(?:i(?:lter|rst)|orEach|latMap)|with(?:MutableCharacters|CString|U(?:nsafe(?:Mutable(?:BufferPointer|Pointer(?:s|To(?:Header|Elements)))|BufferPointer)|TF8Buffer))|m(?:in|a(?:p|x)))(?=\\\\s*[({])\\\\b\",\n          \"name\": \"support.function.swift\"\n        },\n        {\n          \"comment\": \"Member functions in the standard library in Swift 3\",\n          \"match\": \"(?<=\\\\.)(?:s(?:ymmetricDifference|t(?:oreBytes|arts|ride)|ortInPlace|u(?:ccessor|ffix|btract(?:ing|InPlace|WithOverflow)?)|quareRoot|amePosition)|h(?:oldsUnique(?:Reference|OrPinnedReference)|as(?:Suffix|Prefix))|ne(?:gate(?:d)?|xt)|c(?:o(?:untByEnumerating|py(?:Bytes)?)|lamp(?:ed)?|reate)|t(?:o(?:IntMax|Opaque|UIntMax)|ake(?:RetainedValue|UnretainedValue)|r(?:uncatingRemainder|a(?:nscodedLength|ilSurrogate)))|i(?:s(?:MutableAndUniquelyReferenced(?:OrPinned)?|S(?:trictSu(?:perset(?:Of)?|bset(?:Of)?)|u(?:perset(?:Of)?|bset(?:Of)?))|Continuation|T(?:otallyOrdered|railSurrogate)|Disjoint(?:With)?|Unique(?:Reference|lyReferenced(?:OrPinned)?)|Equal|Le(?:ss(?:ThanOrEqualTo)?|adSurrogate))|n(?:sert(?:ContentsOf)?|tersect(?:ion|InPlace)?|itialize(?:Memory|From)?|dex(?:Of|ForKey)))|o(?:verlaps|bjectAt)|d(?:i(?:stance(?:To)?|vide(?:d|WithOverflow)?)|e(?:s(?:cendant|troy)|code(?:CString)?|initialize|alloc(?:ate(?:Capacity)?)?)|rop(?:First|Last))|u(?:n(?:ion(?:InPlace)?|derestimateCount|wrappedOrError)|p(?:date(?:Value)?|percased))|join(?:ed|WithSeparator)|p(?:op(?:First|Last)|ass(?:Retained|Unretained)|re(?:decessor|fix))|e(?:scape(?:d)?|n(?:code|umerate(?:d)?)|lementsEqual|xclusiveOr(?:InPlace)?)|f(?:orm(?:Remainder|S(?:ymmetricDifference|quareRoot)|TruncatingRemainder|In(?:tersection|dex)|Union)|latten|rom(?:CString(?:RepairingIllFormedUTF8)?|Opaque))|w(?:i(?:thMemoryRebound|dth)|rite(?:To)?)|l(?:o(?:wercased|ad)|e(?:adSurrogate|xicographical(?:Compare|lyPrecedes)))|a(?:ss(?:ign(?:BackwardFrom|From)?|umingMemoryBound)|d(?:d(?:ing(?:Product)?|Product|WithOverflow)?|vanced(?:By)?)|utorelease|ppend(?:ContentsOf)?|lloc(?:ate)?|bs)|r(?:ound(?:ed)?|e(?:serveCapacity|tain|duce|place(?:Range|Subrange)?|verse(?:d)?|quest(?:NativeBuffer|UniqueMutableBackingBuffer)|lease|m(?:ove(?:Range|Subrange|Value(?:ForKey)?|First|Last|A(?:tIndex|ll))?|ainder(?:WithOverflow)?)))|ge(?:nerate|t(?:Objects|Element))|m(?:in(?:imum(?:Magnitude)?|Element)|ove(?:Initialize(?:Memory|BackwardFrom|From)?|Assign(?:From)?)?|ultipl(?:y(?:WithOverflow)?|ied)|easure|a(?:ke(?:Iterator|Description)|x(?:imum(?:Magnitude)?|Element)))|bindMemory)(?=\\\\s*\\\\()\",\n          \"name\": \"support.function.swift\"\n        },\n        {\n          \"comment\": \"Member functions in the standard library in Swift 2 only\",\n          \"match\": \"(?<=\\\\.)(?:s(?:uperclassMirror|amePositionIn|tartsWith)|nextObject|c(?:haracterAtIndex|o(?:untByEnumeratingWithState|pyWithZone)|ustom(?:Mirror|PlaygroundQuickLook))|is(?:EmptyInput|ASCII)|object(?:Enumerator|ForKey|AtIndex)|join|put|keyEnumerator|withUnsafeMutablePointerToValue|length|getMirror|m(?:oveInitializeAssignFrom|ember))(?=\\\\s*\\\\()\",\n          \"name\": \"support.function.swift\"\n        }\n      ]\n    },\n    \"builtin-global-functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(type)(\\\\()\\\\s*(of)(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.dynamic-type.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.parameter.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.argument-label.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expressions\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Global functions available in Swift 3 which may be used with trailing closures and no parentheses\",\n          \"match\": \"\\\\b(?:anyGenerator|autoreleasepool)(?=\\\\s*[({])\\\\b\",\n          \"name\": \"support.function.swift\"\n        },\n        {\n          \"comment\": \"Global functions available in Swift 3\",\n          \"match\": \"\\\\b(?:s(?:tride(?:of(?:Value)?)?|izeof(?:Value)?|equence|wap)|numericCast|transcode|is(?:UniquelyReferenced(?:NonObjC)?|KnownUniquelyReferenced)|zip|d(?:ump|ebugPrint)|unsafe(?:BitCast|Downcast|Unwrap|Address(?:Of)?)|pr(?:int|econdition(?:Failure)?)|fatalError|with(?:Unsafe(?:MutablePointer|Pointer)|ExtendedLifetime|VaList)|a(?:ssert(?:ionFailure)?|lignof(?:Value)?|bs)|re(?:peatElement|adLine)|getVaList|m(?:in|ax))(?=\\\\s*\\\\()\",\n          \"name\": \"support.function.swift\"\n        },\n        {\n          \"comment\": \"Global functions available in Swift 2 only\",\n          \"match\": \"\\\\b(?:s(?:ort|uffix|pli(?:ce|t))|insert|overlaps|d(?:istance|rop(?:First|Last))|join|prefix|extend|withUnsafe(?:MutablePointers|Pointers)|lazy|advance|re(?:flect|move(?:Range|Last|A(?:tIndex|ll))))(?=\\\\s*\\\\()\",\n          \"name\": \"support.function.swift\"\n        }\n      ]\n    },\n    \"builtin-properties\": {\n      \"patterns\": [\n        {\n          \"comment\": \"The simpler (?<=\\\\bProcess\\\\.|\\\\bCommandLine\\\\.) breaks VS Code / Atom, see https://github.com/textmate/swift.tmbundle/issues/29\",\n          \"match\": \"(?<=^Process\\\\.|\\\\WProcess\\\\.|^CommandLine\\\\.|\\\\WCommandLine\\\\.)(arguments|argc|unsafeArgv)\",\n          \"name\": \"support.variable.swift\"\n        },\n        {\n          \"comment\": \"Properties in the standard library in Swift 3\",\n          \"match\": \"(?<=\\\\.)(?:s(?:t(?:artIndex|ri(?:ngValue|de))|i(?:ze|gn(?:BitIndex|ificand(?:Bit(?:Count|Pattern)|Width)?|alingNaN)?)|u(?:perclassMirror|mmary|bscriptBaseAddress))|h(?:eader|as(?:hValue|PointerRepresentation))|n(?:ulTerminatedUTF8|ext(?:Down|Up)|a(?:n|tiveOwner))|c(?:haracters|ount(?:TrailingZeros)?|ustom(?:Mirror|PlaygroundQuickLook)|apacity)|i(?:s(?:S(?:ign(?:Minus|aling(?:NaN)?)|ubnormal)|N(?:ormal|aN)|Canonical|Infinite|Zero|Empty|Finite|ASCII)|n(?:dices|finity)|dentity)|owner|de(?:scription|bugDescription)|u(?:n(?:safelyUnwrapped|icodeScalar(?:s)?|derestimatedCount)|tf(?:16|8(?:Start|C(?:String|odeUnitCount))?)|intValue|ppercaseString|lp(?:OfOne)?)|p(?:i|ointee)|e(?:ndIndex|lements|xponent(?:Bit(?:Count|Pattern))?)|value(?:s)?|keys|quietNaN|f(?:irst(?:ElementAddress(?:IfContiguous)?)?|loatingPointClass)|l(?:ittleEndian|owercaseString|eastNo(?:nzeroMagnitude|rmalMagnitude)|a(?:st|zy))|a(?:l(?:ignment|l(?:ocatedElementCount|Zeros))|rray(?:PropertyIsNativeTypeChecked)?)|ra(?:dix|wValue)|greatestFiniteMagnitude|m(?:in|emory|ax)|b(?:yteS(?:ize|wapped)|i(?:nade|tPattern|gEndian)|uffer|ase(?:Address)?))\\\\b\",\n          \"name\": \"support.variable.swift\"\n        },\n        {\n          \"comment\": \"Properties in the standard library in Swift 2 only\",\n          \"match\": \"(?<=\\\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\\\b\",\n          \"name\": \"support.variable.swift\"\n        },\n        {\n          \"comment\": \"Enum cases in the standard library - note that there is some overlap between these and the properties\",\n          \"match\": \"(?<=\\\\.)(?:s(?:calarValue|i(?:ze|gnalingNaN)|o(?:und|me)|uppressed|prite|et)|n(?:one|egative(?:Subnormal|Normal|Infinity|Zero))|c(?:ol(?:or|lection)|ustomized)|t(?:o(?:NearestOr(?:Even|AwayFromZero)|wardZero)|uple|ext)|i(?:nt|mage)|optional|d(?:ictionary|o(?:uble|wn))|u(?:Int|p|rl)|p(?:o(?:sitive(?:Subnormal|Normal|Infinity|Zero)|int)|lus)|e(?:rror|mptyInput)|view|quietNaN|float|a(?:ttributedString|wayFromZero)|r(?:ectangle|ange)|generated|minus|b(?:ool|ezierPath))\\\\b\",\n          \"name\": \"support.variable.swift\"\n        }\n      ]\n    },\n    \"builtin-types\": {\n      \"comment\": \"Types provided in the standard library\",\n      \"patterns\": [\n        {\n          \"include\": \"#builtin-class-type\"\n        },\n        {\n          \"include\": \"#builtin-enum-type\"\n        },\n        {\n          \"include\": \"#builtin-protocol-type\"\n        },\n        {\n          \"include\": \"#builtin-struct-type\"\n        },\n        {\n          \"include\": \"#builtin-typealias\"\n        },\n        {\n          \"match\": \"\\\\bAny\\\\b\",\n          \"name\": \"support.type.any.swift\"\n        }\n      ],\n      \"repository\": {\n        \"builtin-class-type\": {\n          \"comment\": \"Builtin class types\",\n          \"match\": \"\\\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\\\b\",\n          \"name\": \"support.class.swift\"\n        },\n        \"builtin-enum-type\": {\n          \"patterns\": [\n            {\n              \"comment\": \"CommandLine is an enum, but it acts like a constant\",\n              \"match\": \"\\\\b(?:CommandLine|Process(?=\\\\.))\\\\b\",\n              \"name\": \"support.constant.swift\"\n            },\n            {\n              \"comment\": \"The return type of a function that never returns\",\n              \"match\": \"\\\\bNever\\\\b\",\n              \"name\": \"support.constant.never.swift\"\n            },\n            {\n              \"comment\": \"Enum types in the standard library in Swift 3\",\n              \"match\": \"\\\\b(?:ImplicitlyUnwrappedOptional|Representation|MemoryLayout|FloatingPointClassification|SetIndexRepresentation|SetIteratorRepresentation|FloatingPointRoundingRule|UnicodeDecodingResult|Optional|DictionaryIndexRepresentation|AncestorRepresentation|DisplayStyle|PlaygroundQuickLook|Never|FloatingPointSign|Bit|DictionaryIteratorRepresentation)\\\\b\",\n              \"name\": \"support.type.swift\"\n            },\n            {\n              \"comment\": \"Enum types in the standard library in Swift 2 only\",\n              \"match\": \"\\\\b(?:MirrorDisposition|QuickLookObject)\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        },\n        \"builtin-protocol-type\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Protocols in the standard library in Swift 3\",\n              \"match\": \"\\\\b(?:Ra(?:n(?:domAccess(?:Collection|Indexable)|geReplaceable(?:Collection|Indexable))|wRepresentable)|M(?:irrorPath|utable(?:Collection|Indexable))|Bi(?:naryFloatingPoint|twiseOperations|directional(?:Collection|Indexable))|S(?:tr(?:ideable|eamable)|igned(?:Number|Integer)|e(?:tAlgebra|quence))|Hashable|C(?:o(?:llection|mparable)|ustom(?:Reflectable|StringConvertible|DebugStringConvertible|PlaygroundQuickLookable|LeafReflectable)|VarArg)|TextOutputStream|I(?:n(?:teger(?:Arithmetic)?|dexable(?:Base)?)|teratorProtocol)|OptionSet|Un(?:signedInteger|icodeCodec)|E(?:quatable|rror|xpressibleBy(?:BooleanLiteral|String(?:Interpolation|Literal)|NilLiteral|IntegerLiteral|DictionaryLiteral|UnicodeScalarLiteral|ExtendedGraphemeClusterLiteral|FloatLiteral|ArrayLiteral))|FloatingPoint|L(?:osslessStringConvertible|azy(?:SequenceProtocol|CollectionProtocol))|A(?:nyObject|bsoluteValuable))\\\\b\",\n              \"name\": \"support.type.swift\"\n            },\n            {\n              \"comment\": \"Protocols in the standard library in Swift 2 only\",\n              \"match\": \"\\\\b(?:Ran(?:domAccessIndexType|geReplaceableCollectionType)|GeneratorType|M(?:irror(?:Type|PathType)|utable(?:Sliceable|CollectionType))|B(?:i(?:twiseOperationsType|directionalIndexType)|oolean(?:Type|LiteralConvertible))|S(?:tring(?:InterpolationConvertible|LiteralConvertible)|i(?:nkType|gned(?:NumberType|IntegerType))|e(?:tAlgebraType|quenceType)|liceable)|NilLiteralConvertible|C(?:ollectionType|VarArgType)|Inte(?:rvalType|ger(?:Type|LiteralConvertible|ArithmeticType))|O(?:utputStreamType|ptionSetType)|DictionaryLiteralConvertible|Un(?:signedIntegerType|icode(?:ScalarLiteralConvertible|CodecType))|E(?:rrorType|xten(?:sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(?:orwardIndexType|loat(?:ingPointType|LiteralConvertible))|A(?:nyCollectionType|rrayLiteralConvertible))\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        },\n        \"builtin-struct-type\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Structs in the standard library in Swift 3\",\n              \"match\": \"\\\\b(?:R(?:e(?:peat(?:ed)?|versed(?:RandomAccess(?:Collection|Index)|Collection|Index))|an(?:domAccessSlice|ge(?:Replaceable(?:RandomAccessSlice|BidirectionalSlice|Slice)|Generator)?))|Generator(?:Sequence|OfOne)|M(?:irror|utable(?:Ran(?:domAccessSlice|geReplaceable(?:RandomAccessSlice|BidirectionalSlice|Slice))|BidirectionalSlice|Slice)|anagedBufferPointer)|B(?:idirectionalSlice|ool)|S(?:t(?:aticString|ri(?:ng|deT(?:hrough(?:Generator|Iterator)?|o(?:Generator|Iterator)?)))|et(?:I(?:ndex|terator))?|lice)|HalfOpenInterval|C(?:haracter(?:View)?|o(?:ntiguousArray|untable(?:Range|ClosedRange)|llectionOfOne)|OpaquePointer|losed(?:Range(?:I(?:ndex|terator))?|Interval)|VaListPointer)|I(?:n(?:t(?:16|8|32|64)?|d(?:ices|ex(?:ing(?:Generator|Iterator))?))|terator(?:Sequence|OverOne)?)|Zip2(?:Sequence|Iterator)|O(?:paquePointer|bjectIdentifier)|D(?:ictionary(?:I(?:ndex|terator)|Literal)?|ouble|efault(?:RandomAccessIndices|BidirectionalIndices|Indices))|U(?:n(?:safe(?:RawPointer|Mutable(?:RawPointer|BufferPointer|Pointer)|BufferPointer(?:Generator|Iterator)?|Pointer)|icodeScalar(?:View)?|foldSequence|managed)|TF(?:16(?:View)?|8(?:View)?|32)|Int(?:16|8|32|64)?)|Join(?:Generator|ed(?:Sequence|Iterator))|PermutationGenerator|E(?:numerate(?:Generator|Sequence|d(?:Sequence|Iterator))|mpty(?:Generator|Collection|Iterator))|Fl(?:oat(?:80)?|atten(?:Generator|BidirectionalCollection(?:Index)?|Sequence|Collection(?:Index)?|Iterator))|L(?:egacyChildren|azy(?:RandomAccessCollection|Map(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Collection|Iterator)|BidirectionalCollection|Sequence|Collection|Filter(?:Generator|BidirectionalCollection|Sequence|Collection|I(?:ndex|terator))))|A(?:ny(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Hashable|Collection|I(?:ndex|terator))|utoreleasingUnsafeMutablePointer|rray(?:Slice)?))\\\\b\",\n              \"name\": \"support.type.swift\"\n            },\n            {\n              \"comment\": \"Structs in the standard library in Swift 2 only\",\n              \"match\": \"\\\\b(?:R(?:everse(?:RandomAccess(?:Collection|Index)|Collection|Index)|awByte)|Map(?:Generator|Sequence|Collection)|S(?:inkOf|etGenerator)|Zip2Generator|DictionaryGenerator|Filter(?:Generator|Sequence|Collection(?:Index)?)|LazyForwardCollection|Any(?:RandomAccessIndex|BidirectionalIndex|Forward(?:Collection|Index)))\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        },\n        \"builtin-typealias\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Typealiases in the standard library in Swift 3\",\n              \"match\": \"\\\\b(?:Raw(?:Significand|Exponent|Value)|B(?:ooleanLiteralType|uffer|ase)|S(?:t(?:orage|r(?:i(?:ngLiteralType|de)|eam(?:1|2)))|ubSequence)|NativeBuffer|C(?:hild(?:ren)?|Bool|S(?:hort|ignedChar)|odeUnit|Char(?:16|32)?|Int|Double|Unsigned(?:Short|Char|Int|Long(?:Long)?)|Float|WideChar|Long(?:Long)?)|I(?:n(?:t(?:Max|egerLiteralType)|d(?:ices|ex(?:Distance)?))|terator)|Distance|U(?:n(?:icodeScalar(?:Type|Index|View|LiteralType)|foldFirstSequence)|TF(?:16(?:Index|View)|8Index)|IntMax)|E(?:lement(?:s)?|x(?:tendedGraphemeCluster(?:Type|LiteralType)|ponent))|V(?:oid|alue)|Key|Float(?:32|LiteralType|64)|AnyClass)\\\\b\",\n              \"name\": \"support.type.swift\"\n            },\n            {\n              \"comment\": \"Typealiases in the standard library in Swift 2 only\",\n              \"match\": \"\\\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        }\n      }\n    },\n    \"code-block\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.begin.swift\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.swift\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.swift\"\n            }\n          },\n          \"match\": \"\\\\A^(#!).*$\\\\n?\",\n          \"name\": \"comment.line.number-sign.swift\"\n        },\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.swift\"\n            }\n          },\n          \"name\": \"comment.block.documentation.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*:\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.swift\"\n            }\n          },\n          \"name\": \"comment.block.documentation.playground.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.swift\"\n            }\n          },\n          \"name\": \"comment.block.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\*/\",\n          \"name\": \"invalid.illegal.unexpected-end-of-block-comment.swift\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"///\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.swift\"\n                }\n              },\n              \"end\": \"^\",\n              \"name\": \"comment.line.triple-slash.documentation.swift\"\n            },\n            {\n              \"begin\": \"//:\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.swift\"\n                }\n              },\n              \"end\": \"^\",\n              \"name\": \"comment.line.double-slash.documentation.swift\"\n            },\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.swift\"\n                }\n              },\n              \"end\": \"^\",\n              \"name\": \"comment.line.double-slash.swift\"\n            }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"nested\": {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        }\n      }\n    },\n    \"compiler-control\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#)(if|elseif)\\\\s+(false)\\\\b.*?(?=$|//|/\\\\*)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.conditional.swift\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.preprocessor.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.preprocessor.conditional.swift\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.boolean.swift\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.swift\",\n          \"end\": \"(?=^\\\\s*(#(elseif|else|endif)\\\\b))\"\n        },\n        {\n          \"begin\": \"^\\\\s*(#)(if|elseif)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.preprocessor.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.preprocessor.conditional.swift\"\n            }\n          },\n          \"end\": \"(?=\\\\s*(?://|/\\\\*))|$\",\n          \"name\": \"meta.preprocessor.conditional.swift\",\n          \"patterns\": [\n            {\n              \"match\": \"(&&|\\\\|\\\\|)\",\n              \"name\": \"keyword.operator.logical.swift\"\n            },\n            {\n              \"match\": \"\\\\b(true|false)\\\\b\",\n              \"name\": \"constant.language.boolean.swift\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                },\n                \"3\": {\n                  \"name\": \"support.constant.platform.architecture.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"match\": \"\\\\b(arch)\\\\s*(\\\\()\\\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\\\w+)\\\\s*(\\\\))\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                },\n                \"3\": {\n                  \"name\": \"support.constant.platform.os.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"match\": \"\\\\b(os)\\\\s*(\\\\()\\\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\\\w+)\\\\s*(\\\\))\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.type.module.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"match\": \"\\\\b(canImport)\\\\s*(\\\\()([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)(\\\\))\"\n            },\n            {\n              \"begin\": \"\\\\b(targetEnvironment)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\))|$\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(simulator|UIKitForMac)\\\\b\",\n                  \"name\": \"support.constant.platform.environment.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\b(swift|compiler)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\))|$\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \">=|<\",\n                  \"name\": \"keyword.operator.comparison.swift\"\n                },\n                {\n                  \"match\": \"\\\\b[0-9]+(?:\\\\.[0-9]+)*\\\\b\",\n                  \"name\": \"constant.numeric.swift\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.preprocessor.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.preprocessor.conditional.swift\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\S+\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            }\n          },\n          \"match\": \"^\\\\s*(#)(else|endif)(.*?)(?=$|//|/\\\\*)\",\n          \"name\": \"meta.preprocessor.conditional.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.preprocessor.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.preprocessor.sourcelocation.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.parameters.begin.swift\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"(file)\\\\s*(:)\\\\s*(?=\\\")\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"support.variable.parameter.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.key-value.swift\"\n                    }\n                  },\n                  \"end\": \"(?!\\\\G)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#literals\"\n                    }\n                  ]\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"support.variable.parameter.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.key-value.swift\"\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.integer.swift\"\n                    }\n                  },\n                  \"match\": \"(line)\\\\s*(:)\\\\s*([0-9]+)\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.swift\"\n                },\n                {\n                  \"match\": \"\\\\S+\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.parameters.begin.swift\"\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\S+\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            }\n          },\n          \"match\": \"^\\\\s*(#)(sourceLocation)((\\\\()([^)]*)(\\\\)))(.*?)(?=$|//|/\\\\*)\",\n          \"name\": \"meta.preprocessor.sourcelocation.swift\"\n        }\n      ]\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#function-initializer\"\n        },\n        {\n          \"include\": \"#typed-variable-declaration\"\n        },\n        {\n          \"include\": \"#import\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#precedencegroup\"\n        },\n        {\n          \"include\": \"#protocol\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#extension\"\n        },\n        {\n          \"include\": \"#typealias\"\n        }\n      ],\n      \"repository\": {\n        \"available-types\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#builtin-types\"\n            },\n            {\n              \"include\": \"#attributes\"\n            },\n            {\n              \"match\": \"\\\\basync\\\\b\",\n              \"name\": \"keyword.control.async.swift\"\n            },\n            {\n              \"match\": \"\\\\b(?:throws|rethrows)\\\\b\",\n              \"name\": \"keyword.control.exception.swift\"\n            },\n            {\n              \"match\": \"\\\\bsome\\\\b\",\n              \"name\": \"keyword.operator.type.opaque.swift\"\n            },\n            {\n              \"match\": \"\\\\bany\\\\b\",\n              \"name\": \"keyword.operator.type.existential.swift\"\n            },\n            {\n              \"match\": \"\\\\b(?:inout|isolated)\\\\b\",\n              \"name\": \"storage.modifier.swift\"\n            },\n            {\n              \"match\": \"\\\\bSelf\\\\b\",\n              \"name\": \"variable.language.swift\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.type.function.swift\"\n                }\n              },\n              \"match\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(->)(?![/=\\\\-+!*%<>&|\\\\^~.])\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.type.composition.swift\"\n                }\n              },\n              \"comment\": \"Swift 3: A & B\",\n              \"match\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(&)(?![/=\\\\-+!*%<>&|\\\\^~.])\"\n            },\n            {\n              \"match\": \"[?!]\",\n              \"name\": \"keyword.operator.type.optional.swift\"\n            },\n            {\n              \"match\": \"\\\\.\\\\.\\\\.\",\n              \"name\": \"keyword.operator.function.variadic-parameter.swift\"\n            },\n            {\n              \"comment\": \"Swift 2: protocol<A, B>\",\n              \"match\": \"\\\\bprotocol\\\\b\",\n              \"name\": \"keyword.operator.type.composition.swift\"\n            },\n            {\n              \"match\": \"(?<=\\\\.)(?:Protocol|Type)\\\\b\",\n              \"name\": \"keyword.operator.type.metatype.swift\"\n            },\n            {\n              \"include\": \"#tuple-type\"\n            },\n            {\n              \"include\": \"#collection-type\"\n            },\n            {\n              \"include\": \"#generic-argument-clause\"\n            }\n          ],\n          \"repository\": {\n            \"collection-type\": {\n              \"begin\": \"\\\\[\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.collection-type.begin.swift\"\n                }\n              },\n              \"comment\": \"array and dictionary types [Value] and [Key: Value]\",\n              \"end\": \"\\\\]|(?=[>){}])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.collection-type.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#available-types\"\n                },\n                {\n                  \"begin\": \":\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.separator.key-value.swift\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\]|[>){}])\",\n                  \"patterns\": [\n                    {\n                      \"match\": \":\",\n                      \"name\": \"invalid.illegal.extra-colon-in-dictionary-type.swift\"\n                    },\n                    {\n                      \"include\": \"#available-types\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"tuple-type\": {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.tuple-type.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\)|(?=[>\\\\]{}])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.tuple-type.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#available-types\"\n                }\n              ]\n            }\n          }\n        },\n        \"extension\": {\n          \"begin\": \"\\\\b(extension)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.$1.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#available-types\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"name\": \"meta.definition.type.$1.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"comment\": \"SE-0143: Conditional Conformances\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"include\": \"#inheritance-clause\"\n            },\n            {\n              \"begin\": \"\\\\{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.type.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        \"function\": {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\\t\\t\\t(?:(nonisolated)\\\\s+)?\\n\\t\\t\\t\\t\\t\\t(func)\\n\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\\n\\t\\t\\t\\t\\t\\t  | (?:\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?<opc>\\t\\t\\t\\t\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\x{0300}-\\\\x{036F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t  | ( \\\\. ( \\\\g<oph> | \\\\g<opc> | \\\\. )+ )\\t\\t\\t# Dot operators\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t(?=\\\\(|<)\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.swift\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.function.swift\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?<=\\\\})|$(?# functions in protocol declarations or generated interfaces have no body)\",\n          \"name\": \"meta.definition.function.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generic-parameter-clause\"\n            },\n            {\n              \"include\": \"#parameter-clause\"\n            },\n            {\n              \"include\": \"#function-result\"\n            },\n            {\n              \"include\": \"#async-throws\"\n            },\n            {\n              \"comment\": \"Swift 3: generic constraints after the parameters and return type\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"begin\": \"(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.function.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.function.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.function.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        \"function-initializer\": {\n          \"begin\": \"(?<!\\\\.)\\\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\\\s*(?=\\\\(|<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[?!])[?!]+\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?<=\\\\})|$\",\n          \"name\": \"meta.definition.function.initializer.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generic-parameter-clause\"\n            },\n            {\n              \"include\": \"#parameter-clause\"\n            },\n            {\n              \"include\": \"#async-throws\"\n            },\n            {\n              \"comment\": \"Swift 3: generic constraints after the parameters and return type\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"begin\": \"(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.function.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.function.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.function.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        \"function-result\": {\n          \"begin\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(->)(?![/=\\\\-+!*%<>&|\\\\^~.])\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.function-result.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)(?=\\\\{|\\\\bwhere\\\\b|;)|$\",\n          \"name\": \"meta.function-result.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#available-types\"\n            }\n          ]\n        },\n        \"generic-argument-clause\": {\n          \"begin\": \"<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.generic-argument-clause.begin.swift\"\n            }\n          },\n          \"end\": \">|(?=[)\\\\]{}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.generic-argument-clause.end.swift\"\n            }\n          },\n          \"name\": \"meta.generic-argument-clause.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#available-types\"\n            }\n          ]\n        },\n        \"generic-parameter-clause\": {\n          \"begin\": \"<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.generic-parameter-clause.begin.swift\"\n            }\n          },\n          \"end\": \">|(?=[^\\\\w\\\\d:<>\\\\s,=&`])(?# characters besides these are never valid in a generic param list -- even if it's not really a valid clause, we should stop trying to parse it if we see one of them.)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.generic-parameter-clause.end.swift\"\n            }\n          },\n          \"name\": \"meta.generic-parameter-clause.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"comment\": \"Swift 2: constraints inside the generic param list\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.language.generic-parameter.swift\"\n                }\n              },\n              \"match\": \"\\\\b((?!\\\\d)\\\\w[\\\\w\\\\d]*)\\\\b\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.generic-parameters.swift\"\n            },\n            {\n              \"begin\": \"(:)\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.generic-parameter-constraint.swift\"\n                }\n              },\n              \"end\": \"(?=[,>]|(?!\\\\G)\\\\bwhere\\\\b)\",\n              \"name\": \"meta.generic-parameter-constraint.swift\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G\",\n                  \"end\": \"(?=[,>]|(?!\\\\G)\\\\bwhere\\\\b)\",\n                  \"name\": \"entity.other.inherited-class.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#type-identifier\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"generic-where-clause\": {\n          \"begin\": \"\\\\b(where)\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.generic-constraint-introducer.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)$|(?=[>{};\\\\n]|//|/\\\\*)\",\n          \"name\": \"meta.generic-where-clause.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#requirement-list\"\n            }\n          ],\n          \"repository\": {\n            \"requirement-list\": {\n              \"begin\": \"\\\\G|,\\\\s*\",\n              \"end\": \"(?=[,>{};\\\\n]|//|/\\\\*)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#constraint\"\n                },\n                {\n                  \"include\": \"#available-types\"\n                },\n                {\n                  \"begin\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(==)(?![/=\\\\-+!*%<>&|\\\\^~.])\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.operator.generic-constraint.same-type.swift\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\s*[,>{};\\\\n]|//|/\\\\*)\",\n                  \"name\": \"meta.generic-where-clause.same-type-requirement.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#available-types\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(:)(?![/=\\\\-+!*%<>&|\\\\^~.])\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.operator.generic-constraint.conforms-to.swift\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\s*[,>{};\\\\n]|//|/\\\\*)\",\n                  \"name\": \"meta.generic-where-clause.conformance-requirement.swift\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G\\\\s*\",\n                      \"contentName\": \"entity.other.inherited-class.swift\",\n                      \"end\": \"(?=\\\\s*[,>{};\\\\n]|//|/\\\\*)\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#available-types\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        \"import\": {\n          \"begin\": \"(?<!\\\\.)\\\\b(import)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.swift\"\n            }\n          },\n          \"end\": \"(;)|$\\\\n?|(?=//|/\\\\*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.swift\"\n            }\n          },\n          \"name\": \"meta.import.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!;|$|//|/\\\\*)(?:(typealias|struct|class|actor|enum|protocol|var|func)\\\\s+)?\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.swift\"\n                }\n              },\n              \"end\": \"(?=;|$|//|/\\\\*)\",\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.identifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.identifier.swift\"\n                    }\n                  },\n                  \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<=\\\\G|\\\\.)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\n                  \"name\": \"entity.name.type.swift\"\n                },\n                {\n                  \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<=\\\\G|\\\\.)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\$[0-9]+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\n                  \"name\": \"entity.name.type.swift\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\.\",\n                          \"name\": \"invalid.illegal.dot-not-allowed-here.swift\"\n                        }\n                      ]\n                    }\n                  },\n                  \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<=\\\\G|\\\\.)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?<opc>\\t\\t\\t\\t\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\x{0300}-\\\\x{036F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | ( \\\\. ( \\\\g<oph> | \\\\g<opc> | \\\\. )+ )\\t\\t\\t# Dot operators\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?=\\\\.|;|$|//|/\\\\*|\\\\s)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\n                  \"name\": \"entity.name.type.swift\"\n                },\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.import.swift\"\n                },\n                {\n                  \"begin\": \"(?!\\\\s*(;|$|//|/\\\\*))\",\n                  \"end\": \"(?=\\\\s*(;|$|//|/\\\\*))\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            }\n          ]\n        },\n        \"inheritance-clause\": {\n          \"begin\": \"(:)(?=\\\\s*\\\\{)|(:)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.empty-inheritance-clause.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.inheritance-clause.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)$|(?=[={}]|(?!\\\\G)\\\\bwhere\\\\b)\",\n          \"name\": \"meta.inheritance-clause.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\bclass\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"storage.type.class.swift\"\n                }\n              },\n              \"end\": \"(?=[={}]|(?!\\\\G)\\\\bwhere\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#more-types\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G\",\n              \"end\": \"(?!\\\\G)$|(?=[={}]|(?!\\\\G)\\\\bwhere\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#inherited-type\"\n                },\n                {\n                  \"include\": \"#more-types\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"inherited-type\": {\n              \"begin\": \"(?=[`\\\\p{L}_])\",\n              \"end\": \"(?!\\\\G)\",\n              \"name\": \"entity.other.inherited-class.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-identifier\"\n                }\n              ]\n            },\n            \"more-types\": {\n              \"begin\": \",\\\\s*\",\n              \"end\": \"(?!\\\\G)(?!//|/\\\\*)|(?=[,={}]|(?!\\\\G)\\\\bwhere\\\\b)\",\n              \"name\": \"meta.inheritance-list.more-types\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#inherited-type\"\n                },\n                {\n                  \"include\": \"#more-types\"\n                }\n              ]\n            }\n          }\n        },\n        \"operator\": {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\\\b(prefix|infix|postfix)\\n\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\\t\\t\\t(operator)\\n\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\n\\t\\t\\t\\t\\t\\t\\t\\t  | \\\\.\\t\\t\\t\\t\\t\\t\\t\\t\\t# Invalid dot\\n\\t\\t\\t\\t\\t\\t\\t\\t  | (?<opc>\\t\\t\\t\\t\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\x{0300}-\\\\x{036F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)*+\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t  | ( \\\\. ( \\\\g<oph> | \\\\g<opc> | \\\\. )++ )\\t\\t\\t# Dot operators\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.swift\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.function.operator.swift\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.operator.swift\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"invalid.illegal.dot-not-allowed-here.swift\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(;)|$\\\\n?|(?=//|/\\\\*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.swift\"\n            }\n          },\n          \"name\": \"meta.definition.operator.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#swift2\"\n            },\n            {\n              \"include\": \"#swift3\"\n            },\n            {\n              \"match\": \"((?!$|;|//|/\\\\*)\\\\S)+\",\n              \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n            }\n          ],\n          \"repository\": {\n            \"swift2\": {\n              \"begin\": \"\\\\G(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.operator.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.operator.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.other.operator.associativity.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(associativity)\\\\s+(left|right)\\\\b\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.integer.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(precedence)\\\\s+([0-9]+)\\\\b\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(assignment)\\\\b\"\n                }\n              ]\n            },\n            \"swift3\": {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"entity.other.inherited-class.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#types-precedencegroup\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"match\": \"\\\\G(:)\\\\s*((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\"\n            }\n          }\n        },\n        \"parameter-clause\": {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.swift\"\n            }\n          },\n          \"end\": \"(\\\\))(?:\\\\s*(async)\\\\b)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.async.swift\"\n            }\n          },\n          \"name\": \"meta.parameter-clause.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-list\"\n            }\n          ]\n        },\n        \"parameter-list\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"variable.parameter.function.swift\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"comment\": \"External parameter labels are considered part of the function name\",\n              \"match\": \"((?<q1>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q1>))\\\\s+((?<q2>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q2>))(?=\\\\s*:)\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.function.swift\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"comment\": \"If no external label is given, the name is both the external label and the internal variable name\",\n              \"match\": \"(((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)))(?=\\\\s*:)\"\n            },\n            {\n              \"begin\": \":\\\\s*(?!\\\\s)\",\n              \"end\": \"(?=[,)])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#available-types\"\n                },\n                {\n                  \"match\": \":\",\n                  \"name\": \"invalid.illegal.extra-colon-in-parameter-list.swift\"\n                },\n                {\n                  \"begin\": \"=\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"keyword.operator.assignment.swift\"\n                    }\n                  },\n                  \"comment\": \"a parameter's default value\",\n                  \"end\": \"(?=[,)])\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#expressions\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"precedencegroup\": {\n          \"begin\": \"\\\\b(precedencegroup)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*(?=\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.precedencegroup.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.precedencegroup.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"meta.definition.precedencegroup.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.precedencegroup.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.precedencegroup.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"entity.other.inherited-class.swift\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#types-precedencegroup\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.identifier.swift\"\n                    },\n                    \"4\": {\n                      \"name\": \"punctuation.definition.identifier.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(higherThan|lowerThan)\\\\s*:\\\\s*((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.other.operator.associativity.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(associativity)\\\\b(?:\\\\s*:\\\\s*(right|left|none)\\\\b)?\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.language.boolean.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(assignment)\\\\b(?:\\\\s*:\\\\s*(true|false)\\\\b)?\"\n                }\n              ]\n            }\n          ]\n        },\n        \"protocol\": {\n          \"begin\": \"\\\\b(protocol)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.$1.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.$1.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"name\": \"meta.definition.type.protocol.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#inheritance-clause\"\n            },\n            {\n              \"comment\": \"SE-0142: Permit where clauses to constrain associated types\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"begin\": \"\\\\{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.type.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#protocol-method\"\n                },\n                {\n                  \"include\": \"#protocol-initializer\"\n                },\n                {\n                  \"include\": \"#associated-type\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"associated-type\": {\n              \"begin\": \"\\\\b(associatedtype)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.declaration-specifier.swift\"\n                },\n                \"2\": {\n                  \"name\": \"variable.language.associatedtype.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"end\": \"(?!\\\\G)$|(?=[;}]|$)\",\n              \"name\": \"meta.definition.associatedtype.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#inheritance-clause\"\n                },\n                {\n                  \"comment\": \"SE-0142: Permit where clauses to constrain associated types\",\n                  \"include\": \"#generic-where-clause\"\n                },\n                {\n                  \"include\": \"#typealias-assignment\"\n                }\n              ]\n            },\n            \"protocol-initializer\": {\n              \"begin\": \"(?<!\\\\.)\\\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\\\s*(?=\\\\(|<)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.function.swift\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[?!])[?!]+\",\n                      \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"$|(?=;|//|/\\\\*|\\\\})\",\n              \"name\": \"meta.definition.function.initializer.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#generic-parameter-clause\"\n                },\n                {\n                  \"include\": \"#parameter-clause\"\n                },\n                {\n                  \"include\": \"#async-throws\"\n                },\n                {\n                  \"comment\": \"Swift 3: generic constraints after the parameters and return type\",\n                  \"include\": \"#generic-where-clause\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.begin.swift\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.end.swift\"\n                    }\n                  },\n                  \"name\": \"invalid.illegal.function-body-not-allowed-in-protocol.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"protocol-method\": {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\\t\\t\\t\\t\\t(func)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\\n\\t\\t  \\t\\t\\t\\t\\t\\t  | (?:\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?<opc>\\t\\t\\t\\t\\t\\t\\t\\t# operator-character\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\x{0300}-\\\\x{036F}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t  | ( \\\\. ( \\\\g<oph> | \\\\g<opc> | \\\\. )+ )\\t\\t\\t# Dot operators\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t  \\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t(?=\\\\(|<)\\n\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.function.swift\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"end\": \"$|(?=;|//|/\\\\*|\\\\})\",\n              \"name\": \"meta.definition.function.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#generic-parameter-clause\"\n                },\n                {\n                  \"include\": \"#parameter-clause\"\n                },\n                {\n                  \"include\": \"#function-result\"\n                },\n                {\n                  \"include\": \"#async-throws\"\n                },\n                {\n                  \"comment\": \"Swift 3: generic constraints after the parameters and return type\",\n                  \"include\": \"#generic-where-clause\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.begin.swift\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.end.swift\"\n                    }\n                  },\n                  \"name\": \"invalid.illegal.function-body-not-allowed-in-protocol.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        \"type\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b(class(?!\\\\s+(?:func|var|let)\\\\b)|struct|actor)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.$1.swift\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.$1.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"end\": \"(?<=\\\\})\",\n              \"name\": \"meta.definition.type.$1.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#generic-parameter-clause\"\n                },\n                {\n                  \"comment\": \"Swift 3: generic constraints after the generic param list\",\n                  \"include\": \"#generic-where-clause\"\n                },\n                {\n                  \"include\": \"#inheritance-clause\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.type.begin.swift\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.type.end.swift\"\n                    }\n                  },\n                  \"name\": \"meta.definition.type.body.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#type-enum\"\n            }\n          ]\n        },\n        \"type-enum\": {\n          \"begin\": \"\\\\b(enum)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.$1.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.$1.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"name\": \"meta.definition.type.$1.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generic-parameter-clause\"\n            },\n            {\n              \"comment\": \"Swift 3: generic constraints after the generic param list\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"include\": \"#inheritance-clause\"\n            },\n            {\n              \"begin\": \"\\\\{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.type.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#enum-case-clause\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"associated-values\": {\n              \"begin\": \"\\\\G\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:(_)|((?<q1>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*\\\\k<q1>))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(((?<q2>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*\\\\k<q2>))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"invalid.illegal.distinct-labels-not-allowed.swift\"\n                    },\n                    \"5\": {\n                      \"name\": \"variable.parameter.function.swift\"\n                    },\n                    \"7\": {\n                      \"name\": \"punctuation.separator.argument-label.swift\"\n                    }\n                  },\n                  \"end\": \"(?=[,)\\\\]])\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#available-types\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*\\\\k<q>))\\\\s*(:)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"variable.parameter.function.swift\"\n                    },\n                    \"4\": {\n                      \"name\": \"punctuation.separator.argument-label.swift\"\n                    }\n                  },\n                  \"end\": \"(?=[,)\\\\]])\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#available-types\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(?![,)\\\\]])(?=\\\\S)\",\n                  \"comment\": \"an element without a label (i.e. anything else)\",\n                  \"end\": \"(?=[,)\\\\]])\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#available-types\"\n                    },\n                    {\n                      \"match\": \":\",\n                      \"name\": \"invalid.illegal.extra-colon-in-parameter-list.swift\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"enum-case\": {\n              \"begin\": \"(?x)((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"constant.other.swift\"\n                }\n              },\n              \"end\": \"(?<=\\\\))|(?![=(])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#associated-values\"\n                },\n                {\n                  \"include\": \"#raw-value-assignment\"\n                }\n              ]\n            },\n            \"enum-case-clause\": {\n              \"begin\": \"\\\\b(case)\\\\b\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.enum.case.swift\"\n                }\n              },\n              \"end\": \"(?=[;}])|(?!\\\\G)(?!//|/\\\\*)(?=[^\\\\s,])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#enum-case\"\n                },\n                {\n                  \"include\": \"#more-cases\"\n                }\n              ]\n            },\n            \"more-cases\": {\n              \"begin\": \",\\\\s*\",\n              \"end\": \"(?!\\\\G)(?!//|/\\\\*)(?=[;}]|[^\\\\s,])\",\n              \"name\": \"meta.enum-case.more-cases\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#enum-case\"\n                },\n                {\n                  \"include\": \"#more-cases\"\n                }\n              ]\n            },\n            \"raw-value-assignment\": {\n              \"begin\": \"(=)\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.swift\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#literals\"\n                }\n              ]\n            }\n          }\n        },\n        \"type-identifier\": {\n          \"begin\": \"((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type-name.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#builtin-types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?!<)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=<)\",\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#generic-argument-clause\"\n                }\n              ]\n            }\n          ]\n        },\n        \"typealias\": {\n          \"begin\": \"\\\\b(typealias)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.declaration-specifier.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.typealias.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)$|(?=;|//|/\\\\*|$)\",\n          \"name\": \"meta.definition.typealias.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=<)\",\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#generic-parameter-clause\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#typealias-assignment\"\n            }\n          ]\n        },\n        \"typealias-assignment\": {\n          \"begin\": \"(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)$|(?=;|//|/\\\\*|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#available-types\"\n            }\n          ]\n        },\n        \"typed-variable-declaration\": {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b(?:(async)\\\\s+)?(let|var)\\\\b\\\\s+\\n\\t\\t\\t\\t\\t\\t(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\\\\s*\\n\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.async.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.declaration-specifier.swift\"\n            }\n          },\n          \"end\": \"(?=$|[={])\",\n          \"patterns\": [\n            {\n              \"include\": \"#available-types\"\n            }\n          ]\n        },\n        \"types-precedencegroup\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Precedence groups in the standard library\",\n              \"match\": \"\\\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        }\n      }\n    },\n    \"expressions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#code-block\"\n        },\n        {\n          \"include\": \"#attributes\"\n        },\n        {\n          \"include\": \"#closure-parameter\"\n        },\n        {\n          \"include\": \"#literals\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#builtin-types\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#builtin-global-functions\"\n        },\n        {\n          \"include\": \"#builtin-properties\"\n        },\n        {\n          \"include\": \"#compound-name\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#function-call-expression\"\n        },\n        {\n          \"include\": \"#subscript-expression\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#member-reference\"\n        },\n        {\n          \"include\": \"#availability-condition\"\n        },\n        {\n          \"match\": \"\\\\b_\\\\b\",\n          \"name\": \"support.variable.discard-value.swift\"\n        }\n      ],\n      \"repository\": {\n        \"availability-condition\": {\n          \"begin\": \"\\\\B(#(?:un)?available)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.availability-condition.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.platform.os.swift\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.swift\"\n                }\n              },\n              \"match\": \"\\\\s*\\\\b((?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\\\b(?:\\\\s+([0-9]+(?:\\\\.[0-9]+)*\\\\b))\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.platform.all.swift\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              },\n              \"match\": \"(\\\\*)\\\\s*(.*?)(?=[,)])\"\n            },\n            {\n              \"match\": \"[^\\\\s,)]+\",\n              \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n            }\n          ]\n        },\n        \"closure-parameter\": {\n          \"match\": \"\\\\$[0-9]+\",\n          \"name\": \"variable.language.closure-parameter.swift\"\n        },\n        \"compound-name\": {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.compound-name.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.swift\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.entity.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.entity.swift\"\n                    }\n                  },\n                  \"match\": \"(?<q>`?)(?!_:)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>):\",\n                  \"name\": \"entity.name.function.compound-name.swift\"\n                }\n              ]\n            }\n          },\n          \"comment\": \"a reference to a function with disambiguating argument labels, such as foo(_:), foo(bar:), etc.\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t((?<q1>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q1>))       \\t\\t# function name\\n\\t\\t\\t\\t\\t\\t\\\\(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t((?<q2>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q2>)) \\t# argument label\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t:\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# colon\\n\\t\\t\\t\\t\\t\\t\\t\\t)+\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\)\\n\\t\\t\\t\\t\\t\"\n        },\n        \"expression-element-list\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*(:)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"support.function.any-method.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.separator.argument-label.swift\"\n                }\n              },\n              \"comment\": \"an element with a label\",\n              \"end\": \"(?=[,)\\\\]])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expressions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?![,)\\\\]])(?=\\\\S)\",\n              \"comment\": \"an element without a label (i.e. anything else)\",\n              \"end\": \"(?=[,)\\\\]])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expressions\"\n                }\n              ]\n            }\n          ]\n        },\n        \"function-call-expression\": {\n          \"patterns\": [\n            {\n              \"begin\": \"((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"support.function.any-method.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.arguments.begin.swift\"\n                }\n              },\n              \"comment\": \"foo(args) -- a call whose callee is a highlightable name\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.arguments.end.swift\"\n                }\n              },\n              \"name\": \"meta.function-call.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-element-list\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=[`\\\\])}>\\\\p{L}_\\\\p{N}\\\\p{M}])\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arguments.begin.swift\"\n                }\n              },\n              \"comment\": \"[Int](args) -- a call whose callee is a more complicated expression\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.arguments.end.swift\"\n                }\n              },\n              \"name\": \"meta.function-call.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-element-list\"\n                }\n              ]\n            }\n          ]\n        },\n        \"member-reference\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"match\": \"(?<=\\\\.)((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\"\n            }\n          ]\n        },\n        \"parenthesized-expression\": {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.tuple.begin.swift\"\n            }\n          },\n          \"comment\": \"correctly matching closure expressions is too hard (depends on trailing \\\"in\\\") so we just tack on some basics to the end of parenthesized-expression\",\n          \"end\": \"(\\\\))\\\\s*((?:\\\\b(?:async|throws|rethrows)\\\\s)*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.tuple.end.swift\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\brethrows\\\\b\",\n                  \"name\": \"invalid.illegal.rethrows-only-allowed-on-function-declarations.swift\"\n                },\n                {\n                  \"include\": \"#async-throws\"\n                }\n              ]\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression-element-list\"\n            }\n          ]\n        },\n        \"subscript-expression\": {\n          \"begin\": \"(?<=[`\\\\p{L}_\\\\p{N}\\\\p{M}])\\\\s*(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"name\": \"meta.subscript-expression.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-element-list\"\n            }\n          ]\n        }\n      }\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\\\b\",\n          \"name\": \"keyword.control.branch.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:continue|break|fallthrough|return)\\\\b\",\n          \"name\": \"keyword.control.transfer.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:while|for|in)\\\\b\",\n          \"name\": \"keyword.control.loop.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.loop.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.whitespace.trailing.repeat.swift\"\n            }\n          },\n          \"comment\": \"extra scopes for repeat-while snippet\",\n          \"match\": \"(?<!\\\\.)\\\\b(repeat)\\\\b(\\\\s*)\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\bdefer\\\\b\",\n          \"name\": \"keyword.control.defer.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.try-must-precede-await.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.await.swift\"\n            }\n          },\n          \"match\": \"(?<!\\\\.)\\\\b(?:(await\\\\s+try)|(await)\\\\b)\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:catch|throws?|rethrows|try)\\\\b|\\\\btry[?!]\\\\B\",\n          \"name\": \"keyword.control.exception.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.exception.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.whitespace.trailing.do.swift\"\n            }\n          },\n          \"comment\": \"extra scopes for do-catch snippet\",\n          \"match\": \"(?<!\\\\.)\\\\b(do)\\\\b(\\\\s*)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.async.swift\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.swift\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.declaration-specifier.swift\"\n            }\n          },\n          \"match\": \"(?<!\\\\.)\\\\b(?:(?:(async)|(nonisolated))\\\\s+)?(let|var)\\\\b\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:associatedtype|operator|typealias)\\\\b\",\n          \"name\": \"keyword.other.declaration-specifier.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(class|enum|extension|precedencegroup|protocol|struct|actor)\\\\b\",\n          \"name\": \"storage.type.$1.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix)\\\\b\",\n          \"name\": \"storage.modifier.swift\"\n        },\n        {\n          \"match\": \"\\\\binit[?!]|\\\\binit\\\\b|(?<!\\\\.)\\\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\\\b\",\n          \"name\": \"storage.type.function.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:fileprivate|private|internal|public|open)\\\\b\",\n          \"name\": \"keyword.other.declaration-specifier.accessibility.swift\"\n        },\n        {\n          \"comment\": \"matches weak, unowned, unowned(safe), unowned(unsafe)\",\n          \"match\": \"(?<!\\\\.)\\\\bunowned\\\\((?:safe|unsafe)\\\\)|(?<!\\\\.)\\\\b(?:weak|unowned)\\\\b\",\n          \"name\": \"keyword.other.capture-specifier.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.type.metatype.swift\"\n            }\n          },\n          \"match\": \"(?<=\\\\.)(?:(dynamicType|self)|(Protocol|Type))\\\\b\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:super|self|Self)\\\\b\",\n          \"name\": \"variable.language.swift\"\n        },\n        {\n          \"match\": \"\\\\B(?:#file|#filePath|#fileID|#line|#column|#function|#dsohandle)\\\\b|\\\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\\\b\",\n          \"name\": \"support.variable.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\bimport\\\\b\",\n          \"name\": \"keyword.control.import.swift\"\n        }\n      ]\n    },\n    \"literals\": {\n      \"patterns\": [\n        {\n          \"include\": \"#boolean\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"\\\\bnil\\\\b\",\n          \"name\": \"constant.language.nil.swift\"\n        },\n        {\n          \"comment\": \"object \\\"literals\\\" used in playgrounds\",\n          \"match\": \"\\\\B#(colorLiteral|imageLiteral|fileLiteral)\\\\b\",\n          \"name\": \"support.function.object-literal.swift\"\n        },\n        {\n          \"match\": \"\\\\B#keyPath\\\\b\",\n          \"name\": \"support.function.key-path.swift\"\n        },\n        {\n          \"begin\": \"\\\\B(#selector)(\\\\()(?:\\\\s*(getter|setter)\\\\s*(:))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.selector-reference.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.parameter.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.argument-label.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expressions\"\n            }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"boolean\": {\n          \"match\": \"\\\\b(true|false)\\\\b\",\n          \"name\": \"constant.language.boolean.swift\"\n        },\n        \"numeric\": {\n          \"patterns\": [\n            {\n              \"comment\": \"0.1, -4_2.5, 6.022e23, 10E-5\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)[0-9][0-9_]*(?=\\\\.[0-9]|[eE])(?:\\\\.[0-9][0-9_]*)?(?:[eE][-+]?[0-9][0-9_]*)?\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.float.decimal.swift\"\n            },\n            {\n              \"comment\": \"-0x1.ap2_3, 0x31p-4\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\\\.[0-9a-fA-F][0-9a-fA-F_]*)?[pP][-+]?[0-9][0-9_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.float.hexadecimal.swift\"\n            },\n            {\n              \"comment\": \"0x1p, 0x1p_2, 0x1.5pa, 0x1.1p+1f, 0x1pz\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\\\.[0-9a-fA-F][0-9a-fA-F_]*)?(?:[pP][-+]?\\\\w*)\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"invalid.illegal.numeric.float.invalid-exponent.swift\"\n            },\n            {\n              \"comment\": \"0x1.5w (note that 0x1.f may be a valid expression)\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)\\\\.[0-9][\\\\w.]*\",\n              \"name\": \"invalid.illegal.numeric.float.missing-exponent.swift\"\n            },\n            {\n              \"comment\": \"-.5, .2f (note that 1.-.5 may be a valid expression)\",\n              \"match\": \"(?<=\\\\s|^)\\\\-?\\\\.[0-9][\\\\w.]*\",\n              \"name\": \"invalid.illegal.numeric.float.missing-leading-zero.swift\"\n            },\n            {\n              \"comment\": \"0b_0_1, 0x_1p+3q\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)0[box]_[0-9a-fA-F_]*(?:[pPeE][+-]?\\\\w+)?[\\\\w.]+\",\n              \"name\": \"invalid.illegal.numeric.leading-underscore.swift\"\n            },\n            {\n              \"comment\": \"tuple positional member: not really a numeric literal, but not invalid\",\n              \"match\": \"(?<=[\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)[0-9]+\\\\b\"\n            },\n            {\n              \"comment\": \"0b010, 0b1_0\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)0b[01][01_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.integer.binary.swift\"\n            },\n            {\n              \"comment\": \"0o1, 0o7_3\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)0o[0-7][0-7_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.integer.octal.swift\"\n            },\n            {\n              \"comment\": \"02, 3_456\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)[0-9][0-9_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.integer.decimal.swift\"\n            },\n            {\n              \"comment\": \"0x4, 0xF_7\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)0x[0-9a-fA-F][0-9a-fA-F_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.integer.hexadecimal.swift\"\n            },\n            {\n              \"match\": \"(\\\\B\\\\-|\\\\b)[0-9][\\\\w.]*\",\n              \"name\": \"invalid.illegal.numeric.other.swift\"\n            }\n          ]\n        },\n        \"string\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\\\"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.swift\"\n                }\n              },\n              \"comment\": \"SE-0168: Multi-Line String Literals\",\n              \"end\": \"\\\"\\\"\\\"(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.block.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\G.+(?=\\\"\\\"\\\")|\\\\G.+\",\n                  \"name\": \"invalid.illegal.content-after-opening-delimiter.swift\"\n                },\n                {\n                  \"match\": \"\\\\\\\\\\\\s*\\\\n\",\n                  \"name\": \"constant.character.escape.newline.swift\"\n                },\n                {\n                  \"include\": \"#string-guts\"\n                },\n                {\n                  \"comment\": \"Allow \\\\(\\\"\\\"\\\"...\\\"\\\"\\\") to appear inside a block string\",\n                  \"match\": \"\\\\S((?!\\\\\\\\\\\\().)*(?=\\\"\\\"\\\")\",\n                  \"name\": \"invalid.illegal.content-before-closing-delimiter.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"#\\\"\\\"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.swift\"\n                }\n              },\n              \"end\": \"\\\"\\\"\\\"#(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.block.raw.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\G.+(?=\\\"\\\"\\\")|\\\\G.+\",\n                  \"name\": \"invalid.illegal.content-after-opening-delimiter.swift\"\n                },\n                {\n                  \"match\": \"\\\\\\\\#\\\\s*\\\\n\",\n                  \"name\": \"constant.character.escape.newline.swift\"\n                },\n                {\n                  \"include\": \"#raw-string-guts\"\n                },\n                {\n                  \"comment\": \"Allow \\\\(\\\"\\\"\\\"...\\\"\\\"\\\") to appear inside a block string\",\n                  \"match\": \"\\\\S((?!\\\\\\\\#\\\\().)*(?=\\\"\\\"\\\")\",\n                  \"name\": \"invalid.illegal.content-before-closing-delimiter.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(##+)\\\"\\\"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.swift\"\n                }\n              },\n              \"end\": \"\\\"\\\"\\\"\\\\1(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.block.raw.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\G.+(?=\\\"\\\"\\\")|\\\\G.+\",\n                  \"name\": \"invalid.illegal.content-after-opening-delimiter.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.swift\"\n                }\n              },\n              \"end\": \"\\\"(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.single-line.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\r|\\\\n\",\n                  \"name\": \"invalid.illegal.returns-not-allowed.swift\"\n                },\n                {\n                  \"include\": \"#string-guts\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(##+)\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.raw.swift\"\n                }\n              },\n              \"comment\": \"SE-0168: raw string literals (more than one #, grammar limitations prevent us from supporting escapes)\",\n              \"end\": \"\\\"\\\\1(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.raw.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.single-line.raw.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\r|\\\\n\",\n                  \"name\": \"invalid.illegal.returns-not-allowed.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"#\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.raw.swift\"\n                }\n              },\n              \"comment\": \"SE-0168: raw string literals (one #, escapes supported)\",\n              \"end\": \"\\\"#(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.raw.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.single-line.raw.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\r|\\\\n\",\n                  \"name\": \"invalid.illegal.returns-not-allowed.swift\"\n                },\n                {\n                  \"include\": \"#raw-string-guts\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"raw-string-guts\": {\n              \"comment\": \"the same as #string-guts but with # in escapes\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\#[0\\\\\\\\tnr\\\"']\",\n                  \"name\": \"constant.character.escape.swift\"\n                },\n                {\n                  \"match\": \"\\\\\\\\#u\\\\{[0-9a-fA-F]{1,8}\\\\}\",\n                  \"name\": \"constant.character.escape.unicode.swift\"\n                },\n                {\n                  \"begin\": \"\\\\\\\\#\\\\(\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.begin.swift\"\n                    }\n                  },\n                  \"contentName\": \"source.swift\",\n                  \"end\": \"(\\\\))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.end.swift\"\n                    },\n                    \"1\": {\n                      \"name\": \"source.swift\"\n                    }\n                  },\n                  \"name\": \"meta.embedded.line.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    },\n                    {\n                      \"begin\": \"\\\\(\",\n                      \"comment\": \"Nested parens\",\n                      \"end\": \"\\\\)\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\\\\\#.\",\n                  \"name\": \"invalid.illegal.escape-not-recognized\"\n                }\n              ]\n            },\n            \"string-guts\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[0\\\\\\\\tnr\\\"']\",\n                  \"name\": \"constant.character.escape.swift\"\n                },\n                {\n                  \"match\": \"\\\\\\\\u\\\\{[0-9a-fA-F]{1,8}\\\\}\",\n                  \"name\": \"constant.character.escape.unicode.swift\"\n                },\n                {\n                  \"begin\": \"\\\\\\\\\\\\(\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.begin.swift\"\n                    }\n                  },\n                  \"contentName\": \"source.swift\",\n                  \"end\": \"(\\\\))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.end.swift\"\n                    },\n                    \"1\": {\n                      \"name\": \"source.swift\"\n                    }\n                  },\n                  \"name\": \"meta.embedded.line.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    },\n                    {\n                      \"begin\": \"\\\\(\",\n                      \"comment\": \"Nested parens\",\n                      \"end\": \"\\\\)\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\\\\\.\",\n                  \"name\": \"invalid.illegal.escape-not-recognized\"\n                }\n              ]\n            }\n          }\n        }\n      }\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Type casting\",\n          \"match\": \"\\\\b(is\\\\b|as([!?]\\\\B|\\\\b))\",\n          \"name\": \"keyword.operator.type-casting.swift\"\n        },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?=\\n\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t  | \\\\.\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t  | \\\\.\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\",\n          \"comment\": \"This rule helps us speed up the matching.\",\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\G(\\\\+\\\\+|\\\\-\\\\-)$\",\n                      \"name\": \"keyword.operator.increment-or-decrement.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(\\\\+|\\\\-)$\",\n                      \"name\": \"keyword.operator.arithmetic.unary.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G!$\",\n                      \"name\": \"keyword.operator.logical.not.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G~$\",\n                      \"name\": \"keyword.operator.bitwise.not.swift\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.prefix.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Prefix unary operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<=^|[\\\\s(\\\\[{,;:])\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\\t(?![\\\\s)\\\\]},;:]|\\\\z)\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\G(\\\\+\\\\+|\\\\-\\\\-)$\",\n                      \"name\": \"keyword.operator.increment-or-decrement.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G!$\",\n                      \"name\": \"keyword.operator.increment-or-decrement.swift\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.postfix.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Postfix unary operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<!^|[\\\\s(\\\\[{,;:])\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\\t(?=[\\\\s)\\\\]},;:]|\\\\z)\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\G=$\",\n                      \"name\": \"keyword.operator.assignment.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(\\\\+|\\\\-|\\\\*|/|%|<<|>>|&|\\\\^|\\\\||&&|\\\\|\\\\|)=$\",\n                      \"name\": \"keyword.operator.assignment.compound.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(\\\\+|\\\\-|\\\\*|/)$\",\n                      \"name\": \"keyword.operator.arithmetic.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G&(\\\\+|\\\\-|\\\\*)$\",\n                      \"name\": \"keyword.operator.arithmetic.overflow.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G%$\",\n                      \"name\": \"keyword.operator.arithmetic.remainder.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(==|!=|>|<|>=|<=|~=)$\",\n                      \"name\": \"keyword.operator.comparison.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G\\\\?\\\\?$\",\n                      \"name\": \"keyword.operator.coalescing.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(&&|\\\\|\\\\|)$\",\n                      \"name\": \"keyword.operator.logical.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(&|\\\\||\\\\^|<<|>>)$\",\n                      \"name\": \"keyword.operator.bitwise.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(===|!==)$\",\n                      \"name\": \"keyword.operator.bitwise.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G\\\\?$\",\n                      \"name\": \"keyword.operator.ternary.swift\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.infix.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Infix operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.prefix.dot.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Dot prefix unary operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<=^|[\\\\s(\\\\[{,;:])\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\\t(?![\\\\s)\\\\]},;:]|\\\\z)\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.postfix.dot.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Dot postfix unary operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<!^|[\\\\s(\\\\[{,;:])\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\\t(?=[\\\\s)\\\\]},;:]|\\\\z)\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\G\\\\.\\\\.[.<]$\",\n                      \"name\": \"keyword.operator.range.swift\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.infix.dot.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Dot infix operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\"\n            }\n          ]\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"keyword.operator.ternary.swift\"\n        }\n      ]\n    },\n    \"root\": {\n      \"patterns\": [\n        {\n          \"include\": \"#compiler-control\"\n        },\n        {\n          \"include\": \"#declarations\"\n        },\n        {\n          \"include\": \"#expressions\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/syon.tmLanguage.json",
    "content": "{\n  \"name\": \"SyON\",\n  \"scopeName\": \"source.sy\",\n  \"fileTypes\": [\"sy\"],\n  \"patterns\": [\n    {\n      \"include\": \"#blockInnards\"\n    }\n  ],\n  \"repository\": {\n    \"main\": {\n      \"patterns\": [\n        {\n          \"include\": \"#signature\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#fieldQuotedEarly\"\n        },\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#stringJunk\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#field\"\n        },\n        {\n          \"include\": \"#array\"\n        },\n        {\n          \"include\": \"#byteArray\"\n        },\n        {\n          \"include\": \"#brackets\"\n        },\n        {\n          \"include\": \"#boolean\"\n        },\n        {\n          \"include\": \"#null\"\n        },\n        {\n          \"include\": \"#date\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#operator\"\n        }\n      ]\n    },\n    \"array\": {\n      \"name\": \"meta.array.sy\",\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.bracket.square.sy\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.bracket.square.sy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#main\"\n        },\n        {\n          \"match\": \"(?:[^,\\\\[\\\\]{}<>\\\"'`\\\\s:]|:(?=\\\\S))+\",\n          \"name\": \"string.unquoted.sy\"\n        }\n      ]\n    },\n    \"block\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.block.tagged.sy\",\n          \"begin\": \"((?:[^{}\\\\[\\\\]:\\\\s,]|[:#](?=\\\\S))(?:[^:{}]|:(?=\\\\S)|\\\\\\\\[{:])*?)({)\",\n          \"end\": \"}\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.block.tag.label.sy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.scope.block.begin.bracket.curly.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.block.end.bracket.curly.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#blockInnards\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.block.sy\",\n          \"begin\": \"{\",\n          \"end\": \"}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.block.begin.bracket.curly.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.block.end.bracket.curly.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#blockInnards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"blockInnards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fieldQuotedEarly\"\n        },\n        {\n          \"include\": \"#main\"\n        },\n        {\n          \"match\": \"((?:[^{}\\\\[\\\\]:\\\\s,]|[:#](?=\\\\S))(?:[^:{}]|:(?=\\\\S)|\\\\\\\\[{:])*?)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.property.sy\"\n            }\n          }\n        }\n      ]\n    },\n    \"brackets\": {\n      \"name\": \"meta.expression.sy\",\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.block.begin.bracket.round.sy\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.block.end.bracket.round.sy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#main\"\n        }\n      ]\n    },\n    \"boolean\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.sy\",\n          \"match\": \"(?x)\\n(?:\\\\G|^|(?<=[\\\\s\\\\[{,]))\\n(?:true|yes|on|TRUE|YES|ON)\\n(?=$|[\\\\s\\\\]},])\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.sy\",\n          \"match\": \"(?x)\\n(?:\\\\G|^|(?<=[\\\\s\\\\[{,]))\\n(?:false|no|off|TRUE|YES|ON)\\n(?=$|[\\\\s\\\\]},])\"\n        }\n      ]\n    },\n    \"byteArray\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.byte-array.base64.sy\",\n          \"begin\": \"(<)(base64)(:)\",\n          \"end\": \"(>)\\\\s*([^:,}\\\\]]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.byte-array.begin.bracket.angle.sy\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.encoding.base64.sy\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.key-value.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.byte-array.end.bracket.angle.sy\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.characters.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.encoded.base64.sy\",\n              \"match\": \"[A-Za-z0-9+/=]+\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"name\": \"invalid.illegal.character.sy\",\n              \"match\": \"[^\\\\s>]+\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.byte-array.base85.sy\",\n          \"begin\": \"<~\",\n          \"end\": \"~>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.byte-array.begin.bracket.angle.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.byte-array.end.bracket.angle.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"[!-uz]+\",\n              \"name\": \"constant.character.encoded.base85.sy\"\n            },\n            {\n              \"match\": \"[^!-uz\\\\s~]\",\n              \"name\": \"invalid.illegal.character.sy\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.byte-array.sy\",\n          \"begin\": \"<\",\n          \"end\": \"(>)\\\\s*([^:,}\\\\]]+)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.byte-array.begin.bracket.angle.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.byte-array.end.bracket.angle.sy\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.characters.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.numeric.integer.int.hexadecimal.hex.sy\",\n              \"match\": \"[A-Fa-f0-9]+\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"name\": \"invalid.illegal.character.sy\",\n              \"match\": \"[^\\\\s>]+\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comma\": {\n      \"name\": \"punctuation.separator.delimiter.comma.sy\",\n      \"match\": \",\"\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.sy\",\n          \"begin\": \"(?:\\\\G|^|(?<=\\\\s|\\\\xC2\\\\xAD|\\\\xAD))(#{3,})(?=\\\\s|$)\",\n          \"end\": \"\\\\1\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.sy\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.number-sign.sy\",\n          \"begin\": \"(?:\\\\G|^|(?<=\\\\s|\\\\xC2\\\\xAD|\\\\xAD))#(?=\\\\s|$)\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.sy\"\n            }\n          }\n        }\n      ]\n    },\n    \"date\": {\n      \"name\": \"constant.other.date.sy\",\n      \"match\": \"(?x)\\n# Date\\n[0-9]{4} - # Year\\n[0-9]{2} - # Month\\n[0-9]{2}   # Day\\n\\n# Time\\n(?:\\n\\t(?:T|\\\\s+)\\n\\t[0-9]{1,2} :     # Hours\\n\\t[0-9]{1,2} :     # Minutes\\n\\t[0-9]{1,2}       # Seconds\\n\\t(?:\\\\.[0-9]+)?   # Milliseconds\\n\\t(\\\\+[0-9]{4}|Z)? # Timezone\\n)?\\n\\n# Followed by delimiter, EOL, or comment\\n(?= \\\\s* (?:$|[,\\\\]}])\\n|   \\\\s+ \\\\#(?:$|\\\\s)\\n)\"\n    },\n    \"escape\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.newline.sy\",\n          \"begin\": \"\\\\\\\\$\\\\s*\",\n          \"end\": \"^\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.backslash.definition.escape.sy\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.character.escape.unicode.sy\",\n          \"match\": \"(\\\\\\\\)x[A-Fa-f0-9]{2}\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.backslash.definition.escape.sy\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.character.escape.unicode.sy\",\n          \"match\": \"(\\\\\\\\)u[A-Fa-f0-9]{4}\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.backslash.definition.escape.sy\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.character.escape.unicode.sy\",\n          \"match\": \"(\\\\\\\\)u({)[A-Fa-f0-9]+(})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.backslash.definition.escape.sy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.unicode-escape.begin.bracket.curly.sy\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.unicode-escape.end.bracket.curly.sy\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.unicode-escape.sy\",\n          \"match\": \"\\\\\\\\u{[^}\\\"]*}\"\n        },\n        {\n          \"name\": \"invalid.illegal.unicode-escape.sy\",\n          \"match\": \"\\\\\\\\u(?![A-Fa-f0-9]{4})[^\\\"]*\"\n        },\n        {\n          \"name\": \"constant.character.escape.sy\",\n          \"match\": \"(\\\\\\\\).\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.backslash.definition.escape.sy\"\n            }\n          }\n        }\n      ]\n    },\n    \"escapeVerbatim\": {\n      \"name\": \"constant.character.escape.backtick.sy\",\n      \"match\": \"``\"\n    },\n    \"expression\": {\n      \"name\": \"meta.expression.sy\",\n      \"match\": \"(?x)\\n\\\\G\\n(\\n\\t(?:\\\\s*\\\\()*\\n\\t\\\\s*\\n\\t~? [-+]? ~?\\n\\t\\\\d\\n\\t[-+*/%~^&|\\\\(\\\\)eE\\\\s.oOxXbB\\\\d]*\\n)\\n(?=\\n\\t\\\\s*\\n\\t(?: $\\n\\t|   ,\\n\\t| \\\\]\\n\\t| \\\\}\\n\\t| (?<=\\\\s)\\\\#(?=\\\\s|$)\\n\\t)\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            },\n            {\n              \"include\": \"#number\"\n            },\n            {\n              \"include\": \"#operator\"\n            }\n          ]\n        }\n      }\n    },\n    \"field\": {\n      \"name\": \"meta.field.sy\",\n      \"begin\": \"(?x)\\n(?:\\n\\t# Quoted property name\\n\\t(?<=[:{\\\\[]) \\\\s*\\n\\t(?: (\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\\\")\\n\\t|   ('(?:[^'\\\\\\\\]|\\\\\\\\.)*')\\n\\t|   (`(?:[^`]|``)*+`(?!`))\\n\\t) \\\\s* (:)\\n\\t\\n\\t|\\n\\t\\n\\t# Unquoted property name\\n\\t([^{}\\\\[\\\\]<>\\\\s][^,]*?)\\n\\t(?<!\\\\\\\\) (:)\\n\\t\\n\\t|\\n\\t\\n\\t# Presumably one following a multiline string\\n\\t(?<=[\\\"'`]) \\\\s* (:)\\n)\\n(?=\\\\s|$)\\n\\\\s*\",\n      \"end\": \"(?=\\\\s*})|^(?!\\\\G)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.property.quoted.double.sy\",\n          \"patterns\": [\n            {\n              \"include\": \"#escape\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.property.quoted.single.sy\",\n          \"patterns\": [\n            {\n              \"include\": \"#escape\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.property.quoted.backtick.sy\",\n          \"patterns\": [\n            {\n              \"include\": \"#escapeVerbatim\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.key-value.sy\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.property.sy\",\n          \"patterns\": [\n            {\n              \"include\": \"#escape\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.key-value.sy\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.key-value.sy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fieldInnards\"\n        }\n      ]\n    },\n    \"fieldQuotedEarly\": {\n      \"name\": \"meta.field.sy\",\n      \"begin\": \"(?x) (?:\\\\G|^) \\\\s*\\n(?: (\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\\\")\\n|   ('(?:[^'\\\\\\\\]|\\\\\\\\.)*')\\n|   (`(?:[^`]|``)*+`(?!`))\\n) \\\\s* (:)\\n(?=\\\\s|$)\\n\\\\s*\",\n      \"end\": \"(?=\\\\s*})|^(?!\\\\G)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.property.quoted.double.sy\",\n          \"patterns\": [\n            {\n              \"include\": \"#escape\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.property.quoted.single.sy\",\n          \"patterns\": [\n            {\n              \"include\": \"#escape\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.property.quoted.backtick.sy\",\n          \"patterns\": [\n            {\n              \"include\": \"#escapeVerbatim\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.key-value.sy\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fieldInnards\"\n        }\n      ]\n    },\n    \"fieldInnards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#date\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#main\"\n        },\n        {\n          \"name\": \"string.unquoted.sy\",\n          \"match\": \"(?x) \\\\G\\n(?! ~?[-+]?[0-9]\\n|  (?<=\\\\s)\\\\#(?=\\\\s|$)\\n)\\n[^\\\\s{}\\\\[\\\\]<:\\\"'`]\\n\\n(?: [^\\\\#,}\\\\]:]\\n|   (?<=\\\\S) [\\\\#:]\\n|   [:\\\\#] (?=\\\\S)\\n)*\\n(?!\\n\\t\\\\s*\\n\\t(?:[\\\\{:])\\n)\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#url\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"include\": \"#heredocDouble\"\n        },\n        {\n          \"include\": \"#heredocSingle\"\n        },\n        {\n          \"include\": \"#heredocVerbatim\"\n        }\n      ]\n    },\n    \"heredocDouble\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.heredoc.hinted.${1:/scopify}.sy\",\n          \"begin\": \"([-\\\\w]+)[ \\\\t]+(\\\"{3,})\",\n          \"end\": \"\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.type.parse-hint.sy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"contentName\": \"embedded.${1:/scopify}\"\n        },\n        {\n          \"name\": \"string.quoted.double.heredoc.sy\",\n          \"begin\": \"(\\\"{3,})\",\n          \"end\": \"\\\\1\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#stringInnards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"heredocSingle\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.heredoc.hinted.${1:/scopify}.sy\",\n          \"begin\": \"([-\\\\w]+)[ \\\\t]+('{3,})\",\n          \"end\": \"\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.type.parse-hint.sy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"contentName\": \"embedded.${1:/scopify}\"\n        },\n        {\n          \"name\": \"string.quoted.single.heredoc.sy\",\n          \"begin\": \"('{3,})\",\n          \"end\": \"\\\\1\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#stringInnards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"heredocVerbatim\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.verbatim.backtick.heredoc.hinted.${1:/scopify}.sy\",\n          \"begin\": \"([-\\\\w]+)[ \\\\t]+(`{3,})\",\n          \"end\": \"\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.type.parse-hint.sy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"contentName\": \"embedded.${1:/scopify}\"\n        },\n        {\n          \"name\": \"string.quoted.verbatim.backtick.heredoc.sy\",\n          \"begin\": \"(`{3,})\",\n          \"end\": \"\\\\1\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          }\n        }\n      ]\n    },\n    \"injection\": {\n      \"begin\": \"\\\\A(?:\\\\xC2\\\\xAD|\\\\xAD){2}\",\n      \"end\": \"(?=A)B\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#signature\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#blockInnards\"\n        }\n      ]\n    },\n    \"null\": {\n      \"name\": \"constant.language.null.sy\",\n      \"match\": \"(?x)\\n(?:\\\\G|^|(?<=[\\\\s\\\\[{,]))\\n(?:null|NULL)\\n(?=$|[\\\\s\\\\]},])\"\n    },\n    \"number\": {\n      \"match\": \"(?x)\\n(?:^|(?<=[\\\\s\\\\[\\\\({,~])|\\\\G)\\n(?: ([-+]?0[xX][A-Fa-f0-9_]+) # Hexadecimal\\n|   ([-+]?0[oO][0-7_]+)       # Octal\\n|   ([-+]?0[bB][0-1_]+)       # Binary\\n|   ([-+]?[0-9_]+\\\\.(?:[0-9_]*[eE][+-]?[0-9_]+|[0-9_]+)) # Float\\n|   ([-+]?[0-9_]+(?:[eE][+-]?[0-9_]+)?) # Integer\\n)\\n\\\\s*\\n(?= $\\n|   [-+*/%^&|\\\\)<>\\\\s\\\\]},]\\n|   (?<=\\\\s)\\\\#(?=\\\\s|$)\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.integer.int.hexadecimal.hex.sy\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.integer.int.octal.oct.sy\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.integer.int.binary.bin.sy\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.float.decimal.dec.sy\"\n        },\n        \"5\": {\n          \"name\": \"constant.numeric.integer.int.decimal.dec.sy\"\n        }\n      }\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.arithmetic.sy\",\n          \"match\": \"\\\\*\\\\*|[-+*/%]\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.sy\",\n          \"match\": \"(<<|>>|>>>|[~&|^])\"\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.multiline.sy\",\n          \"begin\": \"(?:([-\\\\w]+)[ \\\\t]+)?(/{3,})\",\n          \"end\": \"(\\\\2)([A-Za-z]*)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp#main\"\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.type.parse-hint.sy\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:\\\\G|^)/{3}$\",\n                  \"name\": \"punctuation.definition.string.begin.triple-slash.sy\"\n                },\n                {\n                  \"match\": \".+\",\n                  \"name\": \"punctuation.definition.string.begin.sy\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:\\\\G|^)/{3}$\",\n                  \"name\": \"punctuation.definition.string.end.triple-slash.sy\"\n                },\n                {\n                  \"match\": \".+\",\n                  \"name\": \"punctuation.definition.string.end.sy\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.regexp#scopedModifiers\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"name\": \"string.regexp.sy\",\n          \"begin\": \"(?:([-\\\\w]+)[ \\\\t]+)?(/)\",\n          \"end\": \"(/)([A-Za-z]*)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp#main\"\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.type.parse-hint.sy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.regexp#scopedModifiers\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"signature\": {\n      \"name\": \"punctuation.whitespace.shy-hyphens.signature.sy\",\n      \"match\": \"^(?:\\\\xC2\\\\xAD|\\\\xAD){2,}\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#stringDouble\"\n        },\n        {\n          \"include\": \"#stringSingle\"\n        },\n        {\n          \"include\": \"#stringVerbatim\"\n        }\n      ]\n    },\n    \"stringDouble\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.hinted.${1:/scopify}.sy\",\n          \"begin\": \"([-\\\\w]+)[ \\\\t]+(\\\")\",\n          \"end\": \"\\\"\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.type.parse-hint.sy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"contentName\": \"embedded.${1:/scopify}\"\n        },\n        {\n          \"name\": \"string.quoted.double.sy\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#stringInnards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"stringSingle\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.hinted.${1:/scopify}.sy\",\n          \"begin\": \"([-\\\\w]+)[ \\\\t]+(')\",\n          \"end\": \"'\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.type.parse-hint.sy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"contentName\": \"embedded.${1:/scopify}\"\n        },\n        {\n          \"name\": \"string.quoted.single.sy\",\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#stringInnards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"stringVerbatim\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.verbatim.backtick.hinted.${1:/scopify}.sy\",\n          \"begin\": \"([-\\\\w]+)[ \\\\t]+(`)\",\n          \"end\": \"`\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.type.parse-hint.sy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"contentName\": \"embedded.${1:/scopify}\"\n        },\n        {\n          \"name\": \"string.quoted.verbatim.backtick.sy\",\n          \"begin\": \"`\",\n          \"end\": \"`(?!`)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sy\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escapeVerbatim\"\n            }\n          ]\n        }\n      ]\n    },\n    \"stringJunk\": {\n      \"name\": \"invalid.illegal.syntax.sy\",\n      \"begin\": \"(?<=[\\\"'`])(?!\\\\s*$)(?=\\\\s*[^:,}\\\\]])\",\n      \"end\": \"(?=[:,}\\\\]])\"\n    },\n    \"stringInnards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#url\"\n        },\n        {\n          \"include\": \"#escape\"\n        }\n      ]\n    },\n    \"url\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.reference.link.underline.sy\",\n          \"match\": \"(?x) \\\\b\\n# Protocol\\n( https?\\n| s?ftp\\n| ftps\\n| file\\n| wss?\\n| smb\\n| git (?:\\\\+https?)\\n| ssh\\n| rsync\\n| afp\\n| nfs\\n| (?:x-)?man(?:-page)?\\n| gopher\\n| txmt\\n| issue\\n| atom\\n) ://\\n\\n# Path specifier\\n(?:\\n\\t(?! \\\\#\\\\w*\\\\#)\\n\\t(?: [-:\\\\@\\\\w.,~%+_/?=&\\\\#;|!])\\n)+\\n\\n# Don't include trailing punctuation\\n(?<![-.,?:\\\\#;])\"\n        },\n        {\n          \"name\": \"markup.underline.link.mailto.sy\",\n          \"match\": \"(?x) \\\\b\\nmailto: (?:\\n\\t(?! \\\\#\\\\w*\\\\#)\\n\\t(?: [-:@\\\\w.,~%+_/?=&\\\\#;|!])\\n)+\\n(?<![-.,?:\\\\#;])\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/systemverilog.tmLanguage.json",
    "content": "{\n  \"hidden\": true,\n  \"foldingStartMarker\": \"(begin)\\\\s*(//.*)?$\",\n  \"foldingStopMarker\": \"^\\\\s*(begin)$\",\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.systemverilog\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.systemverilog\" }\n          }\n        },\n        {\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.systemverilog\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.comment.systemverilog\" }\n          }\n        }\n      ]\n    },\n    \"all-types\": {\n      \"patterns\": [\n        { \"include\": \"#storage-type-systemverilog\" },\n        { \"include\": \"#storage-modifier-systemverilog\" }\n      ]\n    },\n    \"storage-scope-systemverilog\": {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)(::)\",\n      \"name\": \"meta.scope.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"support.type.systemverilog\" },\n        \"2\": { \"name\": \"keyword.operator.scope.systemverilog\" }\n      }\n    },\n    \"ifmodport\": {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\.([a-zA-Z_][a-zA-Z0-9_]*)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.interface.systemverilog\" },\n        \"2\": { \"name\": \"support.modport.systemverilog\" }\n      }\n    },\n    \"functions\": {\n      \"match\": \"\\\\b(\\\\w+)(?=\\\\s*\\\\()\",\n      \"name\": \"support.function.generic.systemverilog\"\n    },\n    \"struct-anonymous\": {\n      \"begin\": \"\\\\s*\\\\b(struct|union)\\\\s*(packed)?\\\\s*\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"keyword.operator.other.systemverilog\" }\n      },\n      \"end\": \"(})\\\\s*([a-zA-Z_]\\\\w*)\\\\s*;\",\n      \"patterns\": [{ \"include\": \"#base-grammar\" }],\n      \"name\": \"meta.struct.anonymous.systemverilog\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"2\": { \"name\": \"keyword.control.systemverilog\" }\n      }\n    },\n    \"module-binding\": {\n      \"begin\": \"\\\\.([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*\\\\(\",\n      \"match\": \"\\\\.([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        { \"include\": \"#constants\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#constants\" },\n        {\n          \"match\": \"\\\\b([a-zA-Z_]\\\\w*)(::)\",\n          \"captures\": {\n            \"1\": { \"name\": \"support.type.scope.systemverilog\" },\n            \"2\": { \"name\": \"keyword.operator.scope.systemverilog\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z_]\\\\w*)(')\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.interface.systemverilog\" },\n            \"2\": { \"name\": \"keyword.operator.cast.systemverilog\" }\n          }\n        },\n        {\n          \"match\": \"\\\\$\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n          \"name\": \"support.function.systemverilog\"\n        },\n        { \"match\": \"\\\\b(virtual)\\\\b\", \"name\": \"keyword.control.systemverilog\" }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.function.port.systemverilog\" }\n      },\n      \"captures\": {\n        \"1\": { \"name\": \"support.function.port.implicit.systemverilog\" }\n      }\n    },\n    \"port-dir\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*\\\\b(output|input|inout|ref)\\\\s+(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)?\\\\s+(?=\\\\[[a-zA-Z0-9_\\\\-\\\\+]*:[a-zA-Z0-9_\\\\-\\\\+]*\\\\]\\\\s+[a-zA-Z_][a-zA-Z0-9_\\\\s]*)\",\n          \"captures\": {\n            \"3\": { \"name\": \"support.type.scope.systemverilog\" },\n            \"1\": { \"name\": \"support.type.systemverilog\" },\n            \"4\": { \"name\": \"keyword.operator.scope.systemverilog\" },\n            \"5\": { \"name\": \"storage.type.interface.systemverilog\" }\n          }\n        },\n        {\n          \"match\": \"\\\\s*\\\\b(output|input|inout|ref)\\\\s+(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)?\\\\s+(?=[a-zA-Z_][a-zA-Z0-9_\\\\s]*)\",\n          \"captures\": {\n            \"3\": { \"name\": \"support.type.scope.systemverilog\" },\n            \"1\": { \"name\": \"support.type.systemverilog\" },\n            \"4\": { \"name\": \"keyword.operator.scope.systemverilog\" },\n            \"5\": { \"name\": \"storage.type.interface.systemverilog\" }\n          }\n        },\n        {\n          \"match\": \"\\\\s*\\\\b(output|input|inout|ref)\\\\b\",\n          \"name\": \"support.type.systemverilog\"\n        }\n      ]\n    },\n    \"storage-type-systemverilog\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*\\\\b(var|wire|tri|tri[01]|supply[01]|wand|triand|wor|trior|trireg|reg|integer|int|longint|shortint|logic|bit|byte|shortreal|string|time|realtime|real|process|void)\\\\b\",\n          \"name\": \"storage.type.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\s*\\\\b(uvm_transaction|uvm_component|uvm_monitor|uvm_driver|uvm_test|uvm_env|uvm_object|uvm_agent|uvm_sequence_base|uvm_sequence|uvm_sequence_item|uvm_sequence_state|uvm_sequencer|uvm_sequencer_base|uvm_component_registry|uvm_analysis_imp|uvm_analysis_port|uvm_analysis_export|uvm_config_db|uvm_active_passive_enum|uvm_phase|uvm_verbosity|uvm_tlm_analysis_fifo|uvm_tlm_fifo|uvm_report_server|uvm_objection|uvm_recorder|uvm_domain|uvm_reg_field|uvm_reg|uvm_reg_block|uvm_bitstream_t|uvm_radix_enum|uvm_printer|uvm_packer|uvm_comparer|uvm_scope_stack)\\\\b\",\n          \"name\": \"storage.type.uvm.systemverilog\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\b\\\\d+)?'(s?[bB]\\\\s*[0-1xXzZ?][0-1_xXzZ?]*|s?[oO]\\\\s*[0-7xXzZ?][0-7_xXzZ?]*|s?[dD]\\\\s*[0-9xXzZ?][0-9_xXzZ?]*|s?[hH]\\\\s*[0-9a-fA-FxXzZ?][0-9a-fA-F_xXzZ?]*)((e|E)(\\\\+|-)?[0-9]+)?(?!'|\\\\w)\",\n          \"name\": \"constant.numeric.systemverilog\"\n        },\n        { \"match\": \"'[01xXzZ]\", \"name\": \"constant.numeric.bit.systemverilog\" },\n        {\n          \"match\": \"\\\\b((\\\\d[\\\\d_]*)(e|E)(\\\\+|-)?[0-9]+)\\\\b\",\n          \"name\": \"constant.numeric.exp.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d[\\\\d_]*)\\\\b\",\n          \"name\": \"constant.numeric.decimal.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d+(fs|ps|ns|us|ms|s)?)\\\\b\",\n          \"name\": \"constant.numeric.time.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\b([A-Z][A-Z0-9_]*)\\\\b\",\n          \"name\": \"constant.other.net.systemverilog\"\n        },\n        {\n          \"match\": \"(`ifdef|`ifndef|`default_nettype)\\\\s+(\\\\w+)\",\n          \"captures\": {\n            \"1\": { \"name\": \"constant.other.preprocessor.systemverilog\" },\n            \"2\": { \"name\": \"support.variable.systemverilog\" }\n          }\n        },\n        {\n          \"match\": \"`(celldefine|else|elsif|endcelldefine|endif|include|line|nounconnected_drive|resetall|timescale|unconnected_drive|undef|begin_\\\\w+|end_\\\\w+|remove_\\\\w+|restore_\\\\w+)\\\\b\",\n          \"name\": \"constant.other.preprocessor.systemverilog\"\n        },\n        {\n          \"match\": \"`\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n          \"name\": \"constant.other.define.systemverilog\"\n        },\n        { \"match\": \"\\\\b(null)\\\\b\", \"name\": \"support.constant.systemverilog\" }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.systemverilog\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.systemverilog\"\n            },\n            {\n              \"match\": \"(?x)%\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\d+\\\\$)?                             # field (argument #)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[#0\\\\- +']*                           # flags\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[,;:_]?                              # separator character (AltiVec)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?              # minimum field width\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?         # precision\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[bdiouxXhHDOUeEfFgGaACcSspnmt%]      # conversion type\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"name\": \"constant.other.placeholder.systemverilog\"\n            },\n            {\n              \"match\": \"%\",\n              \"name\": \"invalid.illegal.placeholder.systemverilog\"\n            }\n          ],\n          \"name\": \"string.quoted.double.systemverilog\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.systemverilog\" }\n          }\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(=|==|===|!=|!==|<=|>=|<|>)\",\n          \"name\": \"keyword.operator.comparison.systemverilog\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.systemverilog\"\n        },\n        {\n          \"match\": \"(!|&&|\\\\|\\\\||\\\\bor\\\\b)\",\n          \"name\": \"keyword.operator.logical.systemverilog\"\n        },\n        {\n          \"match\": \"(&|\\\\||\\\\^|~|{|'{|}|<<|>>|\\\\?|:)\",\n          \"name\": \"keyword.operator.bitwise.systemverilog\"\n        },\n        { \"match\": \"(#|@)\", \"name\": \"keyword.operator.other.systemverilog\" }\n      ]\n    },\n    \"base-grammar\": {\n      \"patterns\": [\n        { \"include\": \"#all-types\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#constants\" },\n        { \"include\": \"#strings\" },\n        {\n          \"match\": \"^\\\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\\\s+[a-zA-Z_][a-zA-Z0-9_,=\\\\s]*\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.interface.systemverilog\" }\n          }\n        },\n        { \"include\": \"#storage-scope-systemverilog\" }\n      ]\n    },\n    \"storage-modifier-systemverilog\": {\n      \"match\": \"\\\\b(signed|unsigned|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\\\\b\",\n      \"name\": \"storage.modifier.systemverilog\"\n    },\n    \"module-param\": {\n      \"begin\": \"(#)\\\\s*\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#constants\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#module-binding\" },\n        { \"match\": \"\\\\b(virtual)\\\\b\", \"name\": \"keyword.control.systemverilog\" }\n      ],\n      \"name\": \"meta.module-param.systemverilog\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.operator.param.systemverilog\" }\n      }\n    }\n  },\n  \"fileTypes\": [\"sv\", \"SV\", \"v\", \"V\", \"svh\", \"SVH\", \"vh\", \"VH\"],\n  \"uuid\": \"789be04c-8b74-352e-8f37-63d336001277\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\s*\\\\b(function|task)\\\\b(\\\\s+automatic)?\",\n      \"end\": \";\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*\\\\s+)?([a-zA-Z_][a-zA-Z0-9_:]*)\\\\s*(?=\\\\(|;)\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.systemverilog\" },\n            \"2\": { \"name\": \"entity.name.function.systemverilog\" }\n          }\n        },\n        { \"include\": \"#port-dir\" },\n        { \"include\": \"#base-grammar\" }\n      ],\n      \"name\": \"meta.function.systemverilog\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"2\": { \"name\": \"keyword.control.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(task)\\\\s+(automatic)?\\\\s*(\\\\w+)\\\\s*;\",\n      \"name\": \"meta.task.simple.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"2\": { \"name\": \"keyword.control.systemverilog\" },\n        \"3\": { \"name\": \"entity.name.function.systemverilog\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\s*\\\\b(typedef\\\\s+(struct|enum|union)\\\\b)\\\\s*(packed)?\\\\s*([a-zA-Z_][a-zA-Z0-9_]*)?\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"keyword.operator.other.systemverilog\" },\n        \"2\": { \"name\": \"entity.name.function.systemverilog\" }\n      },\n      \"end\": \"(})\\\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*;\",\n      \"patterns\": [\n        { \"include\": \"#struct-anonymous\" },\n        { \"include\": \"#base-grammar\" }\n      ],\n      \"name\": \"meta.typedef.struct.systemverilog\",\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"keyword.control.systemverilog\" },\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"4\": { \"name\": \"storage.type.systemverilog\" },\n        \"2\": { \"name\": \"keyword.control.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(typedef\\\\s+class)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*;\",\n      \"name\": \"meta.typedef.class.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"2\": { \"name\": \"entity.name.declaration.systemverilog\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\s*\\\\b(typedef)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"entity.name.function.systemverilog\" } },\n      \"end\": \"([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(?=(\\\\[[a-zA-Z0-9_:\\\\$\\\\-\\\\+]*\\\\])?;)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([a-zA-Z_]\\\\w*)\\\\s*(#)\\\\(\",\n          \"name\": \"meta.typedef.class.systemverilog\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.type.userdefined.systemverilog\" },\n            \"2\": { \"name\": \"keyword.operator.param.systemverilog\" }\n          }\n        },\n        { \"include\": \"#base-grammar\" },\n        { \"include\": \"#module-binding\" }\n      ],\n      \"name\": \"meta.typedef.simple.systemverilog\",\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.control.systemverilog\" } }\n    },\n    {\n      \"begin\": \"\\\\s*(module)\\\\s+\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"endCaptures\": { \"1\": { \"name\": \"entity.name.function.systemverilog\" } },\n      \"end\": \";\",\n      \"patterns\": [\n        { \"include\": \"#port-dir\" },\n        { \"match\": \"\\\\s*(parameter)\", \"name\": \"keyword.other.systemverilog\" },\n        { \"include\": \"#base-grammar\" },\n        { \"include\": \"#ifmodport\" }\n      ],\n      \"name\": \"meta.module.systemverilog\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"2\": { \"name\": \"entity.name.type.module.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(sequence)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\",\n      \"name\": \"meta.sequence.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"2\": { \"name\": \"entity.name.function.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(bind)\\\\s+([a-zA-Z_][a-zA-Z0-9_\\\\.]*)\\\\b\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.systemverilog\" } }\n    },\n    {\n      \"match\": \"\\\\s*(begin|fork)\\\\s*((:)\\\\s*([a-zA-Z_][a-zA-Z0-9_]*))\\\\b\",\n      \"name\": \"meta.definition.systemverilog\",\n      \"captures\": {\n        \"3\": { \"name\": \"keyword.operator.systemverilog\" },\n        \"1\": { \"name\": \"keyword.other.block.systemverilog\" },\n        \"4\": { \"name\": \"entity.name.section.systemverilog\" },\n        \"0\": { \"name\": \"meta.section.begin.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(property)\\\\s+(\\\\w+)\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.sva.systemverilog\" },\n        \"2\": { \"name\": \"entity.name.sva.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(\\\\w+)\\\\s*(:)\\\\s*(assert)\\\\b\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.sva.systemverilog\" },\n        \"2\": { \"name\": \"keyword.operator.systemverilog\" },\n        \"3\": { \"name\": \"keyword.sva.systemverilog\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\s*(//)\\\\s*(psl)\\\\s+((\\\\w+)\\\\s*(:))?\\\\s*(default|assert|assume)\",\n      \"end\": \";\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge)\\\\b\",\n          \"name\": \"keyword.psl.systemverilog\"\n        },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#functions\" },\n        { \"include\": \"#constants\" }\n      ],\n      \"name\": \"meta.psl.systemverilog\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"comment.line.double-slash.systemverilog\" },\n        \"6\": { \"name\": \"keyword.psl.systemverilog\" },\n        \"4\": { \"name\": \"entity.psl.name.systemverilog\" },\n        \"2\": { \"name\": \"keyword.psl.systemverilog\" },\n        \"0\": { \"name\": \"meta.psl.systemverilog\" },\n        \"5\": { \"name\": \"keyword.operator.systemverilog\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\s*(/\\\\*)\\\\s*(psl)\",\n      \"endCaptures\": { \"1\": { \"name\": \"comment.block.systemverilog\" } },\n      \"end\": \"(\\\\*/)\",\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*((\\\\w+)\\\\s*(:))?\\\\s*(default|assert|assume)\",\n          \"captures\": {\n            \"3\": { \"name\": \"keyword.operator.systemverilog\" },\n            \"4\": { \"name\": \"keyword.psl.systemverilog\" },\n            \"2\": { \"name\": \"entity.psl.name.systemverilog\" },\n            \"0\": { \"name\": \"meta.psl.systemverilog\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b(property)\\\\s+(\\\\w+)\",\n          \"captures\": {\n            \"1\": { \"name\": \"keyword.psl.systemverilog\" },\n            \"2\": { \"name\": \"entity.psl.name.systemverilog\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge|negedge)\\\\b\",\n          \"name\": \"keyword.psl.systemverilog\"\n        },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#functions\" },\n        { \"include\": \"#constants\" }\n      ],\n      \"name\": \"meta.psl.systemverilog\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"meta.psl.systemverilog\" },\n        \"1\": { \"name\": \"comment.block.systemverilog\" },\n        \"2\": { \"name\": \"keyword.psl.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(automatic|cell|config|deassign|defparam|design|disable|edge|endconfig|endgenerate|endspecify|endtable|event|generate|genvar|ifnone|incdir|instance|liblist|library|macromodule|negedge|noshowcancelled|posedge|pulsestyle_onevent|pulsestyle_ondetect|scalared|showcancelled|specify|specparam|table|use|vectored)\\\\b\",\n      \"captures\": { \"1\": { \"name\": \"keyword.other.systemverilog\" } }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(initial|always|wait|force|release|assign|always_comb|always_ff|always_latch|forever|repeat|while|for|if|iff|else|case|casex|casez|default|endcase|return|break|continue|do|foreach|with|inside|dist|clocking|cover|coverpoint|property|bins|binsof|illegal_bins|ignore_bins|randcase|modport|matches|solve|static|assert|assume|before|expect|cross|ref|first_match|srandom|struct|packed|final|chandle|alias|tagged|extern|throughout|timeprecision|timeunit|priority|type|union|uwire|wait_order|triggered|randsequence|import|export|context|pure|intersect|wildcard|within|new|typedef|enum|this|super|begin|fork|forkjoin|unique|unique0|priority)\\\\b\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.systemverilog\" } }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(end|endtask|endmodule|endfunction|endprimitive|endclass|endpackage|endsequence|endprogram|endclocking|endproperty|endgroup|endinterface|join|join_any|join_none)\\\\b(\\\\s*(:)\\\\s*(\\\\w+))?\",\n      \"name\": \"meta.object.end.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"3\": { \"name\": \"keyword.operator.systemverilog\" },\n        \"4\": { \"name\": \"entity.label.systemverilog\" }\n      }\n    },\n    { \"match\": \"\\\\b(std)\\\\b::\", \"name\": \"support.class.systemverilog\" },\n    {\n      \"match\": \"^\\\\s*(`define)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\",\n      \"name\": \"meta.define.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"constant.other.define.systemverilog\" },\n        \"2\": { \"name\": \"entity.name.type.define.systemverilog\" }\n      }\n    },\n    { \"include\": \"#comments\" },\n    {\n      \"match\": \"\\\\s*(primitive|package|constraint|interface|covergroup|program)\\\\s+\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"meta.definition.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"2\": { \"name\": \"entity.name.type.class.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"(([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(:))?\\\\s*(coverpoint|cross)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\",\n      \"name\": \"meta.definition.systemverilog\",\n      \"captures\": {\n        \"2\": { \"name\": \"entity.name.type.class.systemverilog\" },\n        \"3\": { \"name\": \"keyword.operator.other.systemverilog\" },\n        \"4\": { \"name\": \"keyword.control.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(virtual\\\\s+)?(class)\\\\s+\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"meta.definition.class.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"2\": { \"name\": \"keyword.control.systemverilog\" },\n        \"3\": { \"name\": \"entity.name.type.class.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(extends)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"meta.definition.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.control.systemverilog\" },\n        \"2\": { \"name\": \"entity.other.inherited-class.systemverilog\" }\n      }\n    },\n    { \"include\": \"#all-types\" },\n    { \"include\": \"#operators\" },\n    { \"include\": \"#port-dir\" },\n    {\n      \"match\": \"\\\\b(and|nand|nor|or|xor|xnor|buf|not|bufif[01]|notif[01]|r?[npc]mos|tran|r?tranif[01]|pullup|pulldown)\\\\b\",\n      \"name\": \"support.type.systemverilog\"\n    },\n    { \"include\": \"#strings\" },\n    {\n      \"match\": \"\\\\$\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"support.function.systemverilog\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)(')(?=\\\\()\",\n      \"name\": \"meta.cast.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"storage.type.systemverilog\" },\n        \"2\": { \"name\": \"keyword.operator.cast.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(localparam|parameter)\\\\s+([A-Z_][A-Z0-9_]*)\\\\b\\\\s*(?=(=))\",\n      \"name\": \"meta.param.systemverilog\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.systemverilog\" },\n        \"2\": { \"name\": \"constant.other.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(localparam|parameter)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\\\\s*(?=(=))\",\n      \"name\": \"meta.param.systemverilog\",\n      \"captures\": { \"1\": { \"name\": \"keyword.other.systemverilog\" } }\n    },\n    {\n      \"match\": \"^\\\\s*(local\\\\s+|protected\\\\s+|localparam\\\\s+|parameter\\\\s+)?(const\\\\s+|virtual\\\\s+)?(rand\\\\s+|randc\\\\s+)?(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\\\\s*(?=(#\\\\s*\\\\([\\\\w,]+\\\\)\\\\s*)?([a-zA-Z][a-zA-Z0-9_\\\\s\\\\[\\\\]']*)(;|,|=|'\\\\{))\",\n      \"name\": \"meta.userdefined.systemverilog\",\n      \"captures\": {\n        \"3\": { \"name\": \"storage.type.rand.systemverilog\" },\n        \"1\": { \"name\": \"keyword.other.systemverilog\" },\n        \"6\": { \"name\": \"keyword.operator.scope.systemverilog\" },\n        \"2\": { \"name\": \"keyword.other.systemverilog\" },\n        \"7\": { \"name\": \"storage.type.userdefined.systemverilog\" },\n        \"5\": { \"name\": \"support.type.scope.systemverilog\" }\n      }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(option)\\\\.\",\n      \"captures\": { \"1\": { \"name\": \"keyword.cover.systemverilog\" } }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(local|const|protected|virtual|localparam|parameter)\\\\b\",\n      \"captures\": { \"1\": { \"name\": \"keyword.other.systemverilog\" } }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(rand|randc)\\\\b\",\n      \"name\": \"storage.type.rand.systemverilog\"\n    },\n    {\n      \"begin\": \"^(\\\\s*(bind)\\\\s+([a-zA-Z_][\\\\w\\\\.]*))?\\\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(?=#[^#])\",\n      \"end\": \"(?=;|=|:)\",\n      \"patterns\": [\n        { \"include\": \"#module-binding\" },\n        { \"include\": \"#module-param\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#constants\" },\n        { \"include\": \"#strings\" },\n        {\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b(?=\\\\s*(\\\\(|$))\",\n          \"name\": \"entity.name.type.module.systemverilog\"\n        }\n      ],\n      \"name\": \"meta.module.inst.param.systemverilog\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"keyword.control.systemverilog\" },\n        \"4\": { \"name\": \"storage.module.systemverilog\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\s+(?!intersect|and|or|throughout|within)([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(\\\\[(\\\\d+)(\\\\:(\\\\d+))?\\\\])?\\\\s*(\\\\(|$)\",\n      \"end\": \";\",\n      \"patterns\": [\n        { \"include\": \"#module-binding\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#constants\" }\n      ],\n      \"name\": \"meta.module.inst.systemverilog\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"storage.module.systemverilog\" },\n        \"6\": { \"name\": \"constant.numeric.systemverilog\" },\n        \"4\": { \"name\": \"constant.numeric.systemverilog\" },\n        \"2\": { \"name\": \"entity.name.type.module.systemverilog\" }\n      }\n    },\n    {\n      \"begin\": \"\\\\b\\\\s+(<?=)\\\\s*(\\\\'{)\",\n      \"end\": \";\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(\\\\w+)\\\\s*(:)(?!:)\",\n          \"captures\": {\n            \"1\": { \"name\": \"support.function.field.systemverilog\" },\n            \"2\": { \"name\": \"keyword.operator.other.systemverilog\" }\n          }\n        },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#constants\" },\n        { \"include\": \"#storage-scope-systemverilog\" }\n      ],\n      \"name\": \"meta.struct.assign.systemverilog\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.operator.other.systemverilog\" },\n        \"2\": { \"name\": \"keyword.operator.other.systemverilog\" },\n        \"3\": { \"name\": \"keyword.operator.other.systemverilog\" }\n      }\n    },\n    { \"include\": \"#storage-scope-systemverilog\" },\n    { \"include\": \"#functions\" },\n    { \"include\": \"#constants\" }\n  ],\n  \"name\": \"SystemVerilog\",\n  \"scopeName\": \"source.systemverilog\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/tcl.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"^\\\\s*\\\\}\",\n  \"foldingStartMarker\": \"\\\\{\\\\s*$\",\n  \"repository\": {\n    \"braces\": {\n      \"begin\": \"(?:^|(?<=\\\\s))\\\\{\",\n      \"endCaptures\": { \"1\": { \"name\": \"invalid.illegal.tcl\" } },\n      \"end\": \"\\\\}([^\\\\s\\\\]]*)\",\n      \"comment\": \"matches a single brace-enclosed word\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\[{}\\\\n]\", \"name\": \"constant.character.escape.tcl\" },\n        { \"include\": \"#inner-braces\" }\n      ]\n    },\n    \"escape\": {\n      \"match\": \"\\\\\\\\(\\\\d{1,3}|x[a-fA-F0-9]+|u[a-fA-F0-9]{1,4}|.|\\\\n)\",\n      \"name\": \"constant.character.escape.tcl\"\n    },\n    \"regexp\": {\n      \"begin\": \"(?=\\\\S)(?![\\\\n;\\\\]])\",\n      \"end\": \"(?=[\\\\n;\\\\]])\",\n      \"comment\": \"matches a single word, named as a regexp, then swallows the rest of the command\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=[^ \\\\t\\\\n;])\",\n          \"end\": \"(?=[ \\\\t\\\\n;])\",\n          \"patterns\": [\n            { \"include\": \"#braces\" },\n            { \"include\": \"#bare-string\" },\n            { \"include\": \"#escape\" },\n            { \"include\": \"#variable\" }\n          ],\n          \"name\": \"string.regexp.tcl\"\n        },\n        {\n          \"begin\": \"[ \\\\t]\",\n          \"end\": \"(?=[\\\\n;\\\\]])\",\n          \"comment\": \"swallow the rest of the command\",\n          \"patterns\": [\n            { \"include\": \"#variable\" },\n            { \"include\": \"#embedded\" },\n            { \"include\": \"#escape\" },\n            { \"include\": \"#braces\" },\n            { \"include\": \"#string\" }\n          ]\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"(?:^|(?<=\\\\s))(?=\\\")\",\n      \"applyEndPatternLast\": 1,\n      \"end\": \"\",\n      \"comment\": \"matches a single quote-enclosed word with scoping\",\n      \"name\": \"string.quoted.double.tcl\",\n      \"patterns\": [{ \"include\": \"#bare-string\" }]\n    },\n    \"operator\": {\n      \"match\": \"(?<= |\\\\d)(-|\\\\+|~|&{1,2}|\\\\|{1,2}|<{1,2}|>{1,2}|\\\\*{1,2}|!|%|\\\\/|<=|>=|={1,2}|!=|\\\\^)(?= |\\\\d)\",\n      \"name\": \"keyword.operator.tcl\"\n    },\n    \"embedded\": {\n      \"begin\": \"\\\\[\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.end.tcl\" }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [{ \"include\": \"source.tcl\" }],\n      \"name\": \"source.tcl.embedded\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.begin.tcl\" }\n      }\n    },\n    \"variable\": {\n      \"match\": \"(\\\\$)((?:[a-zA-Z0-9_]|::)+(\\\\([^\\\\)]+\\\\))?|\\\\{[^\\\\}]*\\\\})\",\n      \"name\": \"support.function.tcl\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.tcl\" } }\n    },\n    \"numeric\": {\n      \"match\": \"(?<![a-zA-Z])([+-]?([0-9]*[.])?[0-9]+f?)(?![\\\\.a-zA-Z])\",\n      \"name\": \"constant.numeric.tcl\"\n    },\n    \"bare-string\": {\n      \"begin\": \"(?:^|(?<=\\\\s))\\\"\",\n      \"endCaptures\": { \"1\": { \"name\": \"invalid.illegal.tcl\" } },\n      \"end\": \"\\\"([^\\\\s\\\\]]*)\",\n      \"comment\": \"matches a single quote-enclosed word without scoping\",\n      \"patterns\": [{ \"include\": \"#escape\" }, { \"include\": \"#variable\" }]\n    },\n    \"inner-braces\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"comment\": \"matches a nested brace in a brace-enclosed word\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\[{}\\\\n]\", \"name\": \"constant.character.escape.tcl\" },\n        { \"include\": \"#inner-braces\" }\n      ]\n    }\n  },\n  \"keyEquivalent\": \"^~T\",\n  \"fileTypes\": [\"tcl\"],\n  \"uuid\": \"62E11136-D9E5-461C-BE98-54E3A2A9E5E3\",\n  \"patterns\": [\n    {\n      \"begin\": \"(?<=^|;)\\\\s*((#))\",\n      \"end\": \"\\\\n\",\n      \"patterns\": [{ \"match\": \"(\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n)\" }],\n      \"contentName\": \"comment.line.number-sign.tcl\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"comment.line.number-sign.tcl\" },\n        \"2\": { \"name\": \"punctuation.definition.comment.tcl\" }\n      }\n    },\n    {\n      \"match\": \"(?<=^|[\\\\[{;])\\\\s*(if|while|for|catch|default|return|break|continue|switch|exit|foreach|try|throw)\\\\b\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.tcl\" } }\n    },\n    {\n      \"match\": \"(?<=^|})\\\\s*(then|elseif|else)\\\\b\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.tcl\" } }\n    },\n    {\n      \"match\": \"(?<=^|{)\\\\s*(proc)\\\\s+([^\\\\s]+)\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.tcl\" },\n        \"2\": { \"name\": \"entity.name.function.tcl\" }\n      }\n    },\n    {\n      \"match\": \"(?<=^|[\\\\[{;])\\\\s*(after|append|array|auto_execok|auto_import|auto_load|auto_mkindex|auto_mkindex_old|auto_qualify|auto_reset|bgerror|binary|cd|clock|close|concat|dde|encoding|eof|error|eval|exec|expr|fblocked|fconfigure|fcopy|file|fileevent|filename|flush|format|gets|glob|global|history|http|incr|info|interp|join|lappend|library|lindex|linsert|list|llength|load|lrange|lreplace|lsearch|lset|lsort|memory|msgcat|namespace|open|package|parray|pid|pkg::create|pkg_mkIndex|proc|puts|pwd|re_syntax|read|registry|rename|resource|scan|seek|set|socket|SafeBase|source|split|string|subst|Tcl|tcl_endOfWord|tcl_findLibrary|tcl_startOfNextWord|tcl_startOfPreviousWord|tcl_wordBreakAfter|tcl_wordBreakBefore|tcltest|tclvars|tell|time|trace|unknown|unset|update|uplevel|upvar|variable|vwait)\\\\b\",\n      \"captures\": { \"1\": { \"name\": \"keyword.other.tcl\" } }\n    },\n    {\n      \"begin\": \"(?<=^|[\\\\[{;])\\\\s*(regexp|regsub)\\\\b\\\\s*\",\n      \"end\": \"[\\\\n;\\\\]]\",\n      \"comment\": \"special-case regexp/regsub keyword in order to handle the expression\",\n      \"patterns\": [\n        { \"match\": \"\\\\\\\\(?:.|\\\\n)\", \"name\": \"constant.character.escape.tcl\" },\n        { \"comment\": \"switch for regexp\", \"match\": \"-\\\\w+\\\\s*\" },\n        {\n          \"begin\": \"--\\\\s*\",\n          \"applyEndPatternLast\": 1,\n          \"end\": \"\",\n          \"comment\": \"end of switches\",\n          \"patterns\": [{ \"include\": \"#regexp\" }]\n        },\n        { \"include\": \"#regexp\" }\n      ],\n      \"beginCaptures\": { \"1\": { \"name\": \"keyword.other.tcl\" } }\n    },\n    { \"include\": \"#escape\" },\n    { \"include\": \"#variable\" },\n    { \"include\": \"#operator\" },\n    { \"include\": \"#numeric\" },\n    {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.tcl\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"include\": \"#escape\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#embedded\" }\n      ],\n      \"name\": \"string.quoted.double.tcl\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.tcl\" }\n      }\n    }\n  ],\n  \"name\": \"Tcl\",\n  \"scopeName\": \"source.tcl\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/terraform.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.terraform\",\n  \"fileTypes\": [\"tf\", \"tfvars\", \"hcl\"],\n  \"patterns\": [\n    { \"include\": \"#comments\" },\n    { \"include\": \"#top_level_attribute_definition\" },\n    { \"include\": \"#imports\" },\n    { \"include\": \"#block\" },\n    { \"include\": \"#expressions\" }\n  ],\n  \"repository\": {\n    \"imports\": {\n      \"begin\": \"\\\\s*(terraform)\\\\s*(import)\\\\s*\",\n      \"end\": \"$\\\\n?\",\n      \"comment\": \"Terraform imports\",\n      \"patterns\": [\n        { \"include\": \"#string_literals\" },\n        {\n          \"comment\": \"Identifier label\",\n          \"match\": \"\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b\",\n          \"name\": \"entity.name.label.terraform\"\n        },\n        { \"include\": \"#numeric_literals\" },\n        { \"include\": \"#attribute_access\" }\n      ],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"support.constant.terraform\" },\n        \"2\": { \"name\": \"keyword.control.import.terraform\" }\n      }\n    },\n    \"main\": {\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#block\" },\n        { \"include\": \"#expressions\" }\n      ]\n    },\n    \"comma\": {\n      \"comment\": \"Commas - used in certain expressions\",\n      \"match\": \"\\\\,\",\n      \"name\": \"punctuation.separator.terraform\"\n    },\n    \"block_comments\": {\n      \"begin\": \"/\\\\*\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.comment.terraform\" }\n      },\n      \"end\": \"\\\\*/\",\n      \"comment\": \"Block comments\",\n      \"name\": \"comment.block.terraform\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.comment.terraform\" }\n      }\n    },\n    \"object_key_values\": {\n      \"patterns\": [{ \"include\": \"#comments\" }, { \"include\": \"#expressions\" }]\n    },\n    \"string_literals\": {\n      \"end\": \"\\\"\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.terraform\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#string_interpolation\" },\n        {\n          \"comment\": \"Character Escapes\",\n          \"match\": \"\\\\\\\\[nrt\\\"\\\\\\\\]|\\\\\\\\u(\\\\h{8}|\\\\h{4})\",\n          \"name\": \"constant.character.escape.terraform\"\n        }\n      ],\n      \"comment\": \"Strings\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.terraform\" }\n      },\n      \"name\": \"string.quoted.double.terraform\"\n    },\n    \"tuple_for_expression\": {\n      \"begin\": \"\\\\bfor\\\\b\",\n      \"end\": \"(?=\\\\])\",\n      \"comment\": \"Tuple for-expression\",\n      \"patterns\": [\n        { \"match\": \"\\\\bin\\\\b\", \"name\": \"keyword.operator.word.terraform\" },\n        {\n          \"match\": \"\\\\bif\\\\b\",\n          \"name\": \"keyword.control.conditional.terraform\"\n        },\n        { \"match\": \"\\\\:\", \"name\": \"keyword.operator.terraform\" },\n        { \"include\": \"#expressions\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#comma\" },\n        {\n          \"comment\": \"Local Identifiers\",\n          \"match\": \"\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b\",\n          \"name\": \"variable.other.readwrite.terraform\"\n        }\n      ],\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.control.terraform\" } }\n    },\n    \"block\": {\n      \"begin\": \"(\\\\b(resource|provider|variable|output|locals|module|data|terraform)\\\\b|(\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b))(?=[\\\\s\\\\\\\"\\\\-[:word:]]*(\\\\{))\",\n      \"end\": \"(?=\\\\{)\",\n      \"comment\": \"Blocks\",\n      \"name\": \"meta.type.terraform\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"storage.type.terraform\" },\n        \"3\": { \"name\": \"entity.name.type.terraform\" }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.terraform\" }\n          },\n          \"end\": \"\\\\\\\"\",\n          \"comment\": \"String literal label\",\n          \"name\": \"string.quoted.double.terraform\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.terraform\" }\n          }\n        },\n        {\n          \"comment\": \"Identifer label\",\n          \"match\": \"\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b\",\n          \"name\": \"entity.name.label.terraform\"\n        }\n      ]\n    },\n    \"objects\": {\n      \"end\": \"\\\\}\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.braces.begin.terraform\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#object_for_expression\" },\n        { \"include\": \"#comments\" },\n        {\n          \"begin\": \"\\\\s*(\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b)\\\\s*(\\\\=)\\\\s*\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.separator.terraform\" },\n            \"3\": { \"name\": \"punctuation.section.braces.end.terraform\" }\n          },\n          \"end\": \"((\\\\,)|($\\\\n?)|(?=\\\\}))\",\n          \"comment\": \"Literal, named object key\",\n          \"patterns\": [{ \"include\": \"#object_key_values\" }],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.mapping.key.terraform string.unquoted.terraform\"\n            },\n            \"2\": { \"name\": \"keyword.operator.terraform\" }\n          }\n        },\n        {\n          \"begin\": \"((\\\\\\\").*(\\\\\\\"))\\\\s*(\\\\=)\\\\s*\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.separator.terraform\" },\n            \"3\": { \"name\": \"punctuation.section.braces.end.terraform\" }\n          },\n          \"end\": \"((\\\\,)|($\\\\n?)|(?=\\\\}))\",\n          \"comment\": \"String object key\",\n          \"patterns\": [{ \"include\": \"#object_key_values\" }],\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"punctuation.definition.string.end.terraform\" },\n            \"1\": {\n              \"name\": \"meta.mapping.key.terraform string.quoted.double.terraform\"\n            },\n            \"4\": { \"name\": \"keyword.operator.terraform\" },\n            \"2\": { \"name\": \"punctuation.definition.string.begin.terraform\" }\n          }\n        },\n        {\n          \"end\": \"(\\\\))\\\\s*(\\\\=)\\\\s*\",\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.parens.begin.terraform\" }\n          },\n          \"patterns\": [{ \"include\": \"#expressions\" }],\n          \"comment\": \"Begin computed object key\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.section.parens.end.terraform\" },\n            \"2\": { \"name\": \"keyword.operator.terraform\" }\n          },\n          \"name\": \"meta.mapping.key.terraform\"\n        },\n        {\n          \"comment\": \"Random Expression, for matching after computed keys\",\n          \"patterns\": [{ \"include\": \"#main\" }]\n        }\n      ],\n      \"comment\": \"Map collection values\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.braces.end.terraform\" }\n      },\n      \"name\": \"meta.braces.terraform\"\n    },\n    \"top_level_attribute_definition\": {\n      \"match\": \"(\\\\()?(\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b)(\\\\))?\\\\s*(\\\\=[^\\\\=|\\\\>])\\\\s*\",\n      \"comment\": \"Attribute Definition - Identifier \\\"=\\\" Expression Newline\",\n      \"name\": \"variable.declaration.terraform\",\n      \"captures\": {\n        \"3\": { \"name\": \"punctuation.section.parens.end.terraform\" },\n        \"1\": { \"name\": \"punctuation.section.parens.begin.terraform\" },\n        \"4\": { \"name\": \"keyword.operator.assignment.terraform\" },\n        \"2\": { \"name\": \"variable.other.readwrite.terraform\" }\n      }\n    },\n    \"string_interpolation\": {\n      \"end\": \"\\\\}\",\n      \"begin\": \"(\\\\$|\\\\%)\\\\{\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.other.interpolation.begin.terraform\" }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"Trim left whitespace\",\n          \"match\": \"\\\\~\\\\s\",\n          \"name\": \"keyword.operator.template.left.trim.terraform\"\n        },\n        {\n          \"comment\": \"Trim right whitespace\",\n          \"match\": \"\\\\s\\\\~\",\n          \"name\": \"keyword.operator.template.right.trim.terraform\"\n        },\n        {\n          \"comment\": \"if/else/endif and for/in/endfor directives\",\n          \"match\": \"\\\\b(if|else|endif|for|in|endfor)\\\\b\",\n          \"name\": \"keyword.control.terraform\"\n        },\n        { \"include\": \"#expressions\" }\n      ],\n      \"comment\": \"String interpolation\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"keyword.other.interpolation.end.terraform\" }\n      },\n      \"name\": \"meta.interpolation.terraform\"\n    },\n    \"attribute_access\": {\n      \"begin\": \"\\\\.\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"variable.other.member.terraform\" },\n        \"2\": { \"name\": \"keyword.operator.splat.terraform\" },\n        \"3\": { \"name\": \"constant.numeric.integer.terraform\" }\n      },\n      \"end\": \"(\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b)|(\\\\*)|(\\\\d+)\",\n      \"comment\": \"Attribute Access - \\\".\\\" Identifier\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"keyword.operator.accessor.terraform\" }\n      }\n    },\n    \"functions\": {\n      \"end\": \"\\\\)\",\n      \"begin\": \"((abs|ceil|floor|log|max|min|pow|signum|chomp|format|formatlist|indent|join|lower|regex|regexall|replace|split|strrev|substr|title|trimspace|upper|chunklist|coalesce|coalescelist|compact|concat|contains|distinct|element|flatten|index|keys|length|list|lookup|map|matchkeys|merge|range|reverse|setintersection|setproduct|setunion|slice|sort|transpose|values|zipmap|base64decode|base64encode|base64gzip|csvdecode|jsondecode|jsonencode|urlencode|yamldecode|yamlencode|abspath|dirname|pathexpand|basename|file|fileexists|fileset|filebase64|templatefile|formatdate|timeadd|timestamp|base64sha256|base64sha512|bcrypt|filebase64sha256|filebase64sha512|filemd5|filemd1|filesha256|filesha512|md5|rsadecrypt|sha1|sha256|sha512|uuid|uuidv5|cidrhost|cidrnetmask|cidrsubnet|tobool|tolist|tomap|tonumber|toset|tostring)|\\\\b((?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b))(\\\\()\",\n      \"beginCaptures\": {\n        \"2\": { \"name\": \"support.function.builtin.terraform\" },\n        \"3\": { \"name\": \"variable.function.terraform\" },\n        \"4\": { \"name\": \"punctuation.section.parens.begin.terraform\" }\n      },\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#expressions\" },\n        { \"include\": \"#comma\" }\n      ],\n      \"comment\": \"Functions calls- Terraform builtins and unknown\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.parens.end.terraform\" }\n      },\n      \"name\": \"meta.function-call.terraform\"\n    },\n    \"literal_values\": {\n      \"patterns\": [\n        { \"include\": \"#numeric_literals\" },\n        { \"include\": \"#language_constants\" },\n        { \"include\": \"#string_literals\" },\n        { \"include\": \"#heredoc\" },\n        { \"include\": \"#type_keywords\" },\n        { \"include\": \"#named_value_references\" }\n      ]\n    },\n    \"named_value_references\": {\n      \"comment\": \"Terraform built-in variables\",\n      \"match\": \"\\\\b(var|local|module|data|path|terraform)\\\\b\",\n      \"name\": \"support.constant.terraform\"\n    },\n    \"operators\": {\n      \"patterns\": [\n        { \"match\": \"\\\\>\\\\=\", \"name\": \"keyword.operator.terraform\" },\n        { \"match\": \"\\\\<\\\\=\", \"name\": \"keyword.operator.terraform\" },\n        { \"match\": \"\\\\=\\\\=\", \"name\": \"keyword.operator.terraform\" },\n        { \"match\": \"\\\\!\\\\=\", \"name\": \"keyword.operator.terraform\" },\n        { \"match\": \"\\\\+\", \"name\": \"keyword.operator.arithmetic.terraform\" },\n        { \"match\": \"\\\\-\", \"name\": \"keyword.operator.arithmetic.terraform\" },\n        { \"match\": \"\\\\*\", \"name\": \"keyword.operator.arithmetic.terraform\" },\n        { \"match\": \"\\\\/\", \"name\": \"keyword.operator.arithmetic.terraform\" },\n        { \"match\": \"\\\\%\", \"name\": \"keyword.operator.arithmetic.terraform\" },\n        { \"match\": \"\\\\&\\\\&\", \"name\": \"keyword.operator.logical.terraform\" },\n        { \"match\": \"\\\\|\\\\|\", \"name\": \"keyword.operator.logical.terraform\" },\n        { \"match\": \"\\\\!\", \"name\": \"keyword.operator.logical.terraform\" },\n        { \"match\": \"\\\\>\", \"name\": \"keyword.operator.terraform\" },\n        { \"match\": \"\\\\<\", \"name\": \"keyword.operator.terraform\" },\n        { \"match\": \"\\\\?\", \"name\": \"keyword.operator.terraform\" },\n        { \"match\": \"\\\\.\\\\.\\\\.\", \"name\": \"keyword.operator.terraform\" },\n        { \"match\": \"\\\\:\", \"name\": \"keyword.operator.terraform\" }\n      ]\n    },\n    \"heredoc\": {\n      \"end\": \"^\\\\s*\\\\2\\\\s*$\",\n      \"begin\": \"(\\\\<\\\\<\\\\-?)\\\\s*(\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b)\\\\s*$\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"keyword.operator.heredoc.terraform\" },\n        \"2\": { \"name\": \"keyword.control.heredoc.terraform\" }\n      },\n      \"patterns\": [{ \"include\": \"#string_interpolation\" }],\n      \"comment\": \"Heredocs\",\n      \"endCaptures\": { \"0\": { \"name\": \"keyword.control.heredoc.terraform\" } },\n      \"name\": \"string.unquoted.heredoc.terraform\"\n    },\n    \"brackets\": {\n      \"begin\": \"\\\\[\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.brackets.end.terraform\" },\n        \"1\": { \"name\": \"keyword.operator.splat.terraform\" }\n      },\n      \"end\": \"(\\\\*)?\\\\]\",\n      \"comment\": \"Tuples & subscript notation\",\n      \"patterns\": [\n        { \"include\": \"#comma\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#expressions\" },\n        { \"include\": \"#tuple_for_expression\" }\n      ],\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.brackets.begin.terraform\" }\n      }\n    },\n    \"comments\": {\n      \"patterns\": [\n        { \"include\": \"#inline_comments\" },\n        { \"include\": \"#block_comments\" }\n      ]\n    },\n    \"expressions\": {\n      \"patterns\": [\n        { \"include\": \"#literal_values\" },\n        { \"include\": \"#operators\" },\n        { \"include\": \"#brackets\" },\n        { \"include\": \"#objects\" },\n        { \"include\": \"#attribute_access\" },\n        { \"include\": \"#functions\" },\n        { \"include\": \"#parens\" }\n      ]\n    },\n    \"numeric_literals\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b\\\\d+(([Ee][+-]?))\\\\d+\\\\b\",\n          \"comment\": \"Integer, no fraction, optional exponent\",\n          \"name\": \"constant.numeric.float.terraform\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.separator.exponent.terraform\" }\n          }\n        },\n        {\n          \"match\": \"\\\\b\\\\d+(\\\\.)\\\\d+(?:(([Ee][+-]?))\\\\d+)?\\\\b\",\n          \"comment\": \"Integer, fraction, optional exponent\",\n          \"name\": \"constant.numeric.float.terraform\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.separator.decimal.terraform\" },\n            \"2\": { \"name\": \"punctuation.separator.exponent.terraform\" }\n          }\n        },\n        {\n          \"comment\": \"Integers\",\n          \"match\": \"\\\\b\\\\d+\\\\b\",\n          \"name\": \"constant.numeric.integer.terraform\"\n        }\n      ]\n    },\n    \"object_for_expression\": {\n      \"begin\": \"\\\\bfor\\\\b\",\n      \"end\": \"(?=\\\\})\",\n      \"comment\": \"Object for-expression\",\n      \"patterns\": [\n        { \"match\": \"\\\\=\\\\>\", \"name\": \"storage.type.function.terraform\" },\n        { \"match\": \"\\\\bin\\\\b\", \"name\": \"keyword.operator.word.terraform\" },\n        {\n          \"match\": \"\\\\bif\\\\b\",\n          \"name\": \"keyword.control.conditional.terraform\"\n        },\n        { \"match\": \"\\\\:\", \"name\": \"keyword.operator.terraform\" },\n        { \"include\": \"#expressions\" },\n        { \"include\": \"#comments\" },\n        { \"include\": \"#comma\" },\n        {\n          \"comment\": \"Local Identifiers\",\n          \"match\": \"\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b\",\n          \"name\": \"variable.other.readwrite.terraform\"\n        }\n      ],\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.control.terraform\" } }\n    },\n    \"inline_comments\": {\n      \"begin\": \"#|//\",\n      \"end\": \"$\\n?\",\n      \"comment\": \"Inline comments\",\n      \"name\": \"comment.line.terraform\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.comment.terraform\" }\n      }\n    },\n    \"parens\": {\n      \"begin\": \"\\\\(\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.parens.end.terraform\" }\n      },\n      \"end\": \"\\\\)\",\n      \"comment\": \"Parens - matched *after* function syntax\",\n      \"patterns\": [\n        { \"include\": \"#expressions\" },\n        {\n          \"comment\": \"Local Identifiers\",\n          \"match\": \"\\\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\\\b\",\n          \"name\": \"variable.other.readwrite.terraform\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.parens.begin.terraform\" }\n      }\n    },\n    \"type_keywords\": {\n      \"comment\": \"Type keywords known to Terraform.\",\n      \"match\": \"\\\\b(any|string|number|bool)\\\\b\",\n      \"name\": \"storage.type.terraform\"\n    },\n    \"language_constants\": {\n      \"comment\": \"Language Constants\",\n      \"match\": \"\\\\b(true|false|null)\\\\b\",\n      \"name\": \"constant.language.terraform\"\n    }\n  },\n  \"name\": \"Terraform\",\n  \"uuid\": \"9060ca81-906d-4f19-a91a-159f4eb119d6\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/tex.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/TeX.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jlelong/vscode-latex-basics/commit/b98c2d4911652824fc990f4b26c9c30be59b78a2\",\n  \"name\": \"tex\",\n  \"scopeName\": \"text.tex\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.tex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)(backmatter|else|fi|frontmatter|mainmatter|if(case|cat|dim|eof|false|hbox|hmode|inner|mmode|num|odd|true|undefined|vbox|vmode|void|x)?)(?![a-zA-Z@])\",\n      \"name\": \"keyword.control.tex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.catcode.tex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.tex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.key-value.tex\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.category.tex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)catcode)`(?:\\\\\\\\)?.(=)(\\\\d+)\",\n      \"name\": \"meta.catcode.tex\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=%)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.tex\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"%:\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tex\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.percentage.tex\"\n        },\n        {\n          \"begin\": \"^(%!TEX) (\\\\S*) =\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.tex\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.percentage.directive.tex\"\n        },\n        {\n          \"begin\": \"%\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tex\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.percentage.tex\"\n        }\n      ]\n    },\n    {\n      \"match\": \"[\\\\[\\\\]]\",\n      \"name\": \"punctuation.definition.brackets.tex\"\n    },\n    {\n      \"begin\": \"(\\\\$\\\\$|\\\\$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.tex\"\n        }\n      },\n      \"end\": \"(\\\\1)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.tex\"\n        }\n      },\n      \"name\": \"meta.math.block.tex support.class.math.block.tex\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\$\",\n          \"name\": \"constant.character.escape.tex\"\n        },\n        {\n          \"include\": \"#math\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\\\\\\\\\\\\\\",\n      \"name\": \"keyword.control.newline.tex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.function.tex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)(?:[A-Za-z@]+|[,;])\",\n      \"name\": \"support.function.general.tex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.tex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)[^a-zA-Z@]\",\n      \"name\": \"constant.character.escape.tex\"\n    }\n  ],\n  \"repository\": {\n    \"math\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((\\\\\\\\)(?:text|mbox))(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.math.tex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.function.tex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.tex meta.text.normal.tex\"\n            }\n          },\n          \"contentName\": \"meta.text.normal.tex\",\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.tex meta.text.normal.tex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#math\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\\\\\{|\\\\\\\\}\",\n          \"name\": \"punctuation.math.bracket.pair.tex\"\n        },\n        {\n          \"match\": \"\\\\\\\\(left|right|((big|bigg|Big|Bigg)[lr]?))([\\\\(\\\\[\\\\<\\\\>\\\\]\\\\)\\\\.\\\\|]|\\\\\\\\[{}|]|\\\\\\\\[lr]?[Vv]ert|\\\\\\\\[lr]angle|\\\\\\\\\\\\|)\",\n          \"name\": \"punctuation.math.bracket.pair.big.tex\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.math.tex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)(s(s(earrow|warrow|lash)|h(ort(downarrow|uparrow|parallel|leftarrow|rightarrow|mid)|arp)|tar|i(gma|m(eq)?)|u(cc(sim|n(sim|approx)|curlyeq|eq|approx)?|pset(neq(q)?|plus(eq)?|eq(q)?)?|rd|m|bset(neq(q)?|plus(eq)?|eq(q)?)?)|p(hericalangle|adesuit)|e(tminus|arrow)|q(su(pset(eq)?|bset(eq)?)|c(up|ap)|uare)|warrow|m(ile|all(s(etminus|mile)|frown)))|h(slash|ook(leftarrow|rightarrow)|eartsuit|bar)|R(sh|ightarrow|e|bag)|Gam(e|ma)|n(s(hort(parallel|mid)|im|u(cc(eq)?|pseteq(q)?|bseteq))|Rightarrow|n(earrow|warrow)|cong|triangle(left(eq(slant)?)?|right(eq(slant)?)?)|i(plus)?|u|p(lus|arallel|rec(eq)?)|e(q|arrow|g|xists)|v(dash|Dash)|warrow|le(ss|q(slant|q)?|ft(arrow|rightarrow))|a(tural|bla)|VDash|rightarrow|g(tr|eq(slant|q)?)|mid|Left(arrow|rightarrow))|c(hi|irc(eq|le(d(circ|S|dash|ast)|arrow(left|right)))?|o(ng|prod|lon|mplement)|dot(s|p)?|u(p|r(vearrow(left|right)|ly(eq(succ|prec)|vee(downarrow|uparrow)?|wedge(downarrow|uparrow)?)))|enterdot|lubsuit|ap)|Xi|Maps(to(char)?|from(char)?)|B(ox|umpeq|bbk)|t(h(ick(sim|approx)|e(ta|refore))|imes|op|wohead(leftarrow|rightarrow)|a(u|lloblong)|riangle(down|q|left(eq(slant)?)?|right(eq(slant)?)?)?)|i(n(t(er(cal|leave))?|plus|fty)?|ota|math)|S(igma|u(pset|bset))|zeta|o(slash|times|int|dot|plus|vee|wedge|lessthan|greaterthan|m(inus|ega)|b(slash|long|ar))|d(i(v(ideontimes)?|a(g(down|up)|mond(suit)?)|gamma)|o(t(plus|eq(dot)?)|ublebarwedge|wn(harpoon(left|right)|downarrows|arrow))|d(ots|agger)|elta|a(sh(v|leftarrow|rightarrow)|leth|gger))|Y(down|up|left|right)|C(up|ap)|u(n(lhd|rhd)|p(silon|harpoon(left|right)|downarrow|uparrows|lus|arrow)|lcorner|rcorner)|jmath|Theta|Im|p(si|hi|i(tchfork)?|erp|ar(tial|allel)|r(ime|o(d|pto)|ec(sim|n(sim|approx)|curlyeq|eq|approx)?)|m)|e(t(h|a)|psilon|q(slant(less|gtr)|circ|uiv)|ll|xists|mptyset)|Omega|D(iamond|ownarrow|elta)|v(d(ots|ash)|ee(bar)?|Dash|ar(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|curly(vee|wedge)|t(heta|imes|riangle(left|right)?)|o(slash|circle|times|dot|plus|vee|wedge|lessthan|ast|greaterthan|minus|b(slash|ar))|p(hi|i|ropto)|epsilon|kappa|rho|bigcirc))|kappa|Up(silon|downarrow|arrow)|Join|f(orall|lat|a(t(s(emi|lash)|bslash)|llingdotseq)|rown)|P(si|hi|i)|w(p|edge|r)|l(hd|n(sim|eq(q)?|approx)|ceil|times|ightning|o(ng(left(arrow|rightarrow)|rightarrow|maps(to|from))|zenge|oparrow(left|right))|dot(s|p)|e(ss(sim|dot|eq(qgtr|gtr)|approx|gtr)|q(slant|q)?|ft(slice|harpoon(down|up)|threetimes|leftarrows|arrow(t(ail|riangle))?|right(squigarrow|harpoons|arrow(s|triangle|eq)?))|adsto)|vertneqq|floor|l(c(orner|eil)|floor|l|bracket)?|a(ngle|mbda)|rcorner|bag)|a(s(ymp|t)|ngle|pprox(eq)?|l(pha|eph)|rrownot|malg)|V(dash|vdash)|r(h(o|d)|ceil|times|i(singdotseq|ght(s(quigarrow|lice)|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(t(ail|riangle))?|rightarrows))|floor|angle|r(ceil|parenthesis|floor|bracket)|bag)|g(n(sim|eq(q)?|approx)|tr(sim|dot|eq(qless|less)|less|approx)|imel|eq(slant|q)?|vertneqq|amma|g(g)?)|Finv|xi|m(ho|i(nuso|d)|o(o|dels)|u(ltimap)?|p|e(asuredangle|rge)|aps(to|from(char)?))|b(i(n(dnasrepma|ampersand)|g(s(tar|qc(up|ap))|nplus|c(irc|u(p|rly(vee|wedge))|ap)|triangle(down|up)|interleave|o(times|dot|plus)|uplus|parallel|vee|wedge|box))|o(t|wtie|x(slash|circle|times|dot|plus|empty|ast|minus|b(slash|ox|ar)))|u(llet|mpeq)|e(cause|t(h|ween|a))|lack(square|triangle(down|left|right)?|lozenge)|a(ck(s(im(eq)?|lash)|prime|epsilon)|r(o|wedge))|bslash)|L(sh|ong(left(arrow|rightarrow)|rightarrow|maps(to|from))|eft(arrow|rightarrow)|leftarrow|ambda|bag)|Arrownot)(?=\\\\b|_)\",\n          \"name\": \"constant.character.math.tex\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.math.tex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)(sum|prod|coprod|int|oint|bigcap|bigcup|bigsqcup|bigvee|bigwedge|bigodot|bigotimes|bogoplus|biguplus)\\\\b\",\n          \"name\": \"constant.character.math.tex\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.math.tex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)(arccos|arcsin|arctan|arg|cos|cosh|cot|coth|csc|deg|det|dim|exp|gcd|hom|inf|ker|lg|lim|liminf|limsup|ln|log|max|min|pr|sec|sin|sinh|sup|tan|tanh)\\\\b\",\n          \"name\": \"constant.other.math.tex\"\n        },\n        {\n          \"begin\": \"((\\\\\\\\)Sexpr(\\\\{))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.sexpr.math.tex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.function.math.tex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.embedded.begin.math.tex\"\n            }\n          },\n          \"contentName\": \"support.function.sexpr.math.tex\",\n          \"end\": \"(((\\\\})))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.sexpr.math.tex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.end.math.tex\"\n            },\n            \"3\": {\n              \"name\": \"source.r\"\n            }\n          },\n          \"name\": \"meta.embedded.line.r\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"name\": \"source.r\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.r\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.math.tex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)(?!begin\\\\{|verb)([A-Za-z]+)\",\n          \"name\": \"constant.other.general.math.tex\"\n        },\n        {\n          \"match\": \"(?<!\\\\\\\\)\\\\{\",\n          \"name\": \"punctuation.math.begin.bracket.curly.tex\"\n        },\n        {\n          \"match\": \"(?<!\\\\\\\\)\\\\}\",\n          \"name\": \"punctuation.math.end.bracket.curly.tex\"\n        },\n        {\n          \"match\": \"(?<!\\\\\\\\)\\\\(\",\n          \"name\": \"punctuation.math.begin.bracket.round.tex\"\n        },\n        {\n          \"match\": \"(?<!\\\\\\\\)\\\\)\",\n          \"name\": \"punctuation.math.end.bracket.round.tex\"\n        },\n        {\n          \"match\": \"(([0-9]*[\\\\.][0-9]+)|[0-9]+)\",\n          \"name\": \"constant.numeric.math.tex\"\n        },\n        {\n          \"match\": \"[\\\\+\\\\*/_\\\\^-]\",\n          \"name\": \"punctuation.math.operator.tex\"\n        }\n      ]\n    },\n    \"braces\": {\n      \"begin\": \"(?<!\\\\\\\\)\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.group.begin.tex\"\n        }\n      },\n      \"end\": \"(?<!\\\\\\\\)\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.group.end.tex\"\n        }\n      },\n      \"name\": \"meta.group.braces.tex\",\n      \"patterns\": [\n        {\n          \"include\": \"#braces\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/textile.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"textile\"],\n  \"firstLineMatch\": \"textile\",\n  \"repository\": {\n    \"inline\": {\n      \"patterns\": [\n        {\n          \"comment\": \"& is handled automagically by textile, so we match it to avoid text.html.basic from flagging it\",\n          \"match\": \"&(?![A-Za-z0-9]+;)\",\n          \"name\": \"text.html.textile\"\n        },\n        {\n          \"match\": \"^\\\\*+(\\\\([^)]*\\\\)|{[^}]*})*(\\\\s+|$)\",\n          \"name\": \"markup.list.unnumbered.textile\",\n          \"captures\": { \"1\": { \"name\": \"entity.name.type.textile\" } }\n        },\n        {\n          \"match\": \"^#+(\\\\([^)]*\\\\)|{[^}]*})*\\\\s+\",\n          \"name\": \"markup.list.numbered.textile\",\n          \"captures\": { \"1\": { \"name\": \"entity.name.type.textile\" } }\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\"\\t\\t\\t\\t\\t\\t\\t\\t# Start name, etc\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\t\\t\\t\\t\\t\\t\\t# Attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# I swear, this is how the language is defined,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# couldnt make it up if I tried.\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\\\([^)]+\\\\))?(?:\\\\{[^}]+\\\\})?(?:\\\\[[^\\\\]]+\\\\])?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Class, Style, Lang\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?:\\\\{[^}]+\\\\})?(?:\\\\[[^\\\\]]+\\\\])?(?:\\\\([^)]+\\\\))?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Style, Lang, Class\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?:\\\\[[^\\\\]]+\\\\])?(?:\\\\{[^}]+\\\\})?(?:\\\\([^)]+\\\\))?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Lang, Style, Class\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t([^\\\"]+?)\\t\\t\\t\\t\\t# Link name\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s?\\t\\t\\t\\t\\t\\t\\t# Optional whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\\\(([^)]+?)\\\\))?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\":\\t\\t\\t\\t\\t\\t\\t\\t# End name\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\\\w[-\\\\w_]*)\\t\\t\\t\\t\\t\\t# Linkref\\n\\t\\t\\t\\t\\t\\t\\t\\t(?=[^\\\\w\\\\/;]*?(<|\\\\s|$))\\t\\t\\t# Catch closing punctuation\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t#  and end of meta.link\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"meta.link.reference.textile\",\n          \"captures\": {\n            \"1\": { \"name\": \"string.other.link.title.textile\" },\n            \"2\": { \"name\": \"string.other.link.description.title.textile\" },\n            \"3\": { \"name\": \"constant.other.reference.link.textile\" }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\"\\t\\t\\t\\t\\t\\t\\t\\t# Start name, etc\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\t\\t\\t\\t\\t\\t\\t# Attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# I swear, this is how the language is defined,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# couldnt make it up if I tried.\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\\\([^)]+\\\\))?(?:\\\\{[^}]+\\\\})?(?:\\\\[[^\\\\]]+\\\\])?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Class, Style, Lang\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?:\\\\{[^}]+\\\\})?(?:\\\\[[^\\\\]]+\\\\])?(?:\\\\([^)]+\\\\))?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Style, Lang, Class\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?:\\\\[[^\\\\]]+\\\\])?(?:\\\\{[^}]+\\\\})?(?:\\\\([^)]+\\\\))?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Lang, Style, Class\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t([^\\\"]+?)\\t\\t\\t\\t\\t# Link name\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s?\\t\\t\\t\\t\\t\\t\\t# Optional whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\\\(([^)]+?)\\\\))?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\":\\t\\t\\t\\t\\t\\t\\t\\t# End Name\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\\\S*?(?:\\\\w|\\\\/|;))\\t\\t\\t\\t# URL\\n\\t\\t\\t\\t\\t\\t\\t\\t(?=[^\\\\w\\\\/;]*?(<|\\\\s|$))\\t\\t\\t# Catch closing punctuation\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t#  and end of meta.link\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"meta.link.inline.textile\",\n          \"captures\": {\n            \"1\": { \"name\": \"string.other.link.title.textile\" },\n            \"2\": { \"name\": \"string.other.link.description.title.textile\" },\n            \"3\": { \"name\": \"markup.underline.link.textile\" }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\!\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Open image\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\\\<|\\\\=|\\\\>)?\\t\\t\\t\\t\\t\\t\\t\\t# Optional alignment\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t# I swear, this is how the language is defined,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t# couldnt make it up if I tried.\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\\\([^)]+\\\\))?(?:\\\\{[^}]+\\\\})?(?:\\\\[[^\\\\]]+\\\\])?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Class, Style, Lang\\n\\t\\t\\t\\t\\t\\t\\t\\t  | (?:\\\\{[^}]+\\\\})?(?:\\\\[[^\\\\]]+\\\\])?(?:\\\\([^)]+\\\\))?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Style, Lang, Class\\n\\t\\t\\t\\t\\t\\t\\t\\t  | (?:\\\\[[^\\\\]]+\\\\])?(?:\\\\{[^}]+\\\\})?(?:\\\\([^)]+\\\\))?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Lang, Style, Class\\n\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\\\.[ ])?            \\t\\t\\t\\t\\t# Optional\\n\\t\\t\\t\\t\\t\\t\\t\\t([^\\\\s(!]+?)         \\t\\t\\t\\t\\t# Image URL\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\s?                \\t\\t\\t\\t\\t\\t# Optional space\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\\\(((?:[^\\\\(\\\\)]|\\\\([^\\\\)]+\\\\))+?)\\\\))?   \\t# Optional title\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\!\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Close image\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\S*?(?:\\\\w|\\\\/|;))\\t\\t\\t\\t\\t# URL\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?=[^\\\\w\\\\/;]*?(<|\\\\s|$))\\t\\t\\t\\t# Catch closing punctuation\\n\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"meta.image.inline.textile\",\n          \"captures\": {\n            \"2\": { \"name\": \"markup.underline.link.image.textile\" },\n            \"3\": { \"name\": \"string.other.link.description.textile\" },\n            \"4\": { \"name\": \"markup.underline.link.textile\" }\n          }\n        },\n        {\n          \"match\": \"\\\\|(\\\\([^)]*\\\\)|{[^}]*})*(\\\\\\\\\\\\||.)+\\\\|\",\n          \"name\": \"markup.other.table.cell.textile\",\n          \"captures\": { \"1\": { \"name\": \"entity.name.type.textile\" } }\n        },\n        {\n          \"match\": \"\\\\B(\\\\*\\\\*?)((\\\\([^)]*\\\\)|{[^}]*}|\\\\[[^]]+\\\\]){0,3})(\\\\S.*?\\\\S|\\\\S)\\\\1\\\\B\",\n          \"name\": \"markup.bold.textile\",\n          \"captures\": { \"3\": { \"name\": \"entity.name.type.textile\" } }\n        },\n        {\n          \"match\": \"\\\\B-((\\\\([^)]*\\\\)|{[^}]*}|\\\\[[^]]+\\\\]){0,3})(\\\\S.*?\\\\S|\\\\S)-\\\\B\",\n          \"name\": \"markup.deleted.textile\",\n          \"captures\": { \"2\": { \"name\": \"entity.name.type.textile\" } }\n        },\n        {\n          \"match\": \"\\\\B\\\\+((\\\\([^)]*\\\\)|{[^}]*}|\\\\[[^]]+\\\\]){0,3})(\\\\S.*?\\\\S|\\\\S)\\\\+\\\\B\",\n          \"name\": \"markup.inserted.textile\",\n          \"captures\": { \"2\": { \"name\": \"entity.name.type.textile\" } }\n        },\n        {\n          \"match\": \"(?:\\\\b|\\\\s)_((\\\\([^)]*\\\\)|{[^}]*}|\\\\[[^]]+\\\\]){0,3})(\\\\S.*?\\\\S|\\\\S)_(?:\\\\b|\\\\s)\",\n          \"name\": \"markup.italic.textile\",\n          \"captures\": { \"2\": { \"name\": \"entity.name.type.textile\" } }\n        },\n        {\n          \"match\": \"\\\\B([@\\\\^~%]|\\\\?\\\\?)((\\\\([^)]*\\\\)|{[^}]*}|\\\\[[^]]+\\\\]){0,3})(\\\\S.*?\\\\S|\\\\S)\\\\1\",\n          \"name\": \"markup.italic.phrasemodifiers.textile\",\n          \"captures\": { \"3\": { \"name\": \"entity.name.type.textile\" } }\n        },\n        {\n          \"comment\": \"Footnotes\",\n          \"match\": \"(?<!w)\\\\[[0-9+]\\\\]\",\n          \"name\": \"entity.name.tag.textile\"\n        }\n      ]\n    }\n  },\n  \"keyEquivalent\": \"^~T\",\n  \"uuid\": \"68F0B1A5-3274-4E85-8B3A-A481C5F5B194\",\n  \"patterns\": [\n    {\n      \"begin\": \"(^h[1-6]([<>=()]+)?)(\\\\([^)]*\\\\)|{[^}]*})*(\\\\.)\",\n      \"end\": \"^$\",\n      \"patterns\": [{ \"include\": \"#inline\" }, { \"include\": \"text.html.basic\" }],\n      \"name\": \"markup.heading.textile\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.heading.textile\" },\n        \"3\": { \"name\": \"entity.name.type.textile\" },\n        \"4\": { \"name\": \"entity.name.tag.heading.textile\" }\n      }\n    },\n    {\n      \"begin\": \"(^bq([<>=()]+)?)(\\\\([^)]*\\\\)|{[^}]*})*(\\\\.)\",\n      \"end\": \"^$\",\n      \"patterns\": [{ \"include\": \"#inline\" }, { \"include\": \"text.html.basic\" }],\n      \"name\": \"markup.quote.textile\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.blockquote.textile\" },\n        \"3\": { \"name\": \"entity.name.type.textile\" },\n        \"4\": { \"name\": \"entity.name.tag.blockquote.textile\" }\n      }\n    },\n    {\n      \"begin\": \"(^fn[0-9]+([<>=()]+)?)(\\\\([^)]*\\\\)|{[^}]*})*(\\\\.)\",\n      \"end\": \"^$\",\n      \"patterns\": [{ \"include\": \"#inline\" }, { \"include\": \"text.html.basic\" }],\n      \"name\": \"markup.other.footnote.textile\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.footnote.textile\" },\n        \"3\": { \"name\": \"entity.name.type.textile\" },\n        \"4\": { \"name\": \"entity.name.tag.footnote.textile\" }\n      }\n    },\n    {\n      \"begin\": \"(^table([<>=()]+)?)(\\\\([^)]*\\\\)|{[^}]*})*(\\\\.)\",\n      \"end\": \"^$\",\n      \"patterns\": [{ \"include\": \"#inline\" }, { \"include\": \"text.html.basic\" }],\n      \"name\": \"markup.other.table.textile\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.name.tag.footnote.textile\" },\n        \"3\": { \"name\": \"entity.name.type.textile\" },\n        \"4\": { \"name\": \"entity.name.tag.footnote.textile\" }\n      }\n    },\n    {\n      \"begin\": \"^(?=\\\\S)\",\n      \"end\": \"^$\",\n      \"patterns\": [\n        {\n          \"match\": \"(^p([<>=()]+)?)(\\\\([^)]*\\\\)|{[^}]*})*(\\\\.)\",\n          \"name\": \"entity.name.section.paragraph.textile\",\n          \"captures\": {\n            \"1\": { \"name\": \"entity.name.tag.paragraph.textile\" },\n            \"3\": { \"name\": \"entity.name.type.textile\" },\n            \"4\": { \"name\": \"entity.name.tag.paragraph.textile\" }\n          }\n        },\n        { \"include\": \"#inline\" },\n        { \"include\": \"text.html.basic\" }\n      ],\n      \"name\": \"meta.paragraph.textile\"\n    },\n    {\n      \"comment\": \"Since html is valid in Textile include the html patterns\",\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"name\": \"Textile\",\n  \"scopeName\": \"text.html.textile\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/toml.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"toml\"],\n  \"keyEquivalent\": \"^~T\",\n  \"name\": \"toml\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#groups\"\n    },\n    {\n      \"include\": \"#key_pair\"\n    },\n    {\n      \"include\": \"#invalid\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.toml\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.toml\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.toml\"\n        }\n      ]\n    },\n    \"groups\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.section.begin.toml\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[^\\\\s.]+\",\n                  \"name\": \"entity.name.section.toml\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.section.begin.toml\"\n            }\n          },\n          \"match\": \"^\\\\s*(\\\\[)([^\\\\[\\\\]]*)(\\\\])\",\n          \"name\": \"meta.group.toml\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.section.begin.toml\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[^\\\\s.]+\",\n                  \"name\": \"entity.name.section.toml\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.section.begin.toml\"\n            }\n          },\n          \"match\": \"^\\\\s*(\\\\[\\\\[)([^\\\\[\\\\]]*)(\\\\]\\\\])\",\n          \"name\": \"meta.group.double.toml\"\n        }\n      ]\n    },\n    \"invalid\": {\n      \"match\": \"\\\\S+(\\\\s*(?=\\\\S))?\",\n      \"name\": \"invalid.illegal.not-allowed-here.toml\"\n    },\n    \"key_pair\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([A-Za-z0-9_-]+)\\\\s*(=)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.key.toml\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.toml\"\n            }\n          },\n          \"end\": \"(?<=\\\\S)(?<!=)|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#primatives\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((\\\")(.*?)(\\\"))\\\\s*(=)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.key.toml\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.begin.toml\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\([btnfr\\\"\\\\\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n                  \"name\": \"constant.character.escape.toml\"\n                },\n                {\n                  \"match\": \"\\\\\\\\[^btnfr\\\"\\\\\\\\]\",\n                  \"name\": \"invalid.illegal.escape.toml\"\n                },\n                {\n                  \"match\": \"\\\"\",\n                  \"name\": \"invalid.illegal.not-allowed-here.toml\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.end.toml\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.key-value.toml\"\n            }\n          },\n          \"end\": \"(?<=\\\\S)(?<!=)|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#primatives\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((')([^']*)('))\\\\s*(=)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.key.toml\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.begin.toml\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.end.toml\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.key-value.toml\"\n            }\n          },\n          \"end\": \"(?<=\\\\S)(?<!=)|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#primatives\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t[A-Za-z0-9_-]+\\t\\t\\t\\t# Bare key\\n\\t\\t\\t\\t\\t\\t\\t\\t  | \\\"  (?:[^\\\"\\\\\\\\]|\\\\\\\\.)* \\\"\\t\\t# Double quoted key\\n\\t\\t\\t\\t\\t\\t\\t\\t  | ' [^']*          '\\t\\t# Sindle quoted key\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s* \\\\. \\\\s*\\t\\t\\t\\t\\t# Dot\\n\\t\\t\\t\\t\\t\\t\\t\\t  | (?= \\\\s* =)\\t\\t\\t\\t\\t#   or look-ahead for equals\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t){2,}\\t\\t\\t\\t\\t\\t\\t\\t# Ensure at least one dot\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\s*(=)\\\\s*\\n\\t\\t\\t\\t\\t\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.key.toml\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.variable.toml\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.variable.begin.toml\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\\\\\([btnfr\\\"\\\\\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n                          \"name\": \"constant.character.escape.toml\"\n                        },\n                        {\n                          \"match\": \"\\\\\\\\[^btnfr\\\"\\\\\\\\]\",\n                          \"name\": \"invalid.illegal.escape.toml\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.variable.end.toml\"\n                    }\n                  },\n                  \"match\": \"(\\\")((?:[^\\\"\\\\\\\\]|\\\\\\\\.)*)(\\\")\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.variable.begin.toml\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.variable.end.toml\"\n                    }\n                  },\n                  \"match\": \"(')[^']*(')\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.key-value.toml\"\n            }\n          },\n          \"comment\": \"Dotted key\",\n          \"end\": \"(?<=\\\\S)(?<!=)|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#primatives\"\n            }\n          ]\n        }\n      ]\n    },\n    \"primatives\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.toml\"\n            }\n          },\n          \"end\": \"\\\"{3,5}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.toml\"\n            }\n          },\n          \"name\": \"string.quoted.triple.double.toml\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([btnfr\\\"\\\\\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape.toml\"\n            },\n            {\n              \"match\": \"\\\\\\\\[^btnfr\\\"\\\\\\\\\\\\n]\",\n              \"name\": \"invalid.illegal.escape.toml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.toml\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.toml\"\n            }\n          },\n          \"name\": \"string.quoted.double.toml\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([btnfr\\\"\\\\\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape.toml\"\n            },\n            {\n              \"match\": \"\\\\\\\\[^btnfr\\\"\\\\\\\\]\",\n              \"name\": \"invalid.illegal.escape.toml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G'''\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.toml\"\n            }\n          },\n          \"end\": \"'{3,5}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.toml\"\n            }\n          },\n          \"name\": \"string.quoted.triple.single.toml\"\n        },\n        {\n          \"begin\": \"\\\\G'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.toml\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.toml\"\n            }\n          },\n          \"name\": \"string.quoted.single.toml\"\n        },\n        {\n          \"match\": \"\\\\G(?x)\\n\\t\\t\\t\\t\\t\\t[0-9]{4}\\n\\t\\t\\t\\t\\t\\t-\\n\\t\\t\\t\\t\\t\\t(0[1-9]|1[012])\\n\\t\\t\\t\\t\\t\\t-\\n\\t\\t\\t\\t\\t\\t(?!00|3[2-9])[0-3][0-9]\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t[Tt ]\\n\\t\\t\\t\\t\\t\\t\\t(?!2[5-9])[0-2][0-9]\\n\\t\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t\\t[0-5][0-9]\\n\\t\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t\\t(?!6[1-9])[0-6][0-9]\\n\\t\\t\\t\\t\\t\\t\\t(\\\\.[0-9]+)?\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\tZ\\n\\t\\t\\t\\t\\t\\t\\t  | [+-](?!2[5-9])[0-2][0-9]:[0-5][0-9]\\n\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.date.toml\"\n        },\n        {\n          \"match\": \"\\\\G(?x)\\n\\t\\t\\t\\t\\t\\t(?!2[5-9])[0-2][0-9]\\n\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t[0-5][0-9]\\n\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t(?!6[1-9])[0-6][0-9]\\n\\t\\t\\t\\t\\t\\t(\\\\.[0-9]+)?\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.time.toml\"\n        },\n        {\n          \"match\": \"\\\\G(true|false)\",\n          \"name\": \"constant.language.boolean.toml\"\n        },\n        {\n          \"match\": \"\\\\G0x\\\\h(\\\\h|_\\\\h)*\",\n          \"name\": \"constant.numeric.hex.toml\"\n        },\n        {\n          \"match\": \"\\\\G0o[0-7]([0-7]|_[0-7])*\",\n          \"name\": \"constant.numeric.octal.toml\"\n        },\n        {\n          \"match\": \"\\\\G0b[01]([01]|_[01])*\",\n          \"name\": \"constant.numeric.binary.toml\"\n        },\n        {\n          \"match\": \"\\\\G[+-]?(inf|nan)\",\n          \"name\": \"constant.numeric.toml\"\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\G\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t    [+-]?\\n\\t\\t\\t\\t\\t\\t    (\\n\\t\\t\\t\\t\\t\\t\\t\\t0\\n\\t\\t\\t\\t\\t\\t\\t  | ([1-9](([0-9]|_[0-9])+)?)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(?=[.eE])\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t    \\\\.\\n\\t\\t\\t\\t\\t\\t    ([0-9](([0-9]|_[0-9])+)?)\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t    [eE]\\n\\t\\t\\t\\t\\t\\t    ([+-]?[0-9](([0-9]|_[0-9])+)?)\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.numeric.float.toml\"\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\G\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t    [+-]?\\n\\t\\t\\t\\t\\t\\t    (\\n\\t\\t\\t\\t\\t\\t\\t\\t0\\n\\t\\t\\t\\t\\t\\t\\t  | ([1-9](([0-9]|_[0-9])+)?)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.numeric.integer.toml\"\n        },\n        {\n          \"begin\": \"\\\\G\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.begin.toml\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.toml\"\n            }\n          },\n          \"name\": \"meta.array.toml\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=[\\\"'']|[+-]?[0-9]|[+-]?(inf|nan)|true|false|\\\\[|\\\\{)\",\n              \"end\": \",|(?=])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.array.toml\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#primatives\"\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#invalid\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#invalid\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.inline-table.begin.toml\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.inline-table.end.toml\"\n            }\n          },\n          \"name\": \"meta.inline-table.toml\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=\\\\S)\",\n              \"end\": \",|(?=})\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.inline-table.toml\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#key_pair\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.toml\",\n  \"uuid\": \"7DEF2EDB-5BB7-4DD2-9E78-3541A26B7923\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/tsx.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/TypeScript-TmLanguage/commit/0dfae8cc4807fecfbf8f1add095d9817df824c95\",\n  \"name\": \"tsx\",\n  \"scopeName\": \"source.tsx\",\n  \"patterns\": [\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#statements\"\n    },\n    {\n      \"include\": \"#shebang\"\n    }\n  ],\n  \"repository\": {\n    \"shebang\": {\n      \"name\": \"comment.line.shebang.tsx\",\n      \"match\": \"\\\\A(#!).*(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.tsx\"\n        }\n      }\n    },\n    \"statements\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#control-statement\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#label\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#function-declaration\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#namespace-declaration\"\n        },\n        {\n          \"include\": \"#type-alias-declaration\"\n        },\n        {\n          \"include\": \"#import-equals-declaration\"\n        },\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#export-declaration\"\n        },\n        {\n          \"name\": \"storage.modifier.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"control-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#for-loop\"\n        },\n        {\n          \"name\": \"keyword.control.trycatch.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.loop.tsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.label.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.control.loop.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.flow.tsx\"\n            }\n          },\n          \"end\": \"(?=[;}]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.control.switch.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"name\": \"keyword.control.conditional.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.with.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.other.debugger.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"label\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#decl-block\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"expressionWithoutIdentifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#function-expression\"\n        },\n        {\n          \"include\": \"#class-expression\"\n        },\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#paren-expression-possibly-arrow\"\n        },\n        {\n          \"include\": \"#cast\"\n        },\n        {\n          \"include\": \"#ternary-expression\"\n        },\n        {\n          \"include\": \"#new-expr\"\n        },\n        {\n          \"include\": \"#instanceof-expr\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#paren-expression\"\n        }\n      ]\n    },\n    \"expressionPunctuations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.decorator.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\@\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.decorator.tsx\"\n        }\n      },\n      \"end\": \"(?=\\\\s)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"var-expr\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var.expr.tsx\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^let|[^\\\\._$[:alnum:]]let|^var|[^\\\\._$[:alnum:]]var)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.tsx\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.tsx\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-variable\"\n            },\n            {\n              \"include\": \"#var-single-variable\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.tsx\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-variable\"\n                },\n                {\n                  \"include\": \"#var-single-variable\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var.expr.tsx\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.tsx\"\n            }\n          },\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^const|[^\\\\._$[:alnum:]]const)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.tsx\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.tsx\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-const\"\n            },\n            {\n              \"include\": \"#var-single-const\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.tsx\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-const\"\n                },\n                {\n                  \"include\": \"#var-single-const\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx entity.name.function.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx variable.other.constant.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx variable.other.readwrite.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx variable.other.constant.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable-type-annotation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"destructuring-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.tsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.tsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"destructuring-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.tsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.tsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element-const\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-propertyName\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.destructuring.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"variable.object.property.tsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#array-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-variable-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.tsx variable.other.readwrite.tsx\"\n        }\n      }\n    },\n    \"destructuring-variable-rest-const\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.tsx variable.other.constant.tsx\"\n        }\n      }\n    },\n    \"object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element\"\n        }\n      ]\n    },\n    \"object-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element-const\"\n        }\n      ]\n    },\n    \"array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"array-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element-const\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"destructuring-parameter\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.parameter.object-binding-pattern.tsx\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-object-binding-element\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.paramter.array-binding-pattern.tsx\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-binding-element\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#parameter-binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#parameter-array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-parameter-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.tsx\"\n        }\n      }\n    },\n    \"parameter-object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-object-binding-element\"\n        }\n      ]\n    },\n    \"parameter-array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"name\": \"meta.field.declaration.tsx\",\n      \"begin\": \"(?x)(?<!\\\\()(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|\\\\}|$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.tsx\"\n        }\n      },\n      \"end\": \"(?x)(?=\\\\}|;|,|$|(^(?!\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|$))))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?x)(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\\\?)|(\\\\!))?(?=\\\\s*\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.definition.property.tsx entity.name.function.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.definiteassignment.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.definition.property.tsx variable.object.property.tsx\",\n          \"match\": \"\\\\#?[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.tsx\",\n          \"match\": \"\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.definiteassignment.tsx\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            }\n          },\n          \"end\": \"(?=[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<=\\\\S)(?<!=)(?=\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-declaration\": {\n      \"name\": \"meta.function.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.async.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.function.tsx\"\n        },\n        \"5\": {\n          \"name\": \"keyword.generator.asterisk.tsx\"\n        },\n        \"6\": {\n          \"name\": \"meta.definition.function.tsx entity.name.function.tsx\"\n        }\n      },\n      \"end\": \"(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-expression\": {\n      \"name\": \"meta.function.expression.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.tsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.tsx\"\n        },\n        \"4\": {\n          \"name\": \"meta.definition.function.tsx entity.name.function.tsx\"\n        }\n      },\n      \"end\": \"(?=;)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-name\": {\n      \"name\": \"meta.definition.function.tsx entity.name.function.tsx\",\n      \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#function-parameters\"\n        },\n        {\n          \"include\": \"#return-type\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"name\": \"keyword.generator.asterisk.tsx\",\n          \"match\": \"\\\\*\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.method.declaration.tsx\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.tsx\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.new.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.tsx\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.property.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-literal-method-declaration\": {\n      \"name\": \"meta.method.declaration.tsx\",\n      \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.property.tsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.tsx\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        },\n        {\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.property.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\(|\\\\<)\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method-declaration-name\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??)\\\\s*[\\\\(\\\\<])\",\n      \"end\": \"(?=\\\\(|\\\\<)\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"meta.definition.method.tsx entity.name.function.tsx\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.tsx\",\n          \"match\": \"\\\\?\"\n        }\n      ]\n    },\n    \"arrow-function\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.arrow.tsx\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?==>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.arrow.tsx\",\n          \"begin\": \"(?x) (?:\\n  (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\n)? ((?<![})!\\\\]])\\\\s*\\n  (?=\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  )\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            }\n          },\n          \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            },\n            {\n              \"include\": \"#function-parameters\"\n            },\n            {\n              \"include\": \"#arrow-return-type\"\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.arrow.tsx\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.tsx\"\n            }\n          },\n          \"end\": \"((?<=\\\\}|\\\\S)(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!\\\\/[\\\\/\\\\*])\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#decl-block\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"name\": \"meta.indexer.declaration.tsx\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.square.tsx\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.tsx\"\n        }\n      },\n      \"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.tsx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.optional.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        }\n      ]\n    },\n    \"indexer-mapped-type-declaration\": {\n      \"name\": \"meta.indexer.mappedtype.declaration.tsx\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([+-])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(in)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.modifier.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"meta.brace.square.tsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.tsx\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.expression.in.tsx\"\n        }\n      },\n      \"end\": \"(\\\\])([+-])?\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.tsx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.type.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.optional.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"name\": \"meta.parameters.tsx\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.begin.tsx\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters-body\"\n        }\n      ]\n    },\n    \"function-parameters-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#parameter-type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.tsx\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"name\": \"meta.class.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.class.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-expression\": {\n      \"name\": \"meta.class.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|\\\\/[\\\\/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-declaration-or-expression-patterns\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.class.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"name\": \"meta.interface.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.interface.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.interface.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"class-or-interface-heritage\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(extends|implements)\\\\b)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.tsx\"\n        }\n      },\n      \"end\": \"(?=\\\\{)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\\\s*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.inherited-class.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"class-or-interface-body\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"begin\": \"(?<=:)\\\\s*\",\n          \"end\": \"(?=\\\\s|[;),}\\\\]:\\\\-\\\\+]|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#property-accessor\"\n        },\n        {\n          \"include\": \"#async-modifier\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"access-modifier\": {\n      \"name\": \"storage.modifier.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"property-accessor\": {\n      \"name\": \"storage.type.property.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"async-modifier\": {\n      \"name\": \"storage.modifier.async.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"enum-declaration\": {\n      \"name\": \"meta.enum.declaration.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.enum.tsx\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.type.enum.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.tsx\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.enummember.tsx\"\n                }\n              },\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\])))\",\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#array-literal\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"namespace-declaration\": {\n      \"name\": \"meta.namespace.declaration.tsx\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[_$[:alpha:]\\\"'`]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.namespace.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"entity.name.type.module.tsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"type-alias-declaration\": {\n      \"name\": \"meta.type.declaration.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.type.tsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.alias.tsx\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"(=)\\\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.intrinsic.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-equals-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.import-equals.external.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.tsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            },\n            \"7\": {\n              \"name\": \"keyword.control.require.tsx\"\n            },\n            \"8\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.import-equals.internal.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.tsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            }\n          },\n          \"end\": \"(?=;|$|^)\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.module.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.accessor.tsx\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.accessor.optional.tsx\"\n                }\n              }\n            },\n            {\n              \"name\": \"variable.other.readwrite.tsx\",\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"name\": \"meta.import.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[:\\\\(])(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.import.tsx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.type.tsx\"\n        }\n      },\n      \"end\": \"(?<!^import|[^\\\\._$[:alnum:]]import)(?=;|$|^)\",\n      \"patterns\": [\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"begin\": \"(?<=^import|[^\\\\._$[:alnum:]]import)(?!\\\\s*[\\\"'])\",\n          \"end\": \"\\\\bfrom\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.from.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#import-export-declaration\"\n        }\n      ]\n    },\n    \"export-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.as.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.namespace.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.module.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.export.default.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:(?:\\\\s*(=))|(?:\\\\s+(default)(?=\\\\s+)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.default.tsx\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.export.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[\\\\{*])|((?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s|,))(?!\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.tsx\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-export-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#import-export-block\"\n        },\n        {\n          \"name\": \"keyword.control.from.tsx\",\n          \"match\": \"\\\\bfrom\\\\b\"\n        },\n        {\n          \"include\": \"#import-export-assert-clause\"\n        },\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-assert-clause\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(assert)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.assert.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"meta.object-literal.key.tsx\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\"\n        },\n        {\n          \"name\": \"punctuation.separator.key-value.tsx\",\n          \"match\": \":\"\n        }\n      ]\n    },\n    \"import-export-block\": {\n      \"name\": \"meta.block.tsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-clause\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(?:(\\\\btype)\\\\s+)?(?:(\\\\bdefault)|(\\\\*)|(\\\\b[_$[:alpha:]][_$[:alnum:]]*)))\\\\s+(as)\\\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([_$[:alpha:]][_$[:alnum:]]*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.default.tsx\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.import-export-all.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.readwrite.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.as.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.control.default.tsx\"\n            },\n            \"7\": {\n              \"name\": \"variable.other.readwrite.alias.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"constant.language.import-export-all.tsx\",\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"name\": \"keyword.control.default.tsx\",\n          \"match\": \"\\\\b(default)\\\\b\"\n        },\n        {\n          \"match\": \"(?:(\\\\btype)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.alias.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"name\": \"switch-statement.expr.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"switch-expression.expr.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.tsx\"\n            },\n            \"2\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"switch-block.expr.tsx\",\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"name\": \"case-clause.expr.tsx\",\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.switch.tsx\"\n                }\n              },\n              \"end\": \"(?=:)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(:)\\\\s*(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"meta.block.tsx punctuation.definition.block.tsx\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.block.tsx punctuation.definition.block.tsx\"\n                }\n              },\n              \"contentName\": \"meta.block.tsx\",\n              \"patterns\": [\n                {\n                  \"include\": \"#statements\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(:)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\"\n                }\n              }\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"for-loop\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*))await)?\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)?(\\\\())\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.loop.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"keyword.control.loop.tsx\",\n          \"match\": \"await\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#var-expr\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            }\n          ]\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))\",\n          \"end\": \"(?=;|$|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.conditional.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"name\": \"string.regexp.tsx\",\n              \"begin\": \"(?<=\\\\))\\\\s*\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.tsx\"\n                }\n              },\n              \"end\": \"(/)([dgimsuy]*)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.string.end.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#regexp\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"decl-block\": {\n      \"name\": \"meta.block.tsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statements\"\n        }\n      ]\n    },\n    \"after-operator-block-as-object-literal\": {\n      \"name\": \"meta.objectliteral.tsx\",\n      \"begin\": \"(?<!\\\\+\\\\+|--)(?<=[:=(,\\\\[?+!>]|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^yield|[^\\\\._$[:alnum:]]yield|^throw|[^\\\\._$[:alnum:]]throw|^in|[^\\\\._$[:alnum:]]in|^of|[^\\\\._$[:alnum:]]of|^typeof|[^\\\\._$[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-literal\": {\n      \"name\": \"meta.objectliteral.tsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-literal-method-declaration\"\n        },\n        {\n          \"name\": \"meta.object.member.tsx meta.object-literal.key.tsx\",\n          \"begin\": \"(?=\\\\[)\",\n          \"end\": \"(?=:)|((?<=[\\\\]])(?=\\\\s*[\\\\(\\\\<]))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#array-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx meta.object-literal.key.tsx\",\n          \"begin\": \"(?=[\\\\'\\\\\\\"\\\\`])\",\n          \"end\": \"(?=:)|((?<=[\\\\'\\\\\\\"\\\\`])(?=((\\\\s*[\\\\(\\\\<,}])|(\\\\s+(as)\\\\s+))))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx meta.object-literal.key.tsx\",\n          \"begin\": \"(?x)(?=(\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)))\",\n          \"end\": \"(?=:)|(?=\\\\s*([\\\\(\\\\<,}])|(\\\\s+as\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#numeric-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.tsx\",\n          \"begin\": \"(?<=[\\\\]\\\\'\\\\\\\"\\\\`])(?=\\\\s*[\\\\(\\\\<])\",\n          \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"(?![_$[:alpha:]])([[:digit:]]+)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.tsx\"\n            },\n            \"1\": {\n              \"name\": \"constant.numeric.decimal.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)*\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.tsx\"\n            },\n            \"1\": {\n              \"name\": \"entity.name.function.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.tsx\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            }\n          },\n          \"end\": \"(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"begin\": \"(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*=)\",\n          \"end\": \"(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.tsx punctuation.separator.key-value.tsx\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.tsx\"\n                }\n              },\n              \"end\": \"(?<=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.tsx\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.tsx\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#expression-inside-possibly-arrow-parens\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(?=\\\\<\\\\s*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.tsx\"\n                }\n              },\n              \"end\": \"(?<=\\\\>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\>)\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"ternary-expression\": {\n      \"begin\": \"(?!\\\\?\\\\.\\\\s*[^[:digit:]])(\\\\?)(?!\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.tsx\"\n        }\n      },\n      \"end\": \"\\\\s*(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"end\": \"(?<=\\\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.tsx\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            },\n            {\n              \"include\": \"#paren-expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"end\": \"(?<=\\\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.tsx\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call-target\": {\n      \"patterns\": [\n        {\n          \"include\": \"#support-function-call-identifiers\"\n        },\n        {\n          \"name\": \"entity.name.function.tsx\",\n          \"match\": \"(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"function-call-optionals\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-call.tsx punctuation.accessor.optional.tsx\",\n          \"match\": \"\\\\?\\\\.\"\n        },\n        {\n          \"name\": \"meta.function-call.tsx keyword.operator.definiteassignment.tsx\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"support-function-call-identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.tsx\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*[\\\\(]\\\\s*[\\\\\\\"\\\\'\\\\`]))\"\n        }\n      ]\n    },\n    \"new-expr\": {\n      \"name\": \"new.expr.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.new.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"instanceof-expr\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.expression.instanceof.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|(([\\\\&\\\\~\\\\^\\\\|]\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s+instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[(=,])\\\\s*(async)?(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[(=,]|=>|^return|[^\\\\._$[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\()|(<))\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#possibly-arrow-return-type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow-with-typeparameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression-inside-possibly-arrow-parens\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression-inside-possibly-arrow-parens\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[:,]|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.tsx\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"paren-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.tsx\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"cast\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        }\n      ]\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.flow.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*\\\\*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.tsx\"\n            }\n          },\n          \"end\": \"\\\\*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.expression.delete.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.in.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.of.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.instanceof.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.new.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.void.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[;,:})\\\\]]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            }\n          },\n          \"end\": \"(?=^|[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+)|(\\\\s+\\\\<))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.operator.spread.tsx\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.tsx\",\n          \"match\": \"\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.tsx\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|>>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.tsx\",\n          \"match\": \"<<|>>>|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.tsx\",\n          \"match\": \"===|!==|==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.tsx\",\n          \"match\": \"<=|>=|<>|<|>\"\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:]])(\\\\!)\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arithmetic.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.logical.tsx\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\||\\\\?\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.tsx\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.tsx\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.tsx\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.tsx\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.tsx\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        },\n        {\n          \"begin\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)+(?:(/=)|(?:(/)(?![/*]))))\",\n          \"end\": \"(?:(/=)|(?:(/)(?!\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"typeof-operator\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.expression.typeof.tsx\"\n        }\n      },\n      \"end\": \"(?=[,);}\\\\]=>:&|{\\\\?]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#undefined-literal\"\n        },\n        {\n          \"include\": \"#numericConstant-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#this-literal\"\n        },\n        {\n          \"include\": \"#super-literal\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"name\": \"meta.array.literal.tsx\",\n      \"begin\": \"\\\\s*(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"numeric-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.hex.tsx\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.binary.tsx\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.octal.tsx\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.tsx\"\n            },\n            \"1\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"3\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"5\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"6\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"7\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"8\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"9\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"10\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"11\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"12\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"13\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"14\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"this-literal\": {\n      \"name\": \"variable.language.this.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)\"\n    },\n    \"super-literal\": {\n      \"name\": \"variable.language.super.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)\"\n    },\n    \"undefined-literal\": {\n      \"name\": \"constant.language.undefined.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"numericConstant-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.nan.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.infinity.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"support-objects\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.language.arguments.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.class.promise.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(meta)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.importmeta.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(target)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.new.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.target.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\\\())\\n  |\\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.property.tsx\"\n            },\n            \"4\": {\n              \"name\": \"support.constant.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.object.module.tsx\"\n            },\n            \"2\": {\n              \"name\": \"support.type.object.module.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"5\": {\n              \"name\": \"support.type.object.module.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"match\": \"(?x)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.property.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"variable.other.constant.tsx\",\n          \"match\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\"\n        },\n        {\n          \"name\": \"variable.other.readwrite.tsx\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"object-identifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.class.tsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))\"\n        },\n        {\n          \"match\": \"(?x)(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  (\\\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\\n  (\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.object.property.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.object.property.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.constant.object.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.tsx\",\n          \"begin\": \"(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=$|^|[,);\\\\}\\\\]]|//)|(?==[^>])|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.annotation.tsx\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[,);\\\\}\\\\]]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$))|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.tsx\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?=[,)])|(?==[^>])\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.return.type.tsx\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])(?=$|^|[{};,]|//)\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.return.type.tsx\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[{};,]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<=[:|&])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"arrow-return-type\": {\n      \"name\": \"meta.return.type.arrow.tsx\",\n      \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.annotation.tsx\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"possibly-arrow-return-type\": {\n      \"begin\": \"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*=>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"contentName\": \"meta.arrow.tsx meta.return.type.arrow.tsx\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"arrow-return-type-body\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[:])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-parameters\": {\n      \"name\": \"meta.type.parameters.tsx\",\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.tsx\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"storage.modifier.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.tsx\",\n          \"match\": \"(=)(?!>)\"\n        }\n      ]\n    },\n    \"type-arguments\": {\n      \"name\": \"meta.type.parameters.tsx\",\n      \"begin\": \"\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.tsx\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-arguments-body\"\n        }\n      ]\n    },\n    \"type-arguments-body\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-builtin-literals\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#type-tuple\"\n        },\n        {\n          \"include\": \"#type-object\"\n        },\n        {\n          \"include\": \"#type-operators\"\n        },\n        {\n          \"include\": \"#type-conditional\"\n        },\n        {\n          \"include\": \"#type-fn-type-parameters\"\n        },\n        {\n          \"include\": \"#type-paren-or-function-parameters\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-name\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"name\": \"support.type.primitive.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-builtin-literals\": {\n      \"name\": \"support.type.builtin.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-tuple\": {\n      \"name\": \"meta.type.tuple.tsx\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.rest.tsx\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.label.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-object\": {\n      \"name\": \"meta.object.type.tsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#indexer-mapped-type-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-conditional\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          },\n          \"end\": \"(?<=:)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.tsx\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-paren-or-function-parameters\": {\n      \"name\": \"meta.type.paren.cover.tsx\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.tsx\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.tsx\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-fn-type-parameters\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*\\\\<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.constructor.tsx storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.constructor.tsx keyword.control.new.tsx\"\n            }\n          },\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.constructor.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.new.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.tsx\",\n          \"begin\": \"(?x)(\\n  (?=\\n    [(]\\\\s*(\\n      ([)]) |\\n      (\\\\.\\\\.\\\\.) |\\n      ([_$[:alnum:]]+\\\\s*(\\n        ([:,?=])|\\n        ([)]\\\\s*=>)\\n      ))\\n    )\\n  )\\n)\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.function.return.tsx\",\n          \"begin\": \"(=>)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.arrow.tsx\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])(?=[,\\\\]\\\\)\\\\{\\\\}=;>:\\\\?]|//|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.return.tsx\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.tsx\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])((?=[,\\\\]\\\\)\\\\{\\\\}=;:\\\\?>]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<==>)(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"include\": \"#type-infer\"\n        },\n        {\n          \"begin\": \"([&|])(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[&|]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\S)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.keyof.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.ternary.tsx\",\n          \"match\": \"(\\\\?|\\\\:)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()\"\n        }\n      ]\n    },\n    \"type-infer\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?\",\n          \"name\": \"meta.type.infer.tsx\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.expression.infer.tsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.expression.extends.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-predicate-operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s(is)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.expression.is.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.type.asserts.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.is.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(<)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"4\": {\n              \"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.tsx\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.tsx\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.tsx\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.tsx\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.tsx\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.tsx\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.optional.tsx\"\n        }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template\"\n        }\n      ]\n    },\n    \"qstring-double\": {\n      \"name\": \"string.quoted.double.tsx\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tsx\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.tsx\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"qstring-single\": {\n      \"name\": \"string.quoted.single.tsx\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tsx\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.tsx\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.tsx\",\n      \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\\\{[0-9A-Fa-f]+\\\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n    },\n    \"template\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.tsx\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-call\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.template.tsx\",\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#support-function-call-identifiers\"\n                },\n                {\n                  \"name\": \"entity.name.function.tagged-template.tsx\",\n                  \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.template.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.tsx\"\n            }\n          },\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-substitution-element\": {\n      \"name\": \"meta.template.expression.tsx\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.tsx\"\n    },\n    \"type-string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template-type\"\n        }\n      ]\n    },\n    \"template-type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.tsx\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-type-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-type-substitution-element\": {\n      \"name\": \"meta.template.expression.tsx\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.tsx\"\n    },\n    \"regex\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.tsx\",\n          \"begin\": \"(?<!\\\\+\\\\+|--|})(?<=[=(:,\\\\[?+!]|^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*\\\\/)\\\\s*(\\\\/)(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[\\\\()]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\]|\\\\(([^\\\\)\\\\\\\\]|\\\\\\\\.)+\\\\))+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.tsx\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.regexp.tsx\",\n          \"begin\": \"((?<![_$[:alnum:])\\\\]]|\\\\+\\\\+|--|}|\\\\*\\\\/)|((?<=^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case))\\\\s*)\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.tsx\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.anchor.regexp\",\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9]\\\\d*|\\\\\\\\k<([a-zA-Z_$][\\\\w$]*)>\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.other.back-reference.regexp\"\n            },\n            \"1\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.or.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"name\": \"meta.group.assertion.regexp\",\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.assertion.regexp\"\n            },\n            \"3\": {\n              \"name\": \"meta.assertion.look-ahead.regexp\"\n            },\n            \"4\": {\n              \"name\": \"meta.assertion.negative-look-ahead.regexp\"\n            },\n            \"5\": {\n              \"name\": \"meta.assertion.look-behind.regexp\"\n            },\n            \"6\": {\n              \"name\": \"meta.assertion.negative-look-behind.regexp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\((?:(\\\\?:)|(?:\\\\?<([a-zA-Z_$][\\\\w$]*)>))?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.group.no-capture.regexp\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.other.character-class.range.regexp\",\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#regex-character-class\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regex-character-class\"\n        }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.character-class.regexp\",\n          \"match\": \"\\\\\\\\[wWsSdDtrnvf]|\\\\.\"\n        },\n        {\n          \"name\": \"constant.character.numeric.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\"\n        },\n        {\n          \"name\": \"constant.character.control.regexp\",\n          \"match\": \"\\\\\\\\c[A-Z]\"\n        },\n        {\n          \"name\": \"constant.character.escape.backslash.regexp\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.tsx\",\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docblock\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.tsx\",\n          \"begin\": \"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.internaldeclaration.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.tsx\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.tsx\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.double-slash.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.internaldeclaration.tsx\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.tsx\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"contentName\": \"comment.line.double-slash.tsx\"\n        }\n      ]\n    },\n    \"single-line-comment-consuming-line-ending\": {\n      \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.tsx\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.double-slash.tsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.internaldeclaration.tsx\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.decorator.internaldeclaration.tsx\"\n        }\n      },\n      \"end\": \"(?=^)\",\n      \"contentName\": \"comment.line.double-slash.tsx\"\n    },\n    \"directives\": {\n      \"name\": \"comment.line.triple-slash.directive.tsx\",\n      \"begin\": \"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)))+\\\\s*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.tsx\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.tsx\",\n          \"begin\": \"(<)(reference|amd-dependency|amd-module)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.directive.tsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.directive.tsx\"\n            }\n          },\n          \"end\": \"/>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.directive.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.other.attribute-name.directive.tsx\",\n              \"match\": \"path|types|no-default-lib|lib|name|resolution-mode\"\n            },\n            {\n              \"name\": \"keyword.operator.assignment.tsx\",\n              \"match\": \"=\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docblock\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n((@)(?:access|api))\\n\\\\s+\\n(private|protected|public)\\n\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.access-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)author)\\n\\\\s+\\n(\\n  [^@\\\\s<>*/]\\n  (?:[^@<>*/]|\\\\*[^/])*\\n)\\n(?:\\n  \\\\s*\\n  (<)\\n  ([^>\\\\s]+)\\n  (>)\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.email.link.underline.jsdoc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)borrows) \\\\s+\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <that namepath>\\n\\\\s+ (as) \\\\s+              # as\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <this namepath>\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.control.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.example.jsdoc\",\n          \"begin\": \"((@)example)\\\\s+\",\n          \"end\": \"(?=@|\\\\*/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"^\\\\s\\\\*\\\\s+\"\n            },\n            {\n              \"contentName\": \"constant.other.description.jsdoc\",\n              \"begin\": \"\\\\G(<)caption(>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              },\n              \"end\": \"(</)caption(>)|(?=\\\\*/)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"source.embedded.tsx\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x) ((@)kind) \\\\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.symbol-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)see)\\n\\\\s+\\n(?:\\n  # URL\\n  (\\n    (?=https?://)\\n    (?:[^\\\\s*]|\\\\*[^/])+\\n  )\\n  |\\n  # JSDoc namepath\\n  (\\n    (?!\\n      # Avoid matching bare URIs (also acceptable as links)\\n      https?://\\n      |\\n      # Avoid matching {@inline tags}; we match those below\\n      (?:\\\\[[^\\\\[\\\\]]*\\\\])? # Possible description [preceding]{@tag}\\n      {@(?:link|linkcode|linkplain|tutorial)\\\\b\\n    )\\n    # Matched namepath\\n    (?:[^@\\\\s*/]|\\\\*[^/])+\\n  )\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.link.underline.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)template)\\n\\\\s+\\n# One or more valid identifiers\\n(\\n  [A-Za-z_$]         # First character: non-numeric word character\\n  [\\\\w$.\\\\[\\\\]]*        # Rest of identifier\\n  (?:                # Possible list of additional identifiers\\n    \\\\s* , \\\\s*\\n    [A-Za-z_$]\\n    [\\\\w$.\\\\[\\\\]]*\\n  )*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?x)((@)template)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:arg|argument|const|constant|member|namespace|param|var)\\n)\\n\\\\s+\\n(\\n  [A-Za-z_$]\\n  [\\\\w$.\\\\[\\\\]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((@)typedef)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"entity.name.type.instance.jsdoc\",\n              \"match\": \"(?:[^@\\\\s*/]|\\\\*[^/])+\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"(?x)\\n(\\\\[)\\\\s*\\n[\\\\w$]+\\n(?:\\n  (?:\\\\[\\\\])?                                        # Foo[ ].bar properties within an array\\n  \\\\.                                                # Foo.Bar namespaced parameter\\n  [\\\\w$]+\\n)*\\n(?:\\n  \\\\s*\\n  (=)                                                # [foo=bar] Default parameter value\\n  \\\\s*\\n  (\\n    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\\n    (?>\\n      \\\"(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!\\\"))|[^*\\\\\\\\])*?\\\" |                      # [foo=\\\"bar\\\"] Double-quoted\\n      '(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!'))|[^*\\\\\\\\])*?' |                      # [foo='bar'] Single-quoted\\n      \\\\[ (?:(?:\\\\*(?!/))|[^*])*? \\\\] |                                # [foo=[1,2]] Array literal\\n      (?:(?:\\\\*(?!/))|\\\\s(?!\\\\s*\\\\])|\\\\[.*?(?:\\\\]|(?=\\\\*/))|[^*\\\\s\\\\[\\\\]])*   # Everything else\\n    )*\\n  )\\n)?\\n\\\\s*(?:(\\\\])((?:[^*\\\\s]|\\\\*[^\\\\s/])+)?|(?=\\\\*/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.optional-value.begin.bracket.square.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.jsdoc\"\n                },\n                \"3\": {\n                  \"name\": \"source.embedded.tsx\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.optional-value.end.bracket.square.jsdoc\"\n                },\n                \"5\": {\n                  \"name\": \"invalid.illegal.syntax.jsdoc\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(\\n  (@)\\n  (?:define|enum|exception|export|extends|lends|implements|modifies\\n  |namespace|private|protected|returns?|suppress|this|throws|type\\n  |yields?)\\n)\\n\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [^{}@\\\\s*] | \\\\*[^/]\\n  )+\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"contentName\": \"variable.other.jsdoc\",\n          \"begin\": \"((@)(?:default(?:value)?|license|version))\\\\s+(([''\\\"]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.string.begin.jsdoc\"\n            }\n          },\n          \"end\": \"(\\\\3)|(?=$|\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^\\\\s*]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"storage.type.class.jsdoc\",\n          \"match\": \"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        },\n        {\n          \"include\": \"#inline-tags\"\n        },\n        {\n          \"match\": \"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"inline-tags\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.description.jsdoc\",\n          \"match\": \"(\\\\[)[^\\\\]]+(\\\\])(?={@(?:link|linkcode|linkplain|tutorial))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.square.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.square.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"({)((@)(?:link(?:code|plain)?|tutorial))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.inline.tag.jsdoc\"\n            }\n          },\n          \"end\": \"}|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G((?=https?://)(?:[^|}\\\\s*]|\\\\*[/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.link.underline.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\G((?:[^{}@\\\\s|*]|\\\\*[^/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.description.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"jsdoctype\": {\n      \"patterns\": [\n        {\n          \"contentName\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"\\\\G({)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            }\n          },\n          \"end\": \"((}))\\\\s*|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes-in-expression\"\n        },\n        {\n          \"include\": \"#jsx-tag-in-expression\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes-in-expression\": {\n      \"begin\": \"(?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes\": {\n      \"name\": \"meta.tag.without-attributes.tsx\",\n      \"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"end\": \"(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.tsx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.tsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.namespace.tsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.tsx\"\n        },\n        \"5\": {\n          \"name\": \"support.class.component.tsx\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.tag.end.tsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.tsx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.tsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.namespace.tsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.tsx\"\n        },\n        \"5\": {\n          \"name\": \"support.class.component.tsx\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.tag.end.tsx\"\n        }\n      },\n      \"contentName\": \"meta.jsx.children.tsx\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-children\"\n        }\n      ]\n    },\n    \"jsx-tag-in-expression\": {\n      \"begin\": \"(?x)\\n  (?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*\\n  (?!<\\\\s*[_$[:alpha:]][_$[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,)) # look ahead is not type parameter of arrow\\n  (?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag\"\n        }\n      ]\n    },\n    \"jsx-tag\": {\n      \"name\": \"meta.tag.tsx\",\n      \"begin\": \"(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"end\": \"(/>)|(?:(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.tsx\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.namespace.tsx\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.tsx\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.tsx\"\n        },\n        \"6\": {\n          \"name\": \"support.class.component.tsx\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.tag.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.tsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.namespace.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.tsx\"\n            },\n            \"5\": {\n              \"name\": \"support.class.component.tsx\"\n            }\n          },\n          \"end\": \"(?=[/]?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            },\n            {\n              \"include\": \"#jsx-tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.tsx\"\n            }\n          },\n          \"end\": \"(?=</)\",\n          \"contentName\": \"meta.jsx.children.tsx\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsx-children\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx-children\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        },\n        {\n          \"include\": \"#jsx-tag\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        },\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-evaluated-code\": {\n      \"contentName\": \"meta.embedded.expression.tsx\",\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.tsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"jsx-entities\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.tsx\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.tsx\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes\": {\n      \"name\": \"meta.tag.attributes.tsx\",\n      \"begin\": \"\\\\s+\",\n      \"end\": \"(?=[/]?>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#jsx-tag-attribute-name\"\n        },\n        {\n          \"include\": \"#jsx-tag-attribute-assignment\"\n        },\n        {\n          \"include\": \"#jsx-string-double-quoted\"\n        },\n        {\n          \"include\": \"#jsx-string-single-quoted\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        },\n        {\n          \"include\": \"#jsx-tag-attributes-illegal\"\n        }\n      ]\n    },\n    \"jsx-tag-attribute-name\": {\n      \"match\": \"(?x)\\n  \\\\s*\\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\\n  ([_$[:alpha:]][-_$[:alnum:]]*)\\n  (?=\\\\s|=|/?>|/\\\\*|//)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.namespace.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.tsx\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.tsx\"\n        }\n      }\n    },\n    \"jsx-tag-attribute-assignment\": {\n      \"name\": \"keyword.operator.assignment.tsx\",\n      \"match\": \"=(?=\\\\s*(?:'|\\\"|{|/\\\\*|//|\\\\n))\"\n    },\n    \"jsx-string-double-quoted\": {\n      \"name\": \"string.quoted.double.tsx\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-string-single-quoted\": {\n      \"name\": \"string.quoted.single.tsx\",\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes-illegal\": {\n      \"name\": \"invalid.illegal.attribute.tsx\",\n      \"match\": \"\\\\S+\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/twig.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"twig\", \"html.twig\"],\n  \"firstLineMatch\": \"<!(?i:DOCTYPE)|<(?i:html)|<\\\\?(?i:php)|\\\\{\\\\{|\\\\{%|\\\\{#\",\n  \"foldingStartMarker\": \"(?x)\\r\\n        (<(?i:body|div|dl|fieldset|form|head|li|ol|script|select|style|table|tbody|tfoot|thead|tr|ul)\\\\b.*?>\\r\\n        |<!--(?!.*--\\\\s*>)\\r\\n        |^<!--\\\\ \\\\#tminclude\\\\ (?>.*?-->)$\\r\\n        |\\\\{%\\\\s+(autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)\\r\\n        )\",\n  \"foldingStopMarker\": \"(?x)\\r\\n        (</(?i:body|div|dl|fieldset|form|head|li|ol|script|select|style|table|tbody|tfoot|thead|tr|ul)>\\r\\n        |^(?!.*?<!--).*?--\\\\s*>\\r\\n        |^<!--\\\\ end\\\\ tminclude\\\\ -->$\\r\\n        |\\\\{%\\\\s+end(autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)\\r\\n        )\",\n  \"keyEquivalent\": \"^~T\",\n  \"name\": \"twig\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<)([a-zA-Z0-9:]++)(?=[^>]*></\\\\2>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"end\": \"(>(<)/)(\\\\2)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"meta.scope.between-tag-pair.html\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.html\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"name\": \"meta.tag.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.xml.html\"\n        }\n      },\n      \"end\": \"(\\\\?>)\",\n      \"name\": \"meta.tag.preprocessor.xml.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!--\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      },\n      \"end\": \"--\\\\s*>\",\n      \"name\": \"comment.block.html\",\n      \"patterns\": [\n        {\n          \"match\": \"--\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        },\n        {\n          \"include\": \"#embedded-code\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"end\": \">\",\n      \"name\": \"meta.tag.sgml.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i:DOCTYPE)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.doctype.html\"\n            }\n          },\n          \"end\": \"(?=>)\",\n          \"name\": \"meta.tag.sgml.doctype.html\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"[^\\\">]*\\\"\",\n              \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[CDATA\\\\[\",\n          \"end\": \"]](?=>)\",\n          \"name\": \"constant.other.inline-data.html\"\n        },\n        {\n          \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#embedded-code\"\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?![^>]*/>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"name\": \"source.css.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?![^>]*/>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        }\n      },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"name\": \"source.js.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.script.html\"\n            }\n          },\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.js\"\n                }\n              },\n              \"match\": \"(//).*?((?=</script)|$\\\\n?)\",\n              \"name\": \"comment.line.double-slash.js\"\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.js\"\n                }\n              },\n              \"end\": \"\\\\*/|(?=</script)\",\n              \"name\": \"comment.block.js\"\n            },\n            {\n              \"include\": \"#php\"\n            },\n            {\n              \"include\": \"#twig-print-tag\"\n            },\n            {\n              \"include\": \"#twig-statement-tag\"\n            },\n            {\n              \"include\": \"#twig-comment-tag\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.structure.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"name\": \"meta.tag.structure.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.block.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.block.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.inline.any.html\"\n        }\n      },\n      \"end\": \"((?: ?/)?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.inline.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)([a-zA-Z0-9:]+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.other.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.other.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#entities\"\n    },\n    {\n      \"match\": \"<>\",\n      \"name\": \"invalid.illegal.incomplete.html\"\n    },\n    {\n      \"match\": \"<\",\n      \"name\": \"invalid.illegal.bad-angle-bracket.html\"\n    },\n    {\n      \"include\": \"#twig-print-tag\"\n    },\n    {\n      \"include\": \"#twig-statement-tag\"\n    },\n    {\n      \"include\": \"#twig-comment-tag\"\n    }\n  ],\n  \"repository\": {\n    \"embedded-code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ruby\"\n        },\n        {\n          \"include\": \"#php\"\n        },\n        {\n          \"include\": \"#twig-print-tag\"\n        },\n        {\n          \"include\": \"#twig-statement-tag\"\n        },\n        {\n          \"include\": \"#twig-comment-tag\"\n        },\n        {\n          \"include\": \"#python\"\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          },\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\"\n        },\n        {\n          \"match\": \"&\",\n          \"name\": \"invalid.illegal.bad-ampersand.html\"\n        }\n      ]\n    },\n    \"twig-print-tag\": {\n      \"begin\": \"\\\\{\\\\{-?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.tag.twig\"\n        }\n      },\n      \"end\": \"-?\\\\}\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.tag.twig\"\n        }\n      },\n      \"name\": \"meta.tag.template.value.twig\",\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-operators\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ]\n    },\n    \"twig-statement-tag\": {\n      \"begin\": \"\\\\{%-?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.tag.twig\"\n        }\n      },\n      \"end\": \"-?%\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.tag.twig\"\n        }\n      },\n      \"name\": \"meta.tag.template.block.twig\",\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-keywords\"\n        },\n        {\n          \"include\": \"#twig-operators\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ]\n    },\n    \"twig-comment-tag\": {\n      \"begin\": \"\\\\{#-?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.begin.twig\"\n        }\n      },\n      \"end\": \"-?#\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.twig\"\n        }\n      },\n      \"name\": \"comment.block.twig\"\n    },\n    \"twig-constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?<=[\\\\s\\\\[\\\\(\\\\{:,])(?:true|false|null|none)(?=[\\\\s\\\\)\\\\]\\\\}\\\\,])\",\n          \"name\": \"constant.language.twig\"\n        },\n        {\n          \"match\": \"(?<=[\\\\s\\\\[\\\\(\\\\{:,]|\\\\.\\\\.|\\\\*\\\\*)[0-9]+(?:\\\\.[0-9]+)?(?=[\\\\s\\\\)\\\\]\\\\}\\\\,]|\\\\.\\\\.|\\\\*\\\\*)\",\n          \"name\": \"constant.numeric.twig\"\n        }\n      ]\n    },\n    \"twig-operators\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.arithmetic.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)(\\\\+|-|//?|%|\\\\*\\\\*?)(?=\\\\s)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)(=|~)(?=\\\\s)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.bitwise.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)(b-(?:and|or|xor))(?=\\\\s)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.comparison.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)((?:!|=)=|<=?|>=?|(?:not )?in|is(?: not)?|(?:ends|starts) with|matches)(?=\\\\s)|%\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)(\\\\?|:|and|not|or)(?=\\\\s)\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.other.twig\"\n            }\n          },\n          \"match\": \"(?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)'\\\"])\\\\.\\\\.(?=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}'\\\"])\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.other.twig\"\n            }\n          },\n          \"match\": \"(?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\}\\\\)'\\\"])\\\\|(?=[a-zA-Z_\\\\x{7f}-\\\\x{ff}])\"\n        }\n      ]\n    },\n    \"twig-objects\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.twig\"\n        }\n      },\n      \"match\": \"(?<=[\\\\s\\\\{\\\\[\\\\(:,])([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)(?=[\\\\s\\\\}\\\\[\\\\]\\\\(\\\\)\\\\.\\\\|,:])\"\n    },\n    \"twig-properties\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.twig\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.twig\"\n            }\n          },\n          \"match\": \"(?x) (?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}])\\r\\n                        (\\\\.)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*) (?=[\\\\.\\\\s\\\\|\\\\[\\\\)\\\\]\\\\}:,])\\r\\n                        \"\n        },\n        {\n          \"begin\": \"(?x) (?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}])\\r\\n                        (\\\\.)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\r\\n                        (\\\\()\\r\\n                        \",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.twig\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.twig\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.twig\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.twig\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#twig-constants\"\n            },\n            {\n              \"include\": \"#twig-functions-warg\"\n            },\n            {\n              \"include\": \"#twig-functions\"\n            },\n            {\n              \"include\": \"#twig-macros\"\n            },\n            {\n              \"include\": \"#twig-objects\"\n            },\n            {\n              \"include\": \"#twig-properties\"\n            },\n            {\n              \"include\": \"#twig-filters-warg\"\n            },\n            {\n              \"include\": \"#twig-filters\"\n            },\n            {\n              \"include\": \"#twig-filters-warg-ud\"\n            },\n            {\n              \"include\": \"#twig-filters-ud\"\n            },\n            {\n              \"include\": \"#twig-strings\"\n            },\n            {\n              \"include\": \"#twig-arrays\"\n            }\n          ],\n          \"contentName\": \"meta.function.arguments.twig\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.array.begin.twig\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.twig\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.array.end.twig\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.section.array.begin.twig\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.property.twig\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.array.end.twig\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.section.array.begin.twig\"\n            },\n            \"8\": {\n              \"name\": \"variable.other.property.twig\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.section.array.end.twig\"\n            }\n          },\n          \"match\": \"(?x) (?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]])\\r\\n                        (?:\\r\\n                            (\\\\[)('[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*')(\\\\])\\r\\n                            |(\\\\[)(\\\"[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*\\\")(\\\\])\\r\\n                            |(\\\\[)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)(\\\\])\\r\\n                        )\\r\\n                        \"\n        }\n      ]\n    },\n    \"twig-strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<!\\\\\\\\)|(?<=\\\\\\\\\\\\\\\\))'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.twig\"\n            }\n          },\n          \"end\": \"(?:(?<!\\\\\\\\)|(?<=\\\\\\\\\\\\\\\\))'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.twig\"\n            }\n          },\n          \"name\": \"string.quoted.single.twig\"\n        },\n        {\n          \"begin\": \"(?:(?<!\\\\\\\\)|(?<=\\\\\\\\\\\\\\\\))\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.twig\"\n            }\n          },\n          \"end\": \"(?:(?<!\\\\\\\\)|(?<=\\\\\\\\\\\\\\\\))\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.twig\"\n            }\n          },\n          \"name\": \"string.quoted.double.twig\"\n        }\n      ]\n    },\n    \"twig-arrays\": {\n      \"begin\": \"(?<=[\\\\s\\\\(\\\\{\\\\[:,])\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.array.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.array.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        },\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.object.twig\"\n        }\n      ],\n      \"name\": \"meta.array.twig\"\n    },\n    \"twig-hashes\": {\n      \"begin\": \"(?<=[\\\\s\\\\(\\\\{\\\\[:,])\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.hash.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.hash.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-hashes\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.key-value.twig\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.object.twig\"\n        }\n      ],\n      \"name\": \"meta.hash.twig\"\n    },\n    \"twig-keywords\": {\n      \"match\": \"(?<=\\\\s)((?:end)?(?:autoescape|form_theme|humanize|yaml_encode|yaml_dump|abbr_class|abbr_method|format_args|format_args_as_text|absolute_url|relative_path|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)|as|do|else|elseif|extends|flush|from|ignore missing|import|include|only|use|with|path|render|csrf_token|url|controller|form_errors|form_rest|form_start|form_end|form_widget|form_row|asset|encore_entry_link_tags|encore_entry_script_tags)(?=\\\\s)\",\n      \"name\": \"keyword.control.twig\"\n    },\n    \"twig-functions-warg\": {\n      \"begin\": \"(?<=[\\\\s\\\\(\\\\[\\\\{:,])(attribute|form_theme|humanize|yaml_encode|yaml_dump|abbr_class|abbr_method|format_args|format_args_as_text|absolute_url|relative_path|block|constant|cycle|date|divisible by|dump|include|max|min|parent|path|render|csrf_token|url|controller|form_errors|form_rest|form_start|form_end|form_widget|form_row|asset|encore_entry_link_tags|encore_entry_script_tags|random|range|same as|source|template_from_string)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.twig\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        }\n      ],\n      \"contentName\": \"meta.function.arguments.twig\"\n    },\n    \"twig-functions\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.twig\"\n        }\n      },\n      \"match\": \"(?<=is\\\\s)(defined|empty|even|iterable|odd)\"\n    },\n    \"twig-macros\": {\n      \"begin\": \"(?x) (?<=[\\\\s\\\\(\\\\[\\\\{:,])\\r\\n                    ([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\r\\n                    (?:\\r\\n                        (\\\\.)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\r\\n                    )?\\r\\n                    (\\\\()\\r\\n                \",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.function-call.twig\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.property.twig\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.property.twig\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.parameters.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-operators\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ],\n      \"contentName\": \"meta.function.arguments.twig\"\n    },\n    \"twig-filters-warg\": {\n      \"begin\": \"(?<=(?:[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)\\\\'\\\\\\\"]\\\\|)|\\\\{%\\\\sfilter\\\\s)(batch|convert_encoding|date|date_modify|default|e(?:scape)?|format|join|merge|number_format|replace|round|slice|split|trim)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.twig\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ],\n      \"contentName\": \"meta.function.arguments.twig\"\n    },\n    \"twig-filters\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.twig\"\n        }\n      },\n      \"match\": \"(?<=(?:[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)\\\\'\\\\\\\"]\\\\|)|\\\\{%\\\\sfilter\\\\s)(abs|capitalize|e(?:scape)?|first|join|(?:json|url)_encode|keys|last|length|lower|nl2br|number_format|raw|reverse|round|sort|striptags|title|trim|upper)(?=[\\\\s\\\\|\\\\]\\\\}\\\\):,]|\\\\.\\\\.|\\\\*\\\\*)\"\n    },\n    \"twig-filters-warg-ud\": {\n      \"begin\": \"(?<=(?:[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)\\\\'\\\\\\\"]\\\\|)|\\\\{%\\\\sfilter\\\\s)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.function-call.other.twig\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ],\n      \"contentName\": \"meta.function.arguments.twig\"\n    },\n    \"twig-filters-ud\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.function-call.other.twig\"\n        }\n      },\n      \"match\": \"(?<=(?:[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)\\\\'\\\\\\\"]\\\\|)|\\\\{%\\\\sfilter\\\\s)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\"\n    },\n    \"php\": {\n      \"begin\": \"(?=(^\\\\s*)?<\\\\?)\",\n      \"end\": \"(?!(^\\\\s*)?<\\\\?)\",\n      \"patterns\": [\n        {\n          \"include\": \"source.php\"\n        }\n      ]\n    },\n    \"python\": {\n      \"begin\": \"(?:^\\\\s*)<\\\\?python(?!.*\\\\?>)\",\n      \"end\": \"\\\\?>(?:\\\\s*$\\\\n)?\",\n      \"name\": \"source.python.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"source.python\"\n        }\n      ]\n    },\n    \"ruby\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<%+#\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.erb\"\n            }\n          },\n          \"end\": \"%>\",\n          \"name\": \"comment.block.erb\"\n        },\n        {\n          \"begin\": \"<%+(?!>)=?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.ruby\"\n            }\n          },\n          \"end\": \"-?%>\",\n          \"name\": \"source.ruby.embedded.html\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.ruby\"\n                }\n              },\n              \"match\": \"(#).*?(?=-?%>)\",\n              \"name\": \"comment.line.number-sign.ruby\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\\\\?r(?!>)=?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.ruby.nitro\"\n            }\n          },\n          \"end\": \"-?\\\\?>\",\n          \"name\": \"source.ruby.nitro.embedded.html\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.ruby.nitro\"\n                }\n              },\n              \"match\": \"(#).*?(?=-?\\\\?>)\",\n              \"name\": \"comment.line.number-sign.ruby.nitro\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.double.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.single.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"tag-generic-attribute\": {\n      \"match\": \"\\\\b([a-zA-Z\\\\-:]+)\",\n      \"name\": \"entity.other.attribute-name.html\"\n    },\n    \"tag-id-attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"end\": \"(?<='|\\\")\",\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"name\": \"string.quoted.double.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"name\": \"string.quoted.single.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tag-id-attribute\"\n        },\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        },\n        {\n          \"include\": \"#embedded-code\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"text.html.twig\",\n  \"uuid\": \"C220B028-86FF-44CB-8A59-27937FC83730\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/typescript.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/Microsoft/TypeScript-TmLanguage/blob/master/TypeScript.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/Microsoft/TypeScript-TmLanguage/commit/77d21fd8d3f750fcf67bdf7436f4e46565cba350\",\n  \"name\": \"TypeScript\",\n  \"scopeName\": \"source.ts\",\n  \"patterns\": [\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#statements\"\n    },\n    {\n      \"name\": \"comment.line.shebang.ts\",\n      \"match\": \"\\\\A(#!).*(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.ts\"\n        }\n      }\n    }\n  ],\n  \"repository\": {\n    \"statements\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#template\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#control-statement\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#function-declaration\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#namespace-declaration\"\n        },\n        {\n          \"include\": \"#type-alias-declaration\"\n        },\n        {\n          \"include\": \"#import-equals-declaration\"\n        },\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#export-declaration\"\n        }\n      ]\n    },\n    \"control-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#for-loop\"\n        },\n        {\n          \"name\": \"keyword.control.trycatch.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.loop.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.flow.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.switch.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.conditional.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.with.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.other.debugger.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"storage.modifier.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"expressionWithoutIdentifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#template\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#function-expression\"\n        },\n        {\n          \"include\": \"#class-expression\"\n        },\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#cast\"\n        },\n        {\n          \"include\": \"#ternary-expression\"\n        },\n        {\n          \"include\": \"#new-expr\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#paren-expression\"\n        }\n      ]\n    },\n    \"expressionPunctuations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.decorator.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\@\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.decorator.ts\"\n        }\n      },\n      \"end\": \"(?=\\\\s)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"var-expr\": {\n      \"name\": \"meta.var.expr.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(var|let|const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.ts\"\n        }\n      },\n      \"end\": \"(?=$|^|;|}|(\\\\s+(of|in)\\\\s+))\",\n      \"patterns\": [\n        {\n          \"include\": \"#destructuring-variable\"\n        },\n        {\n          \"include\": \"#var-single-variable\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(,)\\\\s*(?!\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.comma.ts\"\n            }\n          },\n          \"end\": \"(?<!,)((?==|;|}|(\\\\s+(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#destructuring-variable\"\n            },\n            {\n              \"include\": \"#var-single-variable\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"var-single-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.ts\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(=>|(\\\\([^\\\\(\\\\)]*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ts entity.name.function.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.ts\",\n          \"begin\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ts variable.other.constant.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.ts\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ts variable.other.readwrite.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable-type-annotation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"destructuring-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.ts\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.ts\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|(\\\\s+(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-propertyName\": {\n      \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.destructuring.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"name\": \"variable.object.property.ts\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-variable-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.ts variable.other.readwrite.ts\"\n        }\n      }\n    },\n    \"object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element\"\n        }\n      ]\n    },\n    \"array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*\\\\b(public|protected|private|readonly)(?=\\\\s+(public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\\\s*\\\\b(public|private|protected|readonly)\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(=>|(\\\\([^\\\\(\\\\)]*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.ts variable.language.this.ts\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\\\s*\\\\b(public|private|protected|readonly)\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.ts variable.language.this.ts\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"destructuring-parameter\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.parameter.object-binding-pattern.ts\",\n          \"begin\": \"(?<!=|:)\\\\s*(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-object-binding-element\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.paramter.array-binding-pattern.ts\",\n          \"begin\": \"(?<!=|:)\\\\s*(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-binding-element\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#parameter-binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#parameter-array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-parameter-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.ts\"\n        }\n      }\n    },\n    \"parameter-object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-object-binding-element\"\n        }\n      ]\n    },\n    \"parameter-array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"name\": \"meta.field.declaration.ts\",\n      \"begin\": \"(?<!\\\\()(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\?\\\\s*)?(=|:))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ts\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|,|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\?\\\\s*)?(=|:))))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\?\\\\s*)?(=|:))\",\n          \"end\": \"(?=[};,=]|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\?\\\\s*)?(=|:))))|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#array-literal\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"name\": \"meta.definition.property.ts entity.name.function.ts\",\n              \"match\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\\\?\\\\s*)?\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(=>|(\\\\([^\\\\(\\\\)]*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\"\n            },\n            {\n              \"name\": \"meta.definition.property.ts variable.object.property.ts\",\n              \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n            },\n            {\n              \"name\": \"keyword.operator.optional.ts\",\n              \"match\": \"\\\\?\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[,);}\\\\]])\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            }\n          },\n          \"end\": \"(?=[,);}\\\\]])|(?=^\\\\s*$)|(?<=\\\\S)(?<!=)(?=\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-declaration\": {\n      \"name\": \"meta.function.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(export)\\\\s+)?(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.async.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.function.ts\"\n        },\n        \"4\": {\n          \"name\": \"keyword.generator.asterisk.ts\"\n        },\n        \"5\": {\n          \"name\": \"meta.definition.function.ts entity.name.function.ts\"\n        }\n      },\n      \"end\": \"(?=$|^|;)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-expression\": {\n      \"name\": \"meta.function.expression.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.ts\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.ts\"\n        },\n        \"4\": {\n          \"name\": \"meta.definition.function.ts entity.name.function.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#function-parameters\"\n        },\n        {\n          \"include\": \"#return-type\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.method.declaration.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)(?:(\\\\*)\\\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*[\\\\(\\\\<])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.async.ts\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.property.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.generator.asterisk.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:(?:\\\\b(?:(new)|(constructor))\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(?:(\\\\*)\\\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))?\\\\s*[\\\\(\\\\<]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.async.ts\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.new.ts\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.ts\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-literal-method-declaration\": {\n      \"name\": \"meta.method.declaration.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*[\\\\(\\\\<])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.property.ts\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.ts\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*[\\\\(\\\\<])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.property.ts\"\n            },\n            \"3\": {\n              \"name\": \"keyword.generator.asterisk.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\(|\\\\<)\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method-declaration-name\": {\n      \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??)\\\\s*[\\\\(\\\\<])\",\n      \"end\": \"(?=\\\\(|\\\\<)\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"name\": \"meta.definition.method.ts entity.name.function.ts\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.ts\",\n          \"match\": \"\\\\?\"\n        }\n      ]\n    },\n    \"arrow-function\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.arrow.ts\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?==>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.ts\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.arrow.ts\",\n          \"begin\": \"(?x) (?:\\n  (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\n)? ((?<![})!\\\\]])\\\\s*\\n  (?=\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  )\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.ts\"\n            }\n          },\n          \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            },\n            {\n              \"include\": \"#function-parameters\"\n            },\n            {\n              \"include\": \"#arrow-return-type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.arrow.ts\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.ts\"\n            }\n          },\n          \"end\": \"(?<=\\\\}|\\\\S)(?<!=>)|((?!\\\\{)(?=\\\\S))\",\n          \"patterns\": [\n            {\n              \"include\": \"#decl-block\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"name\": \"meta.indexer.declaration.ts\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.square.ts\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.ts\"\n        }\n      },\n      \"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.ts\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.optional.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        }\n      ]\n    },\n    \"indexer-mapped-type-declaration\": {\n      \"name\": \"meta.indexer.mappedtype.declaration.ts\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(in)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.square.ts\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.ts\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.expression.in.ts\"\n        }\n      },\n      \"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.ts\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.optional.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"name\": \"meta.parameters.ts\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.begin.ts\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.ts\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"name\": \"meta.class.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(export)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.class.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-expression\": {\n      \"name\": \"meta.class.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(class)\\\\b(?=\\\\s+|[<{]|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-declaration-or-expression-patterns\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.class.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"name\": \"meta.interface.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(export)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.interface.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.interface.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"class-or-interface-heritage\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(extends|implements)\\\\b)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ts\"\n        }\n      },\n      \"end\": \"(?=\\\\{)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\\\s*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.inherited-class.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"class-or-interface-body\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#property-accessor\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"access-modifier\": {\n      \"name\": \"storage.modifier.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"property-accessor\": {\n      \"name\": \"storage.type.property.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"enum-declaration\": {\n      \"name\": \"meta.enum.declaration.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.enum.ts\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ts\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.enummember.ts\"\n                }\n              },\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\])))\",\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#array-literal\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"namespace-declaration\": {\n      \"name\": \"meta.namespace.declaration.ts\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[_$[:alpha:]\\\"'`]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.namespace.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;|\\\\babstract\\\\b|\\\\basync\\\\b|\\\\bclass\\\\b|\\\\bconst\\\\b|\\\\bdeclare\\\\b|\\\\benum\\\\b|\\\\bexport\\\\b|\\\\bfunction\\\\b|\\\\bimport\\\\b|\\\\binterface\\\\b|\\\\blet\\\\b|\\\\bmodule\\\\b|\\\\bnamespace\\\\b|\\\\btype\\\\b|\\\\bvar\\\\b)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"entity.name.type.module.ts\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"type-alias-declaration\": {\n      \"name\": \"meta.type.declaration.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(type)\\\\b\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.type.ts\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.alias.ts\"\n        }\n      },\n      \"end\": \"(?=[};]|\\\\babstract\\\\b|\\\\basync\\\\b|\\\\bclass\\\\b|\\\\bconst\\\\b|\\\\bdeclare\\\\b|\\\\benum\\\\b|\\\\bexport\\\\b|\\\\bfunction\\\\b|\\\\bimport\\\\b|\\\\binterface\\\\b|\\\\blet\\\\b|\\\\bmodule\\\\b|\\\\bnamespace\\\\b|\\\\btype\\\\b|\\\\bvar\\\\b)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"match\": \"(=)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"import-equals-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.import-equals.external.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(import)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.readwrite.alias.ts\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.require.ts\"\n            },\n            \"6\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.import-equals.internal.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(import)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.readwrite.alias.ts\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            }\n          },\n          \"end\": \"(?=;|$|^)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.module.ts\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.accessor.ts\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.accessor.optional.ts\"\n                }\n              }\n            },\n            {\n              \"name\": \"variable.other.readwrite.ts\",\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"name\": \"meta.import.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?\\\\b(import)(?!\\\\s*[:\\\\(])(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.ts\"\n        }\n      },\n      \"end\": \"(?=;|$|^)\",\n      \"patterns\": [\n        {\n          \"include\": \"#import-export-declaration\"\n        }\n      ]\n    },\n    \"export-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.as.ts\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.namespace.ts\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.module.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.export.default.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:(?:\\\\s*(=))|(?:\\\\s+(default)(?=\\\\s+)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.default.ts\"\n            }\n          },\n          \"end\": \"(?=;|$|\\\\babstract\\\\b|\\\\basync\\\\b|\\\\bclass\\\\b|\\\\bconst\\\\b|\\\\bdeclare\\\\b|\\\\benum\\\\b|\\\\bexport\\\\b|\\\\bfunction\\\\b|\\\\bimport\\\\b|\\\\binterface\\\\b|\\\\blet\\\\b|\\\\bmodule\\\\b|\\\\bnamespace\\\\b|\\\\btype\\\\b|\\\\bvar\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.export.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?!\\\\s*:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.export.ts\"\n            }\n          },\n          \"end\": \"(?=;|$|\\\\babstract\\\\b|\\\\basync\\\\b|\\\\bclass\\\\b|\\\\bconst\\\\b|\\\\bdeclare\\\\b|\\\\benum\\\\b|\\\\bexport\\\\b|\\\\bfunction\\\\b|\\\\bimport\\\\b|\\\\binterface\\\\b|\\\\blet\\\\b|\\\\bmodule\\\\b|\\\\bnamespace\\\\b|\\\\btype\\\\b|\\\\bvar\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-export-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#import-export-block\"\n        },\n        {\n          \"name\": \"keyword.control.from.ts\",\n          \"match\": \"\\\\bfrom\\\\b\"\n        },\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-block\": {\n      \"name\": \"meta.block.ts\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-clause\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bdefault)|(\\\\*)|(\\\\b[_$[:alpha:]][_$[:alnum:]]*))\\\\s+(as)\\\\s+(?:(\\\\bdefault(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(\\\\b[_$[:alpha:]][_$[:alnum:]]*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.ts\"\n            },\n            \"2\": {\n              \"name\": \"constant.language.import-export-all.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.readwrite.ts\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.as.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.default.ts\"\n            },\n            \"6\": {\n              \"name\": \"variable.other.readwrite.alias.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"constant.language.import-export-all.ts\",\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"name\": \"keyword.control.default.ts\",\n          \"match\": \"\\\\b(default)\\\\b\"\n        },\n        {\n          \"name\": \"variable.other.readwrite.alias.ts\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"name\": \"switch-statement.expr.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"switch-expression.expr.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.ts\"\n            },\n            \"2\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"switch-block.expr.ts\",\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"name\": \"case-clause.expr.ts\",\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.switch.ts\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.section.case-statement.ts\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"for-loop\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(for)(?:\\\\s+(await))?\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.ts\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.loop.ts\"\n        },\n        \"3\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"decl-block\": {\n      \"name\": \"meta.block.ts\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statements\"\n        }\n      ]\n    },\n    \"after-operator-block-as-object-literal\": {\n      \"name\": \"meta.objectliteral.ts\",\n      \"begin\": \"(?<=[=(,\\\\[?+!]|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^yield|[^\\\\._$[:alnum:]]yield|^throw|[^\\\\._$[:alnum:]]throw|^in|[^\\\\._$[:alnum:]]in|^of|[^\\\\._$[:alnum:]]of|^typeof|[^\\\\._$[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-literal\": {\n      \"name\": \"meta.objectliteral.ts\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-literal-method-declaration\"\n        },\n        {\n          \"name\": \"meta.object.member.ts meta.object-literal.key.ts\",\n          \"begin\": \"(?=\\\\[)\",\n          \"end\": \"(?=:)\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts meta.object-literal.key.ts\",\n          \"begin\": \"(?=[\\\\'\\\\\\\"])\",\n          \"end\": \"(?=:)\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"match\": \"(?![_$[:alpha:]])([[:digit:]]+)\\\\s*(?=:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ts\"\n            },\n            \"1\": {\n              \"name\": \"constant.numeric.decimal.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"match\": \"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ts\"\n            },\n            \"1\": {\n              \"name\": \"entity.name.function.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.ts\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=,|\\\\}|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"begin\": \"(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*=)\",\n          \"end\": \"(?=,|\\\\}|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ts punctuation.separator.key-value.ts\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"ternary-expression\": {\n      \"begin\": \"(?!\\\\?\\\\.\\\\s*[^[:digit:]])(\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.ts\"\n        }\n      },\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?\\\\.\\\\s*)?(<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>)*(?!=)\\\\>)*(?!=)>\\\\s*)?\\\\()\",\n      \"end\": \"(?<=\\\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?\\\\.\\\\s*)?(<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>)*(?!=)\\\\>)*(?!=)>\\\\s*)?\\\\()\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-call.ts\",\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))\",\n          \"end\": \"(?=\\\\s*(\\\\?\\\\.\\\\s*)?(<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))|(\\\\'[^\\\\']*\\\\')|(\\\\\\\"[^\\\\\\\"]*\\\\\\\")|(\\\\`[^\\\\`]*\\\\`))([^<>\\\\(]|(\\\\([^\\\\(\\\\)]*\\\\))|(?<==)\\\\>)*(?!=)\\\\>)*(?!=)>\\\\s*)?\\\\()\",\n          \"patterns\": [\n            {\n              \"include\": \"#literal\"\n            },\n            {\n              \"include\": \"#support-objects\"\n            },\n            {\n              \"include\": \"#object-identifiers\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            },\n            {\n              \"name\": \"keyword.operator.expression.import.ts\",\n              \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*[\\\\(]\\\\s*[\\\\\\\"\\\\'\\\\`]))\"\n            },\n            {\n              \"name\": \"entity.name.function.ts\",\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"meta.function-call.ts punctuation.accessor.optional.ts\",\n          \"match\": \"\\\\?\\\\.\"\n        },\n        {\n          \"name\": \"meta.type.parameters.ts\",\n          \"begin\": \"\\\\<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.typeparameters.begin.ts\"\n            }\n          },\n          \"end\": \"\\\\>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.typeparameters.end.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#paren-expression\"\n        }\n      ]\n    },\n    \"new-expr\": {\n      \"name\": \"new.expr.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.new.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]]|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#paren-expression\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"paren-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"cast\": {\n      \"patterns\": [\n        {\n          \"name\": \"cast.expr.ts\",\n          \"begin\": \"(?:(?<=^return|[^\\\\._$[:alnum:]]return|^throw|[^\\\\._$[:alnum:]]throw|^yield|[^\\\\._$[:alnum:]]yield|^await|[^\\\\._$[:alnum:]]await|^default|[^\\\\._$[:alnum:]]default|[=(,:>*?\\\\&\\\\|\\\\^]|[^_$[:alnum:]](?:\\\\+\\\\+|\\\\-\\\\-)|[^\\\\+]\\\\+|[^\\\\-]\\\\-))\\\\s*(<)(?!<?\\\\=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.angle.ts\"\n            }\n          },\n          \"end\": \"(\\\\>)\\\\s*\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.angle.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"cast.expr.ts\",\n          \"begin\": \"(?:(?<=^))\\\\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.angle.ts\"\n            }\n          },\n          \"end\": \"(\\\\>)\\\\s*\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.angle.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.flow.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.generator.asterisk.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.expression.delete.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.in.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.of.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.instanceof.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.new.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.void.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,:})\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.operator.spread.ts\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.ts\",\n          \"match\": \"\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.ts\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|>>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.ts\",\n          \"match\": \"<<|>>>|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.ts\",\n          \"match\": \"===|!==|==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.ts\",\n          \"match\": \"<=|>=|<>|<|>\"\n        },\n        {\n          \"name\": \"keyword.operator.logical.ts\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.ts\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.ts\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.ts\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.ts\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.ts\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:])])\\\\s*(/)(?![/*])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.arithmetic.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"typeof-operator\": {\n      \"name\": \"keyword.operator.expression.typeof.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#undefined-literal\"\n        },\n        {\n          \"include\": \"#numericConstant-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#this-literal\"\n        },\n        {\n          \"include\": \"#super-literal\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"name\": \"meta.array.literal.ts\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ts\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"numeric-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.hex.ts\",\n          \"match\": \"\\\\b(?<!\\\\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"constant.numeric.binary.ts\",\n          \"match\": \"\\\\b(?<!\\\\$)0(b|B)[01][01_]*\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"constant.numeric.octal.ts\",\n          \"match\": \"\\\\b(?<!\\\\$)0(o|O)?[0-7][0-7_]*\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.ts\"\n            },\n            \"1\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"2\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"3\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"4\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"5\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"6\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"this-literal\": {\n      \"name\": \"variable.language.this.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)\"\n    },\n    \"super-literal\": {\n      \"name\": \"variable.language.super.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)\"\n    },\n    \"undefined-literal\": {\n      \"name\": \"constant.language.undefined.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"numericConstant-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.nan.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.infinity.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"support-objects\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.language.arguments.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.class.builtin.ts\",\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Array|ArrayBuffer|Atomics|Boolean|DataView|Date|Float32Array|Float64Array|Function|Generator\\n  |GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Promise|Proxy\\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.class.error.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.function.ts\",\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\\\s*\\\\()\"\n        },\n        {\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Math)(?:\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\n  |\\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.constant.math.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.function.math.ts\"\n            },\n            \"5\": {\n              \"name\": \"support.constant.property.math.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(console)(?:\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\n  assert|clear|count|debug|dir|error|group|groupCollapsed|groupEnd|info|log\\n  |profile|profileEnd|table|time|timeEnd|timeStamp|trace|warn))?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.class.console.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.function.console.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(JSON)(?:\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(parse|stringify))?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.constant.json.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.function.json.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (constructor|length|prototype|__proto__)\\n  |\\n  (EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY))\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.property.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.constant.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.)) \\\\b (?:\\n  (document|event|navigator|performance|screen|window)\\n  |\\n  (AnalyserNode|ArrayBufferView|Attr|AudioBuffer|AudioBufferSourceNode|AudioContext|AudioDestinationNode|AudioListener\\n  |AudioNode|AudioParam|BatteryManager|BeforeUnloadEvent|BiquadFilterNode|Blob|BufferSource|ByteString|CSS|CSSConditionRule\\n  |CSSCounterStyleRule|CSSGroupingRule|CSSMatrix|CSSMediaRule|CSSPageRule|CSSPrimitiveValue|CSSRule|CSSRuleList|CSSStyleDeclaration\\n  |CSSStyleRule|CSSStyleSheet|CSSSupportsRule|CSSValue|CSSValueList|CanvasGradient|CanvasImageSource|CanvasPattern\\n  |CanvasRenderingContext2D|ChannelMergerNode|ChannelSplitterNode|CharacterData|ChromeWorker|CloseEvent|Comment|CompositionEvent\\n  |Console|ConvolverNode|Coordinates|Credential|CredentialsContainer|Crypto|CryptoKey|CustomEvent|DOMError|DOMException\\n  |DOMHighResTimeStamp|DOMImplementation|DOMString|DOMStringList|DOMStringMap|DOMTimeStamp|DOMTokenList|DataTransfer\\n  |DataTransferItem|DataTransferItemList|DedicatedWorkerGlobalScope|DelayNode|DeviceProximityEvent|DirectoryEntry\\n  |DirectoryEntrySync|DirectoryReader|DirectoryReaderSync|Document|DocumentFragment|DocumentTouch|DocumentType|DragEvent\\n  |DynamicsCompressorNode|Element|Entry|EntrySync|ErrorEvent|Event|EventListener|EventSource|EventTarget|FederatedCredential\\n  |FetchEvent|File|FileEntry|FileEntrySync|FileException|FileList|FileReader|FileReaderSync|FileSystem|FileSystemSync\\n  |FontFace|FormData|GainNode|Gamepad|GamepadButton|GamepadEvent|Geolocation|GlobalEventHandlers|HTMLAnchorElement\\n  |HTMLAreaElement|HTMLAudioElement|HTMLBRElement|HTMLBaseElement|HTMLBodyElement|HTMLButtonElement|HTMLCanvasElement\\n  |HTMLCollection|HTMLContentElement|HTMLDListElement|HTMLDataElement|HTMLDataListElement|HTMLDialogElement|HTMLDivElement\\n  |HTMLDocument|HTMLElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFormControlsCollection|HTMLFormElement\\n  |HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLInputElement\\n  |HTMLKeygenElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMediaElement\\n  |HTMLMetaElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLOptionElement\\n  |HTMLOptionsCollection|HTMLOutputElement|HTMLParagraphElement|HTMLParamElement|HTMLPreElement|HTMLProgressElement\\n  |HTMLQuoteElement|HTMLScriptElement|HTMLSelectElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement\\n  |HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement\\n  |HTMLTableRowElement|HTMLTableSectionElement|HTMLTextAreaElement|HTMLTimeElement|HTMLTitleElement|HTMLTrackElement\\n  |HTMLUListElement|HTMLUnknownElement|HTMLVideoElement|HashChangeEvent|History|IDBCursor|IDBCursorWithValue|IDBDatabase\\n  |IDBEnvironment|IDBFactory|IDBIndex|IDBKeyRange|IDBMutableFile|IDBObjectStore|IDBOpenDBRequest|IDBRequest|IDBTransaction\\n  |IDBVersionChangeEvent|IIRFilterNode|IdentityManager|ImageBitmap|ImageBitmapFactories|ImageData|Index|InputDeviceCapabilities\\n  |InputEvent|InstallEvent|InstallTrigger|KeyboardEvent|LinkStyle|LocalFileSystem|LocalFileSystemSync|Location|MIDIAccess\\n  |MIDIConnectionEvent|MIDIInput|MIDIInputMap|MIDIOutputMap|MediaElementAudioSourceNode|MediaError|MediaKeyMessageEvent\\n  |MediaKeySession|MediaKeyStatusMap|MediaKeySystemAccess|MediaKeySystemConfiguration|MediaKeys|MediaRecorder|MediaStream\\n  |MediaStreamAudioDestinationNode|MediaStreamAudioSourceNode|MessageChannel|MessageEvent|MessagePort|MouseEvent\\n  |MutationObserver|MutationRecord|NamedNodeMap|Navigator|NavigatorConcurrentHardware|NavigatorGeolocation|NavigatorID\\n  |NavigatorLanguage|NavigatorOnLine|Node|NodeFilter|NodeIterator|NodeList|NonDocumentTypeChildNode|Notification\\n  |OfflineAudioCompletionEvent|OfflineAudioContext|OscillatorNode|PageTransitionEvent|PannerNode|ParentNode|PasswordCredential\\n  |Path2D|PaymentAddress|PaymentRequest|PaymentResponse|Performance|PerformanceEntry|PerformanceFrameTiming|PerformanceMark\\n  |PerformanceMeasure|PerformanceNavigation|PerformanceNavigationTiming|PerformanceObserver|PerformanceObserverEntryList\\n  |PerformanceResourceTiming|PerformanceTiming|PeriodicSyncEvent|PeriodicWave|Plugin|Point|PointerEvent|PopStateEvent\\n  |PortCollection|Position|PositionError|PositionOptions|PresentationConnectionClosedEvent|PresentationConnectionList\\n  |PresentationReceiver|ProcessingInstruction|ProgressEvent|PromiseRejectionEvent|PushEvent|PushRegistrationManager\\n  |RTCCertificate|RTCConfiguration|RTCPeerConnection|RTCSessionDescriptionCallback|RTCStatsReport|RadioNodeList|RandomSource\\n  |Range|ReadableByteStream|RenderingContext|SVGAElement|SVGAngle|SVGAnimateColorElement|SVGAnimateElement|SVGAnimateMotionElement\\n  |SVGAnimateTransformElement|SVGAnimatedAngle|SVGAnimatedBoolean|SVGAnimatedEnumeration|SVGAnimatedInteger|SVGAnimatedLength\\n  |SVGAnimatedLengthList|SVGAnimatedNumber|SVGAnimatedNumberList|SVGAnimatedPoints|SVGAnimatedPreserveAspectRatio\\n  |SVGAnimatedRect|SVGAnimatedString|SVGAnimatedTransformList|SVGAnimationElement|SVGCircleElement|SVGClipPathElement\\n  |SVGCursorElement|SVGDefsElement|SVGDescElement|SVGElement|SVGEllipseElement|SVGEvent|SVGFilterElement|SVGFontElement\\n  |SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement\\n  |SVGForeignObjectElement|SVGGElement|SVGGlyphElement|SVGGradientElement|SVGHKernElement|SVGImageElement|SVGLength\\n  |SVGLengthList|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMaskElement|SVGMatrix|SVGMissingGlyphElement\\n  |SVGNumber|SVGNumberList|SVGPathElement|SVGPatternElement|SVGPoint|SVGPolygonElement|SVGPolylineElement|SVGPreserveAspectRatio\\n  |SVGRadialGradientElement|SVGRect|SVGRectElement|SVGSVGElement|SVGScriptElement|SVGSetElement|SVGStopElement|SVGStringList\\n  |SVGStylable|SVGStyleElement|SVGSwitchElement|SVGSymbolElement|SVGTRefElement|SVGTSpanElement|SVGTests|SVGTextElement\\n  |SVGTextPositioningElement|SVGTitleElement|SVGTransform|SVGTransformList|SVGTransformable|SVGUseElement|SVGVKernElement\\n  |SVGViewElement|ServiceWorker|ServiceWorkerContainer|ServiceWorkerGlobalScope|ServiceWorkerRegistration|ServiceWorkerState\\n  |ShadowRoot|SharedWorker|SharedWorkerGlobalScope|SourceBufferList|StereoPannerNode|Storage|StorageEvent|StyleSheet\\n  |StyleSheetList|SubtleCrypto|SyncEvent|Text|TextMetrics|TimeEvent|TimeRanges|Touch|TouchEvent|TouchList|Transferable\\n  |TreeWalker|UIEvent|USVString|VRDisplayCapabilities|ValidityState|WaveShaperNode|WebGL|WebGLActiveInfo|WebGLBuffer\\n  |WebGLContextEvent|WebGLFramebuffer|WebGLProgram|WebGLRenderbuffer|WebGLRenderingContext|WebGLShader|WebGLShaderPrecisionFormat\\n  |WebGLTexture|WebGLTimerQueryEXT|WebGLTransformFeedback|WebGLUniformLocation|WebGLVertexArrayObject|WebGLVertexArrayObjectOES\\n  |WebSocket|WebSockets|WebVTT|WheelEvent|Window|WindowBase64|WindowEventHandlers|WindowTimers|Worker|WorkerGlobalScope\\n  |WorkerLocation|WorkerNavigator|XMLHttpRequest|XMLHttpRequestEventTarget|XMLSerializer|XPathExpression|XPathResult\\n  |XSLTProcessor))\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.variable.dom.ts\"\n            },\n            \"2\": {\n              \"name\": \"support.class.dom.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE\\n  |DOMSTRING_SIZE_ERR|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|HIERARCHY_REQUEST_ERR|INDEX_SIZE_ERR\\n  |INUSE_ATTRIBUTE_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR\\n  |NOT_SUPPORTED_ERR|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|WRONG_DOCUMENT_ERR)\\n  |\\n  (_content|[xyz]|abbr|above|accept|acceptCharset|accessKey|action|align|[av]Link(?:color)?|all|alt|anchors|appCodeName\\n  |appCore|applets|appMinorVersion|appName|appVersion|archive|areas|arguments|attributes|availHeight|availLeft|availTop\\n  |availWidth|axis|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor\\n  |borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|borderWidth|bottom|bufferDepth|callee|caller|caption\\n  |cellPadding|cells|cellSpacing|ch|characterSet|charset|checked|childNodes|chOff|cite|classes|className|clear\\n  |clientInformation|clip|clipBoardData|closed|code|codeBase|codeType|color|colorDepth|cols|colSpan|compact|complete\\n  |components|content|controllers|cookie|cookieEnabled|cords|cpuClass|crypto|current|data|dateTime|declare|defaultCharset\\n  |defaultChecked|defaultSelected|defaultStatus|defaultValue|defaultView|defer|description|dialogArguments|dialogHeight\\n  |dialogLeft|dialogTop|dialogWidth|dir|directories|disabled|display|docmain|doctype|documentElement|elements|embeds\\n  |enabledPlugin|encoding|enctype|entities|event|expando|external|face|fgColor|filename|firstChild|fontFamily|fontSize\\n  |fontWeight|form|formName|forms|frame|frameBorder|frameElement|frames|hasFocus|hash|headers|height|history|host\\n  |hostname|href|hreflang|hspace|htmlFor|httpEquiv|id|ids|ignoreCase|images|implementation|index|innerHeight|innerWidth\\n  |input|isMap|label|lang|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layer[sXY]|left|leftContext\\n  |lineHeight|link|linkColor|links|listStyleType|localName|location|locationbar|longDesc|lowsrc|lowSrc|marginBottom\\n  |marginHeight|marginLeft|marginRight|marginTop|marginWidth|maxLength|media|menubar|method|mimeType|multiline|multiple\\n  |name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|noHref|noResize|noShade|notationName\\n  |notations|noWrap|object|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|options|oscpu|outerHeight\\n  |outerWidth|ownerDocument|paddingBottom|paddingLeft|paddingRight|paddingTop|page[XY]|page[XY]Offset|parent|parentLayer\\n  |parentNode|parentWindow|pathname|personalbar|pixelDepth|pkcs11|platform|plugins|port|prefix|previous|previousDibling\\n  |product|productSub|profile|profileend|prompt|prompter|protocol|publicId|readOnly|readyState|referrer|rel|responseText\\n  |responseXML|rev|right|rightContext|rowIndex|rows|rowSpan|rules|scheme|scope|screen[XY]|screenLeft|screenTop|scripts\\n  |scrollbars|scrolling|sectionRowIndex|security|securityPolicy|selected|selectedIndex|selection|self|shape|siblingAbove\\n  |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary\\n  |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead\\n  |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile\\n  |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\\\\b(?!\\\\$|\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"support.constant.dom.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.dom.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"support.class.node.ts\",\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream\\n  |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(process)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?:\\n  (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions)\\n  |\\n  (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime)\\n))?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.variable.object.process.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.process.ts\"\n            },\n            \"5\": {\n              \"name\": \"support.function.process.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.object.module.ts\"\n            },\n            \"2\": {\n              \"name\": \"support.type.object.module.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"5\": {\n              \"name\": \"support.type.object.module.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"support.variable.object.node.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(global|GLOBAL|root|__dirname|__filename)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s*\\n(?:\\n (on(?:Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\\n   Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\\n   Before(?:cut|deactivate|unload|update|paste|print|editfocus|activate)|\\n   Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\\n   Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\\n   Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\\n   Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\\n   Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\n ) |\\n (shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\\n   scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\\n   sup|sub|substr|substring|splice|split|send|set(?:Milliseconds|Seconds|Minutes|Hours|\\n   Month|Year|FullYear|Date|UTC(?:Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\\n   Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\\n   savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\\n   contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\\n   createEventObject|to(?:GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\\n   test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\\n   untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\\n   print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\\n   fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\\n   forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\\n   abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\\n   releaseCapture|releaseEvents|go|get(?:Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\\n   Time|Date|TimezoneOffset|UTC(?:Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\\n   Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\\n   moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back\\n ) |\\n (acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\\n   appendChild|appendData|before|blur|canPlayType|captureStream|\\n   caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\\n   cloneContents|cloneNode|cloneRange|close|closest|collapse|\\n   compareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\\n   convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\\n   createAttributeNS|createCaption|createCDATASection|createComment|\\n   createContextualFragment|createDocument|createDocumentFragment|\\n   createDocumentType|createElement|createElementNS|createEntityReference|\\n   createEvent|createExpression|createHTMLDocument|createNodeIterator|\\n   createNSResolver|createProcessingInstruction|createRange|createShadowRoot|\\n   createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\\n   deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\\n   deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\\n   enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\\n   exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\\n   getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\\n   getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\\n   getClientRects|getContext|getDestinationInsertionPoints|getElementById|\\n   getElementsByClassName|getElementsByName|getElementsByTagName|\\n   getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\\n   getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\\n   hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\\n   insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\\n   insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\\n   isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\\n   lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\\n   moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\\n   parentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\\n   previousSibling|probablySupportsContext|queryCommandEnabled|\\n   queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\\n   querySelector|querySelectorAll|registerContentHandler|registerElement|\\n   registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\\n   removeAttributeNode|removeAttributeNS|removeChild|removeEventListener|\\n   removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\\n   requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\\n   scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\\n   setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\\n   setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\\n   setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\\n   slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\\n   submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\\n   toDataURL|toggle|toString|values|write|writeln\\n )\\n)(?=\\\\s*\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"support.function.event-handler.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.function.ts\"\n            },\n            \"5\": {\n              \"name\": \"support.function.dom.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"match\": \"(?x)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    # sure shot arrow functions even if => is on new line\\n(\\n  [(]\\\\s*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\([^\\\\(\\\\)]*\\\\))|(\\\\[[^\\\\[\\\\]]*\\\\]))([^=<>]|=[^<])*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(([_$[:alpha:]]|(\\\\{[^\\\\{\\\\}]*\\\\})|(\\\\[[^\\\\[\\\\]]*\\\\]))([^()]|(\\\\([^\\\\(\\\\)]*\\\\)))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)]|\\\\<[^<>]+\\\\>|\\\\([^\\\\(\\\\)]+\\\\))+)?                                                      # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.property.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"variable.other.constant.ts\",\n          \"match\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\"\n        },\n        {\n          \"name\": \"variable.other.readwrite.ts\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"object-identifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.class.ts\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))\"\n        },\n        {\n          \"match\": \"(?x)(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.object.property.ts\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.object.property.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.constant.object.ts\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.ts\",\n          \"begin\": \"(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ts\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=$|^|[,);\\\\}\\\\]]|//)|(?==[^>])|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.annotation.ts\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ts\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[,);\\\\}\\\\]]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$))|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.return.type.ts\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ts\"\n            }\n          },\n          \"end\": \"(?<![:|&])(?=$|^|[{};,]|//)\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.return.type.ts\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ts\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[{};,]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<=[:|&])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"arrow-return-type\": {\n      \"name\": \"meta.return.type.arrow.ts\",\n      \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.annotation.ts\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[:])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-parameters\": {\n      \"name\": \"meta.type.parameters.ts\",\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.ts\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.end.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"storage.modifier.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.ts\",\n          \"match\": \"\\\\=(?!>)\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-builtin-literals\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#type-tuple\"\n        },\n        {\n          \"include\": \"#type-object\"\n        },\n        {\n          \"include\": \"#type-conditional\"\n        },\n        {\n          \"include\": \"#type-operators\"\n        },\n        {\n          \"include\": \"#type-fn-type-parameters\"\n        },\n        {\n          \"include\": \"#type-paren-or-function-parameters\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"include\": \"#type-name\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"name\": \"support.type.primitive.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|boolean|symbol|any|void|never)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-builtin-literals\": {\n      \"name\": \"support.type.builtin.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-tuple\": {\n      \"name\": \"meta.type.tuple.ts\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ts\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-object\": {\n      \"name\": \"meta.object.type.ts\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#indexer-mapped-type-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-conditional\": {\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(extends)\\\\s+\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        }\n      }\n    },\n    \"type-paren-or-function-parameters\": {\n      \"name\": \"meta.type.paren.cover.ts\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#function-parameters\"\n        }\n      ]\n    },\n    \"type-fn-type-parameters\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.constructor.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\b(?=\\\\s*\\\\<)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.new.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.type.constructor.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\b\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.new.ts\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.ts\",\n          \"begin\": \"(?x)(\\n  (?=\\n    [(]\\\\s*(\\n      ([)]) |\\n      (\\\\.\\\\.\\\\.) |\\n      ([_$[:alnum:]]+\\\\s*(\\n        ([:,?=])|\\n        ([)]\\\\s*=>)\\n      ))\\n    )\\n  )\\n)\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.function.return.ts\",\n          \"begin\": \"(=>)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.arrow.ts\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])(?=[,\\\\]\\\\)\\\\{\\\\}=;>]|//|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.return.ts\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.ts\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])((?=[,\\\\]\\\\)\\\\{\\\\}=;>]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<==>)(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"begin\": \"([&|])(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.ts\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[&|]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\S)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.keyof.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.ternary.ts\",\n          \"match\": \"(\\\\?|\\\\:)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.infer.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))infer(?=\\\\s+[_$[:alpha:]])\"\n        }\n      ]\n    },\n    \"type-predicate-operator\": {\n      \"name\": \"keyword.operator.expression.is.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.ts\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.ts\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.ts\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.optional.ts\"\n        }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        }\n      ]\n    },\n    \"qstring-double\": {\n      \"name\": \"string.quoted.double.ts\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ts\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.ts\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"qstring-single\": {\n      \"name\": \"string.quoted.single.ts\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ts\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.ts\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.ts\",\n      \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n    },\n    \"template\": {\n      \"name\": \"string.template.ts\",\n      \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.tagged-template.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.template.begin.ts\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.template.end.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#template-substitution-element\"\n        },\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"template-substitution-element\": {\n      \"name\": \"meta.template.expression.ts\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.ts\"\n    },\n    \"regex\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.ts\",\n          \"begin\": \"(?<=[=(:,\\\\[?+!]|^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*\\\\/)\\\\s*(\\\\/)(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\])+\\\\/(?![\\\\/*])[gimuy]*(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.ts\"\n            }\n          },\n          \"end\": \"(/)([gimuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.regexp.ts\",\n          \"begin\": \"(?<![_$[:alnum:])])\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\])+\\\\/(?![\\\\/*])[gimuy]*(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ts\"\n            }\n          },\n          \"end\": \"(/)([gimuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.anchor.regexp\",\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\"\n        },\n        {\n          \"name\": \"keyword.other.back-reference.regexp\",\n          \"match\": \"\\\\\\\\[1-9]\\\\d*\"\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.or.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"name\": \"meta.group.assertion.regexp\",\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.assertion.regexp\"\n            },\n            \"3\": {\n              \"name\": \"meta.assertion.look-ahead.regexp\"\n            },\n            \"4\": {\n              \"name\": \"meta.assertion.negative-look-ahead.regexp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\((\\\\?:)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.group.no-capture.regexp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.other.character-class.range.regexp\",\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#regex-character-class\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regex-character-class\"\n        }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.character-class.regexp\",\n          \"match\": \"\\\\\\\\[wWsSdDtrnvf]|\\\\.\"\n        },\n        {\n          \"name\": \"constant.character.numeric.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\"\n        },\n        {\n          \"name\": \"constant.character.control.regexp\",\n          \"match\": \"\\\\\\\\c[A-Z]\"\n        },\n        {\n          \"name\": \"constant.character.escape.backslash.regexp\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.ts\",\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docblock\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.ts\",\n          \"begin\": \"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.internaldeclaration.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.ts\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.ts\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.double-slash.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.internaldeclaration.ts\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.ts\"\n            }\n          },\n          \"end\": \"(?=^)\",\n          \"contentName\": \"comment.line.double-slash.ts\"\n        }\n      ]\n    },\n    \"directives\": {\n      \"name\": \"comment.line.triple-slash.directive.ts\",\n      \"begin\": \"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|name)\\\\s*=\\\\s*((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\\\\\'|\\\\\\\\)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\\\\\"|\\\\\\\\)*\\\\\\\")))+\\\\s*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.ts\"\n        }\n      },\n      \"end\": \"(?=^)\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.ts\",\n          \"begin\": \"(<)(reference|amd-dependency|amd-module)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.directive.ts\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.directive.ts\"\n            }\n          },\n          \"end\": \"/>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.directive.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.other.attribute-name.directive.ts\",\n              \"match\": \"path|types|no-default-lib|name\"\n            },\n            {\n              \"name\": \"keyword.operator.assignment.ts\",\n              \"match\": \"=\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docblock\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n((@)(?:access|api))\\n\\\\s+\\n(private|protected|public)\\n\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.access-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)author)\\n\\\\s+\\n(\\n  [^@\\\\s<>*/]\\n  (?:[^@<>*/]|\\\\*[^/])*\\n)\\n(?:\\n  \\\\s*\\n  (<)\\n  ([^>\\\\s]+)\\n  (>)\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.email.link.underline.jsdoc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)borrows) \\\\s+\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <that namepath>\\n\\\\s+ (as) \\\\s+              # as\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <this namepath>\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.control.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.example.jsdoc\",\n          \"begin\": \"((@)example)\\\\s+\",\n          \"end\": \"(?=@|\\\\*/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"^\\\\s\\\\*\\\\s+\"\n            },\n            {\n              \"contentName\": \"constant.other.description.jsdoc\",\n              \"begin\": \"\\\\G(<)caption(>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              },\n              \"end\": \"(</)caption(>)|(?=\\\\*/)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"source.embedded.ts\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x) ((@)kind) \\\\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.symbol-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)see)\\n\\\\s+\\n(?:\\n  # URL\\n  (\\n    (?=https?://)\\n    (?:[^\\\\s*]|\\\\*[^/])+\\n  )\\n  |\\n  # JSDoc namepath\\n  (\\n    (?!\\n      # Avoid matching bare URIs (also acceptable as links)\\n      https?://\\n      |\\n      # Avoid matching {@inline tags}; we match those below\\n      (?:\\\\[[^\\\\[\\\\]]*\\\\])? # Possible description [preceding]{@tag}\\n      {@(?:link|linkcode|linkplain|tutorial)\\\\b\\n    )\\n    # Matched namepath\\n    (?:[^@\\\\s*/]|\\\\*[^/])+\\n  )\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.link.underline.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)template)\\n\\\\s+\\n# One or more valid identifiers\\n(\\n  [A-Za-z_$]         # First character: non-numeric word character\\n  [\\\\w$.\\\\[\\\\]]*        # Rest of identifier\\n  (?:                # Possible list of additional identifiers\\n    \\\\s* , \\\\s*\\n    [A-Za-z_$]\\n    [\\\\w$.\\\\[\\\\]]*\\n  )*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:arg|argument|const|constant|member|namespace|param|var)\\n)\\n\\\\s+\\n(\\n  [A-Za-z_$]\\n  [\\\\w$.\\\\[\\\\]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((@)typedef)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"entity.name.type.instance.jsdoc\",\n              \"match\": \"(?:[^@\\\\s*/]|\\\\*[^/])+\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"(?x)\\n(\\\\[)\\\\s*\\n[\\\\w$]+\\n(?:\\n  (?:\\\\[\\\\])?                                        # Foo[ ].bar properties within an array\\n  \\\\.                                                # Foo.Bar namespaced parameter\\n  [\\\\w$]+\\n)*\\n(?:\\n  \\\\s*\\n  (=)                                                # [foo=bar] Default parameter value\\n  \\\\s*\\n  (\\n    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\\n    (?>\\n      \\\"(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!\\\"))|[^*\\\\\\\\])*?\\\" |                      # [foo=\\\"bar\\\"] Double-quoted\\n      '(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!'))|[^*\\\\\\\\])*?' |                      # [foo='bar'] Single-quoted\\n      \\\\[ (?:(?:\\\\*(?!/))|[^*])*? \\\\] |                                # [foo=[1,2]] Array literal\\n      (?:(?:\\\\*(?!/))|\\\\s(?!\\\\s*\\\\])|\\\\[.*?(?:\\\\]|(?=\\\\*/))|[^*\\\\s\\\\[\\\\]])*   # Everything else\\n    )*\\n  )\\n)?\\n\\\\s*(?:(\\\\])((?:[^*\\\\s]|\\\\*[^\\\\s/])+)?|(?=\\\\*/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.optional-value.begin.bracket.square.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.jsdoc\"\n                },\n                \"3\": {\n                  \"name\": \"source.embedded.ts\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.optional-value.end.bracket.square.jsdoc\"\n                },\n                \"5\": {\n                  \"name\": \"invalid.illegal.syntax.jsdoc\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(\\n  (@)\\n  (?:define|enum|exception|export|extends|lends|implements|modifies\\n  |namespace|private|protected|returns?|suppress|this|throws|type\\n  |yields?)\\n)\\n\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [^{}@\\\\s*] | \\\\*[^/]\\n  )+\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"contentName\": \"variable.other.jsdoc\",\n          \"begin\": \"((@)(?:default(?:value)?|license|version))\\\\s+(([''\\\"]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.string.begin.jsdoc\"\n            }\n          },\n          \"end\": \"(\\\\3)|(?=$|\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^\\\\s*]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"storage.type.class.jsdoc\",\n          \"match\": \"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        },\n        {\n          \"include\": \"#inline-tags\"\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"inline-tags\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.description.jsdoc\",\n          \"match\": \"(\\\\[)[^\\\\]]+(\\\\])(?={@(?:link|linkcode|linkplain|tutorial))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.square.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.square.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"({)((@)(?:link(?:code|plain)?|tutorial))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.inline.tag.jsdoc\"\n            }\n          },\n          \"end\": \"}|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G((?=https?://)(?:[^|}\\\\s*]|\\\\*[/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.link.underline.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\G((?:[^{}@\\\\s|*]|\\\\*[^/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.description.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"jsdoctype\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.illegal.type.jsdoc\",\n          \"match\": \"\\\\G{(?:[^}*]|\\\\*[^/}])+$\"\n        },\n        {\n          \"contentName\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"\\\\G({)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            }\n          },\n          \"end\": \"((}))\\\\s*|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/vala.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"(\\\\{\\\\s*(//.*)?$|^\\\\s*// \\\\{\\\\{\\\\{)\",\n  \"foldingStopMarker\": \"^\\\\s*(\\\\}|// \\\\}\\\\}\\\\}$)\",\n  \"repository\": {\n    \"constants-and-special-vars\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(true|false|null)\\\\b\",\n          \"name\": \"constant.language.vala\"\n        },\n        { \"match\": \"\\\\b(this|base)\\\\b\", \"name\": \"variable.language.vala\" },\n        {\n          \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\\\\b\",\n          \"name\": \"constant.numeric.vala\"\n        },\n        {\n          \"match\": \"(\\\\.)?\\\\b([A-Z][A-Z0-9_]+)(?!<|\\\\.class|\\\\s*\\\\w+\\\\s*=)\\\\b\",\n          \"name\": \"constant.other.vala\",\n          \"captures\": { \"1\": { \"name\": \"keyword.operator.dereference.vala\" } }\n        }\n      ]\n    },\n    \"values\": {\n      \"patterns\": [\n        { \"include\": \"#strings\" },\n        { \"include\": \"#object-types\" },\n        { \"include\": \"#constants-and-special-vars\" }\n      ]\n    },\n    \"class\": {\n      \"begin\": \"(?=\\\\w?[\\\\w\\\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\\\s+\\\\w+)\",\n      \"endCaptures\": { \"0\": { \"name\": \"punctuation.section.class.end.vala\" } },\n      \"end\": \"}\",\n      \"comment\": \"attempting to put namespace in here.\",\n      \"name\": \"meta.class.vala\",\n      \"patterns\": [\n        { \"include\": \"#storage-modifiers\" },\n        { \"include\": \"#comments\" },\n        {\n          \"match\": \"(class|(?:@)?interface|enum|struct|namespace)\\\\s+([\\\\w\\\\.]+)\",\n          \"name\": \"meta.class.identifier.vala\",\n          \"captures\": {\n            \"1\": { \"name\": \"storage.modifier.vala\" },\n            \"2\": { \"name\": \"entity.name.type.class.vala\" }\n          }\n        },\n        {\n          \"begin\": \":\",\n          \"end\": \"(?={|,)\",\n          \"patterns\": [\n            { \"include\": \"#object-types-inherited\" },\n            { \"include\": \"#comments\" }\n          ],\n          \"name\": \"meta.definition.class.inherited.classes.vala\",\n          \"beginCaptures\": { \"0\": { \"name\": \"storage.modifier.extends.vala\" } }\n        },\n        {\n          \"begin\": \"(,)\\\\s\",\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            { \"include\": \"#object-types-inherited\" },\n            { \"include\": \"#comments\" }\n          ],\n          \"name\": \"meta.definition.class.implemented.interfaces.vala\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"storage.modifier.implements.vala\" }\n          }\n        },\n        {\n          \"begin\": \"{\",\n          \"end\": \"(?=})\",\n          \"patterns\": [{ \"include\": \"#class-body\" }],\n          \"name\": \"meta.class.body.vala\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"patterns\": [\n        { \"match\": \"final\", \"name\": \"storage.modifier.vala\" },\n        { \"include\": \"#primitive-arrays\" },\n        { \"include\": \"#primitive-types\" },\n        { \"include\": \"#object-types\" },\n        { \"match\": \"\\\\w+\", \"name\": \"variable.parameter.vala\" }\n      ]\n    },\n    \"code\": {\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#class\" },\n        { \"begin\": \"{\", \"end\": \"}\", \"patterns\": [{ \"include\": \"#code\" }] },\n        { \"include\": \"#assertions\" },\n        { \"include\": \"#parens\" },\n        { \"include\": \"#constants-and-special-vars\" },\n        { \"include\": \"#anonymous-classes-and-new\" },\n        { \"include\": \"#keywords\" },\n        { \"include\": \"#storage-modifiers\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#all-types\" }\n      ]\n    },\n    \"annotations\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(@[^ (]+)(\\\\()\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation-arguments.end.vala\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\w*)\\\\s*(=)\",\n              \"captures\": {\n                \"1\": { \"name\": \"constant.other.key.vala\" },\n                \"2\": { \"name\": \"keyword.operator.assignment.vala\" }\n              }\n            },\n            { \"include\": \"#code\" },\n            { \"match\": \",\", \"name\": \"punctuation.seperator.property.vala\" }\n          ],\n          \"name\": \"meta.declaration.annotation.vala\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"storage.type.annotation.vala\" },\n            \"2\": {\n              \"name\": \"punctuation.definition.annotation-arguments.begin.vala\"\n            }\n          }\n        },\n        { \"match\": \"@\\\\w*\", \"name\": \"storage.type.annotation.vala\" }\n      ]\n    },\n    \"anonymous-classes-and-new\": {\n      \"begin\": \"\\\\bnew\\\\b\",\n      \"end\": \"(?<=\\\\)|\\\\])(?!\\\\s*{)|(?<=})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\w+)\\\\s*(?=\\\\[)\",\n          \"end\": \"}|(?=;|\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"patterns\": [{ \"include\": \"#code\" }]\n            },\n            {\n              \"begin\": \"{\",\n              \"end\": \"(?=})\",\n              \"patterns\": [{ \"include\": \"#code\" }]\n            }\n          ],\n          \"beginCaptures\": { \"1\": { \"name\": \"storage.type.vala\" } }\n        },\n        {\n          \"begin\": \"(?=\\\\w.*\\\\()\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            { \"include\": \"#object-types\" },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [{ \"include\": \"#code\" }],\n              \"beginCaptures\": { \"1\": { \"name\": \"storage.type.vala\" } }\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"end\": \"}\",\n          \"patterns\": [{ \"include\": \"#class-body\" }],\n          \"name\": \"meta.inner-class.vala\"\n        }\n      ],\n      \"beginCaptures\": { \"0\": { \"name\": \"keyword.control.new.vala\" } }\n    },\n    \"assertions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(assert|requires|ensures)\\\\s\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"match\": \":\",\n              \"name\": \"keyword.operator.assert.expression-seperator.vala\"\n            },\n            { \"include\": \"#code\" }\n          ],\n          \"name\": \"meta.declaration.assertion.vala\",\n          \"beginCaptures\": { \"1\": { \"name\": \"keyword.control.assert.vala\" } }\n        }\n      ]\n    },\n    \"object-types-inherited\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b((?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*)<\",\n          \"end\": \">|[^\\\\w\\\\s,<]\",\n          \"patterns\": [\n            { \"include\": \"#object-types\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|[^\\\\w\\\\s,<]\",\n              \"comment\": \"This is just to support <>'s with no actual type prefix\",\n              \"name\": \"storage.type.generic.vala\"\n            }\n          ],\n          \"name\": \"entity.other.inherited-class.vala\"\n        },\n        {\n          \"match\": \"\\\\b(?:[a-z]\\\\w*(\\\\.))*[A-Z]+\\\\w*\",\n          \"name\": \"entity.other.inherited-class.vala\",\n          \"captures\": { \"1\": { \"name\": \"keyword.operator.dereference.vala\" } }\n        }\n      ]\n    },\n    \"class-body\": {\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#class\" },\n        { \"include\": \"#enums\" },\n        { \"include\": \"#methods\" },\n        { \"include\": \"#annotations\" },\n        { \"include\": \"#storage-modifiers\" },\n        { \"include\": \"#code\" }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"@\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.vala\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.|%[\\\\w\\\\.\\\\-]+|\\\\$(\\\\w+|\\\\([\\\\w\\\\s\\\\+\\\\-\\\\*\\\\/]+\\\\))\",\n              \"name\": \"constant.character.escape.vala\"\n            }\n          ],\n          \"name\": \"string.quoted.interpolated.vala\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.vala\" }\n          }\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.vala\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.vala\" },\n            {\n              \"match\": \"%[\\\\w\\\\.\\\\-]+\",\n              \"name\": \"constant.character.escape.vala\"\n            }\n          ],\n          \"name\": \"string.quoted.double.vala\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.vala\" }\n          }\n        },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.vala\" }\n          },\n          \"end\": \"'\",\n          \"patterns\": [\n            { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.vala\" }\n          ],\n          \"name\": \"string.quoted.single.vala\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.vala\" }\n          }\n        },\n        {\n          \"begin\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.vala\" }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"patterns\": [\n            {\n              \"match\": \"%[\\\\w\\\\.\\\\-]+\",\n              \"name\": \"constant.character.escape.vala\"\n            }\n          ],\n          \"name\": \"string.quoted.triple.vala\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.vala\" }\n          }\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(try|catch|finally|throw)\\\\b\",\n          \"name\": \"keyword.control.catch-exception.vala\"\n        },\n        { \"match\": \"\\\\?|:|\\\\?\\\\?\", \"name\": \"keyword.control.vala\" },\n        {\n          \"match\": \"\\\\b(return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\\\b\",\n          \"name\": \"keyword.control.vala\"\n        },\n        { \"match\": \"\\\\b(typeof|is|as)\\\\b\", \"name\": \"keyword.operator.vala\" },\n        {\n          \"match\": \"(==|!=|<=|>=|<>|<|>)\",\n          \"name\": \"keyword.operator.comparison.vala\"\n        },\n        { \"match\": \"(=)\", \"name\": \"keyword.operator.assignment.vala\" },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.vala\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.vala\"\n        },\n        { \"match\": \"(!|&&|\\\\|\\\\|)\", \"name\": \"keyword.operator.logical.vala\" },\n        {\n          \"match\": \"(?<=\\\\S)\\\\.(?=\\\\S)\",\n          \"name\": \"keyword.operator.dereference.vala\"\n        },\n        { \"match\": \";\", \"name\": \"punctuation.terminator.vala\" },\n        { \"match\": \"(owned|unowned)\", \"name\": \"keyword.operator.ownership\" }\n      ]\n    },\n    \"comments-inline\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.vala\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.vala\" } }\n        },\n        {\n          \"match\": \"\\\\s*((//).*$\\\\n?)\",\n          \"captures\": {\n            \"1\": { \"name\": \"comment.line.double-slash.vala\" },\n            \"2\": { \"name\": \"punctuation.definition.comment.vala\" }\n          }\n        }\n      ]\n    },\n    \"throws\": {\n      \"begin\": \"throws\",\n      \"end\": \"(?={|;)\",\n      \"patterns\": [{ \"include\": \"#object-types\" }],\n      \"name\": \"meta.throwables.vala\",\n      \"beginCaptures\": { \"0\": { \"name\": \"storage.modifier.vala\" } }\n    },\n    \"primitive-types\": {\n      \"patterns\": [\n        {\n          \"comment\": \"var is not really a primitive, but acts like one in most cases\",\n          \"match\": \"\\\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\\\b\",\n          \"name\": \"storage.type.primitive.vala\"\n        }\n      ]\n    },\n    \"all-types\": {\n      \"patterns\": [\n        { \"include\": \"#primitive-arrays\" },\n        { \"include\": \"#primitive-types\" },\n        { \"include\": \"#object-types\" }\n      ]\n    },\n    \"namespace\": {\n      \"begin\": \"^(?=\\\\s*[A-Z0-9_]+\\\\s*({|\\\\(|,))\",\n      \"end\": \"(?=;|})\",\n      \"comment\": \"This is not quite right. See the class grammar right now\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\w+\",\n          \"end\": \"(?=,|;|})\",\n          \"patterns\": [\n            { \"include\": \"#parens\" },\n            { \"begin\": \"{\", \"end\": \"}\", \"patterns\": [{ \"include\": \"#code\" }] }\n          ],\n          \"name\": \"meta.namespace.vala\",\n          \"beginCaptures\": { \"0\": { \"name\": \"constant.other.namespace.vala\" } }\n        }\n      ]\n    },\n    \"storage-modifiers\": {\n      \"comment\": \"Not sure about unsafe and readonly\",\n      \"match\": \"\\\\b(public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\\\b\",\n      \"captures\": { \"1\": { \"name\": \"storage.modifier.vala\" } }\n    },\n    \"enums\": {\n      \"begin\": \"^(?=\\\\s*[A-Z0-9_]+\\\\s*({|\\\\(|,))\",\n      \"end\": \"(?=;|})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\w+\",\n          \"end\": \"(?=,|;|})\",\n          \"patterns\": [\n            { \"include\": \"#parens\" },\n            {\n              \"begin\": \"{\",\n              \"end\": \"}\",\n              \"patterns\": [{ \"include\": \"#class-body\" }]\n            }\n          ],\n          \"name\": \"meta.enum.vala\",\n          \"beginCaptures\": { \"0\": { \"name\": \"constant.other.enum.vala\" } }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"/\\\\*\\\\*/\",\n          \"name\": \"comment.block.empty.vala\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.vala\" } }\n        },\n        { \"include\": \"text.html.javadoc\" },\n        { \"include\": \"#comments-inline\" }\n      ]\n    },\n    \"methods\": {\n      \"begin\": \"(?!new)(?=\\\\w.*\\\\s+)(?=[^=]+\\\\()\",\n      \"end\": \"}|(?=;)\",\n      \"patterns\": [\n        { \"include\": \"#storage-modifiers\" },\n        {\n          \"begin\": \"([\\\\~\\\\w\\\\.]+)\\\\s*\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"#parameters\" }],\n          \"name\": \"meta.method.identifier.vala\",\n          \"beginCaptures\": { \"1\": { \"name\": \"entity.name.function.vala\" } }\n        },\n        {\n          \"begin\": \"(?=\\\\w.*\\\\s+\\\\w+\\\\s*\\\\()\",\n          \"end\": \"(?=\\\\w+\\\\s*\\\\()\",\n          \"patterns\": [{ \"include\": \"#all-types\" }],\n          \"name\": \"meta.method.return-type.vala\"\n        },\n        { \"include\": \"#throws\" },\n        {\n          \"begin\": \"{\",\n          \"end\": \"(?=})\",\n          \"patterns\": [{ \"include\": \"#code\" }],\n          \"name\": \"meta.method.body.vala\"\n        }\n      ],\n      \"name\": \"meta.method.vala\"\n    },\n    \"primitive-arrays\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(\\\\[\\\\])*\\\\b\",\n          \"name\": \"storage.type.primitive.array.vala\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [{ \"include\": \"#code\" }]\n    },\n    \"object-types\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b((?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*)<\",\n          \"end\": \">|[^\\\\w\\\\s,\\\\?<\\\\[\\\\]]\",\n          \"patterns\": [\n            { \"include\": \"#object-types\" },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|[^\\\\w\\\\s,\\\\[\\\\]<]\",\n              \"comment\": \"This is just to support <>'s with no actual type prefix\",\n              \"name\": \"storage.type.generic.vala\"\n            }\n          ],\n          \"name\": \"storage.type.generic.vala\"\n        },\n        {\n          \"begin\": \"\\\\b((?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*)(?=\\\\[)\",\n          \"end\": \"(?=[^\\\\]\\\\s])\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"patterns\": [{ \"include\": \"#code\" }]\n            }\n          ],\n          \"name\": \"storage.type.object.array.vala\"\n        },\n        {\n          \"match\": \"\\\\b(?:[a-z]\\\\w*(\\\\.))*[A-Z]+\\\\w*\\\\b\",\n          \"name\": \"storage.type.vala\",\n          \"captures\": { \"1\": { \"name\": \"keyword.operator.dereference.vala\" } }\n        }\n      ]\n    }\n  },\n  \"fileTypes\": [\"vala\", \"vapi\"],\n  \"uuid\": \"5FBC8212-3C2F-45AC-83D2-0C9195878913\",\n  \"patterns\": [\n    {\n      \"match\": \"^\\\\s*(using)\\\\b(?:\\\\s*([^ ;$]+)\\\\s*(;)?)?\",\n      \"name\": \"meta.using.vala\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.using.vala\" },\n        \"2\": { \"name\": \"storage.modifier.using.vala\" },\n        \"3\": { \"name\": \"punctuation.terminator.vala\" }\n      }\n    },\n    { \"include\": \"#code\" }\n  ],\n  \"comment\": \"Based heavily on the Java bundle's language syntax. TODO:\\n* Closures\\n* Delegates\\n* Properties: Better support for properties.\\n* Annotations\\n* Error domains\\n* Named arguments\\n* Array slicing, negative indexes, multidimensional\\n* construct blocks\\n* lock blocks?\\n* regex literals\\n* DocBlock syntax highlighting. (Currently importing javadoc)\\n* Folding rule for comments.\\n\",\n  \"name\": \"Vala\",\n  \"scopeName\": \"source.vala\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/velocity.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"\\\\#end\\\\b|\\\\#\\\\{end\",\n  \"foldingStartMarker\": \"(?x)\\n\\t\\t\\\\#(?:\\n\\t\\t\\t    (?:macro|if|foreach)\\\\b \\\\s* \\\\(\\n\\t\\t\\t|\\\\{ (?:macro|if|foreach)\\\\b \\\\s* \\\\(\\n\\t\\t).*(?!\\\\#\\\\{?end).*$\",\n  \"repository\": {\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(if|while|for|in|foreach|return|ifelse|else|case|macro|end|stop)\\\\b\",\n          \"name\": \"keyword.control.velocity\"\n        },\n        {\n          \"match\": \"\\\\b(set|parse|cparse|config|include|cinclude)\\\\b\",\n          \"name\": \"keyword.velocity\"\n        }\n      ]\n    },\n    \"directives-arguments\": {\n      \"patterns\": [\n        { \"include\": \"#nest-parens\" },\n        { \"include\": \"#directives\" },\n        { \"include\": \"#function\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#array\" },\n        { \"include\": \"#string\" },\n        { \"include\": \"#constant\" },\n        { \"include\": \"#operators\" }\n      ]\n    },\n    \"constant\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(true|false|null)\\\\b\",\n          \"name\": \"constant.language.java\"\n        },\n        {\n          \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)\\\\b\",\n          \"name\": \"constant.numeric.velocity\"\n        }\n      ]\n    },\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(\\\\#) (?:\\n\\t\\t\\t\\t\\t\\t\\t      \\\\b(?:else|end)\\\\b\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\{) \\\\b(?:else|end)\\\\b (\\\\})\\n\\t\\t\\t\\t\\t\\t)\",\n          \"name\": \"source.velocity.embedded\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.definition.keyword.end.velocity\" },\n            \"1\": { \"name\": \"punctuation.definition.keyword.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.begin.velocity\" },\n            \"0\": { \"name\": \"keyword.control.directive.velocity\" }\n          }\n        },\n        {\n          \"begin\": \"((#)\\\\b(?:macro)\\\\b)\\\\s*(\\\\()\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.parameters.begin.velocity\" }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [\n            {\n              \"match\": \"(?<=#macro\\\\()\\\\s*([_a-zA-Z][-a-zA-Z0-9_]*)\",\n              \"captures\": {\n                \"1\": { \"name\": \"entity.name.type.module.macro.velocity\" }\n              }\n            },\n            { \"include\": \"#directives-arguments\" }\n          ],\n          \"name\": \"source.velocity.embedded\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"storage.type.macro.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.velocity\" },\n            \"3\": { \"name\": \"punctuation.definition.parameters.begin.velocity\" }\n          }\n        },\n        {\n          \"begin\": \"((#)\\\\b(?:set)\\\\b)\\\\s*(\\\\()\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.parameters.begin.velocity\" }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [{ \"include\": \"#directives-arguments\" }],\n          \"name\": \"source.velocity.embedded\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"storage.type.variable.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.velocity\" },\n            \"3\": { \"name\": \"punctuation.definition.parameters.begin.velocity\" }\n          }\n        },\n        {\n          \"begin\": \"((#)\\\\b(?:if|elseif|foreach)\\\\b)\\\\s*(\\\\()\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.arguments.begin.velocity\" }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [{ \"include\": \"#directives-arguments\" }],\n          \"name\": \"source.velocity.embedded\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.control.directive.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.keyword.velocity\" },\n            \"3\": { \"name\": \"punctuation.definition.arguments.begin.velocity\" }\n          }\n        },\n        {\n          \"begin\": \"((#)\\\\b(?:[a-zA-Z][-a-zA-Z0-9_]*)\\\\b)\\\\s*(\\\\()\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.arguments.begin.velocity\" }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [{ \"include\": \"#directives-arguments\" }],\n          \"name\": \"source.velocity.embedded\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"entity.name.function.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.function.velocity\" },\n            \"3\": { \"name\": \"punctuation.definition.arguments.begin.velocity\" }\n          }\n        },\n        {\n          \"begin\": \"((#)\\\\b(?:[a-zA-Z][-a-zA-Z0-9_]*)\\\\b)\\\\s*(\\\\()\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.arguments.begin.velocity\" }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [{ \"include\": \"#directives-arguments\" }],\n          \"name\": \"source.velocity.embedded\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"entity.name.function.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.function.velocity\" },\n            \"3\": { \"name\": \"punctuation.definition.arguments.begin.velocity\" }\n          }\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.velocity\" },\n            { \"include\": \"#directives\" },\n            { \"include\": \"#function\" },\n            { \"include\": \"#variable\" },\n            {\n              \"begin\": \"\\\\$\\\\{\",\n              \"end\": \"\\\\}\",\n              \"name\": \"source.velocity.embedded.source\"\n            }\n          ],\n          \"name\": \"string.quoted.double.velocity\"\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            { \"match\": \"\\\\\\\\'\", \"name\": \"constant.character.escape.velocity\" }\n          ],\n          \"name\": \"string.quoted.single.velocity\"\n        }\n      ]\n    },\n    \"function\": {\n      \"patterns\": [\n        {\n          \"beginCaptures\": {\n            \"7\": { \"name\": \"punctuation.definition.arguments.begin.velocity\" },\n            \"3\": { \"name\": \"variable.parameter.velocity\" },\n            \"4\": { \"name\": \"punctuation.separator.parameters.velocity\" },\n            \"0\": {\n              \"name\": \"meta.function-call.method.with-arguments.velocity\"\n            },\n            \"5\": { \"name\": \"entity.name.function.velocity\" },\n            \"1\": { \"name\": \"variable.other.readwrite.velocity\" },\n            \"6\": { \"name\": \"punctuation.definition.function.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.variable.velocity\" }\n          },\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t ((\\\\$ \\\\!?   ) [a-zA-Z][-a-zA-Z0-9_]* \\\\b)\\n\\t\\t\\t\\t\\t\\t\\t( (?:(\\\\.) [a-zA-Z][-a-zA-Z0-9_]* \\\\b)* )\\n\\t\\t\\t\\t\\t\\t\\t( (?:(\\\\.) [a-zA-Z][-a-zA-Z0-9_]* \\\\b)+ ) (\\\\(\\\\s*\\\\))\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"source.velocity.embedded\"\n        },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t ((\\\\$ \\\\!?   ) [a-zA-Z][-a-zA-Z0-9_]* \\\\b)\\n\\t\\t\\t\\t\\t\\t\\t( (?:(\\\\.) [a-zA-Z][-a-zA-Z0-9_]* \\\\b)* )\\n\\t\\t\\t\\t\\t\\t\\t( (?:(\\\\.) [a-zA-Z][-a-zA-Z0-9_]* \\\\b)+ ) (\\\\()\\\\s*\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.arguments.end.velocity\" }\n          },\n          \"end\": \"\\\\s*(\\\\))\",\n          \"patterns\": [{ \"include\": \"#function-arguments\" }],\n          \"name\": \"source.velocity.embedded\",\n          \"beginCaptures\": {\n            \"7\": { \"name\": \"punctuation.definition.arguments.begin.velocity\" },\n            \"3\": { \"name\": \"variable.parameter.velocity\" },\n            \"4\": { \"name\": \"punctuation.separator.parameters.velocity\" },\n            \"0\": {\n              \"name\": \"meta.function-call.method.with-arguments.velocity\"\n            },\n            \"5\": { \"name\": \"entity.name.function.velocity\" },\n            \"1\": { \"name\": \"variable.other.readwrite.velocity\" },\n            \"6\": { \"name\": \"punctuation.definition.function.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.variable.velocity\" }\n          }\n        },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t \\\\$ \\\\!? \\\\{\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.section.embedded.end.velocity\" }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\w+)(\\\\(\\\\))\",\n              \"name\": \"variable.other.readwrite.velocity\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.function-call.method.with-arguments.velocity\"\n                },\n                \"1\": { \"name\": \"entity.name.function.velocity\" },\n                \"2\": { \"name\": \"punctuation.definition.arguments.velocity\" }\n              }\n            },\n            {\n              \"begin\": \"(\\\\w+)(\\\\()\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"punctuation.definition.arguments.end.velocity\" }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [{ \"include\": \"#function-arguments\" }],\n              \"name\": \"variable.other.readwrite.velocity\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.function-call.method.with-arguments.velocity\"\n                },\n                \"1\": { \"name\": \"entity.name.function.velocity\" },\n                \"2\": {\n                  \"name\": \"punctuation.definition.arguments.begin.velocity\"\n                }\n              }\n            },\n            { \"match\": \"\\\\w+\", \"name\": \"variable.other.readwrite.velocity\" },\n            {\n              \"match\": \"\\\\.\",\n              \"name\": \"punctuation.separator.parameters.velocity\"\n            }\n          ],\n          \"name\": \"source.velocity.embedded\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.section.embedded.begin.velocity\" }\n          }\n        }\n      ]\n    },\n    \"nest-curly\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"patterns\": [{ \"include\": \"#nest-parens\" }]\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t ((\\\\$ \\\\!?   ) [a-zA-Z][-a-zA-Z0-9_]*) \\\\b ( (?: (\\\\.) [a-zA-Z][-a-zA-Z0-9_]* \\\\b)+ ) (?!\\\\()\\n\\t\\t\\t\\t\\t\\t|((\\\\$ \\\\!? \\\\{) [a-zA-Z][-a-zA-Z0-9_]*) \\\\b ( (?: (\\\\.) [a-zA-Z][-a-zA-Z0-9_]* \\\\b)+ ) ((\\\\}))\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"source.velocity.embedded\",\n          \"captures\": {\n            \"7\": { \"name\": \"variable.parameter.velocity\" },\n            \"3\": { \"name\": \"variable.parameter.velocity\" },\n            \"8\": { \"name\": \"punctuation.separator.parameters.velocity\" },\n            \"4\": { \"name\": \"punctuation.separator.parameters.velocity\" },\n            \"9\": { \"name\": \"variable.other.readwrite.velocity\" },\n            \"5\": { \"name\": \"variable.other.readwrite.velocity\" },\n            \"1\": { \"name\": \"variable.other.readwrite.velocity\" },\n            \"6\": { \"name\": \"punctuation.definition.variable.begin.velocity\" },\n            \"10\": { \"name\": \"punctuation.definition.variable.end.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.variable.velocity\" }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t (\\\\$ \\\\!?   ) [a-zA-Z][-a-zA-Z0-9_]* \\\\b\\n\\t\\t\\t\\t\\t\\t|(\\\\$ \\\\!? \\\\{) [a-zA-Z][-a-zA-Z0-9_]* \\\\b (\\\\})\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"source.velocity.embedded\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.definition.variable.end.velocity\" },\n            \"1\": { \"name\": \"punctuation.definition.variable.velocity\" },\n            \"2\": { \"name\": \"punctuation.definition.variable.begin.velocity\" },\n            \"0\": { \"name\": \"variable.other.readwrite.velocity\" }\n          }\n        }\n      ]\n    },\n    \"nest-parens\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [{ \"include\": \"#nest-parens\" }]\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        { \"match\": \"\\\\bin\\\\b\", \"name\": \"keyword.operator.assignment.java\" },\n        {\n          \"match\": \"(==|!=|<=|>=|<>|<|>)\",\n          \"name\": \"keyword.operator.comparison.java\"\n        },\n        { \"match\": \"=\", \"name\": \"keyword.operator.assignment.java\" },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.java\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.java\"\n        },\n        { \"match\": \"(!|&&|\\\\|\\\\|)\", \"name\": \"keyword.operator.logical.java\" }\n      ]\n    },\n    \"array\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\[)(-?\\\\d+)(\\\\.\\\\.)(-?\\\\d+)(\\\\])\",\n          \"name\": \"meta.definition.range.java\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.separator.continuation.range.java\" },\n            \"1\": { \"name\": \"punctuation.definition.constant.range.begin.java\" },\n            \"4\": { \"name\": \"constant.numeric.integer.java\" },\n            \"2\": { \"name\": \"constant.numeric.integer.java\" },\n            \"5\": { \"name\": \"punctuation.definition.constant.range.end.java\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.array.end.velocity\" }\n          },\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            { \"include\": \"#nest-brackets\" },\n            { \"include\": \"#function\" },\n            { \"include\": \"#variable\" },\n            { \"include\": \"#array\" },\n            { \"include\": \"#string\" },\n            { \"include\": \"#constant\" },\n            { \"include\": \"#operators\" },\n            { \"match\": \",\", \"name\": \"punctuation.separator.array.velocity\" }\n          ],\n          \"name\": \"meta.structure.array.velocity\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.array.begin.velocity\" }\n          }\n        }\n      ]\n    },\n    \"function-arguments\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\\\s* (\\\\))( ( (?:(\\\\.) [a-zA-Z][-a-zA-Z0-9_]* \\\\b)+ ) (\\\\()\\\\s* )\\n\\t\\t\\t\\t\\t\",\n          \"captures\": {\n            \"3\": { \"name\": \"entity.name.function.velocity\" },\n            \"1\": { \"name\": \"punctuation.definition.arguments.end.velocity\" },\n            \"4\": { \"name\": \"punctuation.definition.function.velocity\" },\n            \"2\": {\n              \"name\": \"meta.function-call.method.with-arguments.velocity\"\n            },\n            \"5\": { \"name\": \"punctuation.definition.arguments.begin.velocity\" }\n          }\n        },\n        { \"include\": \"#nest-parens\" },\n        { \"include\": \"#directives\" },\n        { \"include\": \"#function\" },\n        { \"include\": \"#variable\" },\n        { \"include\": \"#array\" },\n        { \"include\": \"#string\" },\n        { \"include\": \"#constant\" },\n        { \"include\": \"#operators\" }\n      ]\n    },\n    \"nest-brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [{ \"include\": \"#nest-parens\" }]\n        }\n      ]\n    }\n  },\n  \"keyEquivalent\": \"^@V\",\n  \"fileTypes\": [\"vm\"],\n  \"uuid\": \"460426C7-D079-49DB-8E50-8E0B938644CA\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\\\\\[\\\\!\\\\#\\\\$\\\\\\\\]\",\n      \"name\": \"source.velocity.embedded\",\n      \"captures\": {\n        \"0\": { \"name\": \"constant.character.escape.backslash.velocity\" }\n      }\n    },\n    { \"include\": \"#directives\" },\n    { \"include\": \"#function\" },\n    { \"include\": \"#variable\" },\n    {\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"comment.line.double-number-sign\" },\n        \"1\": { \"name\": \"punctuation.definition.comment.velocity\" }\n      },\n      \"match\": \"(\\\\#\\\\#).*$\\\\n?\",\n      \"name\": \"source.velocity.embedded\"\n    },\n    {\n      \"begin\": \"(?=#\\\\*)\",\n      \"end\": \"(?<=\\\\*#|\\\\*#\\\\n)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\#\\\\*\\\\*\",\n          \"end\": \"\\\\*\\\\#\",\n          \"name\": \"comment.block.documentation\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.velocity\" }\n          }\n        },\n        {\n          \"begin\": \"\\\\#\\\\*\",\n          \"end\": \"\\\\*\\\\#\",\n          \"name\": \"comment.block\",\n          \"captures\": {\n            \"0\": { \"name\": \"punctuation.definition.comment.velocity\" }\n          }\n        }\n      ],\n      \"name\": \"source.velocity.embedded\"\n    }\n  ],\n  \"name\": \"Velocity\",\n  \"scopeName\": \"text.velocity\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/vhdl.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"(?x)\\n\\t\\t# From the start of the line make sure we are not going into a comment ...\\n\\t\\t^(\\n\\t\\t\\t([^-]-?(?!-))*?\\n\\t\\t\\t\\t(\\n\\t\\t\\t\\t# Check for \\\"keyword ... is\\\"\\n\\t\\t\\t\\t (\\\\b(?i:architecture|case|entity|function|package|procedure)\\\\b(.+?)(?i:\\\\bis)\\\\b)\\n\\n\\t\\t\\t\\t# Check for if statements\\n\\t\\t\\t\\t|(\\\\b(?i:if)\\\\b(.+?)(?i:generate|then)\\\\b)\\n\\n\\t\\t\\t\\t# Check for and while statements\\n\\t\\t\\t\\t|(\\\\b(?i:for|while)(.+?)(?i:loop|generate)\\\\b)\\n\\n\\t\\t\\t\\t# Check for keywords that do not require an is after it\\n\\t\\t\\t\\t|(\\\\b(?i:component|process|record)\\\\b[^;]*?$)\\n\\n\\t\\t\\t\\t# From the beginning of the line, check for instantiation maps\\n\\t\\t\\t\\t|(^\\\\s*\\\\b(?i:port|generic)\\\\b(?i:\\\\s+map\\\\b)?\\\\s*\\\\()\\n\\t\\t\\t)\\n\\t\\t)\\n\\t\",\n  \"foldingStopMarker\": \"(?x)\\n\\t\\t# From the start of the line ...\\n\\t\\t^(\\n\\t\\t\\t(\\n\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t# Make sure we are not going into a comment ...\\n\\t\\t\\t\\t\\t([^-]-?(?!-))*?\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# The word end to the end of the line\\n\\t\\t\\t \\t\\t\\t\\t(?i:\\\\bend\\\\b).*$\\\\n?\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t)\\n\\n\\t\\t\\t\\t# ... a close paren followed by an optional semicolon as the only thing on the line\\n\\t\\t\\t    |(\\\\s*?\\\\)\\\\s*?;?\\\\s*?$\\\\n?\\n\\t\\t\\t)\\n\\t\\t)\\n\\t\",\n  \"keyEquivalent\": \"^~V\",\n  \"fileTypes\": [\"vhd\", \"vhdl\", \"vho\"],\n  \"repository\": {\n    \"block_processing\": {\n      \"patterns\": [\n        { \"include\": \"#package_pattern\" },\n        { \"include\": \"#package_body_pattern\" },\n        { \"include\": \"#entity_pattern\" },\n        { \"include\": \"#architecture_pattern\" }\n      ]\n    },\n    \"procedure_definition_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word function $1\\n\\t\\t\\t\\t\\t\\t((?i:procedure))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# A valid normal identifier $3\\n\\t\\t\\t\\t\\t\\t\\t ([a-zA-Z][a-zA-Z\\\\d_]*)\\n\\t\\t\\t\\t\\t\\t\\t# A valid quoted identifier $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\"\\\\S+\\\")\\n\\t\\t\\t\\t\\t\\t\\t# An invalid identifier $5\\n\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t)\\n\\n\\t\\t\\t\\t\\t\\t# Check to make sure we have a list is\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*(\\\\(|(?i:is)))\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"entity.name.function.procedure.end.vhdl\" },\n            \"7\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word function $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:procedure)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional matched identifier $6 or mismatched identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3|\\\\4)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Ending with whitespace and semicolon\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#parenthetical_list\" },\n            { \"include\": \"#control_patterns\" },\n            { \"include\": \"#type_pattern\" },\n            { \"include\": \"#record_pattern\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.procedure_definition.vhdl\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.function.procedure.begin.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"4\": { \"name\": \"entity.name.function.procedure.begin.vhdl\" },\n            \"5\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"while_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Check for an identifier $2\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Followed by a colon $3\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# The for keyword $4\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:while))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"8\": { \"name\": \"invalid.illegal.mismatched.identifier\" },\n            \"4\": { \"name\": \"invalid.illegal.loop.keyword.required.vhdl\" },\n            \"7\": { \"name\": \"entity.name.tag.while.loop.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Followed by keyword loop $3\\n\\t\\t\\t\\t\\t\\t\\t ((?i:loop))\\n\\n\\t\\t\\t\\t\\t\\t\\t# But it really is required $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\S+)\\n\\t\\t\\t\\t\\t\\t)\\\\b\\n\\n\\t\\t\\t\\t\\t\\t# The matching identifier $7 or an invalid identifier $8\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Only space and a semicolon left\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#control_patterns\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.while.vhdl\",\n          \"beginCaptures\": {\n            \"2\": { \"name\": \"\" },\n            \"3\": { \"name\": \"punctuation.vhdl\" },\n            \"4\": { \"name\": \"keyword.language.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"component_instantiation_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line ...\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Match a valid identifier $1\\n\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t# Colon! $2\\n\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Another valid identifier $3\\n\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\\\b\\n\\n\\t\\t\\t\\t\\t\\t# Make sure we are just the other word, or the beginning of\\n\\t\\t\\t\\t\\t\\t# a generic or port mapping\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*($|generic|port))\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } },\n          \"end\": \";\",\n          \"patterns\": [\n            { \"include\": \"#parenthetical_list\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.component_instantiation.vhdl\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"entity.name.section.component_instantiation.vhdl\" },\n            \"2\": { \"name\": \"punctuation.vhdl\" },\n            \"3\": { \"name\": \"entity.name.tag.component.reference.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"architecture_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\n\\t\\t\\t\\t\\t\\t# The word architecture $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:architecture))\\\\s+\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t# Followed up by a valid $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-z][a-zA-z0-9_]*)|(.+))(?=\\\\s)\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The word of $5\\n\\t\\t\\t\\t\\t\\t((?i:of))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# Followed by a valid $7 or invalid identifier $8\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\\\s*(?i:is))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"entity.name.type.architecture.end.vhdl\" },\n            \"7\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word architecture $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:architecture)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional same identifier $6 or illegal identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# This will cause the previous to capture until just before the ; or $\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#function_definition_pattern\" },\n            { \"include\": \"#procedure_definition_pattern\" },\n            { \"include\": \"#component_pattern\" },\n            { \"include\": \"#if_pattern\" },\n            { \"include\": \"#process_pattern\" },\n            { \"include\": \"#type_pattern\" },\n            { \"include\": \"#record_pattern\" },\n            { \"include\": \"#for_pattern\" },\n            { \"include\": \"#entity_instantiation_pattern\" },\n            { \"include\": \"#component_instantiation_pattern\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.architecture\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.type.architecture.begin.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"8\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"7\": { \"name\": \"entity.name.type.entity.reference.vhdl\" },\n            \"5\": { \"name\": \"keyword.language.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"function_prototype_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word function $1\\n\\t\\t\\t\\t\\t\\t((?i:function))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# A valid normal identifier $3\\n\\t\\t\\t\\t\\t\\t\\t ([a-zA-Z][a-zA-Z\\\\d_]*)\\n\\t\\t\\t\\t\\t\\t\\t# A valid quoted identifier $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\"\\\\S+\\\")\\n\\t\\t\\t\\t\\t\\t\\t# A valid backslash escaped identifier $5\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\\\\\.+\\\\\\\\)\\n\\t\\t\\t\\t\\t\\t\\t# An invalid identifier $6\\n\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t)\\n\\n\\t\\t\\t\\t\\t\\t# Check to make sure we have a list or we return\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t \\\\(\\n\\t\\t\\t\\t\\t\\t\\t\\t|(?i:\\\\breturn\\\\b)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\",\n          \"end\": \"(?<=;)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b(?i:return)(?=\\\\s+[^;]+\\\\s*;)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.terminator.function_prototype.vhdl\"\n                }\n              },\n              \"end\": \"\\\\;\",\n              \"patterns\": [\n                { \"include\": \"#parenthetical_list\" },\n                { \"include\": \"#cleanup\" }\n              ],\n              \"beginCaptures\": { \"0\": { \"name\": \"keyword.language.vhdl\" } }\n            },\n            { \"include\": \"#parenthetical_list\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.function_prototype.vhdl\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.function.function.prototype.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"invalid.illegal.function.name.vhdl\" },\n            \"4\": { \"name\": \"entity.name.function.function.prototype.vhdl\" },\n            \"5\": { \"name\": \"entity.name.function.function.prototype.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        { \"match\": \"--.*$\\\\n?\", \"name\": \"comment.line.double-dash.vhdl\" }\n      ]\n    },\n    \"subtype_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word subtype $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:subtype))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# Valid identifier $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The word is $5\\n\\t\\t\\t\\t\\t\\t((?i:is))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } },\n          \"end\": \";\",\n          \"patterns\": [{ \"include\": \"#cleanup\" }],\n          \"name\": \"meta.block.subtype.vhdl\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.type.subtype.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"5\": { \"name\": \"keyword.language.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"entity_instantiation_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Component identifier or illegal identifier $1\\n\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t# Colon! $2\\n\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Optional word use $4\\n\\t\\t\\t\\t\\t\\t(((?i:use))\\\\s+)?\\n\\n\\t\\t\\t\\t\\t\\t# Required word entity $5\\n\\t\\t\\t\\t\\t\\t((?i:entity))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# Optional library unit identifier $8 for invalid identifier $9 followed by a dot $10\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\n\\t\\t\\t\\t\\t\\t\\t(\\\\.)\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# Entity name reference $12 or illegal identifier $13\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\n\\n\\t\\t\\t\\t\\t\\t# Check to see if we are being followed by either open paren, end of line, or port or generic words\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*(\\\\(|$|(?i:port|generic)))\\n\\n\\t\\t\\t\\t\\t\\t# Optional architecture elaboration\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Open paren $16\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(\\\\()\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t\\t# Arch identifier $18 or invalid identifier $19\\n\\t\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\\\s*\\\\))\\n\\n\\t\\t\\t\\t\\t\\t\\t# Close paren $21\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(\\\\))\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } },\n          \"end\": \";\",\n          \"patterns\": [\n            { \"include\": \"#parenthetical_list\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.entity_instantiation.vhdl\",\n          \"beginCaptures\": {\n            \"10\": { \"name\": \"punctuation.vhdl\" },\n            \"2\": { \"name\": \"punctuation.vhdl\" },\n            \"21\": { \"name\": \"punctuation.vhdl\" },\n            \"19\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"16\": { \"name\": \"punctuation.vhdl\" },\n            \"4\": { \"name\": \"keyword.language.vhdl\" },\n            \"5\": { \"name\": \"keyword.language.vhdl\" },\n            \"12\": { \"name\": \"entity.name.tag.entity.reference.vhdl\" },\n            \"13\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"18\": { \"name\": \"entity.name.tag.architecture.reference.vhdl\" },\n            \"8\": { \"name\": \"entity.name.tag.library.reference.vhdl\" },\n            \"1\": { \"name\": \"entity.name.section.entity_instantiation.vhdl\" },\n            \"9\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"component_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line ...\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word component $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:component))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# A valid identifier $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*|(.+?))(?=\\\\b(?i:is|port)\\\\b|$|--)\\n\\n\\t\\t\\t\\t\\t\\t# Optional word is $6\\n\\t\\t\\t\\t\\t\\t(\\\\b((?i:is\\\\b)))?\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"8\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.component.keyword.required.vhdl\" },\n            \"7\": { \"name\": \"entity.name.type.component.end.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The word component $3 or illegal word $4\\n\\t\\t\\t\\t\\t\\t(((?i:component\\\\b))|(.+?))(?=\\\\s*|;)\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t# Optional identifier $7 or illegal mismatched $8\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3)|(.+?)))?(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#generic_list_pattern\" },\n            { \"include\": \"#port_list_pattern\" },\n            { \"include\": \"#comments\" }\n          ],\n          \"name\": \"meta.block.component.vhdl\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.type.component.begin.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"keyword.language.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"support_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:boolean|bit|character|severity_level|integer|real|time|delay_length|now|natural|positive|string|bit_vector|file_open_kind|file_open_status|fs|ps|ns|us|ms|sec|min|hr|severity_level|note|warning|error|failure)\\\\b\",\n          \"name\": \"support.type.std.standard.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:line|text|side|width|input|output)\\\\b\",\n          \"name\": \"support.type.std.textio.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:std_logic|std_ulogic|std_logic_vector|std_ulogic_vector)\\\\b\",\n          \"name\": \"support.type.ieee.std_logic_1164.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:signed|unsigned)\\\\b\",\n          \"name\": \"support.type.ieee.numeric_std.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:complex|complex_polar)\\\\b\",\n          \"name\": \"support.type.ieee.math_complex.vhdl\"\n        }\n      ]\n    },\n    \"generic_list_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(?i:generic)\\\\b\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } },\n          \"end\": \";\",\n          \"patterns\": [{ \"include\": \"#parenthetical_list\" }],\n          \"name\": \"meta.block.generic_list.vhdl\",\n          \"beginCaptures\": { \"0\": { \"name\": \"keyword.language.vhdl\" } }\n        }\n      ]\n    },\n    \"for_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Check for an identifier $2\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Followed by a colon $3\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# Make sure the next word is not wait\\n\\t\\t\\t\\t\\t\\t(?!(?i:wait\\\\s*))\\n\\n\\t\\t\\t\\t\\t\\t# The for keyword $4\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:for))\\\\b\\n\\n\\t\\t\\t\\t\\t\\t# Make sure the next word is not all\\n\\t\\t\\t\\t\\t\\t(?!\\\\s*(?i:all))\\n\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"8\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.loop.or.generate.required.vhdl\" },\n            \"7\": { \"name\": \"entity.name.tag.for.generate.end.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Followed by generate or loop $3\\n\\t\\t\\t\\t\\t\\t\\t ((?i:generate|loop))\\n\\n\\t\\t\\t\\t\\t\\t\\t# But it really is required $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\S+)\\n\\t\\t\\t\\t\\t\\t)\\\\b\\n\\n\\t\\t\\t\\t\\t\\t# The matching identifier $7 or an invalid identifier $8\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Only space and a semicolon left\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#control_patterns\" },\n            { \"include\": \"#entity_instantiation_pattern\" },\n            { \"include\": \"#component_pattern\" },\n            { \"include\": \"#component_instantiation_pattern\" },\n            { \"include\": \"#process_pattern\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.for.vhdl\",\n          \"beginCaptures\": {\n            \"2\": { \"name\": \"entity.name.tag.for.generate.begin.vhdl\" },\n            \"3\": { \"name\": \"punctuation.vhdl\" },\n            \"4\": { \"name\": \"keyword.language.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"parenthetical_list\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=['\\\"a-zA-Z0-9])\",\n              \"endCaptures\": {\n                \"0\": { \"name\": \"meta.item.stopping.character.vhdl\" }\n              },\n              \"end\": \"(;|\\\\)|,)\",\n              \"patterns\": [\n                { \"include\": \"#comments\" },\n                { \"include\": \"#parenthetical_pair\" },\n                { \"include\": \"#cleanup\" }\n              ],\n              \"name\": \"meta.list.element.vhdl\"\n            },\n            {\n              \"match\": \"\\\\)\",\n              \"name\": \"invalid.illegal.unexpected.parenthesis.vhdl\"\n            },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.parenthetical_list.vhdl\",\n          \"beginCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } }\n        }\n      ]\n    },\n    \"entity_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line ...\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word entity $1\\n\\t\\t\\t\\t\\t\\t((?i:entity\\\\b))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The identifier $3 or an invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z\\\\d_]*)|(.+?))(?=\\\\s)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"entity.name.type.entity.end.vhdl\" },\n            \"7\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end\\\\b))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word entity $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:entity)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier match $6 or indentifier mismatch $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3)|(.+?)))?\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t# Make sure there is a semicolon following\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#comments\" },\n            { \"include\": \"#generic_list_pattern\" },\n            { \"include\": \"#port_list_pattern\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.entity.vhdl\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"3\": { \"name\": \"entity.name.type.entity.begin.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"support_constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:math_1_over_e|math_1_over_pi|math_1_over_sqrt_2|math_2_pi|math_3_pi_over_2|math_deg_to_rad|math_e|math_log10_of_e|math_log2_of_e|math_log_of_10|math_log_of_2|math_pi|math_pi_over_2|math_pi_over_3|math_pi_over_4|math_rad_to_deg|math_sqrt_2|math_sqrt_pi)\\\\b\",\n          \"name\": \"support.constant.ieee.math_real.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:math_cbase_1|math_cbase_j|math_czero|positive_real|principal_value)\\\\b\",\n          \"name\": \"support.constant.ieee.math_complex.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:true|false)\\\\b\",\n          \"name\": \"support.constant.std.standard.vhdl\"\n        }\n      ]\n    },\n    \"type_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word type $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:type))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# Valid identifier $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# A semicolon is coming up if we are incomplete\\n\\t\\t\\t\\t\\t\\t\\t (?=\\\\s*;)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Or the word is comes up $7\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\s+((?i:is)))\\n\\t\\t\\t\\t\\t\\t)\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } },\n          \"end\": \";\",\n          \"patterns\": [\n            { \"include\": \"#record_pattern\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.type.vhdl\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.type.type.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"7\": { \"name\": \"keyword.language.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"case_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# Beginning of line ...\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier ... $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t ([a-zA-Z][a-zA-Z0-9_]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*:\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# The word case $5\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:case))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"8\": { \"name\": \"entity.name.tag.case.end.vhdl\" },\n            \"4\": { \"name\": \"keyword.language.vhdl\" },\n            \"9\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" },\n            \"5\": { \"name\": \"invalid.illegal.case.required.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word case $4 or invalid word $5\\n\\t\\t\\t\\t\\t\\t(\\\\s+(((?i:case))|(.*?)))\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier from before $8 or illegal $9\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.*?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Ending with a semicolon\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#control_patterns\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.case.vhdl\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.tag.case.begin.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"5\": { \"name\": \"keyword.language.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"control_patterns\": {\n      \"patterns\": [\n        { \"include\": \"#case_pattern\" },\n        { \"include\": \"#if_pattern\" },\n        { \"include\": \"#for_pattern\" },\n        { \"include\": \"#while_pattern\" }\n      ]\n    },\n    \"if_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Optional identifier $2\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Followed by a colon $3\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# Keyword if $4\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:if))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"8\": { \"name\": \"entity.name.tag.if.generate.end.vhdl\" },\n            \"4\": { \"name\": \"keyword.language.vhdl\" },\n            \"9\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" },\n            \"5\": { \"name\": \"invalid.illegal.if.or.generate.required.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t# Optional generate or if keyword $4\\n\\t\\t\\t\\t\\t\\t\\t\\t ((?i:generate|if))\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t# Keyword if or generate required $5\\n\\t\\t\\t\\t\\t\\t\\t\\t|(\\\\S+)\\n\\t\\t\\t\\t\\t\\t\\t)\\\\b\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional matching identifier $8\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t (\\\\2)\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t# Mismatched identifier $9\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# Followed by a semicolon\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#control_patterns\" },\n            { \"include\": \"#process_pattern\" },\n            { \"include\": \"#entity_instantiation_pattern\" },\n            { \"include\": \"#component_pattern\" },\n            { \"include\": \"#component_instantiation_pattern\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.if.vhdl\",\n          \"beginCaptures\": {\n            \"2\": { \"name\": \"entity.name.tag.if.generate.begin.vhdl\" },\n            \"3\": { \"name\": \"punctuation.vhdl\" },\n            \"4\": { \"name\": \"keyword.language.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"port_list_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(?i:port)\\\\b\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } },\n          \"end\": \";\",\n          \"patterns\": [{ \"include\": \"#parenthetical_list\" }],\n          \"name\": \"meta.block.port_list.vhdl\",\n          \"beginCaptures\": { \"0\": { \"name\": \"keyword.language.vhdl\" } }\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        { \"match\": \"'.'\", \"name\": \"string.quoted.single.vhdl\" },\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            { \"match\": \"\\\\\\\\.\", \"name\": \"constant.character.escape.vhdl\" }\n          ],\n          \"name\": \"string.quoted.double.vhdl\"\n        },\n        {\n          \"begin\": \"\\\\\\\\\",\n          \"end\": \"\\\\\\\\\",\n          \"name\": \"string.other.backslash.vhdl\"\n        }\n      ]\n    },\n    \"record_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(?i:record)\\\\b\",\n          \"endCaptures\": {\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"2\": { \"name\": \"keyword.language.vhdl\" },\n            \"5\": { \"name\": \"entity.name.type.record.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# The word record $2\\n\\t\\t\\t\\t\\t\\t\\\\s+((?i:record))\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier $5 or invalid identifier $6\\n\\t\\t\\t\\t\\t\\t(\\\\s+(([a-zA-Z][a-zA-Z\\\\d_]*)|(.*?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Only whitespace and semicolons can be left\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [{ \"include\": \"#cleanup\" }],\n          \"name\": \"meta.block.record.vhdl\",\n          \"beginCaptures\": { \"0\": { \"name\": \"keyword.language.vhdl\" } }\n        },\n        { \"include\": \"#cleanup\" }\n      ]\n    },\n    \"syntax_highlighting\": {\n      \"patterns\": [\n        { \"include\": \"#keywords\" },\n        { \"include\": \"#punctuation\" },\n        { \"include\": \"#support_constants\" },\n        { \"include\": \"#support_types\" },\n        { \"include\": \"#support_functions\" }\n      ]\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        { \"match\": \"(\\\\.|,|:|;|\\\\(|\\\\))\", \"name\": \"punctuation.vhdl\" }\n      ]\n    },\n    \"package_body_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word package $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:package))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# ... but we want to be a package body $2\\n\\t\\t\\t\\t\\t\\t((?i:body))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The valid identifier $4 or the invalid one $5\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z\\\\d_]*)|(.+?))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# ... and we end it with an is $6\\n\\t\\t\\t\\t\\t\\t((?i:is))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"8\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" },\n            \"4\": { \"name\": \"keyword.language.vhdl\" },\n            \"7\": { \"name\": \"entity.name.section.package_body.end.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end\\\\b))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word package $3 body $4\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:package))\\\\s+((?i:body)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier $7 or mismatched identifier $8\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\4)|(.+?)))?(?=\\\\s*;)\",\n          \"patterns\": [\n            { \"include\": \"#function_definition_pattern\" },\n            { \"include\": \"#procedure_definition_pattern\" },\n            { \"include\": \"#type_pattern\" },\n            { \"include\": \"#subtype_pattern\" },\n            { \"include\": \"#record_pattern\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.package_body.vhdl\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"keyword.language.vhdl\" },\n            \"4\": { \"name\": \"entity.name.section.package_body.begin.vhdl\" },\n            \"2\": { \"name\": \"keyword.language.vhdl\" },\n            \"5\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"process_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Optional identifier $2\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Colon $3\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# The word process #4\\n\\t\\t\\t\\t\\t\\t((?i:process\\\\b))\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"entity.name.section.process.end.vhdl\" },\n            \"7\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word process $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:process)))\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier $6 or invalid identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#control_patterns\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.process.vhdl\",\n          \"beginCaptures\": {\n            \"2\": { \"name\": \"entity.name.section.process.begin.vhdl\" },\n            \"3\": { \"name\": \"punctuation.vhdl\" },\n            \"4\": { \"name\": \"keyword.language.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"'(?i:active|ascending|base|delayed|driving|event|high|image|instance|instance_name|last|last_value|left|leftof|length|low|path|path_name|pos|pred|quiet|range|reverse|reverse_range|right|rightof|simple|simple_name|stable|succ|transaction|val|value)\\\\b\",\n          \"name\": \"keyword.attributes.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)\\\\b\",\n          \"name\": \"keyword.language.vhdl\"\n        },\n        {\n          \"match\": \"(\\\\+|\\\\-|<=|=|=>|:=|>=|>|<|/|\\\\||&|(\\\\*{1,2}))\",\n          \"name\": \"keyword.operator.vhdl\"\n        }\n      ]\n    },\n    \"package_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word package $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:package))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# ... but we do not want to be a package body\\n\\t\\t\\t\\t\\t\\t(?!(?i:body))\\n\\n\\t\\t\\t\\t\\t\\t# The valid identifier $3 or the invalid one $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z\\\\d_]*)|(.+?))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# ... and we end it with an is $5\\n\\t\\t\\t\\t\\t\\t((?i:is))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"entity.name.section.package.end.vhdl\" },\n            \"7\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end\\\\b))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word package $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:package)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier $6 or mismatched identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.+?)))?(?=\\\\s*;)\",\n          \"patterns\": [\n            { \"include\": \"#function_prototype_pattern\" },\n            { \"include\": \"#procedure_prototype_pattern\" },\n            { \"include\": \"#type_pattern\" },\n            { \"include\": \"#subtype_pattern\" },\n            { \"include\": \"#record_pattern\" },\n            { \"include\": \"#component_pattern\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.package.vhdl\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.section.package.begin.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"5\": { \"name\": \"keyword.language.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"attribute_list\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\'\\\\(\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            { \"include\": \"#parenthetical_list\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.attribute_list\",\n          \"beginCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } }\n        }\n      ]\n    },\n    \"parenthetical_pair\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            { \"include\": \"#parenthetical_pair\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.parenthetical_pair.vhdl\",\n          \"beginCaptures\": { \"0\": { \"name\": \"punctuation.vhdl\" } }\n        }\n      ]\n    },\n    \"constants_numeric\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([+\\\\-]?[\\\\d_]+\\\\.[\\\\d_]+([eE][+\\\\-]?[\\\\d_]+)?)\\\\b\",\n          \"name\": \"constant.numeric.floating_point.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b\\\\d+#[\\\\h_]+#\\\\b\",\n          \"name\": \"constant.numeric.base_pound_number_pound.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b[\\\\d_]+([eE][\\\\d_]+)?\\\\b\",\n          \"name\": \"constant.numeric.integer.vhdl\"\n        },\n        {\n          \"match\": \"[xX]\\\"[0-9a-fA-F_uUxXzZwWlLhH\\\\-]+\\\"\",\n          \"name\": \"constant.numeric.quoted.double.string.hex.vhdl\"\n        },\n        {\n          \"match\": \"[oO]\\\"[0-7_uUxXzZwWlLhH\\\\-]+\\\"\",\n          \"name\": \"constant.numeric.quoted.double.string.octal.vhdl\"\n        },\n        {\n          \"match\": \"[bB]?\\\"[01_uUxXzZwWlLhH\\\\-]+\\\"\",\n          \"name\": \"constant.numeric.quoted.double.string.binary.vhdl\"\n        },\n        {\n          \"match\": \"([bBoOxX]\\\".+?\\\")\",\n          \"name\": \"constant.numeric.quoted.double.string.illegal.vhdl\",\n          \"captures\": {\n            \"1\": { \"name\": \"invalid.illegal.quoted.double.string.vhdl\" }\n          }\n        },\n        {\n          \"match\": \"'[01uUxXzZwWlLhH\\\\-]'\",\n          \"name\": \"constant.numeric.quoted.single.std_logic\"\n        }\n      ]\n    },\n    \"support_functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:finish|stop|resolution_limit)\\\\b\",\n          \"name\": \"support.function.std.env.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:readline|read|writeline|write|endfile|endline)\\\\b\",\n          \"name\": \"support.function.std.textio.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:rising_edge|falling_edge|to_bit|to_bitvector|to_stdulogic|to_stdlogicvector|to_stdulogicvector|is_x)\\\\b\",\n          \"name\": \"support.function.ieee.std_logic_1164.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:shift_left|shift_right|rotate_left|rotate_right|resize|to_integer|to_unsigned|to_signed)\\\\b\",\n          \"name\": \"support.function.ieee.numeric_std.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:arccos(h?)|arcsin(h?)|arctan|arctanh|cbrt|ceil|cos|cosh|exp|floor|log10|log2|log|realmax|realmin|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\\\b\",\n          \"name\": \"support.function.ieee.math_real.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:arg|cmplx|complex_to_polar|conj|get_principal_value|polar_to_complex)\\\\b\",\n          \"name\": \"support.function.ieee.math_complex.vhdl\"\n        }\n      ]\n    },\n    \"cleanup\": {\n      \"patterns\": [\n        { \"include\": \"#comments\" },\n        { \"include\": \"#constants_numeric\" },\n        { \"include\": \"#strings\" },\n        { \"include\": \"#attribute_list\" },\n        { \"include\": \"#syntax_highlighting\" }\n      ]\n    },\n    \"procedure_prototype_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:procedure))\\\\s+\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*(\\\\(|;))\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": { \"0\": { \"name\": \"punctual.vhdl\" } },\n          \"end\": \";\",\n          \"patterns\": [{ \"include\": \"#parenthetical_list\" }],\n          \"name\": \"meta.block.procedure_prototype.vhdl\",\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"3\": { \"name\": \"entity.name.function.procedure.begin.vhdl\" },\n            \"4\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" }\n          }\n        }\n      ]\n    },\n    \"function_definition_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word function $1\\n\\t\\t\\t\\t\\t\\t((?i:function))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# A valid normal identifier $3\\n\\t\\t\\t\\t\\t\\t\\t ([a-zA-Z][a-zA-Z\\\\d_]*)\\n\\t\\t\\t\\t\\t\\t\\t# A valid string quoted identifier $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\"\\\\S+\\\")\\n\\t\\t\\t\\t\\t\\t\\t# A valid backslash escaped identifier $5\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\\\\\.+\\\\\\\\)\\n\\t\\t\\t\\t\\t\\t\\t# An invalid identifier $5\\n\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t)\\n\\n\\t\\t\\t\\t\\t\\t# Check to make sure we have a list or we return\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t \\\\(\\n\\t\\t\\t\\t\\t\\t\\t\\t|(?i:\\\\breturn\\\\b)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"3\": { \"name\": \"keyword.language.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"entity.name.function.function.end.vhdl\" },\n            \"7\": { \"name\": \"invalid.illegal.mismatched.identifier.vhdl\" }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word function $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:function)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional matched identifier $6 or mismatched identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3|\\\\4|\\\\5)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Ending with whitespace and semicolon\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"patterns\": [\n            { \"include\": \"#control_patterns\" },\n            { \"include\": \"#parenthetical_list\" },\n            { \"include\": \"#type_pattern\" },\n            { \"include\": \"#record_pattern\" },\n            { \"include\": \"#cleanup\" }\n          ],\n          \"name\": \"meta.block.function_definition.vhdl\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.function.function.begin.vhdl\" },\n            \"1\": { \"name\": \"keyword.language.vhdl\" },\n            \"6\": { \"name\": \"invalid.illegal.invalid.identifier.vhdl\" },\n            \"4\": { \"name\": \"entity.name.function.function.begin.vhdl\" },\n            \"5\": { \"name\": \"entity.name.function.function.begin.vhdl\" }\n          }\n        }\n      ]\n    }\n  },\n  \"uuid\": \"99A3EB51-FCCD-4EA4-A642-10C2E8B93112\",\n  \"patterns\": [{ \"include\": \"#block_processing\" }, { \"include\": \"#cleanup\" }],\n  \"comment\": \"VHDL Bundle by Brian Padalino (ocnqnyvab@tznvy.pbz)\",\n  \"name\": \"VHDL\",\n  \"scopeName\": \"source.vhdl\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/visualforce.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/html.tmbundle/commit/a723f08ebd49c67c22aca08dd8f17d0bf836ec93\",\n  \"fileTypes\": [\"html\", \"htm\", \"shtml\", \"xhtml\", \"inc\", \"tmpl\", \"tpl\"],\n  \"firstLineMatch\": \"<(?i:(!DOCTYPE\\\\s*)?html)\",\n  \"injections\": {\n    \"R:text.html - (comment.block, text.html source)\": {\n      \"comment\": \"Use R: to ensure this matches after any other injections.\",\n      \"patterns\": [\n        {\n          \"match\": \"<\",\n          \"name\": \"invalid.illegal.bad-angle-bracket.html\"\n        }\n      ]\n    }\n  },\n  \"keyEquivalent\": \"^~H\",\n  \"name\": \"HTML\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<)([a-zA-Z][a-zA-Z0-9:-]*)(?=[^>]*></\\\\2>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"end\": \"(>(<)/)(\\\\2)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"meta.scope.between-tag-pair.html\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.html\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"name\": \"meta.tag.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.xml.html\"\n        }\n      },\n      \"end\": \"(\\\\?>)\",\n      \"name\": \"meta.tag.preprocessor.xml.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!--\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      },\n      \"end\": \"--\\\\s*>\",\n      \"name\": \"comment.block.html\",\n      \"patterns\": [\n        {\n          \"match\": \"--\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        },\n        {\n          \"include\": \"#embedded-code\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"end\": \">\",\n      \"name\": \"meta.tag.sgml.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i:DOCTYPE)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.doctype.html\"\n            }\n          },\n          \"end\": \"(?=>)\",\n          \"name\": \"meta.tag.sgml.doctype.html\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"[^\\\">]*\\\"\",\n              \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[CDATA\\\\[\",\n          \"end\": \"]](?=>)\",\n          \"name\": \"constant.other.inline-data.html\"\n        },\n        {\n          \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#embedded-code\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=<(?i:style))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.html\"\n        }\n      },\n      \"end\": \"(?!\\\\G)([ \\\\t]*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)((?i:style))\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.metadata.style.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"(/>)|((<)/)((?i:style))(>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.metadata.style.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"3\": {\n              \"name\": \"source.css\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?=/>)|(>)\",\n              \"name\": \"meta.tag.metadata.style.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#tag-stuff\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?!\\\\G)\",\n              \"end\": \"(?=</(?i:style))\",\n              \"name\": \"source.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#embedded-code\"\n                },\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=<(?i:script))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.html\"\n        }\n      },\n      \"end\": \"(?!\\\\G)([ \\\\t]*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)((?i:script))\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.metadata.script.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"(/>)|(/)((?i:script))(>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.metadata.script.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\",\n              \"end\": \"(?=/>|/)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(>)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.tag.metadata.script.html\"\n                    },\n                    \"1\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"end\": \"((<))(?=/(?i:script))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.tag.metadata.script.html\"\n                    },\n                    \"1\": {\n                      \"name\": \"punctuation.definition.tag.begin.html\"\n                    },\n                    \"2\": {\n                      \"name\": \"source.js\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G\",\n                      \"end\": \"(?=</(?i:script))\",\n                      \"name\": \"source.js\",\n                      \"patterns\": [\n                        {\n                          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n                          \"beginCaptures\": {\n                            \"1\": {\n                              \"name\": \"punctuation.whitespace.comment.leading.js\"\n                            }\n                          },\n                          \"end\": \"(?!\\\\G)\",\n                          \"patterns\": [\n                            {\n                              \"begin\": \"//\",\n                              \"beginCaptures\": {\n                                \"0\": {\n                                  \"name\": \"punctuation.definition.comment.js\"\n                                }\n                              },\n                              \"end\": \"(?=</script)|\\\\n\",\n                              \"name\": \"comment.line.double-slash.js\"\n                            }\n                          ]\n                        },\n                        {\n                          \"begin\": \"/\\\\*\",\n                          \"captures\": {\n                            \"0\": {\n                              \"name\": \"punctuation.definition.comment.js\"\n                            }\n                          },\n                          \"end\": \"\\\\*/|(?=</script)\",\n                          \"name\": \"comment.block.js\"\n                        },\n                        {\n                          \"include\": \"source.js\"\n                        }\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\G\",\n                  \"end\": \"(?i:(?=/?>|type(?=[\\\\s=])(?!\\\\s*=\\\\s*('|\\\"|)(text/(javascript|ecmascript|babel)|application/((x-)?javascript|ecmascript|babel)|module)[\\\\s\\\"'>])))\",\n                  \"name\": \"meta.tag.metadata.script.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tag-stuff\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(?=(?i:type\\\\s*=\\\\s*('|\\\"|)(text/(x-handlebars|(x-(handlebars-)?|ng-)?template|html)[\\\\s\\\"'>])))\",\n                  \"end\": \"((<))(?=/(?i:script))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.tag.metadata.script.html\"\n                    },\n                    \"1\": {\n                      \"name\": \"punctuation.definition.tag.begin.html\"\n                    },\n                    \"2\": {\n                      \"name\": \"text.visualforce.markup\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G\",\n                      \"end\": \"(>)|(?=/>)\",\n                      \"endCaptures\": {\n                        \"1\": {\n                          \"name\": \"punctuation.definition.tag.end.html\"\n                        }\n                      },\n                      \"name\": \"meta.tag.metadata.script.html\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#tag-stuff\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?!\\\\G)\",\n                      \"end\": \"(?=</(?i:script))\",\n                      \"name\": \"text.visualforce.markup\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"text.visualforce.markup\"\n                        }\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(?=(?i:type))\",\n                  \"end\": \"(<)(?=/(?i:script))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.tag.metadata.script.html\"\n                    },\n                    \"1\": {\n                      \"name\": \"punctuation.definition.tag.begin.html\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G\",\n                      \"end\": \"(>)|(?=/>)\",\n                      \"endCaptures\": {\n                        \"1\": {\n                          \"name\": \"punctuation.definition.tag.end.html\"\n                        }\n                      },\n                      \"name\": \"meta.tag.metadata.script.html\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#tag-stuff\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?!\\\\G)\",\n                      \"end\": \"(?=</(?i:script))\",\n                      \"name\": \"source.unknown\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.structure.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"name\": \"meta.tag.structure.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:address|blockquote|dd|div|section|article|aside|header|footer|nav|menu|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|pre)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.block.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.block.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\\\b(?!-))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.inline.any.html\"\n        }\n      },\n      \"end\": \"((?: ?/)?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.inline.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)([a-zA-Z][a-zA-Z0-9:-]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.other.html\"\n        }\n      },\n      \"end\": \"(/?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.other.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#entities\"\n    },\n    {\n      \"match\": \"<>\",\n      \"name\": \"invalid.illegal.incomplete.html\"\n    }\n  ],\n  \"repository\": {\n    \"embedded-code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#smarty\"\n        },\n        {\n          \"include\": \"#python\"\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          },\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#[xX][0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\"\n        },\n        {\n          \"match\": \"&\",\n          \"name\": \"invalid.illegal.bad-ampersand.html\"\n        }\n      ]\n    },\n    \"python\": {\n      \"begin\": \"(?:^\\\\s*)<\\\\?python(?!.*\\\\?>)\",\n      \"end\": \"\\\\?>(?:\\\\s*$\\\\n)?\",\n      \"name\": \"source.python.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"source.python\"\n        }\n      ]\n    },\n    \"smarty\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\{(literal)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"source.smarty.embedded.html\"\n            },\n            \"2\": {\n              \"name\": \"support.function.built-in.smarty\"\n            }\n          },\n          \"end\": \"(\\\\{/(literal)\\\\})\"\n        },\n        {\n          \"begin\": \"{{|{\",\n          \"disabled\": 1,\n          \"end\": \"}}|}\",\n          \"name\": \"source.smarty.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"source.smarty\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.double.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.single.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"tag-generic-attribute\": {\n      \"match\": \"(?<=[^=])\\\\b([a-zA-Z0-9:-]+)\",\n      \"name\": \"entity.other.attribute-name.html\"\n    },\n    \"tag-id-attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(?<='|\\\"|[^\\\\s<>/])\",\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"name\": \"string.quoted.double.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"name\": \"string.quoted.single.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.toc-list.id.html\"\n            }\n          },\n          \"match\": \"(?<==)(?:[^\\\\s<>/'\\\"]|/(?!>))+\",\n          \"name\": \"string.unquoted.html\"\n        }\n      ]\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tag-id-attribute\"\n        },\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        },\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#unquoted-attribute\"\n        }\n      ]\n    },\n    \"unquoted-attribute\": {\n      \"match\": \"(?<==)(?:[^\\\\s<>/'\\\"]|/(?!>))+\",\n      \"name\": \"string.unquoted.html\"\n    }\n  },\n  \"scopeName\": \"text.visualforce.markup\",\n  \"uuid\": \"17994EC8-6B1D-11D9-AC3A-000D93589AF6\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/vue.tmLanguage.json",
    "content": "{\n  \"foldingStopMarker\": \"(?x)\\n(</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)>\\n|^(?!.*?<!--).*?--\\\\s*>\\n|^<!--\\\\ end\\\\ tminclude\\\\ -->$\\n|<\\\\?(?:php)?.*\\\\bend(if|for(each)?|while)\\\\b\\n|\\\\{\\\\{?/(if|foreach|capture|literal|foreach|php|section|strip)\\n|^[^{]*\\\\}\\n)\",\n  \"foldingStartMarker\": \"(?x)\\n(<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\\\\b.*?>\\n|<!--(?!.*--\\\\s*>)\\n|^<!--\\\\ \\\\#tminclude\\\\ (?>.*?-->)$\\n|<\\\\?(?:php)?.*\\\\b(if|for(each)?|while)\\\\b.+:\\n|\\\\{\\\\{?(if|foreach|capture|literal|foreach|php|section|strip)\\n|\\\\{\\\\s*($|\\\\?>\\\\s*$|//|/\\\\*(.*\\\\*/\\\\s*$|(?!.*?\\\\*/)))\\n)\",\n  \"repository\": {\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [\n        { \"include\": \"#vue-interpolations\" },\n        { \"include\": \"#entities\" }\n      ],\n      \"name\": \"string.quoted.single.html\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      }\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        { \"include\": \"#vue-directives\" },\n        { \"include\": \"#tag-id-attribute\" },\n        { \"include\": \"#tag-generic-attribute\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" }\n      ]\n    },\n    \"tag-id-attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")\",\n      \"patterns\": [\n        {\n          \"end\": \"\\\"\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"patterns\": [\n            { \"include\": \"#vue-interpolations\" },\n            { \"include\": \"#entities\" }\n          ],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"name\": \"string.quoted.double.html\"\n        },\n        {\n          \"end\": \"'\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"patterns\": [\n            { \"include\": \"#vue-interpolations\" },\n            { \"include\": \"#entities\" }\n          ],\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"name\": \"string.quoted.single.html\"\n        }\n      ],\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"entity.other.attribute-name.id.html\" },\n        \"2\": { \"name\": \"punctuation.separator.key-value.html\" }\n      }\n    },\n    \"tag-generic-attribute\": {\n      \"match\": \"\\\\b([a-zA-Z\\\\-:]+)\",\n      \"name\": \"entity.other.attribute-name.html\"\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.entity.html\" },\n            \"3\": { \"name\": \"punctuation.definition.entity.html\" }\n          }\n        },\n        { \"match\": \"&\", \"name\": \"invalid.illegal.bad-ampersand.html\" }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"include\": \"#vue-interpolations\" },\n        { \"include\": \"#entities\" }\n      ],\n      \"name\": \"string.quoted.double.html\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n      }\n    },\n    \"vue-directives\": {\n      \"begin\": \"(?:\\\\b(v-)|(:|@))([a-zA-Z\\\\-]+)(?:\\\\:([a-zA-Z\\\\-]+))?(?:\\\\.([a-zA-Z\\\\-]+))*\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"end\": \"\\\"\",\n          \"patterns\": [{ \"include\": \"source.js\" }],\n          \"name\": \"source.directive.vue\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          }\n        },\n        {\n          \"begin\": \"'\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.end.html\" }\n          },\n          \"end\": \"'\",\n          \"patterns\": [{ \"include\": \"source.js\" }],\n          \"name\": \"source.directive.vue\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.string.begin.html\" }\n          }\n        }\n      ],\n      \"name\": \"meta.directive.vue\",\n      \"captures\": {\n        \"3\": { \"name\": \"entity.other.attribute-name.html\" },\n        \"1\": { \"name\": \"entity.other.attribute-name.html\" },\n        \"6\": { \"name\": \"punctuation.separator.key-value.html\" },\n        \"4\": { \"name\": \"entity.other.attribute-name.html\" },\n        \"2\": { \"name\": \"punctuation.separator.key-value.html\" },\n        \"5\": { \"name\": \"entity.other.attribute-name.html\" }\n      }\n    },\n    \"vue-interpolations\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\\\\{\\\\{?\",\n          \"endCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.generic.end.html\" }\n          },\n          \"end\": \"\\\\}\\\\}\\\\}?\",\n          \"patterns\": [{ \"include\": \"source.js\" }],\n          \"name\": \"expression.embbeded.vue\",\n          \"beginCaptures\": {\n            \"0\": { \"name\": \"punctuation.definition.generic.begin.html\" }\n          }\n        }\n      ]\n    }\n  },\n  \"keyEquivalent\": \"^~H\",\n  \"fileTypes\": [\"vue\"],\n  \"uuid\": \"5512c10d-4cc5-434c-b8fc-53b912f55ab3\",\n  \"patterns\": [\n    { \"include\": \"#vue-interpolations\" },\n    {\n      \"begin\": \"(<)([a-zA-Z0-9:-]++)(?=[^>]*></\\\\2>)\",\n      \"endCaptures\": {\n        \"3\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.end.html\" },\n        \"4\": { \"name\": \"entity.name.tag.html\" },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html\"\n        },\n        \"5\": { \"name\": \"punctuation.definition.tag.end.html\" }\n      },\n      \"end\": \"(>)(<)(/)(\\\\2)(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"end\": \"(\\\\?>)\",\n      \"patterns\": [\n        { \"include\": \"#tag-generic-attribute\" },\n        { \"include\": \"#string-double-quoted\" },\n        { \"include\": \"#string-single-quoted\" }\n      ],\n      \"name\": \"meta.tag.preprocessor.xml.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.html\" },\n        \"2\": { \"name\": \"entity.name.tag.xml.html\" }\n      }\n    },\n    {\n      \"begin\": \"<!--\",\n      \"end\": \"--\\\\s*>\",\n      \"patterns\": [\n        { \"match\": \"--\", \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\" }\n      ],\n      \"name\": \"comment.block.html\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.html\" } }\n    },\n    {\n      \"begin\": \"<!\",\n      \"end\": \">\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i:DOCTYPE)\",\n          \"end\": \"(?=>)\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"[^\\\">]*\\\"\",\n              \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n            }\n          ],\n          \"name\": \"meta.tag.sgml.doctype.html\",\n          \"captures\": { \"1\": { \"name\": \"entity.name.tag.doctype.html\" } }\n        },\n        {\n          \"begin\": \"\\\\[CDATA\\\\[\",\n          \"end\": \"]](?=>)\",\n          \"name\": \"constant.other.inline-data.html\"\n        },\n        {\n          \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        }\n      ],\n      \"name\": \"meta.tag.sgml.html\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.tag.html\" } }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:template))\\\\b(?=[^>]*lang=(['\\\"])slm\\\\1?)\",\n      \"end\": \"(</)((?i:template))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:template))\",\n          \"patterns\": [{ \"include\": \"text.slm\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"text.slm.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:template))\\\\b(?=[^>]*lang=(['\\\"])jade\\\\1?)\",\n      \"end\": \"(</)((?i:template))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:template))\",\n          \"patterns\": [{ \"include\": \"text.jade\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"text.jade.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:template))\\\\b(?=[^>]*lang=(['\\\"])pug\\\\1?)\",\n      \"end\": \"(</)((?i:template))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:template))\",\n          \"patterns\": [{ \"include\": \"text.pug\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"text.pug.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?=[^>]*lang=(['\\\"])stylus\\\\1?)\",\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [{ \"include\": \"source.stylus\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.stylus.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?=[^>]*lang=(['\\\"])postcss\\\\1?)\",\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [{ \"include\": \"source.postcss\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.postcss.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?=[^>]*lang=(['\\\"])sass\\\\1?)\",\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [{ \"include\": \"source.sass\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.sass.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?=[^>]*lang=(['\\\"])scss\\\\1?)\",\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [{ \"include\": \"source.css.scss\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.scss.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?=[^>]*lang=(['\\\"])less\\\\1?)\",\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [{ \"include\": \"source.css.less\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.less.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?![^>]*/>)\",\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(>)\",\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [{ \"include\": \"source.css\" }],\n          \"beginCaptures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.end.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.css.embedded.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.style.html\" },\n        \"3\": { \"name\": \"punctuation.definition.tag.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?=[^>]*lang=(['\\\"])ts\\\\1?)\",\n      \"endCaptures\": { \"2\": { \"name\": \"punctuation.definition.tag.html\" } },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [{ \"include\": \"source.ts\" }],\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n            \"2\": { \"name\": \"entity.name.tag.script.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.ts.embedded.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.script.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?=[^>]*lang=(['\\\"])coffee\\\\1?)\",\n      \"endCaptures\": { \"2\": { \"name\": \"punctuation.definition.tag.html\" } },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [{ \"include\": \"source.coffee\" }],\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n            \"2\": { \"name\": \"entity.name.tag.script.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.coffee.embedded.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.script.html\" }\n      }\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?=[^>]*lang=(['\\\"])livescript\\\\1?)\",\n      \"endCaptures\": { \"2\": { \"name\": \"punctuation.definition.tag.html\" } },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [{ \"include\": \"source.livescript\" }],\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n            \"2\": { \"name\": \"entity.name.tag.script.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.livescript.embedded.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.script.html\" }\n      }\n    },\n    {\n      \"begin\": \"(<)((?i:script))\\\\b(?![^>]*/>)(?![^>]*(?i:type.?=.?text/((?!javascript|babel|ecmascript).*)))\",\n      \"endCaptures\": { \"2\": { \"name\": \"punctuation.definition.tag.html\" } },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"patterns\": [\n        { \"include\": \"#tag-stuff\" },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [\n            {\n              \"match\": \"(//).*?((?=</script)|$\\\\n?)\",\n              \"name\": \"comment.line.double-slash.js\",\n              \"captures\": {\n                \"1\": { \"name\": \"punctuation.definition.comment.js\" }\n              }\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"end\": \"\\\\*/|(?=</script)\",\n              \"name\": \"comment.block.js\",\n              \"captures\": {\n                \"0\": { \"name\": \"punctuation.definition.comment.js\" }\n              }\n            },\n            { \"include\": \"source.js\" }\n          ],\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n            \"2\": { \"name\": \"entity.name.tag.script.html\" }\n          }\n        }\n      ],\n      \"name\": \"source.js.embedded.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.script.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.structure.any.html\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.structure.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.block.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.block.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\\\b)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"((?: ?/)?>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.inline.any.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.inline.any.html\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)([a-zA-Z0-9:-]+)\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.tag.end.html\" } },\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#tag-stuff\" }],\n      \"name\": \"meta.tag.other.html\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.begin.html\" },\n        \"2\": { \"name\": \"entity.name.tag.other.html\" }\n      }\n    },\n    { \"include\": \"#entities\" },\n    { \"match\": \"<>\", \"name\": \"invalid.illegal.incomplete.html\" },\n    { \"match\": \"<\", \"name\": \"invalid.illegal.bad-angle-bracket.html\" }\n  ],\n  \"name\": \"Vue Component\",\n  \"scopeName\": \"text.html.vue\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/wollok.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.wollok\",\n  \"fileTypes\": [\"wollok\"],\n  \"patterns\": [{ \"include\": \"#main\" }],\n  \"repository\": {\n    \"main__3\": {\n      \"patterns\": [\n        { \"include\": \"#numeric\" },\n        { \"match\": \"(,)\", \"name\": \"keyword.operator.wollok\" }\n      ]\n    },\n    \"main__2\": { \"patterns\": [] },\n    \"main__1\": { \"patterns\": [{ \"include\": \"#main\" }] },\n    \"multi_line_comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(/\\\\*)\",\n          \"endCaptures\": { \"1\": { \"name\": \"comment.wollok\" } },\n          \"end\": \"(\\\\*/)\",\n          \"contentName\": \"comment.wollok\",\n          \"beginCaptures\": { \"1\": { \"name\": \"comment.wollok\" } }\n        }\n      ]\n    },\n    \"numeric\": {\n      \"patterns\": [{ \"match\": \"(\\\\b\\\\d+)\", \"name\": \"constant.numeric.wollok\" }]\n    },\n    \"main\": {\n      \"patterns\": [\n        { \"match\": \"@[A-Za-z]+\", \"name\": \"variable.wollok\" },\n        { \"include\": \"#numeric\" },\n        {\n          \"begin\": \"(\\\\{)\",\n          \"endCaptures\": { \"1\": { \"name\": \"keyword.operator.wollok\" } },\n          \"patterns\": [{ \"include\": \"#main__1\" }],\n          \"end\": \"(\\\\})\",\n          \"beginCaptures\": { \"1\": { \"name\": \"keyword.operator.wollok\" } }\n        },\n        { \"match\": \"(;)\", \"name\": \"keyword.operator.wollok\" },\n        {\n          \"begin\": \"(\\\\\\\"|')\",\n          \"endCaptures\": { \"1\": { \"name\": \"string.wollok\" } },\n          \"end\": \"(\\\\\\\"|')\",\n          \"contentName\": \"string.wollok\",\n          \"beginCaptures\": { \"1\": { \"name\": \"string.wollok\" } }\n        },\n        { \"include\": \"#multi_line_comment\" },\n        { \"match\": \"(//.*)\", \"name\": \"comment.wollok\" },\n        {\n          \"match\": \"\\\\b(object|class|package|program|test|describe|method|override|constructor|native|var|const|property|inherits|new|if|else|self|super|import|null|true|false|return|throw|then always|try|catch|mixed with|with|mixin|fixture)\\\\b\",\n          \"name\": \"keyword.wollok\"\n        }\n      ]\n    },\n    \"multi_line_comment__1\": { \"patterns\": [] }\n  },\n  \"name\": \"wollok\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/xml.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"xml\", \"xsd\", \"tld\", \"jsp\", \"pt\", \"cpt\", \"dtml\", \"rss\", \"opml\"],\n  \"repository\": {\n    \"entity\": {\n      \"match\": \"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n      \"name\": \"constant.character.entity.xml\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.constant.xml\" },\n        \"3\": { \"name\": \"punctuation.definition.constant.xml\" }\n      }\n    },\n    \"parameterEntity\": {\n      \"match\": \"(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)\",\n      \"name\": \"constant.character.parameter-entity.xml\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.constant.xml\" },\n        \"3\": { \"name\": \"punctuation.definition.constant.xml\" }\n      }\n    },\n    \"tagStuff\": {\n      \"patterns\": [\n        {\n          \"match\": \" (?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9]+)=\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.separator.namespace.xml\" },\n            \"1\": { \"name\": \"entity.other.attribute-name.namespace.xml\" },\n            \"4\": { \"name\": \"entity.other.attribute-name.localname.xml\" },\n            \"2\": { \"name\": \"entity.other.attribute-name.xml\" }\n          }\n        },\n        { \"include\": \"#doublequotedString\" },\n        { \"include\": \"#singlequotedString\" }\n      ]\n    },\n    \"bare-ampersand\": {\n      \"match\": \"&\",\n      \"name\": \"invalid.illegal.bad-ampersand.xml\"\n    },\n    \"singlequotedString\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [{ \"include\": \"#entity\" }, { \"include\": \"#bare-ampersand\" }],\n      \"name\": \"string.quoted.single.xml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    },\n    \"doublequotedString\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [{ \"include\": \"#entity\" }, { \"include\": \"#bare-ampersand\" }],\n      \"name\": \"string.quoted.double.xml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    },\n    \"internalSubset\": {\n      \"begin\": \"(\\\\[)\",\n      \"end\": \"(\\\\])\",\n      \"patterns\": [\n        { \"include\": \"#EntityDecl\" },\n        { \"include\": \"#parameterEntity\" }\n      ],\n      \"name\": \"meta.internalsubset.xml\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.constant.xml\" } }\n    },\n    \"EntityDecl\": {\n      \"begin\": \"(<!)(ENTITY)\\\\s+(%\\\\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\\\\s+(?:SYSTEM|PUBLIC)\\\\s+)?\",\n      \"end\": \"(>)\",\n      \"patterns\": [\n        { \"include\": \"#doublequotedString\" },\n        { \"include\": \"#singlequotedString\" }\n      ],\n      \"captures\": {\n        \"3\": { \"name\": \"punctuation.definition.entity.xml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n        \"4\": { \"name\": \"variable.language.entity.xml\" },\n        \"2\": { \"name\": \"keyword.other.entity.xml\" },\n        \"5\": { \"name\": \"keyword.other.entitytype.xml\" }\n      }\n    }\n  },\n  \"keyEquivalent\": \"^~X\",\n  \"uuid\": \"D3C4E6DA-6B1C-11D9-8CC2-000D93589AF6\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<\\\\?)\\\\s*([-_a-zA-Z0-9]+)\",\n      \"end\": \"(\\\\?>)\",\n      \"patterns\": [\n        { \"match\": \" ([a-zA-Z-]+)\", \"name\": \"entity.other.attribute-name.xml\" },\n        { \"include\": \"#doublequotedString\" },\n        { \"include\": \"#singlequotedString\" }\n      ],\n      \"name\": \"meta.tag.metadata.processing.xml\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n        \"2\": { \"name\": \"entity.name.tag.xml\" }\n      }\n    },\n    {\n      \"begin\": \"(<!)(DOCTYPE)\\\\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)\",\n      \"end\": \"\\\\s*(>)\",\n      \"patterns\": [{ \"include\": \"#internalSubset\" }],\n      \"name\": \"meta.tag.metadata.doctype.xml\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n        \"2\": { \"name\": \"entity.name.tag.xml\" },\n        \"3\": { \"name\": \"entity.other.attribute-name.documentroot.xml\" }\n      }\n    },\n    {\n      \"begin\": \"<[!%]--\",\n      \"end\": \"--%?>\",\n      \"name\": \"comment.block.xml\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.xml\" } }\n    },\n    {\n      \"begin\": \"(<)((?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+))(?=(\\\\s[^>]*)?></\\\\2>)\",\n      \"endCaptures\": {\n        \"7\": { \"name\": \"punctuation.definition.tag.xml\" },\n        \"3\": { \"name\": \"entity.name.tag.namespace.xml\" },\n        \"4\": { \"name\": \"entity.name.tag.xml\" },\n        \"5\": { \"name\": \"punctuation.separator.namespace.xml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n        \"6\": { \"name\": \"entity.name.tag.localname.xml\" },\n        \"2\": { \"name\": \"meta.scope.between-tag-pair.xml\" }\n      },\n      \"end\": \"(>(<))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+)(>)\",\n      \"patterns\": [{ \"include\": \"#tagStuff\" }],\n      \"name\": \"meta.tag.no-content.xml\",\n      \"beginCaptures\": {\n        \"3\": { \"name\": \"entity.name.tag.namespace.xml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n        \"6\": { \"name\": \"entity.name.tag.localname.xml\" },\n        \"4\": { \"name\": \"entity.name.tag.xml\" },\n        \"5\": { \"name\": \"punctuation.separator.namespace.xml\" }\n      }\n    },\n    {\n      \"begin\": \"(</?)(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+)\",\n      \"end\": \"(/?>)\",\n      \"patterns\": [{ \"include\": \"#tagStuff\" }],\n      \"name\": \"meta.tag.xml\",\n      \"captures\": {\n        \"3\": { \"name\": \"entity.name.tag.xml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n        \"4\": { \"name\": \"punctuation.separator.namespace.xml\" },\n        \"2\": { \"name\": \"entity.name.tag.namespace.xml\" },\n        \"5\": { \"name\": \"entity.name.tag.localname.xml\" }\n      }\n    },\n    { \"include\": \"#entity\" },\n    { \"include\": \"#bare-ampersand\" },\n    {\n      \"begin\": \"<%@\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.end.xml\" }\n      },\n      \"end\": \"%>\",\n      \"patterns\": [\n        {\n          \"match\": \"page|include|taglib\",\n          \"name\": \"keyword.other.page-props.xml\"\n        }\n      ],\n      \"name\": \"source.java-props.embedded.xml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.begin.xml\" }\n      }\n    },\n    {\n      \"begin\": \"<%[!=]?(?!--)\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.end.xml\" }\n      },\n      \"end\": \"(?!--)%>\",\n      \"patterns\": [{ \"include\": \"source.java\" }],\n      \"name\": \"source.java.embedded.xml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.section.embedded.begin.xml\" }\n      }\n    },\n    {\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"]]>\",\n      \"name\": \"string.unquoted.cdata.xml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    }\n  ],\n  \"name\": \"XML\",\n  \"scopeName\": \"text.xml\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/xquery.tmLanguage.json",
    "content": "{\n  \"foldingStartMarker\": \"^\\\\s*(<[^!?%/](?!.+?(/>|</.+?>))|<[!%]--(?!.+?--%?>)|<%[!]?(?!.+?%>))|(declare|.*\\\\{\\\\s*(//.*)?$)\",\n  \"firstLineMatch\": \"^\\\\bxquery version\\\\b.*\",\n  \"foldingStopMarker\": \"^\\\\s*(</[^>]+>|[/%]>|-->)\\\\s*$|(.*\\\\}\\\\s*;?\\\\s*|.*;)\",\n  \"keyEquivalent\": \"^~X\",\n  \"fileTypes\": [\"xq\", \"xql\", \"xqm\", \"xqy\", \"xquery\"],\n  \"repository\": {\n    \"xml_content\": {\n      \"begin\": \"(?<=>)(?=[^<]+)\",\n      \"end\": \"(?=<)\",\n      \"patterns\": [{ \"include\": \"#code_block\" }],\n      \"name\": \"meta.xml-content.xquery\"\n    },\n    \"entity\": {\n      \"match\": \"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n      \"name\": \"constant.character.entity.xml\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.constant.xml\" },\n        \"3\": { \"name\": \"punctuation.definition.constant.xml\" }\n      }\n    },\n    \"internalSubset\": {\n      \"begin\": \"(\\\\[)\",\n      \"end\": \"(\\\\])\",\n      \"patterns\": [\n        { \"include\": \"#EntityDecl\" },\n        { \"include\": \"#parameterEntity\" }\n      ],\n      \"name\": \"meta.internalsubset.xml\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.constant.xml\" } }\n    },\n    \"parameterEntity\": {\n      \"match\": \"(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)\",\n      \"name\": \"constant.character.parameter-entity.xml\",\n      \"captures\": {\n        \"1\": { \"name\": \"punctuation.definition.constant.xml\" },\n        \"3\": { \"name\": \"punctuation.definition.constant.xml\" }\n      }\n    },\n    \"block_comment\": {\n      \"begin\": \"\\\\(:\",\n      \"end\": \":\\\\)\",\n      \"patterns\": [{ \"include\": \"#block_comment\" }]\n    },\n    \"function_parameters\": {\n      \"match\": \"\\\\$([\\\\-_a-zA-Z0-9][\\\\-\\\\._a-zA-Z0-9]*:)?([\\\\-_a-zA-Z0-9][\\\\-\\\\._a-zA-Z0-9]*)\",\n      \"name\": \"variable.parameter.xquery\"\n    },\n    \"doublequotedString\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [{ \"include\": \"#entity\" }, { \"include\": \"#bare-ampersand\" }],\n      \"name\": \"string.quoted.double.xquery\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    },\n    \"doublequotedXmlString\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        { \"include\": \"#entity\" },\n        { \"include\": \"#bare-ampersand\" },\n        { \"include\": \"#code_block\" }\n      ],\n      \"name\": \"string.quoted.double.xquery\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    },\n    \"EntityDecl\": {\n      \"begin\": \"(<!)(ENTITY)\\\\s+(%\\\\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\\\\s+(?:SYSTEM|PUBLIC)\\\\s+)?\",\n      \"end\": \"(>)\",\n      \"patterns\": [{ \"include\": \"#xmlString\" }],\n      \"captures\": {\n        \"3\": { \"name\": \"punctuation.definition.entity.xml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n        \"4\": { \"name\": \"variable.entity.xml\" },\n        \"2\": { \"name\": \"keyword.entity.xml\" },\n        \"5\": { \"name\": \"keyword.entitytype.xml\" }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        { \"include\": \"#doublequotedString\" },\n        { \"include\": \"#singlequotedString\" }\n      ]\n    },\n    \"function_call\": {\n      \"begin\": \"[\\\\-_a-zA-Z0-9]+:[\\\\-_a-zA-Z0-9]+(\\\\()\",\n      \"endCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.parameters.end.xquery\" }\n      },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [{ \"include\": \"$self\" }, { \"include\": \"#function_call\" }],\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.parameters.begin.xquery\" }\n      }\n    },\n    \"tagStuff\": {\n      \"patterns\": [\n        {\n          \"match\": \" (?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9]+)=\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.separator.namespace.xml\" },\n            \"1\": { \"name\": \"entity.other.attribute-name.namespace.xml\" },\n            \"4\": { \"name\": \"entity.other.attribute-name.localname.xml\" },\n            \"2\": { \"name\": \"entity.other.attribute-name.xml\" }\n          }\n        },\n        { \"include\": \"#xmlString\" }\n      ]\n    },\n    \"Xml\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<\\\\?)\\\\s*([-_a-zA-Z0-9]+)\",\n          \"end\": \"(\\\\?>)\",\n          \"patterns\": [\n            {\n              \"match\": \" ([a-zA-Z-]+)\",\n              \"name\": \"entity.other.attribute-name.xml\"\n            },\n            { \"include\": \"#doublequotedXmlString\" },\n            { \"include\": \"#singlequotedXmlString\" }\n          ],\n          \"name\": \"meta.tag.preprocessor.xml\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n            \"2\": { \"name\": \"entity.name.tag.xml\" }\n          }\n        },\n        {\n          \"begin\": \"(<!)(DOCTYPE)\\\\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)\",\n          \"end\": \"\\\\s*(>)\",\n          \"patterns\": [{ \"include\": \"#internalSubset\" }],\n          \"name\": \"meta.tag.sgml.doctype.xml\",\n          \"captures\": {\n            \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n            \"2\": { \"name\": \"keyword.doctype.xml\" },\n            \"3\": { \"name\": \"variable.documentroot.xml\" }\n          }\n        },\n        {\n          \"begin\": \"<[!%]--\",\n          \"end\": \"--%?>\",\n          \"name\": \"comment.block.xml\",\n          \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.xml\" } }\n        },\n        {\n          \"begin\": \"(<)((?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+))(?=(\\\\s[^>]*)?></\\\\2>)\",\n          \"endCaptures\": {\n            \"7\": { \"name\": \"punctuation.definition.tag.xml\" },\n            \"3\": { \"name\": \"entity.name.tag.namespace.xml\" },\n            \"4\": { \"name\": \"entity.name.tag.xml\" },\n            \"5\": { \"name\": \"punctuation.separator.namespace.xml\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n            \"6\": { \"name\": \"entity.name.tag.localname.xml\" },\n            \"2\": { \"name\": \"meta.scope.between-tag-pair.xml\" }\n          },\n          \"end\": \"(>(<))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+)(>)\",\n          \"patterns\": [{ \"include\": \"#tagStuff\" }],\n          \"name\": \"meta.tag.no-content.xml\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.tag.namespace.xml\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n            \"6\": { \"name\": \"entity.name.tag.localname.xml\" },\n            \"4\": { \"name\": \"entity.name.tag.xml\" },\n            \"5\": { \"name\": \"punctuation.separator.namespace.xml\" }\n          }\n        },\n        {\n          \"begin\": \"(?x:\\n                        (<)\\n                        (\\n                          (?:\\n                            ([-_a-zA-Z0-9]+)(:)\\n                          )?\\n                          ([-_a-zA-Z0-9:]+)\\n                        )\\n                        (?=[^>]*/>)\\n\\t\\t\\t\\t    )\",\n          \"end\": \"/>\",\n          \"patterns\": [{ \"include\": \"#tagStuff\" }],\n          \"name\": \"meta.tag.self-closing.xml\"\n        },\n        {\n          \"begin\": \"(?x:\\n                      (<)\\n                      (\\n                        (?:\\n                          ([-_a-zA-Z0-9]+)(:)\\n                        )?\\n                        ([-_a-zA-Z0-9:]+)\\n                      )\\n                    )\",\n          \"endCaptures\": { \"1\": { \"name\": \"entity.name.tag.xml\" } },\n          \"end\": \"(</\\\\2>)\",\n          \"patterns\": [\n            { \"include\": \"#tagStuff\" },\n            { \"include\": \"#Xml\" },\n            { \"include\": \"#xml_content\" }\n          ],\n          \"name\": \"meta.tag.xml\",\n          \"beginCaptures\": {\n            \"3\": { \"name\": \"entity.name.tag.xml\" },\n            \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n            \"4\": { \"name\": \"punctuation.separator.namespace.xml\" },\n            \"2\": { \"name\": \"entity.name.tag.namespace.xml\" },\n            \"5\": { \"name\": \"entity.name.tag.localname.xml\" }\n          }\n        }\n      ]\n    },\n    \"bare-ampersand\": {\n      \"match\": \"&\",\n      \"name\": \"invalid.illegal.bad-ampersand.xml\"\n    },\n    \"singlequotedXmlString\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [\n        { \"include\": \"#entity\" },\n        { \"include\": \"#bare-ampersand\" },\n        { \"include\": \"#code_block\" }\n      ],\n      \"name\": \"string.quoted.single.xquery\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    },\n    \"code_block\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [{ \"include\": \"$self\" }],\n      \"name\": \"meta.code-block.xquery\"\n    },\n    \"singlequotedString\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"'\",\n      \"patterns\": [{ \"include\": \"#entity\" }, { \"include\": \"#bare-ampersand\" }],\n      \"name\": \"string.quoted.single.xquery\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    },\n    \"xmlString\": {\n      \"patterns\": [\n        { \"include\": \"#doublequotedXmlString\" },\n        { \"include\": \"#singlequotedXmlString\" }\n      ]\n    }\n  },\n  \"uuid\": \"5FB86104-E38E-4DAA-B929-DF98011DECBD\",\n  \"patterns\": [\n    { \"include\": \"#Xml\" },\n    { \"include\": \"#entity\" },\n    { \"include\": \"#bare-ampersand\" },\n    {\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"]]>\",\n      \"name\": \"string.unquoted.cdata.xml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    },\n    {\n      \"match\": \"^xquery version .*;$\",\n      \"name\": \"keyword.control.import.xquery\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(\\\\d+\\\\.\\\\d*(e[\\\\-\\\\+]?\\\\d+)?))(?=[^a-zA-Z_])\",\n      \"name\": \"constant.numeric.float.xquery\"\n    },\n    {\n      \"match\": \"(?<=[^0-9a-zA-Z_])(?i:(\\\\.\\\\d+(e[\\\\-\\\\+]?\\\\d+)?))\",\n      \"name\": \"constant.numeric.float.xquery\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(\\\\d+e[\\\\-\\\\+]?\\\\d+))\",\n      \"name\": \"constant.numeric.float.xquery\"\n    },\n    {\n      \"match\": \"\\\\b([1-9]+[0-9]*|0)\",\n      \"name\": \"constant.numeric.integer.decimal.xquery\"\n    },\n    {\n      \"match\": \"\\\\b(import|module|schema)\\\\b\",\n      \"name\": \"keyword.control.import.xquery\"\n    },\n    {\n      \"begin\": \"\\\\(:\",\n      \"end\": \":\\\\)\",\n      \"patterns\": [{ \"include\": \"#block_comment\" }],\n      \"name\": \"comment.block.xquery\",\n      \"captures\": { \"0\": { \"name\": \"punctuation.definition.comment.xquery\" } }\n    },\n    {\n      \"comment\": \"http://www.w3.org/TR/xpath-datamodel/#types\",\n      \"match\": \"(?<![:\\\\-_a-zA-Z0-9])((xs:)(string|boolean|decimal|float|double|duration|dateTime|time|date|gYearMonth|gYear|gMonthDay|gDay|gMonth|hexBinary|base64Binary|anyURI|QName|NOTATION|anyAtomicType|anyType|anySimpleType|untypedAtomic|dayTimeDuration|yearMonthDuration|integer|nonPositiveInteger|negativeInteger|long|int|short|byte|nonNegativeInteger|unsignedLong|unsignedInt|unsignedShort|unsignedByte|positiveInteger|ENTITY|ID|NMTOKEN|language|NCName|Name|token|normalizedString))(?![:\\\\-_a-zA-Z0-9])\",\n      \"name\": \"support.type.xquery\"\n    },\n    {\n      \"match\": \"((\\\\$)(?:([\\\\-_a-zA-Z0-9]+)((:)))?([\\\\-_a-zA-Z0-9]+))\",\n      \"name\": \"variable.other.xquery\",\n      \"captures\": { \"1\": { \"name\": \"punctuation.definition.variable.xquery\" } }\n    },\n    {\n      \"match\": \"/(child|descendant|attribute|self|descendant-or-self|following-sibling|following|parent|ancestor|preceding-sibling|preceding|ancestor-or-self)::\",\n      \"name\": \"support.constant.xquery\"\n    },\n    {\n      \"begin\": \"(declare)\\\\s+(private\\\\s+)?(function)\\\\s+((?:([\\\\-_a-zA-Z0-9]+):)?([\\\\-_a-zA-Z0-9]+))\\\\s*\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        { \"include\": \"#function_parameters\" },\n        { \"include\": \"$self\" }\n      ],\n      \"name\": \"meta.function.xquery\",\n      \"captures\": {\n        \"3\": { \"name\": \"storage.type.function.xquery\" },\n        \"1\": { \"name\": \"keyword.control.declare.xquery\" },\n        \"4\": { \"name\": \"entity.name.function.xquery\" },\n        \"2\": { \"name\": \"storage.modifier.xquery\" }\n      }\n    },\n    {\n      \"match\": \"(declare)\\\\s+(variable)\",\n      \"name\": \"meta.variable.xquery\",\n      \"captures\": {\n        \"1\": { \"name\": \"keyword.other.xquery\" },\n        \"2\": { \"name\": \"storage.type.variable.xquery\" }\n      }\n    },\n    {\n      \"match\": \"\\\\b(declare|namespace|preserve|no-preserve|inherit|no-inherit|strip|boundary-space|default|instance|option|copy-namespaces|xdmp:mapping)\\\\b\",\n      \"name\": \"keyword.other.prolog.xquery\"\n    },\n    {\n      \"match\": \"(?<![:\\\\-_a-zA-Z0-9])(of|as|by|in|at|or|and)(?![:\\\\-_a-zA-Z0-9])\",\n      \"name\": \"keyword.operator.logical.xquery\"\n    },\n    {\n      \"match\": \"(?<![:\\\\-_a-zA-Z0-9])(for|let|return|where|if|then|else|order by|satisfies|every)(?![:\\\\-_a-zA-Z0-9])\",\n      \"captures\": { \"1\": { \"name\": \"keyword.control.flow.xquery\" } }\n    },\n    {\n      \"match\": \"(?<![:\\\\-_a-zA-Z0-9])(element|attribute|document|document-node|schema-element|schema-attribute|processing-instruction|comment|text|node|empty-sequence|item)(?![:\\\\-_a-zA-Z0-9])\",\n      \"captures\": { \"1\": { \"name\": \"support.type.xquery\" } }\n    },\n    { \"match\": \":=\", \"name\": \"keyword.operator.assignment.xquery\" },\n    {\n      \"match\": \"(?<![:\\\\-_a-zA-Z0-9])(\\\\+|-|<=?|>=?|eq|ne|lt|le|ge|gt|\\\\*|div|idiv|mod)(?![:\\\\-_a-zA-Z0-9])\",\n      \"name\": \"keyword.operator.arithmetic.xquery\"\n    },\n    {\n      \"match\": \"(?<![:\\\\-_a-zA-Z0-9])((fn:)?(abs|adjust-date-to-timezone|adjust-date-to-timezone|adjust-dateTime-to-timezone|adjust-dateTime-to-timezone|adjust-time-to-timezone|adjust-time-to-timezone|avg|base-uri|base-uri|boolean|ceiling|codepoint-equal|codepoints-to-string|collection|collection|compare|concat|contains|count|current-date|current-dateTime|current-time|data|dateTime|day-from-date|day-from-dateTime|days-from-duration|deep-equal|default-collation|distinct-values|distinct-values|doc|doc-available|document-uri|empty|ends-with|error|escape-uri|exactly-one|exists|false|floor|hours-from-dateTime|hours-from-duration|hours-from-time|id|idref|implicit-timezone|in-scope-prefixes|index-of|insert-before|lang|last|local-name|local-name-from-QName|lower-case|matches|max|min|minutes-from-dateTime|minutes-from-duration|minutes-from-time|month-from-date|month-from-dateTime|months-from-duration|name|namespace-uri|namespace-uri-for-prefix|namespace-uri-from-QName|nilled|node-name|normalize-space|normalize-unicode|not|number|one-or-more|position|prefix-from-QName|QName|remove|replace|resolve-QName|resolve-uri|reverse|root|round|round-half-to-even|seconds-from-dateTime|seconds-from-duration|seconds-from-time|starts-with|static-base-uri|string|string-join|string-length|string-to-codepoints|subsequence|substring|substring-after|substring-before|sum|timezone-from-date|timezone-from-dateTime|timezone-from-time|tokenize|trace|translate|true|unordered|upper-case|year-from-date|year-from-dateTime|years-from-duration|zero-or-one))(?=\\\\s*\\\\()\",\n      \"name\": \"support.function.builtin.xquery\"\n    },\n    {\n      \"match\": \"\\\\b(declare|module|namespace|element|variable|base-uri|collation|import|construction|ordering|ordered|unordered|order|empty|greatest|least|function|preserve|no-preserve|inherit|no-inherit|strip|boundary-space|default|instance|option|copy-namespaces)\\\\b\",\n      \"name\": \"keyword.other.prolog.xquery\"\n    },\n    {\n      \"match\": \"(?<![:\\\\-_a-zA-Z0-9])(xdmp:(access|add-response-header|add64|amp|amp-roles|and64|apply|architecture|base64-decode|base64-encode|binary-decode|can-grant-roles|castable-as|collation-canonical-uri|collection-delete|collection-locks|collection-properties|crypt|current-last|current-position|database|database-backup|database-backup-cancel|database-backup-purge|database-backup-status|database-backup-validate|database-forests|database-name|database-restore|database-restore-cancel|database-restore-status|database-restore-validate|databases|default-collections|default-permissions|describe|diacritic-less|directory|directory-create|directory-delete|directory-locks|directory-properties|document-add-collections|document-add-permissions|document-add-properties|document-assign|document-delete|document-forest|document-get|document-get-collections|document-get-permissions|document-get-properties|document-get-quality|document-insert|document-load|document-locks|document-properties|document-remove-collections|document-remove-permissions|document-remove-properties|document-set-collections|document-set-permissions|document-set-properties|document-set-property|document-set-quality|elapsed-time|element-content-type|email|encoding-language-detect|estimate|eval|eval-in|excel-convert|exists|filesystem-directory|filesystem-directory-create|filesystem-file|forest|forest-backup|forest-clear|forest-counts|forest-databases|forest-name|forest-restart|forest-restore|forest-rollback|forest-status|forests|format-number|from-json|function|function-module|function-name|get|get-current-roles|get-current-user|get-request-body|get-request-client-address|get-request-client-certificate|get-request-field|get-request-field-content-type|get-request-field-filename|get-request-field-names|get-request-header|get-request-header-names|get-request-method|get-request-path|get-request-protocol|get-request-url|get-request-user|get-request-username|get-response-code|get-response-encoding|get-server-field|get-server-field-names|get-session-field|get-session-field-names|get-url-rewriter-path|group|group-hosts|group-name|group-servers|groups|has-privilege|hash32|hash64|hex-to-integer|host|host-name|host-status|hosts|http-delete|http-get|http-head|http-options|http-post|http-put|integer-to-hex|integer-to-octal|invoke|invoke-in|key-from-QName|load|lock-acquire|lock-for-update|lock-release|log|log-level|login|logout|lshift64|md5|merge|merge-cancel|merging|modules-database|modules-root|mul64|node-database|node-delete|node-insert-after|node-insert-before|node-insert-child|node-kind|node-replace|node-uri|not64|octal-to-integer|or64|parse-dateTime|parse-yymmdd|path|pdf-convert|permission|plan|platform|powerpoint-convert|pretty-print|privilege|privilege-roles|product-edition|QName-from-key|query-meters|query-trace|quote|random|redirect-response|request|request-cancel|request-status|request-timestamp|restart|rethrow|role|role-roles|rshift64|save|schema-database|security-assert|security-database|server|server-name|server-status|servers|set|set-request-time-limit|set-response-code|set-response-content-type|set-response-encoding|set-server-field|set-server-field-privilege|set-session-field|shutdown|sleep|spawn|spawn-in|step64|strftime|subbinary|tidy|to-json|trace|triggers-database|unpath|unquote|uri-content-type|uri-format|uri-is-file|url-decode|url-encode|user|user-last-login|user-roles|value|version|with-namespaces|word-convert|x509-certificate-extract|xor64|xquery-version|xslt-eval|xslt-invoke|zip-create|zip-get|zip-manifest))(?=\\\\s*\\\\()\",\n      \"name\": \"support.function.marklogic.xquery\"\n    },\n    {\n      \"match\": \"(?<![:\\\\-_a-zA-Z0-9])(xdmp:([\\\\-_a-zA-Z0-9][\\\\-\\\\._a-zA-Z0-9]*:)?([\\\\-_a-zA-Z0-9][\\\\-\\\\._a-zA-Z0-9]*))\",\n      \"name\": \"invalid.function.marklogic\"\n    },\n    { \"include\": \"#string\" },\n    {\n      \"begin\": \"(\\\\()\",\n      \"endCaptures\": { \"1\": { \"name\": \"punctuation.definition.end.xquery\" } },\n      \"end\": \"(\\\\))\",\n      \"patterns\": [{ \"include\": \"$self\" }],\n      \"name\": \"meta\",\n      \"beginCaptures\": {\n        \"1\": { \"name\": \"punctuation.definition.begin.xquery\" }\n      }\n    }\n  ],\n  \"name\": \"XQuery\",\n  \"scopeName\": \"source.xquery\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/xsl.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"xsl\", \"xslt\"],\n  \"repository\": {\n    \"doublequotedString\": {\n      \"begin\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.xml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    },\n    \"singlequotedString\": {\n      \"begin\": \"'\",\n      \"endCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.end.xml\" }\n      },\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.xml\",\n      \"beginCaptures\": {\n        \"0\": { \"name\": \"punctuation.definition.string.begin.xml\" }\n      }\n    }\n  },\n  \"keyEquivalent\": \"^~X\",\n  \"uuid\": \"DB8033A1-6D8E-4D80-B8A2-8768AAC6125D\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<)(xsl)((:))(template)\",\n      \"end\": \"(>)\",\n      \"patterns\": [\n        {\n          \"match\": \" (?:([-_a-zA-Z0-9]+)((:)))?([a-zA-Z-]+)\",\n          \"captures\": {\n            \"3\": { \"name\": \"punctuation.separator.namespace.xml\" },\n            \"1\": { \"name\": \"entity.other.attribute-name.namespace.xml\" },\n            \"4\": { \"name\": \"entity.other.attribute-name.localname.xml\" },\n            \"2\": { \"name\": \"entity.other.attribute-name.xml\" }\n          }\n        },\n        { \"include\": \"#doublequotedString\" },\n        { \"include\": \"#singlequotedString\" }\n      ],\n      \"name\": \"meta.tag.xml.template\",\n      \"captures\": {\n        \"3\": { \"name\": \"entity.name.tag.xml\" },\n        \"1\": { \"name\": \"punctuation.definition.tag.xml\" },\n        \"4\": { \"name\": \"punctuation.separator.namespace.xml\" },\n        \"2\": { \"name\": \"entity.name.tag.namespace.xml\" },\n        \"5\": { \"name\": \"entity.name.tag.localname.xml\" }\n      }\n    },\n    { \"include\": \"text.xml\" }\n  ],\n  \"name\": \"XSL\",\n  \"scopeName\": \"text.xml.xsl\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/yaml.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/yaml.tmbundle/blob/master/Syntaxes/YAML.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/yaml.tmbundle/commit/e54ceae3b719506dba7e481a77cea4a8b576ae46\",\n  \"name\": \"yaml\",\n  \"scopeName\": \"source.yaml\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#property\"\n    },\n    {\n      \"include\": \"#directive\"\n    },\n    {\n      \"match\": \"^---\",\n      \"name\": \"entity.other.document.begin.yaml\"\n    },\n    {\n      \"match\": \"^\\\\.{3}\",\n      \"name\": \"entity.other.document.end.yaml\"\n    },\n    {\n      \"include\": \"#node\"\n    }\n  ],\n  \"repository\": {\n    \"block-collection\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-sequence\"\n        },\n        {\n          \"include\": \"#block-mapping\"\n        }\n      ]\n    },\n    \"block-mapping\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-pair\"\n        }\n      ]\n    },\n    \"block-node\": {\n      \"patterns\": [\n        {\n          \"include\": \"#prototype\"\n        },\n        {\n          \"include\": \"#block-scalar\"\n        },\n        {\n          \"include\": \"#block-collection\"\n        },\n        {\n          \"include\": \"#flow-scalar-plain-out\"\n        },\n        {\n          \"include\": \"#flow-node\"\n        }\n      ]\n    },\n    \"block-pair\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.key-value.begin.yaml\"\n            }\n          },\n          \"end\": \"(?=\\\\?)|^ *(:)|(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.mapping.yaml\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.expected-newline.yaml\"\n            }\n          },\n          \"name\": \"meta.block-mapping.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#block-node\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n                        (?=\\n                            (?x:\\n                                  [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                                | [?:-] \\\\S\\n                            )\\n                            (\\n                                  [^\\\\s:]\\n                                | : \\\\S\\n                                | \\\\s+ (?![#\\\\s])\\n                            )*\\n                            \\\\s*\\n                            :\\n\\t\\t\\t\\t\\t\\t\\t(\\\\s|$)\\n                        )\\n                    \",\n          \"end\": \"(?x)\\n                        (?=\\n                              \\\\s* $\\n                            | \\\\s+ \\\\#\\n                            | \\\\s* : (\\\\s|$)\\n                        )\\n                    \",\n          \"patterns\": [\n            {\n              \"include\": \"#flow-scalar-plain-out-implicit-type\"\n            },\n            {\n              \"begin\": \"(?x)\\n                                  [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                                | [?:-] \\\\S\\n                            \",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.yaml\"\n                }\n              },\n              \"contentName\": \"entity.name.tag.yaml\",\n              \"end\": \"(?x)\\n                                (?=\\n                                      \\\\s* $\\n                                    | \\\\s+ \\\\#\\n                                    | \\\\s* : (\\\\s|$)\\n                                )\\n                            \",\n              \"name\": \"string.unquoted.plain.out.yaml\"\n            }\n          ]\n        },\n        {\n          \"match\": \":(?=\\\\s|$)\",\n          \"name\": \"punctuation.separator.key-value.mapping.yaml\"\n        }\n      ]\n    },\n    \"block-scalar\": {\n      \"begin\": \"(?:(\\\\|)|(>))([1-9])?([-+])?(.*\\\\n?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.block-scalar.literal.yaml\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.block-scalar.folded.yaml\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.indentation-indicator.yaml\"\n        },\n        \"4\": {\n          \"name\": \"storage.modifier.chomping-indicator.yaml\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \".+\",\n              \"name\": \"invalid.illegal.expected-comment-or-newline.yaml\"\n            }\n          ]\n        }\n      },\n      \"end\": \"^(?=\\\\S)|(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"^([ ]+)(?! )\",\n          \"end\": \"^(?!\\\\1|\\\\s*$)\",\n          \"name\": \"string.unquoted.block.yaml\"\n        }\n      ]\n    },\n    \"block-sequence\": {\n      \"match\": \"(-)(?!\\\\S)\",\n      \"name\": \"punctuation.definition.block.sequence.item.yaml\"\n    },\n    \"comment\": {\n      \"begin\": \"(?:(^[ \\\\t]*)|[ \\\\t]+)(?=#\\\\p{Print}*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.yaml\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.yaml\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.yaml\"\n        }\n      ]\n    },\n    \"directive\": {\n      \"begin\": \"^%\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.directive.begin.yaml\"\n        }\n      },\n      \"end\": \"(?=$|[ \\\\t]+($|#))\",\n      \"name\": \"meta.directive.yaml\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.directive.yaml.yaml\"\n            },\n            \"2\": {\n              \"name\": \"constant.numeric.yaml-version.yaml\"\n            }\n          },\n          \"match\": \"\\\\G(YAML)[ \\\\t]+(\\\\d+\\\\.\\\\d+)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.directive.tag.yaml\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.tag-handle.yaml\"\n            },\n            \"3\": {\n              \"name\": \"support.type.tag-prefix.yaml\"\n            }\n          },\n          \"match\": \"(?x)\\n                        \\\\G\\n                        (TAG)\\n                        (?:[ \\\\t]+\\n                            ((?:!(?:[0-9A-Za-z\\\\-]*!)?))\\n                            (?:[ \\\\t]+ (\\n                                  !              (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\\\-#;/?:@&=+$,_.!~*'()\\\\[\\\\]] )*\\n                                | (?![,!\\\\[\\\\]{}]) (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\\\-#;/?:@&=+$,_.!~*'()\\\\[\\\\]] )+\\n                                )\\n                            )?\\n                        )?\\n                    \"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.other.directive.reserved.yaml\"\n            },\n            \"2\": {\n              \"name\": \"string.unquoted.directive-name.yaml\"\n            },\n            \"3\": {\n              \"name\": \"string.unquoted.directive-parameter.yaml\"\n            }\n          },\n          \"match\": \"(?x) \\\\G (\\\\w+) (?:[ \\\\t]+ (\\\\w+) (?:[ \\\\t]+ (\\\\w+))? )?\"\n        },\n        {\n          \"match\": \"\\\\S+\",\n          \"name\": \"invalid.illegal.unrecognized.yaml\"\n        }\n      ]\n    },\n    \"flow-alias\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.alias.yaml\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.alias.yaml\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.alias.yaml\"\n        },\n        \"4\": {\n          \"name\": \"invalid.illegal.character.anchor.yaml\"\n        }\n      },\n      \"match\": \"((\\\\*))([^\\\\s\\\\[\\\\]/{/},]+)([^\\\\s\\\\]},]\\\\S*)?\"\n    },\n    \"flow-collection\": {\n      \"patterns\": [\n        {\n          \"include\": \"#flow-sequence\"\n        },\n        {\n          \"include\": \"#flow-mapping\"\n        }\n      ]\n    },\n    \"flow-mapping\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.mapping.begin.yaml\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.mapping.end.yaml\"\n        }\n      },\n      \"name\": \"meta.flow-mapping.yaml\",\n      \"patterns\": [\n        {\n          \"include\": \"#prototype\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.mapping.yaml\"\n        },\n        {\n          \"include\": \"#flow-pair\"\n        }\n      ]\n    },\n    \"flow-node\": {\n      \"patterns\": [\n        {\n          \"include\": \"#prototype\"\n        },\n        {\n          \"include\": \"#flow-alias\"\n        },\n        {\n          \"include\": \"#flow-collection\"\n        },\n        {\n          \"include\": \"#flow-scalar\"\n        }\n      ]\n    },\n    \"flow-pair\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.key-value.begin.yaml\"\n            }\n          },\n          \"end\": \"(?=[},\\\\]])\",\n          \"name\": \"meta.flow-pair.explicit.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#prototype\"\n            },\n            {\n              \"include\": \"#flow-pair\"\n            },\n            {\n              \"include\": \"#flow-node\"\n            },\n            {\n              \"begin\": \":(?=\\\\s|$|[\\\\[\\\\]{},])\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.key-value.mapping.yaml\"\n                }\n              },\n              \"end\": \"(?=[},\\\\]])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#flow-value\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n                        (?=\\n                            (?:\\n                                [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                              | [?:-] [^\\\\s[\\\\[\\\\]{},]]\\n                            )\\n                            (\\n                                  [^\\\\s:[\\\\[\\\\]{},]]\\n                                | : [^\\\\s[\\\\[\\\\]{},]]\\n                                | \\\\s+ (?![#\\\\s])\\n                            )*\\n                            \\\\s*\\n                            :\\n\\t\\t\\t\\t\\t\\t\\t(\\\\s|$)\\n                        )\\n                    \",\n          \"end\": \"(?x)\\n                        (?=\\n                              \\\\s* $\\n                            | \\\\s+ \\\\#\\n                            | \\\\s* : (\\\\s|$)\\n                            | \\\\s* : [\\\\[\\\\]{},]\\n                            | \\\\s* [\\\\[\\\\]{},]\\n                        )\\n                    \",\n          \"name\": \"meta.flow-pair.key.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#flow-scalar-plain-in-implicit-type\"\n            },\n            {\n              \"begin\": \"(?x)\\n                                  [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                                | [?:-] [^\\\\s[\\\\[\\\\]{},]]\\n                            \",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.yaml\"\n                }\n              },\n              \"contentName\": \"entity.name.tag.yaml\",\n              \"end\": \"(?x)\\n                                (?=\\n                                      \\\\s* $\\n                                    | \\\\s+ \\\\#\\n                                    | \\\\s* : (\\\\s|$)\\n                                    | \\\\s* : [\\\\[\\\\]{},]\\n                                    | \\\\s* [\\\\[\\\\]{},]\\n                                )\\n                            \",\n              \"name\": \"string.unquoted.plain.in.yaml\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#flow-node\"\n        },\n        {\n          \"begin\": \":(?=\\\\s|$|[\\\\[\\\\]{},])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.key-value.mapping.yaml\"\n            }\n          },\n          \"end\": \"(?=[},\\\\]])\",\n          \"name\": \"meta.flow-pair.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#flow-value\"\n            }\n          ]\n        }\n      ]\n    },\n    \"flow-scalar\": {\n      \"patterns\": [\n        {\n          \"include\": \"#flow-scalar-double-quoted\"\n        },\n        {\n          \"include\": \"#flow-scalar-single-quoted\"\n        },\n        {\n          \"include\": \"#flow-scalar-plain-in\"\n        }\n      ]\n    },\n    \"flow-scalar-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.yaml\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.yaml\"\n        }\n      },\n      \"name\": \"string.quoted.double.yaml\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\([0abtnvfre \\\"/\\\\\\\\N_Lp]|x\\\\d\\\\d|u\\\\d{4}|U\\\\d{8})\",\n          \"name\": \"constant.character.escape.yaml\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\n\",\n          \"name\": \"constant.character.escape.double-quoted.newline.yaml\"\n        }\n      ]\n    },\n    \"flow-scalar-plain-in\": {\n      \"patterns\": [\n        {\n          \"include\": \"#flow-scalar-plain-in-implicit-type\"\n        },\n        {\n          \"begin\": \"(?x)\\n                          [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                        | [?:-] [^\\\\s[\\\\[\\\\]{},]]\\n                    \",\n          \"end\": \"(?x)\\n                        (?=\\n                              \\\\s* $\\n                            | \\\\s+ \\\\#\\n                            | \\\\s* : (\\\\s|$)\\n                            | \\\\s* : [\\\\[\\\\]{},]\\n                            | \\\\s* [\\\\[\\\\]{},]\\n                        )\\n                    \",\n          \"name\": \"string.unquoted.plain.in.yaml\"\n        }\n      ]\n    },\n    \"flow-scalar-plain-in-implicit-type\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.language.null.yaml\"\n            },\n            \"2\": {\n              \"name\": \"constant.language.boolean.yaml\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.integer.yaml\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.float.yaml\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.timestamp.yaml\"\n            },\n            \"6\": {\n              \"name\": \"constant.language.value.yaml\"\n            },\n            \"7\": {\n              \"name\": \"constant.language.merge.yaml\"\n            }\n          },\n          \"match\": \"(?x)\\n                        (?x:\\n                              (null|Null|NULL|~)\\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\\n                            | (\\n                                (?:\\n                                      [-+]? 0b [0-1_]+ # (base 2)\\n                                    | [-+]? 0  [0-7_]+ # (base 8)\\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\\n                                )\\n                              )\\n                            | (\\n                                (?x:\\n                                      [-+]? (?: [0-9] [0-9_]*)? \\\\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\\\. [0-9_]* # (base 60)\\n                                    | [-+]? \\\\. (?: inf|Inf|INF) # (infinity)\\n                                    |       \\\\. (?: nan|NaN|NAN) # (not a number)\\n                                )\\n                              )\\n                            | (\\n                                (?x:\\n                                    \\\\d{4} - \\\\d{2} - \\\\d{2}           # (y-m-d)\\n                                  | \\\\d{4}                           # (year)\\n                                    - \\\\d{1,2}                       # (month)\\n                                    - \\\\d{1,2}                       # (day)\\n                                    (?: [Tt] | [ \\\\t]+) \\\\d{1,2}      # (hour)\\n                                    : \\\\d{2}                         # (minute)\\n                                    : \\\\d{2}                         # (second)\\n                                    (?: \\\\.\\\\d*)?                     # (fraction)\\n                                    (?:\\n                                          (?:[ \\\\t]*) Z\\n                                        | [-+] \\\\d{1,2} (?: :\\\\d{1,2})?\\n                                    )?                              # (time zone)\\n                                )\\n                              )\\n                            | (=)\\n                            | (<<)\\n                        )\\n                        (?:\\n                            (?=\\n                                  \\\\s* $\\n                                | \\\\s+ \\\\#\\n                                | \\\\s* : (\\\\s|$)\\n                                | \\\\s* : [\\\\[\\\\]{},]\\n                                | \\\\s* [\\\\[\\\\]{},]\\n                            )\\n                        )\\n                    \"\n        }\n      ]\n    },\n    \"flow-scalar-plain-out\": {\n      \"patterns\": [\n        {\n          \"include\": \"#flow-scalar-plain-out-implicit-type\"\n        },\n        {\n          \"begin\": \"(?x)\\n                          [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                        | [?:-] \\\\S\\n                    \",\n          \"end\": \"(?x)\\n                        (?=\\n                              \\\\s* $\\n                            | \\\\s+ \\\\#\\n                            | \\\\s* : (\\\\s|$)\\n                        )\\n                    \",\n          \"name\": \"string.unquoted.plain.out.yaml\"\n        }\n      ]\n    },\n    \"flow-scalar-plain-out-implicit-type\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.language.null.yaml\"\n            },\n            \"2\": {\n              \"name\": \"constant.language.boolean.yaml\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.integer.yaml\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.float.yaml\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.timestamp.yaml\"\n            },\n            \"6\": {\n              \"name\": \"constant.language.value.yaml\"\n            },\n            \"7\": {\n              \"name\": \"constant.language.merge.yaml\"\n            }\n          },\n          \"match\": \"(?x)\\n                        (?x:\\n                              (null|Null|NULL|~)\\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\\n                            | (\\n                                (?:\\n                                      [-+]? 0b [0-1_]+ # (base 2)\\n                                    | [-+]? 0  [0-7_]+ # (base 8)\\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\\n                                )\\n                              )\\n                            | (\\n                                (?x:\\n                                      [-+]? (?: [0-9] [0-9_]*)? \\\\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\\\. [0-9_]* # (base 60)\\n                                    | [-+]? \\\\. (?: inf|Inf|INF) # (infinity)\\n                                    |       \\\\. (?: nan|NaN|NAN) # (not a number)\\n                                )\\n                              )\\n                            | (\\n                                (?x:\\n                                    \\\\d{4} - \\\\d{2} - \\\\d{2}           # (y-m-d)\\n                                  | \\\\d{4}                           # (year)\\n                                    - \\\\d{1,2}                       # (month)\\n                                    - \\\\d{1,2}                       # (day)\\n                                    (?: [Tt] | [ \\\\t]+) \\\\d{1,2}      # (hour)\\n                                    : \\\\d{2}                         # (minute)\\n                                    : \\\\d{2}                         # (second)\\n                                    (?: \\\\.\\\\d*)?                     # (fraction)\\n                                    (?:\\n                                          (?:[ \\\\t]*) Z\\n                                        | [-+] \\\\d{1,2} (?: :\\\\d{1,2})?\\n                                    )?                              # (time zone)\\n                                )\\n                              )\\n                            | (=)\\n                            | (<<)\\n                        )\\n                        (?x:\\n                            (?=\\n                                  \\\\s* $\\n                                | \\\\s+ \\\\#\\n                                | \\\\s* : (\\\\s|$)\\n                            )\\n                        )\\n                    \"\n        }\n      ]\n    },\n    \"flow-scalar-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.yaml\"\n        }\n      },\n      \"end\": \"'(?!')\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.yaml\"\n        }\n      },\n      \"name\": \"string.quoted.single.yaml\",\n      \"patterns\": [\n        {\n          \"match\": \"''\",\n          \"name\": \"constant.character.escape.single-quoted.yaml\"\n        }\n      ]\n    },\n    \"flow-sequence\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.sequence.begin.yaml\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.sequence.end.yaml\"\n        }\n      },\n      \"name\": \"meta.flow-sequence.yaml\",\n      \"patterns\": [\n        {\n          \"include\": \"#prototype\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.sequence.yaml\"\n        },\n        {\n          \"include\": \"#flow-pair\"\n        },\n        {\n          \"include\": \"#flow-node\"\n        }\n      ]\n    },\n    \"flow-value\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?![},\\\\]])\",\n          \"end\": \"(?=[},\\\\]])\",\n          \"name\": \"meta.flow-pair.value.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#flow-node\"\n            }\n          ]\n        }\n      ]\n    },\n    \"node\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-node\"\n        }\n      ]\n    },\n    \"property\": {\n      \"begin\": \"(?=!|&)\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.property.yaml\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.property.anchor.yaml\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.anchor.yaml\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.anchor.yaml\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.character.anchor.yaml\"\n            }\n          },\n          \"match\": \"\\\\G((&))([^\\\\s\\\\[\\\\]/{/},]+)(\\\\S+)?\"\n        },\n        {\n          \"match\": \"(?x)\\n                        \\\\G\\n                        (?:\\n                            ! < (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\\\-#;/?:@&=+$,_.!~*'()\\\\[\\\\]] )+ >\\n                          | (?:!(?:[0-9A-Za-z\\\\-]*!)?) (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\\\-#;/?:@&=+$_.~*'()] )+\\n                          | !\\n                        )\\n                        (?=\\\\ |\\\\t|$)\\n                    \",\n          \"name\": \"storage.type.tag-handle.yaml\"\n        },\n        {\n          \"match\": \"\\\\S+\",\n          \"name\": \"invalid.illegal.tag-handle.yaml\"\n        }\n      ]\n    },\n    \"prototype\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/grammars/textmate/zeek.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"fileTypes\": [\"bro\", \"zeek\"],\n  \"foldingStartMarker\": \"\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"^\\\\s*\\\\}\",\n  \"name\": \"zeek\",\n  \"patterns\": [\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.zeek\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.zeek\"\n        }\n      },\n      \"name\": \"string.quoted.double.zeek\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        },\n        {\n          \"include\": \"#string_placeholder\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<=in|\\\\=|,|\\\\()\\\\s*(/)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.zeek\"\n        }\n      },\n      \"end\": \"(?<!\\\\\\\\)/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.zeek\"\n        }\n      },\n      \"name\": \"string.quoted.regexp.zeek\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        },\n        {\n          \"include\": \"#string_placeholder\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(/)(?=.*/)\",\n      \"name\": \"string.regexp.zeek\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.zeek\"\n        }\n      },\n      \"end\": \"(/)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.zeek\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.zeek\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.zeek\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.zeek\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.zeek\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.zeek\"\n        }\n      },\n      \"match\": \"^\\\\s*(function|hook|event)\\\\s+((?:(?:[a-zA-Z_][0-9a-zA-Z_]*)(?:::))?[0-9a-zA-Z_]+)\\\\s+\\\\((?:([a-zA-Z0-9_]+), ([a-zA-Z0-9_]+))*\\\\)(?:\\\\s*:\\\\s*([a-zA-Z0-9_]+))\",\n      \"name\": \"meta.function.zeek\",\n      \"patterns\": [\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#attributes\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"#\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.zeek\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"comment.line.number-sign.zeek\"\n    },\n    {\n      \"include\": \"#builtin-functions\"\n    },\n    {\n      \"include\": \"#statements\"\n    },\n    {\n      \"include\": \"#preprocessor\"\n    },\n    {\n      \"include\": \"#declarations\"\n    },\n    {\n      \"include\": \"#attributes\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#types\"\n    },\n    {\n      \"include\": \"#operator\"\n    }\n  ],\n  \"repository\": {\n    \"attributes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\&\\\\b(redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|error_handler|type_column|deprecated)\\\\b\",\n          \"name\": \"storage.modifier.attribute.zeek\"\n        }\n      ]\n    },\n    \"preprocessor\": {\n      \"patterns\": [\n        {\n          \"match\": \"(@(load-plugin|load-sigs|load|unload)).*$\",\n          \"name\": \"meta.preprocessor.zeek\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.zeek\"\n            }\n          }\n        },\n        {\n          \"match\": \"(@(DEBUG|DIR|FILENAME|deprecated|ifdef|ifndef|if|else|endif))\",\n          \"name\": \"meta.preprocessor.zeek\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.zeek\"\n            }\n          }\n        },\n        {\n          \"match\": \"(@prefixes)\\\\s*(\\\\+?=).*$\",\n          \"name\": \"meta.preprocessor.zeek\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.zeek\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.zeek\"\n            }\n          }\n        }\n      ]\n    },\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.zeek\"\n            }\n          },\n          \"match\": \"(?<!\\\\$)\\\\b(active_file|addr_to_counts|addr_to_ptr_name|all_set|anonymize_addr|any_set|bro_is_terminating|bro_version|bytestring_to_count|bytestring_to_double|bytestring_to_hexstr|calc_next_rotate|capture_events|capture_state_updates|cat|cat_sep|checkpoint_state|clear_table|close|complete_handshake|connect|connection_exists|continue_processing|convert_for_pattern|count_to_port|count_to_v4_addr|counts_to_v4_addr|counts_to_addr|current_analyzer|current_time|decode_base64|decode_base64_custom|disable_analyzer|disable_print_hook|disconnect|do_profiling|double_to_count|double_to_interval|double_to_time|dump_current_packet|dump_packet|dump_rule_stats|enable_communication|enable_raw_output|encode_base64|encode_base64_custom|entropy_test_add|entropy_test_finish|entropy_test_init|enum_to_int|exit|exp|file_magic|file_mode|file_size|find_entropy|floor|flush_all|fmt|get_conn_transport_proto|get_current_packet|get_event_peer|get_file_name|get_local_event_peer|get_matcher_stats|get_port_transport_proto|getenv|gethostname|getpid|global_ids|global_sizes|hexstr_to_bytestring|identify_data|install_dst_addr_filter|install_dst_net_filter|install_pcap_filter|install_src_addr_filter|install_src_net_filter|int_to_count|interval_to_double|interval_to_int|is_external_connection|is_icmp_port|is_local_interface|is_remote_event|is_tcp_port|is_udp_port|is_v4_addr|is_v6_addr|listen|ln|log10|lookup_ID|lookup_addr|lookup_asn|lookup_connection|lookup_hostname|lookup_hostname_txt|lookup_location|mask_addr|match_signatures|md5_hash|md5_hash_finish|md5_hash_init|md5_hash_update|md5_hmac|merge_pattern|mkdir|net_stats|network_time|open|open_for_append|order|pcap_error|piped_exec|port_to_count|precompile_pcap_filter|preserve_prefix|preserve_subnet|ptr_name_to_addr|rand|raw_bytes_to_v4_addr|reading_live_traffic|record_fields|record_type_to_vector|remask_addr|request_remote_events|request_remote_logs|request_remote_sync|rescan_state|resize|resource_usage|resume_state_updates|rotate_file|rotate_file_by_name|routing0_data_to_addrs|same_object|send_capture_filter|send_current_packet|send_id|send_ping|send_state|set_accept_state|set_buf|set_compression_level|set_inactivity_timeout|set_record_packets|setenv|sha1_hash|sha1_hash_finish|sha1_hash_init|sha1_hash_update|sha256_hash|sha256_hash_finish|sha256_hash_init|sha256_hash_update|skip_further_processing|sort|sqrt|srand|strftime|string_to_pattern|strptime|suspend_processing|suspend_state_updates|syslog|system|system_env|terminate|terminate_communication|time_to_double|to_addr|to_count|to_double|to_int|to_port|to_subnet|type_name|uninstall_dst_addr_filter|uninstall_dst_net_filter|uninstall_src_addr_filter|uninstall_src_net_filter|unique_id|unique_id_from|uuid_to_string|val_size|write_file)\\\\s*(?=\\\\()\",\n          \"name\": \"meta.function-call.zeek.bif.zeek\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.zeek\"\n            }\n          },\n          \"match\": \"(?<!\\\\$)\\\\b(cat_string_array|cat_string_array_n|clean|edit|escape_string|find_all|find_last|gsub|hexdump|is_ascii|join_string_array|join_string_vec|levenshtein_distance|reverse|sort_string_array|split|split1|split_all|split_n|str_shell_escape|str_smith_waterman|str_split|strcmp|string_cat|string_fill|string_to_ascii_hex|strip|strstr|sub|sub_bytes|subst_string|to_lower|to_string_literal|to_upper)(?=\\\\()\",\n          \"name\": \"meta.function-call.strings.bif.zeek\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.zeek\"\n            }\n          },\n          \"match\": \"(?<!\\\\$)\\\\b(Reporter::(?:error|fatal|info|warning))(?=\\\\()\",\n          \"name\": \"meta.function-call.reporter.bif.zeek\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.zeek\"\n            }\n          },\n          \"match\": \"(?<!\\\\$)\\\\b(OS_version_found|ack_above_hole|bro_done|bro_init|bro_script_loaded|conn_stats|conn_weird|connection_external|connection_flow_label_changed|connection_reused|connection_state_remove|connection_status_update|connection_timeout|content_gap|dns_mapping_altered|dns_mapping_lost_name|dns_mapping_new_name|dns_mapping_unverified|dns_mapping_valid|esp_packet|event_queue__flush_point|file_gap|file_new|file_opened|file_over_new_connection|file_state_remove|file_timeout|finished_send_state|flow_weird|gap_report|get_file_handle|ipv6_ext_headers|load_sample|mobile_ipv6_message|net_weird|new_connection|new_event|new_packet|packet_contents|profiling_update|protocol_confirmation|protocol_violation|remote_capture_filter|remote_connection_closed|remote_connection_error|remote_connection_established|remote_connection_handshake_done|remote_event_registered|remote_log|remote_log_peer|remote_pong|remote_state_access_performed|remote_state_inconsistency|reporter_error|reporter_info|reporter_warning|rexmit_inconsistency|scheduled_analyzer_applied|signature_match|software_parse_error|software_unparsed_version_found|software_version_found|tunnel_changed|udp_session_done)\\\\s*(?=\\\\()\",\n          \"name\": \"meta.event-call.event.bif.zeek\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.deprecated.zeek\"\n            }\n          },\n          \"match\": \"(?<!\\\\$)\\\\b(anonymization_mapping|gaobot_signature_found|kazaa_signature_found|napster_signature_found|print_hook|root_backdoor_signature_found|rotate_interval|rotate_size)(?=\\\\()\",\n          \"name\": \"meta.event-call.deprecated.zeek\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])/(3[0-2]|[1-2]?[0-9])\\\\b\",\n          \"name\": \"constant.other.subnet.zeek\"\n        },\n        {\n          \"match\": \"\\\\[\\\\b(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\\\]/(12[0-8]|1[0-1][0-9]|[1-2]?[0-9]|[0-9][0-9])\\\\b\",\n          \"name\": \"constant.other.subnet6.zeek\"\n        },\n        {\n          \"match\": \"(?<!::)\\\\b((25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\\\\b(?!/)\",\n          \"name\": \"constant.other.ip.zeek\"\n        },\n        {\n          \"match\": \"\\\\[\\\\b(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\\\b\\\\](?!/)\",\n          \"name\": \"constant.other.ip6.zeek\"\n        },\n        {\n          \"match\": \"\\\\b((6[0-5]{2}[0-3][0-5]|[1-5]?[0-9]{1,4})/(tcp|udp|icmp))\\\\b\",\n          \"name\": \"constant.other.port.zeek\"\n        },\n        {\n          \"match\": \"\\\\b((\\\\s*-?)([0-9]+)\\\\s?((sec|min|hr|day)s?))\\\\b\",\n          \"name\": \"constant.other.interval.zeek\"\n        },\n        {\n          \"match\": \"(?<![0-9])(\\\\s*-?)\\\\.\\\\b([0-9]*)\\\\b(?!\\\\.)|(?<!\\\\.)(\\\\s*-?)\\\\b([0-9]+\\\\.[0-9]+)\\\\b(?!\\\\.)\",\n          \"name\": \"constant.numeric.double.zeek\"\n        },\n        {\n          \"match\": \"\\\\b(0(x|X)[0-9a-fA-F]+)\\\\b\",\n          \"name\": \"constant.numeric.integer.hexadecimal.zeek\"\n        },\n        {\n          \"match\": \"(?<!\\\\.|:)(\\\\s*-?)\\\\b([0-9]+)\\\\b(?!\\\\.|:|/|\\\\s((sec|min|day)s?))\",\n          \"name\": \"constant.numeric.integer.decimal.zeek\"\n        },\n        {\n          \"match\": \"\\\\b(T|F)\\\\b\",\n          \"name\": \"constant.language.boolean.zeek\"\n        }\n      ]\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"2\": {\n              \"name\": \"storage.modifier.namespace.zeek\"\n            }\n          },\n          \"match\": \"^\\\\s*(module)\\\\s+([a-zA-Z_][0-9a-zA-Z_-]*)\",\n          \"name\": \"keyword.control.import.zeek\"\n        },\n        {\n          \"match\": \"\\\\b(export)\\\\b\",\n          \"name\": \"keyword.control.export.zeek\"\n        },\n        {\n          \"match\": \"\\\\b(type|const|global|local|redef|function|event|hook)\\\\b\",\n          \"name\": \"storage.modifier.declaration.zeek\"\n        }\n      ]\n    },\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(\\\\@(?:load|load-sigs|unload))\\\\s+(.*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.zeek\"\n            },\n            \"2\": {\n              \"name\": \"meta.definition.zeek\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"meta.preprocessor.zeek\"\n        },\n        {\n          \"begin\": \"^\\\\s*(\\\\@prefixes)\\\\s+(=|\\\\+=)\\\\s+([a-zA-Z_][0-9a-zA-Z_-]+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.def.zeek\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.zeek\"\n            },\n            \"3\": {\n              \"name\": \"text.plain.zeek\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"meta.preprocessor.zeek\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.directive.zeek\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.zeek\"\n            }\n          },\n          \"match\": \"^\\\\s*(\\\\@)(if|ifdef|ifndef|else|endif)\\\\b\",\n          \"name\": \"meta.preprocessor.zeek\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.other.placeholder.zeek\"\n            }\n          },\n          \"match\": \"(\\\\@DEBUG|\\\\@DIR|\\\\@FILENAME)\",\n          \"name\": \"meta.preprocessor.zeek\"\n        }\n      ]\n    },\n    \"generic_names\": {\n      \"match\": \"[A-Za-z_][A-Za-z0-9_]*\"\n    },\n    \"illegal_names\": {\n      \"patterns\": [\n        {\n          \"match\": \"(bool|int|count|double|time|interval|string|pattern|enum|port|addr|subnet|any|table|set|vector|record|opaque|file|function|event|hook)\",\n          \"name\": \"invalid.illegal.name.type.zeek\"\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(of)\\\\b\",\n          \"name\": \"keyword.operator.zeek\"\n        },\n        {\n          \"match\": \"(\\\\!|&&|\\\\|\\\\||\\\\b(in)\\\\b)\",\n          \"name\": \"keyword.operator.logical.zeek\"\n        },\n        {\n          \"match\": \"(<|<\\\\=|>\\\\=|>|\\\\=\\\\=|\\\\!\\\\=)\",\n          \"name\": \"keyword.operator.comparison.zeek\"\n        },\n        {\n          \"match\": \"(\\\\+\\\\=|-\\\\=|\\\\*\\\\=|/\\\\=)\",\n          \"name\": \"keyword.operator.assignment.augmented.zeek\"\n        },\n        {\n          \"match\": \"(\\\\+\\\\+|\\\\-\\\\-)\",\n          \"name\": \"keyword.operator.increment-decrement.zeek\"\n        },\n        {\n          \"match\": \"(\\\\+|\\\\-|\\\\*|/|%)(?!\\\\+|\\\\-)\",\n          \"name\": \"keyword.operator.arithmetic.zeek\"\n        },\n        {\n          \"match\": \"(\\\\=)\",\n          \"name\": \"keyword.operator.assignment.zeek\"\n        },\n        {\n          \"match\": \"(?<!\\\\|)(\\\\|)(?!\\\\|)\",\n          \"name\": \"keyword.operator.length.zeek\"\n        }\n      ]\n    },\n    \"statements\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(add|delete|print|for|next|break|if|else|switch|case|default|break|fallthrough|when|schedule|return)\\\\b\",\n          \"name\": \"keyword.control.flow.zeek\"\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(\\\\\\\\|[abefnprtv'\\\"?]|[0-3]\\\\d{0,2}|[4-7]\\\\d?|x[a-fA-F0-9]{0,2})\",\n          \"name\": \"constant.character.escape.zeek\"\n        },\n        {\n          \"match\": \"\\\\\\\\(\\\\\\\\|[/\\\\^\\\\$\\\\{\\\\}\\\\[\\\\]\\\\(\\\\)\\\\.\\\\*\\\\+\\\\?\\\\|\\\\-])\",\n          \"name\": \"constant.character.escape.zeek\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unknown-escape.zeek\"\n        }\n      ]\n    },\n    \"string_placeholder\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)%\\n\\t\\t\\t\\t\\t\\t(\\\\d+\\\\$)?                             # field (argument #)\\n\\t\\t\\t\\t\\t\\t[#0\\\\- +']*                           # flags\\n\\t\\t\\t\\t\\t\\t[,;:_]?                              # separator character (AltiVec)\\n\\t\\t\\t\\t\\t\\t((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?              # minimum field width\\n\\t\\t\\t\\t\\t\\t(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?         # precision\\n\\t\\t\\t\\t\\t\\t(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n\\t\\t\\t\\t\\t\\t[diouxXDOUeEfFgGaACcSspn%]           # conversion type\\n\",\n          \"name\": \"constant.other.placeholder.zeek\"\n        },\n        {\n          \"match\": \"%\",\n          \"name\": \"invalid.illegal.placeholder.zeek\"\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b\\\\d{1,5}/(udp|tcp|icmp|unknown)\\\\b\",\n          \"name\": \"constant.numeric.port.zeek\"\n        },\n        {\n          \"match\": \"\\\\b(bool|count|int|double|time|interval|string|pattern|port|addr|subnet|time|enum|record|function|event|hook|file|opaque|any)\\\\b\",\n          \"name\": \"storage.type.zeek\"\n        },\n        {\n          \"match\": \"\\\\b(addr_set|addr_vec|any_vec|count_set|id_table|index_vec|record_field_table|string_array|string_set|string_vec|sw_substring_vec|table_string_of_string)\\\\b\",\n          \"name\": \"invalid.deprecated.type.zeek\"\n        },\n        {\n          \"match\": \"\\\\bset\\\\s*\\\\[\\\\s*[a-zA-Z_][0-9a-zA-Z_-]+\\\\s*\\\\]\",\n          \"name\": \"storage.type.zeek\"\n        },\n        {\n          \"match\": \"\\\\b(table|set)\\\\s*\\\\[\\\\s*[a-zA-Z_][0-9a-zA-Z_-]+\\\\s*\\\\]\\\\s+of\\\\s+\",\n          \"name\": \"storage.type.zeek\"\n        },\n        {\n          \"match\": \"\\\\bvector\\\\s+of\\\\s+[a-zA-Z_][0-9a-zA-Z_-]+\\\\s*\",\n          \"name\": \"storage.type.zeek\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.zeek\"\n}\n"
  },
  {
    "path": "src/renderer/components/editor/header/Header.vue",
    "content": "<script setup lang=\"ts\">\nimport { useApp, useSnippets, useSnippetUpdate } from '@/composables'\nimport { i18n } from '@/electron'\nimport { router, RouterName } from '@/router'\n\nimport {\n  Code,\n  Eye,\n  Image,\n  Network,\n  PanelLeftClose,\n  PanelLeftOpen,\n  Plus,\n  Presentation,\n  Type,\n} from 'lucide-vue-next'\n\nconst {\n  selectedSnippet,\n  selectedSnippetContent,\n  addFragment,\n  isAvailableToCodePreview,\n} = useSnippets()\nconst {\n  isFocusedSnippetName,\n  state,\n  isShowMarkdown,\n  isShowMindmap,\n  isShowMarkdownPresentation,\n  isShowCodePreview,\n  isShowCodeImage,\n  isShowJsonVisualizer,\n  isSidebarHidden,\n} = useApp()\nconst { addToUpdateQueue } = useSnippetUpdate()\n\nconst isShowDescription = ref(false)\n\nconst name = computed({\n  get() {\n    return selectedSnippet?.value?.name\n  },\n  set(v: string) {\n    addToUpdateQueue(selectedSnippet.value!.id, {\n      name: v,\n      description: selectedSnippet.value!.description,\n      folderId: selectedSnippet.value!.folder?.id || null,\n      isDeleted: selectedSnippet.value!.isDeleted,\n      isFavorites: selectedSnippet.value!.isFavorites,\n    })\n  },\n})\n\nconst isShowMarkdownAction = computed(\n  () => selectedSnippetContent.value?.language === 'markdown',\n)\n\nconst isShowJsonVisualizerAction = computed(\n  () => selectedSnippetContent.value?.language === 'json',\n)\n\nconst isShowTags = computed(() => {\n  return (\n    !isShowMindmap.value\n    && !isShowMarkdown.value\n    && !isShowCodeImage.value\n    && !isShowJsonVisualizer.value\n  )\n})\n\nfunction onClickTab(index: number) {\n  state.snippetContentIndex = index\n}\n\nfunction onMarkdownToggle() {\n  isShowMarkdown.value = !isShowMarkdown.value\n  isShowMindmap.value = false\n  isShowMarkdownPresentation.value = false\n  isShowCodePreview.value = false\n  isShowCodeImage.value = false\n  isShowJsonVisualizer.value = false\n}\n\nfunction onMarkdownPresentationToggle() {\n  isShowMarkdownPresentation.value = !isShowMarkdownPresentation.value\n  isShowMarkdown.value = false\n  isShowMindmap.value = false\n  isShowCodePreview.value = false\n  isShowCodeImage.value = false\n  isShowJsonVisualizer.value = false\n\n  router.push({ name: RouterName.markdownPresentation })\n}\n\nfunction onMindmapToggle() {\n  isShowMindmap.value = !isShowMindmap.value\n  isShowMarkdown.value = false\n  isShowMarkdownPresentation.value = false\n  isShowCodePreview.value = false\n  isShowCodeImage.value = false\n  isShowJsonVisualizer.value = false\n}\n\nfunction onCodePreviewToggle() {\n  isShowCodePreview.value = !isShowCodePreview.value\n  isShowMarkdown.value = false\n  isShowMarkdownPresentation.value = false\n  isShowMindmap.value = false\n  isShowCodeImage.value = false\n  isShowJsonVisualizer.value = false\n}\n\nfunction onCodeImageToggle() {\n  isShowCodeImage.value = !isShowCodeImage.value\n  isShowMarkdown.value = false\n  isShowMarkdownPresentation.value = false\n  isShowMindmap.value = false\n  isShowCodePreview.value = false\n  isShowJsonVisualizer.value = false\n}\n\nfunction onJsonVisualizerToggle() {\n  isShowJsonVisualizer.value = !isShowJsonVisualizer.value\n  isShowMarkdown.value = false\n  isShowMarkdownPresentation.value = false\n  isShowMindmap.value = false\n  isShowCodePreview.value = false\n  isShowCodeImage.value = false\n}\n</script>\n\n<template>\n  <div data-editor-header>\n    <div\n      class=\"border-border grid grid-cols-[1fr_auto] items-center border-b px-2 pb-1\"\n    >\n      <UiInput\n        v-model=\"name\"\n        variant=\"ghost\"\n        class=\"w-full truncate px-0\"\n        :select=\"isFocusedSnippetName\"\n        @blur=\"isFocusedSnippetName = false\"\n      />\n      <div class=\"ml-2 flex\">\n        <UiActionButton\n          class=\"mr-1\"\n          :tooltip=\"\n            isSidebarHidden\n              ? i18n.t('action.showSidebar')\n              : i18n.t('action.hideSidebar')\n          \"\n          @click=\"isSidebarHidden = !isSidebarHidden\"\n        >\n          <PanelLeftOpen\n            v-if=\"isSidebarHidden\"\n            class=\"h-3 w-3\"\n          />\n          <PanelLeftClose\n            v-else\n            class=\"h-3 w-3\"\n          />\n        </UiActionButton>\n        <UiActionButton\n          :tooltip=\"i18n.t('menu:editor.previewScreenshot')\"\n          :active=\"isShowCodeImage\"\n          @click=\"onCodeImageToggle\"\n        >\n          <Image class=\"h-3 w-3\" />\n        </UiActionButton>\n        <UiActionButton\n          v-if=\"isAvailableToCodePreview\"\n          :tooltip=\"\n            isShowCodePreview\n              ? `${i18n.t('action.hide')} ${i18n.t('menu:editor.previewCode')}`\n              : i18n.t('menu:editor.previewCode')\n          \"\n          :active=\"isShowCodePreview\"\n          @click=\"onCodePreviewToggle\"\n        >\n          <Code class=\"h-3 w-3\" />\n        </UiActionButton>\n        <UiActionButton\n          v-if=\"isShowMarkdownAction\"\n          :tooltip=\"\n            isShowMarkdownPresentation\n              ? i18n.t('action.hide')\n              : i18n.t('menu:markdown.presentationMode')\n          \"\n          :active=\"isShowMarkdownPresentation\"\n          @click=\"onMarkdownPresentationToggle\"\n        >\n          <Presentation class=\"h-3 w-3\" />\n        </UiActionButton>\n        <UiActionButton\n          v-if=\"isShowJsonVisualizerAction\"\n          :tooltip=\"i18n.t('menu:editor.previewJson')\"\n          :active=\"isShowJsonVisualizer\"\n          @click=\"onJsonVisualizerToggle\"\n        >\n          <Network class=\"h-3 w-3 -rotate-90\" />\n        </UiActionButton>\n        <UiActionButton\n          v-if=\"isShowMarkdownAction\"\n          :tooltip=\"\n            isShowMarkdown\n              ? `${i18n.t('action.hide')} ${i18n.t('menu:markdown.previewMarkdown')}`\n              : i18n.t('menu:markdown.previewMarkdown')\n          \"\n          :active=\"isShowMarkdown\"\n          @click=\"onMarkdownToggle\"\n        >\n          <Eye class=\"h-3 w-3\" />\n        </UiActionButton>\n        <UiActionButton\n          v-if=\"isShowMarkdownAction\"\n          :tooltip=\"\n            isShowMindmap\n              ? `${i18n.t('action.hide')} ${i18n.t('menu:markdown.previewMindmap')}`\n              : i18n.t('menu:markdown.previewMindmap')\n          \"\n          :active=\"isShowMindmap\"\n          @click=\"onMindmapToggle\"\n        >\n          <Network class=\"h-3 w-3 -rotate-90\" />\n        </UiActionButton>\n        <UiActionButton\n          :tooltip=\"i18n.t('action.add.description')\"\n          @click=\"isShowDescription = !isShowDescription\"\n        >\n          <Type class=\"h-3 w-3\" />\n        </UiActionButton>\n        <UiActionButton\n          :tooltip=\"i18n.t('action.new.fragment')\"\n          @click=\"addFragment\"\n        >\n          <Plus class=\"h-4 w-4\" />\n        </UiActionButton>\n      </div>\n    </div>\n    <div\n      v-if=\"selectedSnippet?.contents && selectedSnippet.contents.length > 1\"\n      class=\"border-border grid auto-cols-fr grid-flow-col border-b\"\n    >\n      <EditorTab\n        v-for=\"(i, index) in selectedSnippet?.contents\"\n        :id=\"i.id\"\n        :key=\"i.id\"\n        :index=\"index\"\n        :name=\"i.label\"\n        :class=\"{\n          'bg-accent text-accent-foreground':\n            state.snippetContentIndex === index,\n        }\"\n        @click=\"onClickTab(index)\"\n      />\n    </div>\n    <EditorDescription v-model:show=\"isShowDescription\" />\n    <div\n      v-if=\"isShowTags\"\n      class=\"pt-1\"\n    >\n      <EditorHeaderTags />\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/header/Tags.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TagItem } from '@/components/ui/input-tags/types'\nimport { useSnippets, useTags } from '@/composables'\n\nconst { selectedSnippet, deleteTagFromSnippet, addTagToSnippet }\n  = useSnippets()\nconst { tags, addTag, getTags } = useTags()\n\ngetTags()\n\nconst snippetTags = computed(() => selectedSnippet.value?.tags || [])\n\nasync function onCreateTag(newTag: TagItem) {\n  try {\n    const id = await addTag(newTag.name)\n\n    if (id && selectedSnippet.value) {\n      await addTagToSnippet(id, selectedSnippet.value.id)\n    }\n\n    await getTags()\n  }\n  catch (error) {\n    console.error('Error creating tag:', error)\n  }\n}\n\nfunction onDeleteTag(deletedTag: TagItem) {\n  if (selectedSnippet.value) {\n    deleteTagFromSnippet(deletedTag.id, selectedSnippet.value.id)\n  }\n}\nfunction onAddTag(tag: TagItem) {\n  if (selectedSnippet.value) {\n    addTagToSnippet(tag.id, selectedSnippet.value.id)\n  }\n}\n</script>\n\n<template>\n  <UiInputTags\n    :model-value=\"snippetTags\"\n    :suggestions=\"tags\"\n    class=\"w-full\"\n    @create-tag=\"onCreateTag\"\n    @delete-tag=\"onDeleteTag\"\n    @add-tag=\"onAddTag\"\n  />\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/header/Tool.vue",
    "content": "<script setup lang=\"ts\"></script>\n\n<template>\n  <div\n    class=\"border-border flex h-[var(--editor-tool-header-height)] items-center border-b\"\n  >\n    <slot />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/json-visualizer/DialogInfo.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Node } from '@vue-flow/core'\nimport type { NodeData } from './types'\nimport { useClipboard, useDark, useDebounceFn } from '@vueuse/core'\nimport CodeMirror from 'codemirror'\nimport { Copy } from 'lucide-vue-next'\nimport { onMounted, watch } from 'vue'\nimport 'codemirror/lib/codemirror.css'\nimport 'codemirror/theme/neo.css'\nimport 'codemirror/theme/oceanic-next.css'\n\ninterface Props {\n  node: Node<NodeData>\n}\n\nconst props = defineProps<Props>()\n\nconst { copy } = useClipboard()\nconst isDark = useDark()\n\nlet editor: CodeMirror.Editor | null = null\nconst editorRef = useTemplateRef('editorRef')\n\nconst scrollBarOpacity = ref('1')\nconst theme = computed(() => (isDark.value ? 'oceanic-next' : 'neo'))\n\nconst hideScrollbar = useDebounceFn(() => {\n  scrollBarOpacity.value = '0'\n}, 1000)\n\nfunction toJsonString(value: any) {\n  return JSON.stringify(value, null, 2) || '{}'\n}\n\nfunction init() {\n  if (!editorRef.value) {\n    return\n  }\n\n  editor = CodeMirror(editorRef.value, {\n    value: toJsonString(props.node.data?.value),\n    mode: 'json',\n    lineNumbers: true,\n    theme: theme.value,\n    readOnly: true,\n    lineWrapping: true,\n    scrollbarStyle: 'null',\n  })\n\n  editor.on('scroll', () => {\n    scrollBarOpacity.value = '1'\n    editor?.setOption('scrollbarStyle', 'overlay')\n  })\n\n  editor.on('scroll', hideScrollbar)\n\n  watch(\n    () => props.node,\n    (newNode) => {\n      if (editor && newNode.data?.value !== undefined) {\n        const jsonString = toJsonString(newNode.data.value)\n        editor.setValue(jsonString)\n      }\n    },\n    { deep: true },\n  )\n\n  watch(isDark, (v) => {\n    if (v) {\n      editor?.setOption('theme', 'oceanic-next')\n    }\n    else {\n      editor?.setOption('theme', 'neo')\n    }\n  })\n}\n\nfunction onCopy() {\n  copy(editor?.getValue() || '')\n  editorRef.value?.dispatchEvent(\n    new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }),\n  )\n}\n\nonMounted(() => {\n  init()\n})\n</script>\n\n<template>\n  <div class=\"relative\">\n    <UiActionButton\n      class=\"absolute top-1 right-1 z-10\"\n      @click=\"onCopy\"\n    >\n      <Copy class=\"h-3 w-3\" />\n    </UiActionButton>\n    <div\n      ref=\"editorRef\"\n      data-dialog-info\n      class=\"h-[200px] overflow-auto rounded-md\"\n    />\n  </div>\n</template>\n\n<style>\nhtml.light [data-dialog-info] {\n  --dialog-info-bg: oklch(98% 0 0);\n}\n\nhtml.dark [data-dialog-info] {\n  --dialog-info-bg: oklch(22% 0 0);\n}\n\n[data-dialog-info] .CodeMirror {\n  background: var(--dialog-info-bg) !important;\n}\n\n[data-dialog-info] .CodeMirror-gutters {\n  background: var(--dialog-info-bg) !important;\n}\n</style>\n"
  },
  {
    "path": "src/renderer/components/editor/json-visualizer/JsonVisualizer.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Edge, Node } from '@vue-flow/core'\nimport type { NodeData } from './types'\nimport { useDialog, useSnippets } from '@/composables'\nimport { i18n } from '@/electron'\nimport { Background } from '@vue-flow/background'\nimport { useVueFlow, VueFlow } from '@vue-flow/core'\nimport { useDark } from '@vueuse/core'\nimport domToImage from 'dom-to-image'\nimport {\n  FileDown,\n  Lock,\n  LockOpen,\n  Maximize,\n  Minus,\n  Plus,\n} from 'lucide-vue-next'\nimport { useLayout } from './composables/useLayout'\nimport DialogInfo from './DialogInfo.vue'\nimport ArrayNode from './nodes/ArrayNode.vue'\nimport ObjectNode from './nodes/ObjectNode.vue'\nimport { parseJsonToGraph } from './utils'\nimport '@vue-flow/core/dist/style.css'\nimport '@vue-flow/core/dist/theme-default.css'\n\nconst { selectedSnippetContent, selectedSnippet } = useSnippets()\nconst isDark = useDark()\nconst {\n  zoomIn,\n  zoomOut,\n  fitView,\n  setInteractive,\n  nodesDraggable,\n  nodesConnectable,\n  elementsSelectable,\n} = useVueFlow()\n\nconst nodes = ref<Node<NodeData>[]>([])\nconst edges = ref<Edge[]>([])\nconst vueFlowRef = useTemplateRef('vueFlowRef')\n\nconst { layout } = useLayout()\n\nfunction updateGraph() {\n  const graph = parseJsonToGraph(\n    JSON.parse(selectedSnippetContent.value?.value || '{}'),\n  )\n  nodes.value = graph.nodes\n  edges.value = graph.edges\n\n  nodes.value = layout(nodes.value, edges.value, 'LR')\n\n  nextTick(() => {\n    fitView()\n  })\n}\n\nfunction onNodesInitialized() {\n  updateGraph()\n}\n\nwatch(\n  selectedSnippetContent,\n  () => {\n    updateGraph()\n  },\n  { immediate: true },\n)\n\nconst backgroundPatternColor = computed(() => (isDark.value ? '#666' : '#aaa'))\n\nconst nodeTypes = {\n  object: ObjectNode,\n  array: ArrayNode,\n}\n\nconst isModalVisible = ref(false)\nconst selectedNodeData = ref<NodeData | null>(null)\nconst selectedNodeId = ref<string | null>(null)\n\nconst isInteractive = toRef(\n  () =>\n    nodesDraggable.value || nodesConnectable.value || elementsSelectable.value,\n)\n\nfunction onNodeClick(event: { node: Node<NodeData> }) {\n  const node = event.node\n\n  const { showDialog } = useDialog()\n\n  showDialog({\n    title: 'Node Content',\n    content: h(DialogInfo, { node }),\n  })\n\n  selectedNodeId.value = node.id\n  selectedNodeData.value = node.data ?? null\n  isModalVisible.value = true\n}\n\nfunction onLockToggle() {\n  setInteractive(!isInteractive.value)\n}\n\nfunction onZoom(type: 'zoomIn' | 'zoomOut' | 'fit') {\n  if (type === 'zoomIn') {\n    zoomIn()\n  }\n  else if (type === 'zoomOut') {\n    zoomOut()\n  }\n  else if (type === 'fit') {\n    fitView()\n  }\n}\n\nasync function onSave(format: 'png' | 'svg') {\n  let data = ''\n\n  const node = vueFlowRef.value!\n\n  if (format === 'png') {\n    data = await domToImage.toPng(vueFlowRef.value!, {\n      width: node.offsetWidth * 2,\n      height: node.offsetHeight * 2,\n      style: {\n        transform: 'scale(2)',\n        transformOrigin: 'top left',\n      },\n    })\n  }\n\n  if (format === 'svg') {\n    data = await domToImage.toSvg(vueFlowRef.value!)\n  }\n\n  const a = document.createElement('a')\n\n  a.href = data\n  a.download = `${selectedSnippet.value?.name}.${format}`\n  a.click()\n}\n\nsetInteractive(false)\n</script>\n\n<template>\n  <div>\n    <EditorHeaderTool>\n      <div class=\"flex w-full items-center justify-between px-2\">\n        <div>\n          <UiActionButton\n            :tooltip=\"i18n.t('button.zoomIn')\"\n            @click=\"onZoom('zoomIn')\"\n          >\n            <Plus class=\"h-3 w-3\" />\n          </UiActionButton>\n          <UiActionButton\n            :tooltip=\"i18n.t('button.zoomOut')\"\n            @click=\"onZoom('zoomOut')\"\n          >\n            <Minus class=\"h-3 w-3\" />\n          </UiActionButton>\n          <UiActionButton\n            :tooltip=\"i18n.t('button.fit')\"\n            @click=\"onZoom('fit')\"\n          >\n            <Maximize class=\"h-3 w-3\" />\n          </UiActionButton>\n          <UiActionButton\n            :tooltip=\"i18n.t('button.lock')\"\n            @click=\"onLockToggle\"\n          >\n            <Lock\n              v-if=\"!isInteractive\"\n              class=\"h-3 w-3\"\n            />\n            <LockOpen\n              v-else\n              class=\"h-3 w-3\"\n            />\n          </UiActionButton>\n        </div>\n        <div>\n          <UiActionButton\n            type=\"iconText\"\n            :tooltip=\"`${i18n.t('button.saveAs')} PNG`\"\n            @click=\"onSave('png')\"\n          >\n            <div class=\"flex items-center gap-1\">\n              PNG <FileDown class=\"h-3 w-3\" />\n            </div>\n          </UiActionButton>\n          <UiActionButton\n            type=\"iconText\"\n            :tooltip=\"`${i18n.t('button.saveAs')} SVG`\"\n            @click=\"onSave('svg')\"\n          >\n            <div class=\"flex items-center gap-1\">\n              SVG <FileDown class=\"h-3 w-3\" />\n            </div>\n          </UiActionButton>\n        </div>\n      </div>\n    </EditorHeaderTool>\n    <div\n      class=\"relative h-[calc(100%-var(--editor-tool-header-height))] overflow-hidden\"\n    >\n      <div\n        ref=\"vueFlowRef\"\n        class=\"bg-background relative h-full\"\n      >\n        <VueFlow\n          v-if=\"nodes.length > 0\"\n          :nodes=\"nodes\"\n          :edges=\"edges\"\n          :node-types=\"nodeTypes as any\"\n          :default-viewport=\"{ zoom: 0.8 }\"\n          :min-zoom=\"0.1\"\n          :max-zoom=\"2\"\n          fit-view-on-init\n          @node-click=\"onNodeClick\"\n          @nodes-initialized=\"onNodesInitialized\"\n        >\n          <Background\n            :pattern-color=\"backgroundPatternColor\"\n            :gap=\"16\"\n          />\n        </VueFlow>\n      </div>\n      <div class=\"absolute bottom-3 left-3 z-10\">\n        <div\n          v-if=\"nodes.length > 0\"\n          class=\"bg-muted rounded px-2 py-0.5 text-sm select-none\"\n        >\n          {{ nodes.length }} nodes | {{ edges.length }} edges\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/json-visualizer/composables/useLayout.ts",
    "content": "import type { Edge, Node } from '@vue-flow/core'\nimport type { LayoutDirection, NodeData } from '../types'\n\nimport dagre from '@dagrejs/dagre'\nimport { Position, useVueFlow } from '@vue-flow/core'\nimport { ref } from 'vue'\n\n/**\n * Composable to run the layout algorithm on the graph.\n * It uses the `dagre` library to calculate the layout of the nodes and edges.\n */\nexport function useLayout() {\n  const { findNode } = useVueFlow()\n\n  const graph = ref(new dagre.graphlib.Graph())\n\n  const previousDirection = ref<LayoutDirection>('LR')\n\n  function layout(\n    nodes: Node<NodeData>[],\n    edges: Edge[],\n    direction: LayoutDirection,\n  ): Node<NodeData>[] {\n    // we create a new graph instance, in case some nodes/edges were removed, otherwise dagre would act as if they were still there\n    const dagreGraph = new dagre.graphlib.Graph()\n\n    graph.value = dagreGraph\n\n    dagreGraph.setDefaultEdgeLabel(() => ({}))\n\n    const isHorizontal = direction === 'LR'\n    dagreGraph.setGraph({ rankdir: direction })\n\n    previousDirection.value = direction\n\n    for (const node of nodes) {\n      // if you need width+height of nodes for your layout, you can use the dimensions property of the internal node (`GraphNode` type)\n      const graphNode = findNode(node.id)\n\n      dagreGraph.setNode(node.id, {\n        width: graphNode?.dimensions.width || 150,\n        height: graphNode?.dimensions.height || 50,\n      })\n    }\n\n    for (const edge of edges) {\n      dagreGraph.setEdge(edge.source, edge.target)\n    }\n\n    dagre.layout(dagreGraph)\n\n    // set nodes with updated positions\n    return nodes.map((node) => {\n      const nodeWithPosition = dagreGraph.node(node.id)\n\n      return {\n        ...node,\n        targetPosition: isHorizontal ? Position.Left : Position.Top,\n        sourcePosition: isHorizontal ? Position.Right : Position.Bottom,\n        position: { x: nodeWithPosition.x, y: nodeWithPosition.y },\n      }\n    })\n  }\n\n  return { graph, layout, previousDirection }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/json-visualizer/nodes/ArrayNode.vue",
    "content": "<script setup lang=\"ts\">\nimport type { NodeData } from '../types'\n\nimport { Handle, Position } from '@vue-flow/core'\n\nconst props = defineProps<{\n  data: NodeData\n  id: string\n}>()\n\nfunction getDisplayItems() {\n  const arr = props.data.value || []\n  return arr\n}\n\nfunction formatValue(value: any) {\n  if (value === null)\n    return 'null'\n  if (value === undefined)\n    return 'undefined'\n  if (typeof value === 'object') {\n    if (Array.isArray(value))\n      return `[${value.length} items]`\n    return `{${Object.keys(value).length} keys}`\n  }\n  if (typeof value === 'string')\n    return `\"${value}\"`\n  return String(value)\n}\n</script>\n\n<template>\n  <div\n    class=\"dark:bg-background max-w-[350px] min-w-[200px] cursor-pointer rounded-lg border-2 border-emerald-500 bg-white p-3 shadow-md transition-all duration-200 hover:border-emerald-600 hover:shadow-lg\"\n  >\n    <Handle\n      type=\"target\"\n      :position=\"Position.Left\"\n    />\n\n    <div class=\"flex flex-col gap-2\">\n      <div\n        class=\"border-border flex items-center justify-between border-b pb-2\"\n      >\n        <span class=\"text-foreground text-sm font-semibold\">{{\n          data.label\n        }}</span>\n        <span\n          class=\"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-xs\"\n        >Array [{{ data.length }}]</span>\n      </div>\n      <div class=\"flex flex-col gap-1\">\n        <div\n          v-for=\"(item, index) in getDisplayItems()\"\n          :key=\"index\"\n          class=\"flex gap-1.5 text-xs leading-relaxed\"\n        >\n          <span class=\"font-medium text-emerald-500\">[{{ index }}]:</span>\n          <UiText\n            mono\n            class=\"text-muted-foreground break-words\"\n          >\n            {{ formatValue(item) }}\n          </UiText>\n        </div>\n      </div>\n    </div>\n\n    <Handle\n      type=\"source\"\n      :position=\"Position.Right\"\n    />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/json-visualizer/nodes/ObjectNode.vue",
    "content": "<script setup lang=\"ts\">\nimport type { NodeData } from '../types'\n\nimport { Handle, Position } from '@vue-flow/core'\n\nconst props = defineProps<{\n  data: NodeData\n  id: string\n}>()\n\nfunction getDisplayProperties() {\n  const obj = props.data.value || {}\n  return obj\n}\n\nfunction formatValue(value: any) {\n  if (value === null)\n    return 'null'\n  if (value === undefined)\n    return 'undefined'\n  if (typeof value === 'object') {\n    if (Array.isArray(value))\n      return `[${value.length} items]`\n    return `{${Object.keys(value).length} keys}`\n  }\n  if (typeof value === 'string')\n    return `\"${value}\"`\n  return String(value)\n}\n</script>\n\n<template>\n  <div\n    class=\"dark:bg-background max-w-[350px] min-w-[200px] cursor-pointer rounded-lg border-2 border-blue-500 bg-white p-3 shadow-md transition-all duration-200 hover:border-blue-600 hover:shadow-lg\"\n  >\n    <Handle\n      type=\"target\"\n      :position=\"Position.Left\"\n    />\n\n    <div class=\"flex flex-col gap-2\">\n      <div\n        class=\"border-border flex items-center justify-between border-b pb-2\"\n      >\n        <span class=\"text-foreground text-sm font-semibold\">{{\n          data.label\n        }}</span>\n        <span\n          class=\"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-xs\"\n        >Object</span>\n      </div>\n      <div class=\"flex flex-col gap-1\">\n        <div\n          v-for=\"(value, key) in getDisplayProperties()\"\n          :key=\"key\"\n          class=\"flex gap-1.5 text-xs leading-relaxed\"\n        >\n          <span class=\"font-medium text-blue-500\">{{ key }}:</span>\n          <UiText\n            mono\n            class=\"text-muted-foreground break-words\"\n          >\n            {{ formatValue(value) }}\n          </UiText>\n        </div>\n      </div>\n    </div>\n\n    <Handle\n      type=\"source\"\n      :position=\"Position.Right\"\n    />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/json-visualizer/types/index.ts",
    "content": "import type { Edge, Node } from '@vue-flow/core'\n\nexport interface NodeData {\n  label: string\n  value: any\n  type: 'object' | 'array' | 'primitive'\n  keysCount?: number\n  length?: number\n}\n\nexport interface GraphData {\n  nodes: Node<NodeData>[]\n  edges: Edge[]\n}\n\nexport type NodeType = 'object' | 'array' | 'primitive'\nexport type ValueType =\n  | 'null'\n  | 'array'\n  | 'object'\n  | 'string'\n  | 'number'\n  | 'boolean'\n  | 'undefined'\nexport type LayoutDirection = 'TB' | 'LR'\n"
  },
  {
    "path": "src/renderer/components/editor/json-visualizer/utils/index.ts",
    "content": "export * from './json-parser'\n"
  },
  {
    "path": "src/renderer/components/editor/json-visualizer/utils/json-parser.ts",
    "content": "import type { Edge, Node } from '@vue-flow/core'\nimport type { GraphData, NodeData, NodeType, ValueType } from '../types'\n\nlet nodeIdCounter = 0\n\nfunction generateNodeId(): string {\n  return `node-${nodeIdCounter++}`\n}\n\nfunction getValueType(value: any): ValueType {\n  if (value === null)\n    return 'null'\n  if (Array.isArray(value))\n    return 'array'\n  if (typeof value === 'object')\n    return 'object'\n  return typeof value as ValueType\n}\n\nfunction createNode(\n  id: string,\n  type: NodeType,\n  data: NodeData,\n  position: { x: number, y: number } = { x: 0, y: 0 },\n): Node<NodeData> {\n  return {\n    id,\n    type,\n    data,\n    position,\n  }\n}\n\nfunction createEdge(sourceId: string, targetId: string): Edge {\n  return {\n    id: `edge-${sourceId}-${targetId}`,\n    source: sourceId,\n    target: targetId,\n    type: 'default',\n    animated: false,\n  }\n}\n\nfunction parseValue(\n  value: any,\n  key: string | null = null,\n  parentId: string | null = null,\n  nodes: Node<NodeData>[] = [],\n  edges: Edge[] = [],\n): string {\n  const nodeId = generateNodeId()\n  const valueType = getValueType(value)\n\n  if (valueType === 'object') {\n    // Создаем узел для объекта\n    const node = createNode(nodeId, 'object', {\n      label: key || 'root',\n      value,\n      type: 'object',\n      keysCount: Object.keys(value).length,\n    })\n    nodes.push(node)\n\n    // Если есть родитель, создаем связь\n    if (parentId !== null) {\n      edges.push(createEdge(parentId, nodeId))\n    }\n\n    // Рекурсивно обрабатываем дочерние элементы\n    Object.entries(value).forEach(([childKey, childValue]) => {\n      const childType = getValueType(childValue)\n      // Создаем узлы только для объектов и массивов\n      if (childType === 'object' || childType === 'array') {\n        parseValue(childValue, childKey, nodeId, nodes, edges)\n      }\n    })\n  }\n  else if (valueType === 'array') {\n    // Создаем узел для массива\n    const node = createNode(nodeId, 'array', {\n      label: key || 'root',\n      value,\n      type: 'array',\n      length: value.length,\n    })\n    nodes.push(node)\n\n    // Если есть родитель, создаем связь\n    if (parentId !== null) {\n      edges.push(createEdge(parentId, nodeId))\n    }\n\n    // Рекурсивно обрабатываем элементы массива\n    value.forEach((item: any, index: number) => {\n      const itemType = getValueType(item)\n      // Создаем узлы только для объектов и массивов\n      if (itemType === 'object' || itemType === 'array') {\n        parseValue(item, `[${index}]`, nodeId, nodes, edges)\n      }\n    })\n  }\n  // Примитивные значения не создают отдельные узлы\n\n  return nodeId\n}\n\nexport function parseJsonToGraph(jsonData: any): GraphData {\n  // Сброс счетчика для новых узлов\n  nodeIdCounter = 0\n\n  const nodes: Node<NodeData>[] = []\n  const edges: Edge[] = []\n\n  // Проверяем, является ли корневой элемент объектом или массивом\n  const valueType = getValueType(jsonData)\n\n  if (valueType === 'object') {\n    // Создаем корневой узел для объекта\n    const rootId = generateNodeId()\n    const rootNode = createNode(rootId, 'object', {\n      label: 'root',\n      value: jsonData,\n      type: 'object',\n      keysCount: Object.keys(jsonData).length,\n    })\n    nodes.push(rootNode)\n\n    // Парсим дочерние элементы\n    Object.entries(jsonData).forEach(([key, value]) => {\n      const childType = getValueType(value)\n      if (childType === 'object' || childType === 'array') {\n        parseValue(value, key, rootId, nodes, edges)\n      }\n    })\n  }\n  else if (valueType === 'array') {\n    // Создаем корневой узел для массива\n    const rootId = generateNodeId()\n    const rootNode = createNode(rootId, 'array', {\n      label: 'root',\n      value: jsonData,\n      type: 'array',\n      length: jsonData.length,\n    })\n    nodes.push(rootNode)\n\n    // Парсим элементы массива\n    jsonData.forEach((item: any, index: number) => {\n      const itemType = getValueType(item)\n      if (itemType === 'object' || itemType === 'array') {\n        parseValue(item, `[${index}]`, rootId, nodes, edges)\n      }\n    })\n  }\n  // Если корень - примитив, то не создаем узлов\n\n  return { nodes, edges }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/markdown/LaserPointer.vue",
    "content": "<script setup lang=\"ts\">\nimport { nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\n\ninterface Props {\n  offsetBottom?: number\n  isActive: boolean\n}\n\ninterface Point {\n  x: number\n  y: number\n  timestamp: number\n}\n\ninterface Stroke {\n  id: string\n  points: Point[]\n  opacity: number\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  offsetBottom: 40,\n})\n\nconst canvasRef = ref<HTMLCanvasElement>()\nconst isDrawing = ref(false)\nconst strokes = ref<Stroke[]>([])\nlet animationId: number | null = null\nlet currentStroke: Stroke | null = null\n\nconst FADE_DURATION = 3000\nconst LINE_WIDTH = 3\nconst LINE_COLOR = '#ff4444'\nconst SMOOTHING_FACTOR = 0.3\n\nfunction resizeCanvas() {\n  if (!canvasRef.value)\n    return\n\n  const canvas = canvasRef.value\n\n  canvas.width = window.innerWidth * window.devicePixelRatio\n  canvas.height\n    = (window.innerHeight - props.offsetBottom) * window.devicePixelRatio\n\n  // Устанавливаем CSS размеры\n  canvas.style.width = `${window.innerWidth}px`\n  canvas.style.height = `${window.innerHeight - props.offsetBottom}px`\n\n  const ctx = canvas.getContext('2d')\n  if (ctx) {\n    ctx.scale(window.devicePixelRatio, window.devicePixelRatio)\n    ctx.lineCap = 'round'\n    ctx.lineJoin = 'round'\n  }\n}\n\nfunction getCanvasPoint(event: MouseEvent): Point {\n  if (!canvasRef.value)\n    return { x: 0, y: 0, timestamp: Date.now() }\n\n  return {\n    x: event.clientX,\n    y: event.clientY,\n    timestamp: Date.now(),\n  }\n}\n\nfunction startDrawing(event: MouseEvent) {\n  if (!props.isActive)\n    return\n\n  isDrawing.value = true\n  const point = getCanvasPoint(event)\n\n  currentStroke = {\n    id: Date.now().toString(),\n    points: [point],\n    opacity: 1,\n  }\n\n  strokes.value.push(currentStroke)\n}\n\nfunction draw(event: MouseEvent) {\n  if (!isDrawing.value || !currentStroke || !props.isActive)\n    return\n\n  const point = getCanvasPoint(event)\n  currentStroke.points.push(point)\n\n  drawCanvas()\n}\n\nfunction stopDrawing() {\n  isDrawing.value = false\n  currentStroke = null\n}\n\nfunction drawCanvas() {\n  if (!canvasRef.value)\n    return\n\n  const canvas = canvasRef.value\n  const ctx = canvas.getContext('2d')\n  if (!ctx)\n    return\n\n  ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n  strokes.value.forEach((stroke) => {\n    if (stroke.points.length < 2)\n      return\n\n    ctx.globalAlpha = stroke.opacity\n    ctx.strokeStyle = LINE_COLOR\n    ctx.lineWidth = LINE_WIDTH\n\n    ctx.beginPath()\n\n    ctx.moveTo(stroke.points[0].x, stroke.points[0].y)\n\n    for (let i = 1; i < stroke.points.length - 1; i++) {\n      const currentPoint = stroke.points[i]\n      const nextPoint = stroke.points[i + 1]\n\n      const controlX\n        = currentPoint.x + (nextPoint.x - currentPoint.x) * SMOOTHING_FACTOR\n      const controlY\n        = currentPoint.y + (nextPoint.y - currentPoint.y) * SMOOTHING_FACTOR\n\n      ctx.quadraticCurveTo(currentPoint.x, currentPoint.y, controlX, controlY)\n    }\n\n    if (stroke.points.length > 1) {\n      const lastPoint = stroke.points[stroke.points.length - 1]\n      ctx.lineTo(lastPoint.x, lastPoint.y)\n    }\n\n    ctx.stroke()\n  })\n\n  ctx.globalAlpha = 1\n}\n\nfunction updateStrokes() {\n  const now = Date.now()\n\n  strokes.value = strokes.value.filter((stroke) => {\n    if (stroke.points.length === 0)\n      return false\n\n    // Вычисляем возраст самой старой точки в штрихе\n    const oldestPoint = Math.min(...stroke.points.map(p => p.timestamp))\n    const age = now - oldestPoint\n\n    if (age > FADE_DURATION) {\n      return false // Удаляем полностью исчезнувшие штрихи\n    }\n\n    // Обновляем прозрачность на основе возраста\n    stroke.opacity = Math.max(0, 1 - age / FADE_DURATION)\n\n    return true\n  })\n\n  drawCanvas()\n\n  // Продолжаем анимацию если есть штрихи\n  if (strokes.value.length > 0) {\n    animationId = requestAnimationFrame(updateStrokes)\n  }\n  else {\n    animationId = null\n  }\n}\n\nfunction startAnimation() {\n  if (animationId === null) {\n    animationId = requestAnimationFrame(updateStrokes)\n  }\n}\n\nfunction clearStrokes() {\n  strokes.value = []\n  if (canvasRef.value) {\n    const ctx = canvasRef.value.getContext('2d')\n    if (ctx) {\n      ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n    }\n  }\n}\n\nfunction onMouseDown(event: MouseEvent) {\n  startDrawing(event)\n  startAnimation()\n}\n\nfunction onMouseMove(event: MouseEvent) {\n  draw(event)\n}\n\nfunction onMouseUp() {\n  stopDrawing()\n}\n\n// Обработчики событий касания для мобильных устройств\nfunction onTouchStart(event: TouchEvent) {\n  event.preventDefault()\n  const touch = event.touches[0]\n  const mouseEvent = new MouseEvent('mousedown', {\n    clientX: touch.clientX,\n    clientY: touch.clientY,\n  })\n  onMouseDown(mouseEvent)\n}\n\nfunction onTouchMove(event: TouchEvent) {\n  event.preventDefault()\n  const touch = event.touches[0]\n  const mouseEvent = new MouseEvent('mousemove', {\n    clientX: touch.clientX,\n    clientY: touch.clientY,\n  })\n  onMouseMove(mouseEvent)\n}\n\nfunction onTouchEnd(event: TouchEvent) {\n  event.preventDefault()\n  onMouseUp()\n}\n\nonMounted(() => {\n  window.addEventListener('resize', resizeCanvas)\n})\n\nonUnmounted(() => {\n  window.removeEventListener('resize', resizeCanvas)\n  if (animationId) {\n    cancelAnimationFrame(animationId)\n  }\n})\n\n// Очищаем штрихи когда указка выключается и принудительно ресайзим при включении\nwatch(\n  () => props.isActive,\n  (newValue) => {\n    if (!newValue) {\n      clearStrokes()\n      isDrawing.value = false\n      currentStroke = null\n    }\n    else {\n      nextTick(() => {\n        resizeCanvas()\n      })\n    }\n  },\n)\n</script>\n\n<template>\n  <canvas\n    v-if=\"isActive\"\n    v-show=\"isActive\"\n    ref=\"canvasRef\"\n    class=\"pointer-events-auto fixed top-0 left-0 z-40 w-screen cursor-crosshair\"\n    :class=\"`h-[calc(100vh-${props.offsetBottom}px)]`\"\n    @mousedown=\"onMouseDown\"\n    @mousemove=\"onMouseMove\"\n    @mouseup=\"onMouseUp\"\n    @mouseleave=\"onMouseUp\"\n    @touchstart=\"onTouchStart\"\n    @touchmove=\"onTouchMove\"\n    @touchend=\"onTouchEnd\"\n  />\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/markdown/Markdown.vue",
    "content": "<script setup lang=\"ts\">\nimport { useSnippets, useTheme } from '@/composables'\nimport { i18n, ipc, store } from '@/electron'\nimport CodeMirror from 'codemirror'\nimport { Minus, Plus } from 'lucide-vue-next'\nimport { marked } from 'marked'\nimport mermaid from 'mermaid'\nimport sanitizeHtml from 'sanitize-html'\nimport { nextTick, ref, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useMarkdown } from './composables'\nimport 'codemirror/addon/runmode/runmode'\nimport 'codemirror/theme/neo.css'\nimport 'codemirror/theme/oceanic-next.css'\n\nconst isDev = import.meta.env.DEV\n\nconst { selectedSnippetContent } = useSnippets()\nconst { isDark, editorThemeName } = useTheme()\nconst { scaleToShow, onZoom } = useMarkdown()\n\nconst route = useRoute()\n\nconst renderedContent = ref('')\nconst codeEditors = ref<CodeMirror.Editor[]>([])\nconst codeBlocksData = ref<{ id: string, value: string, language?: string }[]>(\n  [],\n)\n\nconst markdownRef = useTemplateRef('markdownRef')\n\nconst isShowHeaderTool = route.name !== 'markdown-presentation'\n\nmarked.use({\n  renderer: {\n    code({ text, lang }) {\n      if (lang === 'mermaid') {\n        return `<div class=\"mermaid\">${text}</div>`\n      }\n\n      const id = Math.random().toString(36).substring(2, 15)\n      codeBlocksData.value.push({ id, value: text, language: lang })\n\n      return `<div id=\"${id}\" class=\"code-block\"></div>`\n    },\n    link({ href, text }) {\n      if (href.startsWith('masscode://')) {\n        return `<a href=\"${href}\" class=\"deep-link\">${text}</a>`\n      }\n      else {\n        return `<a href=\"${href}\" class=\"external\">${text}</a>`\n      }\n    },\n  },\n})\n\nasync function renderMarkdown() {\n  if (selectedSnippetContent.value?.value) {\n    const markdownHtml = await marked.parse(selectedSnippetContent.value.value)\n\n    let sanitizedHtml = sanitizeHtml(markdownHtml, {\n      allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img', 'del']),\n      allowedAttributes: {\n        '*': [\n          'align',\n          'alt',\n          'height',\n          'href',\n          'name',\n          'src',\n          'target',\n          'width',\n          'class',\n          'type',\n          'checked',\n          'disabled',\n          'id',\n          'data-*',\n        ],\n      },\n      allowedSchemes: ['http', 'https', 'masscode'],\n    })\n\n    const re = /src=\"\\.\\//g\n    const path = store.preferences.get('storagePath')\n\n    sanitizedHtml = isDev\n      ? sanitizedHtml.replace(re, `src=\"file://${path}/`)\n      : sanitizedHtml.replace(re, `src=\"${path}/`)\n\n    renderedContent.value = sanitizedHtml\n  }\n  else {\n    renderedContent.value = ''\n    codeEditors.value = []\n    codeBlocksData.value = []\n  }\n}\n\nfunction renderCodeBlockEditors() {\n  codeEditors.value = []\n\n  codeBlocksData.value.forEach((blockData) => {\n    const container = document.getElementById(blockData.id)\n\n    if (container) {\n      const editor = CodeMirror(container as HTMLElement, {\n        value: blockData.value,\n        mode: blockData.language,\n        theme: editorThemeName.value,\n        readOnly: true,\n        lineNumbers: false,\n        lineWrapping: true,\n        scrollbarStyle: 'null',\n      })\n      codeEditors.value.push(editor)\n    }\n  })\n}\n\nfunction renderMermaidBlocks() {\n  mermaid.initialize({\n    startOnLoad: true,\n    theme: isDark.value ? 'dark' : 'default',\n  })\n\n  mermaid.run()\n}\n\nfunction onLinkClick(event: MouseEvent) {\n  const target = event.target as HTMLElement\n\n  if (target.tagName === 'A') {\n    const href = target.getAttribute('href')\n\n    if (href && target.classList.contains('external')) {\n      ipc.invoke('system:open-external', href)\n      event.preventDefault()\n    }\n  }\n}\n\nwatch(selectedSnippetContent, async () => renderMarkdown(), {\n  immediate: true,\n})\n\nwatch(scaleToShow, () => renderMarkdown())\n\nwatch(renderedContent, () => {\n  nextTick(() => {\n    renderCodeBlockEditors()\n    renderMermaidBlocks()\n\n    markdownRef.value?.removeEventListener('click', onLinkClick)\n    markdownRef.value?.addEventListener('click', onLinkClick)\n  })\n})\n\nwatch(editorThemeName, (theme) => {\n  codeEditors.value.forEach((editor) => {\n    editor.setOption('theme', theme)\n  })\n})\n\nwatch(isDark, () => {\n  renderMermaidBlocks()\n})\n</script>\n\n<template>\n  <div\n    data-editor-markdown\n    class=\"grid grid-rows-[auto_1fr] overflow-hidden\"\n  >\n    <EditorHeaderTool v-if=\"isShowHeaderTool\">\n      <div class=\"flex w-full justify-end gap-2 px-2\">\n        <UiActionButton\n          :tooltip=\"i18n.t('button.zoomOut')\"\n          @click=\"onZoom('out')\"\n        >\n          <Minus class=\"h-3 w-3\" />\n        </UiActionButton>\n        <div class=\"tabular-nums select-none\">\n          {{ scaleToShow }}\n        </div>\n        <UiActionButton\n          :tooltip=\"i18n.t('button.zoomIn')\"\n          @click=\"onZoom('in')\"\n        >\n          <Plus class=\"h-3 w-3\" />\n        </UiActionButton>\n      </div>\n    </EditorHeaderTool>\n    <div class=\"scrollbar h-full min-h-0 overflow-y-auto\">\n      <div\n        ref=\"markdownRef\"\n        class=\"markdown-content\"\n      >\n        <div v-html=\"renderedContent\" />\n      </div>\n    </div>\n  </div>\n</template>\n\n<style>\n@reference '../../../styles.css';\n\n.markdown-content {\n  @apply text-foreground p-4 font-sans;\n  font-size: calc(1rem * var(--markdown-scale));\n  line-height: 1.5;\n}\n\n.markdown-content h1 {\n  @apply border-border text-foreground my-4 border-b pb-2 font-semibold first-of-type:mt-0;\n  font-size: calc(2.25rem * var(--markdown-scale));\n}\n\n.markdown-content h2 {\n  @apply border-border text-foreground my-5 border-b pb-2 font-semibold first-of-type:mt-0;\n  font-size: calc(1.875rem * var(--markdown-scale));\n}\n\n.markdown-content h3 {\n  @apply text-foreground my-6 font-semibold;\n  font-size: calc(1.5rem * var(--markdown-scale));\n}\n\n.markdown-content h4 {\n  @apply text-foreground my-7 font-semibold;\n  font-size: calc(1.25rem * var(--markdown-scale));\n}\n\n.markdown-content p {\n  @apply mb-4;\n  font-size: calc(1rem * var(--markdown-scale));\n}\n\n.markdown-content a {\n  @apply text-blue-600 no-underline dark:text-blue-400;\n}\n\n.markdown-content a:hover {\n  @apply underline;\n}\n\n.markdown-content strong {\n  @apply font-semibold;\n}\n\n.markdown-content em {\n  @apply italic;\n}\n\n.markdown-content ul,\n.markdown-content ol {\n  @apply mb-4 ml-8;\n  list-style-position: outside;\n}\n\n.markdown-content ul {\n  list-style-type: disc;\n}\n\n.markdown-content ol {\n  list-style-type: decimal;\n}\n\n.markdown-content ul ul,\n.markdown-content ol ol,\n.markdown-content ul ol,\n.markdown-content ol ul {\n  @apply mb-0 ml-6;\n}\n\n.markdown-content li {\n  @apply mb-1;\n}\n\n.markdown-content blockquote {\n  @apply border-border text-muted-foreground mb-4 border-l-4 pl-4;\n}\n\n.markdown-content code {\n  @apply rounded bg-[rgba(27,31,35,0.05)] px-1 py-0.5 dark:bg-[rgba(255,255,255,0.1)];\n  font-size: calc(0.875rem * var(--markdown-scale));\n  font-family:\n    \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n}\n\n.markdown-content pre {\n  @apply bg-muted dark:bg-muted mb-4 overflow-auto rounded p-4 leading-5;\n  font-size: calc(0.875rem * var(--markdown-scale));\n  font-family:\n    \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n}\n\n.markdown-content pre code {\n  @apply m-0 border-0 bg-transparent p-0 text-base;\n}\n\n.markdown-content table {\n  @apply mb-4 block border-collapse overflow-x-auto;\n}\n\n.markdown-content tr {\n  @apply border-border border-t;\n}\n\n.markdown-content td,\n.markdown-content th {\n  @apply border-border border p-2;\n}\n\n.markdown-content th {\n  @apply bg-muted dark:bg-muted font-semibold;\n}\n\n.markdown-content tr:nth-child(2n) {\n  @apply bg-muted dark:bg-muted;\n}\n\n.markdown-content img {\n  @apply box-content max-w-full;\n}\n\n.markdown-content hr {\n  @apply border-border my-6 border-t p-0;\n}\n\n.markdown-content .CodeMirror {\n  @apply !bg-muted overflow-auto rounded-md p-4;\n  font-size: calc(0.875rem * var(--markdown-scale));\n  line-height: calc(0.875rem * var(--markdown-scale) * 1.5);\n}\n\n.markdown-content .code-block > div {\n  @apply overflow-hidden;\n}\n</style>\n"
  },
  {
    "path": "src/renderer/components/editor/markdown/Presentation.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { useApp, useSnippets } from '@/composables'\nimport { i18n } from '@/electron'\nimport { router, RouterName } from '@/router'\nimport { useFullscreen, useMagicKeys } from '@vueuse/core'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  Expand,\n  Minimize,\n  Minus,\n  Plus,\n  X,\n  Zap,\n} from 'lucide-vue-next'\nimport { ref } from 'vue'\nimport { useMarkdown } from './composables'\n\nconst { isShowMarkdownPresentation } = useApp()\nconst { selectSnippet, displayedSnippets, selectedSnippet } = useSnippets()\nconst { scaleToShow, onZoom } = useMarkdown()\n\nconst { isFullscreen, toggle } = useFullscreen()\nconst { left, right, escape, meta, ctrl, l } = useMagicKeys()\n\nconst isLaserPointerActive = ref(false)\n\nconst mdSnippetIds = computed(() => {\n  return displayedSnippets.value\n    ?.filter(s => s.contents[0].language === 'markdown')\n    .map(i => i.id)\n})\n\nconst currentIndex = computed(\n  () =>\n    mdSnippetIds.value?.findIndex(i => selectedSnippet.value?.id === i) || 0,\n)\n\nfunction onClose() {\n  isShowMarkdownPresentation.value = false\n  router.push({ name: RouterName.main })\n}\n\nfunction onPrevNext(direction: 'prev' | 'next') {\n  let id\n\n  if (direction === 'prev') {\n    id = mdSnippetIds.value?.[currentIndex.value - 1]\n  }\n  else {\n    id = mdSnippetIds.value?.[currentIndex.value + 1]\n  }\n\n  if (id) {\n    selectSnippet(id)\n  }\n}\n\nfunction onFullscreen() {\n  toggle()\n}\n\nfunction toggleLaserPointer() {\n  isLaserPointerActive.value = !isLaserPointerActive.value\n}\n\nwatch(left, (v) => {\n  if (v)\n    onPrevNext('prev')\n})\n\nwatch(right, (v) => {\n  if (v)\n    onPrevNext('next')\n})\n\nwatch(escape, (v) => {\n  if (v)\n    onClose()\n})\n\nwatchEffect(() => {\n  if ((meta.value || ctrl.value) && l.value) {\n    isLaserPointerActive.value = !isLaserPointerActive.value\n  }\n})\n</script>\n\n<template>\n  <div class=\"relative grid h-screen grid-rows-[1fr_40px] overflow-hidden\">\n    <Button\n      class=\"absolute top-6 right-2 z-50\"\n      variant=\"ghost\"\n      @click=\"onClose\"\n    >\n      <X class=\"h-3 w-3\" />\n    </Button>\n    <div class=\"scrollbar h-full min-h-0 overflow-y-auto\">\n      <div class=\"overflow-auto p-5\">\n        <EditorMarkdown :key=\"scaleToShow\" />\n      </div>\n    </div>\n    <div class=\"flex items-center justify-between px-8\">\n      <div class=\"flex items-center\">\n        <UiActionButton\n          :tooltip=\"i18n.t('button.fullscreen')\"\n          @click=\"onFullscreen\"\n        >\n          <Expand\n            v-if=\"!isFullscreen\"\n            class=\"h-3 w-3\"\n          />\n          <Minimize\n            v-else\n            class=\"h-3 w-3\"\n          />\n        </UiActionButton>\n        <UiActionButton\n          :tooltip=\"i18n.t('button.prev')\"\n          @click=\"onPrevNext('prev')\"\n        >\n          <ArrowLeft class=\"h-3 w-3\" />\n        </UiActionButton>\n        <UiActionButton\n          :tooltip=\"i18n.t('button.next')\"\n          @click=\"onPrevNext('next')\"\n        >\n          <ArrowRight class=\"h-3 w-3\" />\n        </UiActionButton>\n        <UiActionButton\n          :active=\"isLaserPointerActive\"\n          :tooltip=\"i18n.t('button.laserPointer')\"\n          @click=\"toggleLaserPointer\"\n        >\n          <Zap class=\"h-3 w-3\" />\n        </UiActionButton>\n        <div class=\"flex items-center gap-2\">\n          <UiActionButton\n            :tooltip=\"i18n.t('button.zoomOut')\"\n            @click=\"onZoom('out')\"\n          >\n            <Minus class=\"h-3 w-3\" />\n          </UiActionButton>\n          <div class=\"tabular-nums select-none\">\n            {{ scaleToShow }}\n          </div>\n          <UiActionButton\n            :tooltip=\"i18n.t('button.zoomIn')\"\n            @click=\"onZoom('in')\"\n          >\n            <Plus class=\"h-3 w-3\" />\n          </UiActionButton>\n        </div>\n      </div>\n      <div>\n        <div class=\"tabular-nums select-none\">\n          {{ currentIndex + 1 }} / {{ mdSnippetIds?.length }}\n        </div>\n      </div>\n    </div>\n    <EditorMarkdownLaserPointer :is-active=\"isLaserPointerActive\" />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/markdown/composables/index.ts",
    "content": "export * from './useMarkdown'\n"
  },
  {
    "path": "src/renderer/components/editor/markdown/composables/useMarkdown.ts",
    "content": "import { store } from '@/electron'\nimport { useCssVar } from '@vueuse/core'\n\nconst scale = useCssVar('--markdown-scale', document.body, {\n  initialValue: store.preferences.get('markdown.scale'),\n})\n\nconst scaleToShow = computed(() => Number(scale.value).toFixed(1))\n\nfunction onZoom(type: 'in' | 'out') {\n  const step = 0.1\n  const currentValue = store.preferences.get('markdown.scale') as number\n  const value\n    = type === 'in'\n      ? Number((currentValue + step).toFixed(1))\n      : Number((currentValue - step).toFixed(1))\n\n  if (type === 'in') {\n    store.preferences.set('markdown.scale', value)\n  }\n  else {\n    if (currentValue - step < 1) {\n      return\n    }\n\n    store.preferences.set('markdown.scale', value)\n  }\n\n  scale.value = String(value)\n}\n\nexport function useMarkdown() {\n  return {\n    onZoom,\n    scaleToShow,\n  }\n}\n"
  },
  {
    "path": "src/renderer/components/editor/mindmap/Mindmap.vue",
    "content": "<script setup lang=\"ts\">\nimport { useSnippets } from '@/composables'\nimport { i18n } from '@/electron'\nimport domToImage from 'dom-to-image'\nimport { FileDown, Maximize, Minus, Plus } from 'lucide-vue-next'\nimport { Transformer } from 'markmap-lib'\nimport { Markmap } from 'markmap-view'\n\nconst { selectedSnippetContent, selectedSnippet } = useSnippets()\n\nconst mindmapRef = useTemplateRef('mindmapRef')\nconst svgRef = useTemplateRef('svgRef')\n\nconst transformer = new Transformer()\n\nlet mm: Markmap | null = null\n\nasync function update() {\n  const value = selectedSnippetContent.value?.value || '# Empty'\n\n  const { root } = transformer.transform(value)\n\n  if (mm) {\n    await mm.setData(root)\n    await mm.fit()\n  }\n}\n\nfunction init() {\n  mm = Markmap.create(svgRef.value!, {\n    duration: 0,\n    style: () => `\n      .markmap-node div { color: var(--foreground); user-select: none; cursor: default; }\n      .markmap-node circle { fill: var(--background); }\n    `,\n  })\n  svgRef.value?.addEventListener('dblclick', e => e.stopPropagation(), true)\n  update()\n}\n\nfunction onZoom(type: 'zoomIn' | 'zoomOut' | 'fit') {\n  if (!mm)\n    return\n  if (type === 'zoomIn') {\n    mm.rescale(1.25)\n  }\n\n  if (type === 'zoomOut') {\n    mm.rescale(0.8)\n  }\n\n  if (type === 'fit') {\n    mm.fit()\n  }\n}\n\nasync function onSaveScreenshot(type: 'png' | 'svg' = 'png') {\n  let data = ''\n\n  if (!mm)\n    return\n\n  await mm.fit()\n\n  if (type === 'png') {\n    data = await domToImage.toPng(mindmapRef.value!)\n  }\n\n  if (type === 'svg') {\n    data = await domToImage.toSvg(mindmapRef.value!)\n  }\n\n  const a = document.createElement('a')\n  a.href = data\n  a.download = `${selectedSnippet.value?.name} - ${selectedSnippetContent.value?.label}.${type}`\n  a.click()\n}\n\nonMounted(() => {\n  init()\n})\n\nwatch(selectedSnippetContent, () => {\n  update()\n})\n</script>\n\n<template>\n  <div>\n    <EditorHeaderTool>\n      <div class=\"flex w-full items-center justify-between px-2\">\n        <div>\n          <UiActionButton\n            :tooltip=\"i18n.t('button.zoomIn')\"\n            @click=\"onZoom('zoomIn')\"\n          >\n            <Plus class=\"h-3 w-3\" />\n          </UiActionButton>\n          <UiActionButton\n            :tooltip=\"i18n.t('button.zoomOut')\"\n            @click=\"onZoom('zoomOut')\"\n          >\n            <Minus class=\"h-3 w-3\" />\n          </UiActionButton>\n          <UiActionButton\n            :tooltip=\"i18n.t('button.fit')\"\n            @click=\"onZoom('fit')\"\n          >\n            <Maximize class=\"h-3 w-3\" />\n          </UiActionButton>\n        </div>\n        <div>\n          <UiActionButton\n            type=\"iconText\"\n            :tooltip=\"`${i18n.t('button.saveAs')} PNG`\"\n            @click=\"onSaveScreenshot('png')\"\n          >\n            <div class=\"flex items-center gap-1\">\n              PNG <FileDown class=\"h-3 w-3\" />\n            </div>\n          </UiActionButton>\n          <UiActionButton\n            type=\"iconText\"\n            :tooltip=\"`${i18n.t('button.saveAs')} SVG`\"\n            @click=\"onSaveScreenshot('svg')\"\n          >\n            <div class=\"flex items-center gap-1\">\n              SVG <FileDown class=\"h-3 w-3\" />\n            </div>\n          </UiActionButton>\n        </div>\n      </div>\n    </EditorHeaderTool>\n    <div\n      ref=\"mindmapRef\"\n      class=\"h-full cursor-grab\"\n    >\n      <svg\n        ref=\"svgRef\"\n        class=\"h-[calc(100%-var(--editor-tool-header-height))] w-full\"\n      />\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/preview/Preview.vue",
    "content": "<script setup lang=\"ts\">\nimport { useSnippets } from '@/composables'\nimport { i18n, ipc } from '@/electron'\nimport { useDark } from '@vueuse/core'\nimport { FileDown, Moon, RefreshCcw, Sun } from 'lucide-vue-next'\n\nconst { selectedSnippet } = useSnippets()\n\nconst previewKey = ref(0)\n\nconst isDark = useDark()\n\nconst isDarkPreview = ref(isDark.value)\n\nconst defaultHtml = computed(() => {\n  return `<div style=\"display: flex; align-items: center; justify-content: center; height: 100%; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; font-size: 14px;\">\n    <p style=\"color: ${isDarkPreview.value ? 'oklch(75% 0 0)' : 'oklch(20% 0 0)'}; text-align: center;\">${i18n.t('messages:warning.htmlCssPreview')}</p>\n  </div>`\n})\n\nconst html = computed(() => {\n  return (\n    selectedSnippet.value?.contents.find(\n      content => content.language === 'html',\n    )?.value || defaultHtml.value\n  )\n})\n\nconst css = computed(() => {\n  return (\n    selectedSnippet.value?.contents.find(\n      content => content.language === 'css',\n    )?.value || ''\n  )\n})\n\nconst js = computed(() => {\n  return (\n    selectedSnippet.value?.contents.find(\n      content => content.language === 'javascript',\n    )?.value || ''\n  )\n})\n\nfunction generateHtmlPreview(save = false) {\n  const cssDefault = `\n    body {\n      background-color: ${isDarkPreview.value ? 'oklch(24.78% 0 0)' : 'oklch(100% 0 0)'};\n    }\n  `\n\n  const jsDefault = `\n    try {\n      ${js.value}\n    } catch (error) {\n      console.error('Error in preview:', error)\n    }\n  `\n\n  const cssCode = save ? css.value : cssDefault + css.value\n  const jsCode = save ? js.value : jsDefault\n\n  return `<!DOCTYPE html>\n    <html>\n      <head>\n        <style>${cssCode}</style>\n      </head>\n      <body>\n        ${html.value}\n        <script>${jsCode}<\\/script>\n      </body>\n    </html>\n  `\n}\n\nconst htmlPreview = computed(() => generateHtmlPreview())\n\nasync function onSaveHtml() {\n  let html = generateHtmlPreview(true)\n\n  try {\n    html = await ipc.invoke('prettier:format', {\n      text: html,\n      parser: 'html',\n    })\n  }\n  catch (error) {\n    console.error(error)\n  }\n\n  const blob = new Blob([html], { type: 'text/html' })\n  const url = URL.createObjectURL(blob)\n  const a = document.createElement('a')\n\n  a.href = url\n  a.download = `${selectedSnippet.value?.name}.html`\n  a.click()\n}\nwatch([html, css, js], () => {\n  previewKey.value++\n})\n\nwatch(isDarkPreview, () => {\n  previewKey.value++\n})\n</script>\n\n<template>\n  <div\n    class=\"border-border flex h-[var(--editor-tool-header-height)] items-center justify-between border-b px-2 py-1\"\n  >\n    <div>\n      <UiActionButton\n        type=\"icon\"\n        :tooltip=\"i18n.t('button.toggleDarkMode')\"\n        @click=\"isDarkPreview = !isDarkPreview\"\n      >\n        <Moon\n          v-if=\"isDarkPreview\"\n          class=\"h-3 w-3\"\n        />\n        <Sun\n          v-else\n          class=\"h-3 w-3\"\n        />\n      </UiActionButton>\n    </div>\n    <div class=\"flex items-center\">\n      <UiActionButton\n        type=\"iconText\"\n        :tooltip=\"`${i18n.t('button.saveAs')} HTML`\"\n        @click=\"onSaveHtml\"\n      >\n        <div class=\"flex items-center gap-1\">\n          HTML <FileDown class=\"h-3 w-3\" />\n        </div>\n      </UiActionButton>\n      <UiActionButton\n        type=\"icon\"\n        :tooltip=\"i18n.t('button.refreshPreview')\"\n        @click=\"previewKey++\"\n      >\n        <RefreshCcw class=\"h-3 w-3\" />\n      </UiActionButton>\n    </div>\n  </div>\n  <div class=\"h-[calc(100%-var(--editor-tool-header-height))]\">\n    <iframe\n      :key=\"previewKey\"\n      data-editor-preview\n      :srcdoc=\"htmlPreview\"\n      sandbox=\"allow-scripts\"\n      frameborder=\"0\"\n      height=\"100%\"\n      width=\"100%\"\n    />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/editor/types/index.ts",
    "content": "export type Language =\n  | 'abap'\n  | 'abc'\n  | 'actionscript'\n  | 'ada'\n  | 'alda'\n  | 'apache_conf'\n  | 'apex'\n  | 'applescript'\n  | 'aql'\n  | 'asciidoc'\n  | 'asl'\n  | 'asp_vb_net'\n  | 'assembly_x86'\n  | 'autohotkey'\n  | 'batchfile'\n  | 'bicep'\n  | 'c_cpp'\n  | 'c9search'\n  | 'cirru'\n  | 'clojure'\n  | 'cobol'\n  | 'coffee'\n  | 'coldfusion'\n  | 'crystal'\n  | 'csharp'\n  | 'csound_document'\n  | 'csound_orchestra'\n  | 'csound_score'\n  | 'csp'\n  | 'css'\n  | 'curly'\n  | 'd'\n  | 'dart'\n  | 'diff'\n  | 'django'\n  | 'dockerfile'\n  | 'dot'\n  | 'drools'\n  | 'edifact'\n  | 'eiffel'\n  | 'ejs'\n  | 'elixir'\n  | 'elm'\n  | 'erlang'\n  | 'forth'\n  | 'fortran'\n  | 'fsharp'\n  | 'fsl'\n  | 'ftl'\n  | 'gcode'\n  | 'gherkin'\n  | 'gitignore'\n  | 'glsl'\n  | 'gobstones'\n  | 'golang'\n  | 'graphqlschema'\n  | 'groovy'\n  | 'haml'\n  | 'handlebars'\n  | 'haskell_cabal'\n  | 'haskell'\n  | 'haxe'\n  | 'hjson'\n  | 'html_elixir'\n  | 'html_ruby'\n  | 'html'\n  | 'ini'\n  | 'io'\n  | 'jack'\n  | 'jade'\n  | 'java'\n  | 'javascript'\n  | 'json'\n  | 'json5'\n  | 'jsoniq'\n  | 'jsp'\n  | 'jssm'\n  | 'jsx'\n  | 'julia'\n  | 'kotlin'\n  | 'kusto'\n  | 'latex'\n  | 'latte'\n  | 'less'\n  | 'liquid'\n  | 'lisp'\n  | 'livescript'\n  | 'logiql'\n  | 'logtalk'\n  | 'lsl'\n  | 'lua'\n  | 'luapage'\n  | 'lucene'\n  | 'makefile'\n  | 'markdown'\n  | 'mask'\n  | 'matlab'\n  | 'maze'\n  | 'mediawiki'\n  | 'mel'\n  | 'mikrotik'\n  | 'mips'\n  | 'mixal'\n  | 'mushcode'\n  | 'mysql'\n  | 'nginx'\n  | 'nim'\n  | 'nix'\n  | 'nu'\n  | 'nsis'\n  | 'nunjucks'\n  | 'objectivec'\n  | 'ocaml'\n  | 'oeabl'\n  | 'pascal'\n  | 'perl'\n  | 'perl6'\n  | 'pgsql'\n  | 'php_laravel_blade'\n  | 'php'\n  | 'pig'\n  | 'plain_text'\n  | 'powershell'\n  | 'powerquery'\n  | 'praat'\n  | 'prisma'\n  | 'prolog'\n  | 'properties'\n  | 'protobuf'\n  | 'pug'\n  | 'puppet'\n  | 'python'\n  | 'qml'\n  | 'r'\n  | 'raku'\n  | 'razor'\n  | 'rdoc'\n  | 'red'\n  | 'redshift'\n  | 'regexp'\n  | 'rhtml'\n  | 'rst'\n  | 'ruby'\n  | 'rust'\n  | 'sas'\n  | 'sass'\n  | 'sassdoc'\n  | 'scad'\n  | 'scala'\n  | 'scheme'\n  | 'scrypt'\n  | 'scss'\n  | 'sh'\n  | 'sjs'\n  | 'slim'\n  | 'smalltalk'\n  | 'smarty'\n  | 'smithy'\n  | 'solidity'\n  | 'soy_template'\n  | 'space'\n  | 'sparql'\n  | 'sql'\n  | 'sqlserver'\n  | 'stylus'\n  | 'svg'\n  | 'swift'\n  | 'tcl'\n  | 'terraform'\n  | 'tex'\n  | 'text'\n  | 'textile'\n  | 'toml'\n  | 'tsx'\n  | 'turtle'\n  | 'twig'\n  | 'typescript'\n  | 'vala'\n  | 'vbscript'\n  | 'velocity'\n  | 'verilog'\n  | 'vhdl'\n  | 'visualforce'\n  | 'vue'\n  | 'wollok'\n  | 'xml'\n  | 'xquery'\n  | 'xsl'\n  | 'yaml'\n  | 'zeek'\n\nexport interface LanguageOption {\n  name: string\n  value: Language\n  grammar?: () => Promise<{ default: any }>\n  scopeName?: string\n}\n\nexport interface GrammarOption {\n  grammar: () => Promise<{ default: any }>\n  language: Language\n  priority: 'asap' | 'now' | 'defer'\n}\n"
  },
  {
    "path": "src/renderer/components/layout/TwoColumn.vue",
    "content": "<script setup lang=\"ts\">\nimport { i18n } from '@/electron'\nimport { ArrowLeft } from 'lucide-vue-next'\nimport { computed } from 'vue'\n\ninterface Props {\n  title: string\n  leftSize?: string\n  rightSize?: string\n  showBack?: boolean\n  topSpace?: number\n}\n\ninterface Emits {\n  (e: 'back'): void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  leftSize: '220px',\n  rightSize: '1fr',\n  showBack: true,\n  topSpace: 0,\n})\n\nconst emit = defineEmits<Emits>()\n\nconst gridTemplateColumns = computed(() => {\n  return `${props.leftSize} 1px ${props.rightSize}`\n})\n\nconst leftHeaderStyle = computed(() => {\n  return {\n    paddingTop: `calc(var(--content-top-offset) + ${props.topSpace}px)`,\n  }\n})\n</script>\n\n<template>\n  <div\n    class=\"relative grid h-screen flex-1 overflow-hidden\"\n    :style=\"{ gridTemplateColumns }\"\n  >\n    <div class=\"grid h-full min-h-0 grid-rows-[auto_1fr] overflow-hidden\">\n      <div\n        class=\"flex items-center justify-between gap-2 overflow-hidden px-2 pb-2\"\n        :style=\"leftHeaderStyle\"\n      >\n        <div class=\"truncate font-bold\">\n          {{ title }}\n        </div>\n        <UiActionButton\n          v-if=\"showBack\"\n          :tooltip=\"i18n.t('button.back')\"\n          class=\"shrink-0\"\n          @click=\"() => emit('back')\"\n        >\n          <ArrowLeft class=\"h-4 w-4\" />\n        </UiActionButton>\n      </div>\n      <div class=\"h-full min-h-0 overflow-auto\">\n        <slot name=\"left\" />\n      </div>\n    </div>\n    <div class=\"bg-border\" />\n    <div class=\"h-full min-h-0 overflow-auto pt-[var(--content-top-offset)]\">\n      <slot name=\"right\" />\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/math-notebook/MathEditor.vue",
    "content": "<script setup lang=\"ts\">\nimport { renderMathEditorHighlight } from './math-editor-highlight'\n\ninterface Props {\n  modelValue: string\n}\n\ninterface Emits {\n  (e: 'update:modelValue', value: string): void\n  (e: 'scroll', scrollTop: number): void\n  (e: 'activeLine', line: number): void\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<Emits>()\n\nconst textareaRef = ref<HTMLTextAreaElement>()\nconst activeLine = ref(0)\nconst scrollTop = ref(0)\nconst scrollLeft = ref(0)\n\nconst lineCount = computed(() => {\n  return Math.max((props.modelValue || '').split('\\n').length, 1)\n})\n\nconst lineNumbers = computed(() => {\n  return Array.from({ length: lineCount.value }, (_, i) => i + 1)\n})\n\nconst highlightedHtml = computed(() => {\n  return renderMathEditorHighlight(props.modelValue || '')\n})\n\nfunction syncScrollState(target: HTMLTextAreaElement) {\n  scrollTop.value = target.scrollTop\n  scrollLeft.value = target.scrollLeft\n  emit('scroll', target.scrollTop)\n}\n\nfunction handleInput(event: Event) {\n  const target = event.target as HTMLTextAreaElement\n  emit('update:modelValue', target.value)\n  updateActiveLine(target)\n  syncScrollState(target)\n}\n\nfunction handleScroll(event: Event) {\n  const target = event.target as HTMLTextAreaElement\n  syncScrollState(target)\n}\n\nfunction updateActiveLine(target: HTMLTextAreaElement) {\n  const text = target.value.substring(0, target.selectionStart)\n  const line = text.split('\\n').length - 1\n  activeLine.value = line\n  emit('activeLine', line)\n}\n\nfunction handleClick(event: Event) {\n  updateActiveLine(event.target as HTMLTextAreaElement)\n}\n\nfunction handleKeyup(event: Event) {\n  updateActiveLine(event.target as HTMLTextAreaElement)\n}\n\nonMounted(() => {\n  textareaRef.value?.focus()\n  if (textareaRef.value) {\n    syncScrollState(textareaRef.value)\n  }\n})\n\nconst lineNumbersStyle = computed(() => {\n  return {\n    transform: `translate3d(0, ${-scrollTop.value}px, 0)`,\n  }\n})\n\nconst highlightStyle = computed(() => {\n  return {\n    transform: `translate3d(${-scrollLeft.value}px, ${-scrollTop.value}px, 0)`,\n  }\n})\n</script>\n\n<template>\n  <div class=\"flex h-full overflow-hidden\">\n    <div\n      class=\"shrink-0 overflow-hidden border-r border-transparent py-1 pr-1 pl-3 text-right select-none\"\n    >\n      <div\n        class=\"will-change-transform\"\n        :style=\"lineNumbersStyle\"\n      >\n        <div\n          v-for=\"num in lineNumbers\"\n          :key=\"num\"\n          class=\"text-muted-foreground/40 h-[22px] font-mono text-[12px] leading-[22px] transition-colors duration-75\"\n          :class=\"{ '!text-muted-foreground': activeLine === num - 1 }\"\n        >\n          {{ num }}\n        </div>\n      </div>\n    </div>\n    <div class=\"math-editor relative min-w-0 flex-1\">\n      <div\n        aria-hidden=\"true\"\n        class=\"math-editor-highlight pointer-events-none absolute inset-0 z-10 overflow-hidden\"\n      >\n        <pre\n          class=\"min-h-full w-max min-w-full py-1 pr-4 pl-3 font-mono text-[13px] leading-[22px] tracking-wide whitespace-pre will-change-transform\"\n          :style=\"highlightStyle\"\n          v-html=\"highlightedHtml\"\n        />\n      </div>\n      <textarea\n        ref=\"textareaRef\"\n        :value=\"modelValue\"\n        class=\"math-editor-textarea scrollbar selection:bg-accent/50 absolute inset-0 z-0 h-full w-full resize-none bg-transparent py-1 pr-4 pl-3 font-mono text-[13px] leading-[22px] tracking-wide text-transparent outline-none\"\n        spellcheck=\"false\"\n        wrap=\"off\"\n        @input=\"handleInput\"\n        @scroll=\"handleScroll\"\n        @click=\"handleClick\"\n        @keyup=\"handleKeyup\"\n      />\n    </div>\n  </div>\n</template>\n\n<style scoped>\n@reference '../../styles.css';\n\n.math-editor {\n  --math-editor-builtin: oklch(76% 0.17 285);\n  --math-editor-keyword: oklch(68% 0.08 280);\n  --math-editor-unit: oklch(78% 0.17 338);\n  --math-editor-variable: oklch(78% 0.18 145);\n}\n\n:global(html:not(.dark)) .math-editor {\n  --math-editor-builtin: oklch(56% 0.16 282);\n  --math-editor-keyword: oklch(48% 0.05 280);\n  --math-editor-unit: oklch(58% 0.16 335);\n  --math-editor-variable: oklch(52% 0.17 145);\n}\n\n.math-editor-highlight {\n  color: var(--foreground);\n}\n\n.math-editor-textarea {\n  caret-color: var(--foreground);\n}\n\n.math-editor-highlight :deep(.mn-editor-token) {\n  font-weight: 500;\n}\n\n.math-editor-highlight :deep(.mn-editor-token--variable) {\n  color: var(--math-editor-variable);\n}\n\n.math-editor-highlight :deep(.mn-editor-token--builtin) {\n  color: var(--math-editor-builtin);\n}\n\n.math-editor-highlight :deep(.mn-editor-token--unit) {\n  color: var(--math-editor-unit);\n}\n\n.math-editor-highlight :deep(.mn-editor-token--keyword) {\n  color: var(--math-editor-keyword);\n}\n</style>\n"
  },
  {
    "path": "src/renderer/components/math-notebook/README.md",
    "content": "# Math Notebook\n\nCalculator-style notepad inspired by [Numi](https://numi.app). Write expressions in natural language — results appear instantly on every line.\n\n## Arithmetic\n\nStandard math operators and parentheses.\n\n```\n10 + 5          → 15\n20 * 3          → 60\n(2 + 3) * 4    → 20\n2 ^ 10          → 1,024\n5 300           → 5,300\n```\n\n## Word Operators\n\nUse words instead of symbols.\n\n| Operation      | Keywords                     |\n|----------------|------------------------------|\n| Addition       | `plus`, `and`, `with`        |\n| Subtraction    | `minus`, `subtract`, `without` |\n| Multiplication | `times`, `multiplied by`, `mul` |\n| Division       | `divide`, `divide by`        |\n| Modulo         | `mod`                        |\n\n```\n8 times 9           → 72\n100 plus 50         → 150\n200 without 30      → 170\n10 multiplied by 3  → 30\n17 mod 5            → 2\n```\n\n## Variables\n\nDeclare variables with `=` and reuse them across lines.\n\n```\nv = 20          → 20\nv times 7       → 140\nv + 10          → 30\n```\n\n## Labels\n\nPrefix a line with a label followed by a colon — the label is ignored, only the expression is evaluated.\n\n```\nPrice: $11 + $34.45     → 45.45 USD\nMonthly: 1200 / 12      → 100\n```\n\n## Inline Quotes\n\nText inside double quotes is ignored.\n\n```\n$275 for the \"Model 227\"   → 275 USD\n```\n\n## Percentage\n\n### Basic percentage\n\n```\n100 + 15%       → 115\n200 - 10%       → 180\n15% of 200      → 30\n```\n\n### Advanced percentage\n\n| Operation                               | Example                | Result |\n|-----------------------------------------|------------------------|--------|\n| Adding percentage                       | `5% on 200`           | 210    |\n| Subtracting percentage                  | `5% off 200`          | 190    |\n| Percentage of one value relative to another | `50 as a % of 100` | 50     |\n| Percentage addition relative to another | `70 as a % on 20`    | 250    |\n| Percentage subtraction relative to another | `20 as a % off 70` | 71.43  |\n| Value by percent part                   | `5% of what is 6`     | 120    |\n| Value by percent addition               | `5% on what is 6`     | 5.71   |\n| Value by percent subtraction            | `5% off what is 6`    | 6.32   |\n\n## Scales\n\nShorthand for large numbers. One-letter scales are case-sensitive: `k` for thousands, `M` for millions.\n\n```\n$2k             → 2,000 USD\n3M              → 3,000,000\n1.5 billion     → 1,500,000,000\n10 thousand     → 10,000\n```\n\n## Currency\n\nSupports ISO 4217 codes, common currency symbols, and common currency names. Live exchange rates with cached fallback.\n\n### Supported symbols\n\n| Symbol | Currency |\n|--------|----------|\n| `$`    | USD      |\n| `€`    | EUR      |\n| `£`    | GBP      |\n| `¥`    | JPY      |\n| `₽`    | RUB      |\n| `₴`    | UAH      |\n| `₩`    | KRW      |\n| `₹`    | INR      |\n| `R$`   | BRL      |\n\n### Supported ISO codes\n\nUSD, EUR, GBP, CAD, RUB, JPY, CNY, CHF, AUD, KRW, INR, BRL, MXN, PLN, SEK, NOK, DKK, CZK, HUF, TRY, NZD, SGD, HKD, ZAR, THB, UAH, ILS.\n\n```\n$30 + $15           → 45 USD\n$30 to EUR          → ... EUR\n€50 + £20           → ... EUR\n5 dollars + 10 dollars → 15 USD\n```\n\n## Unit Conversion\n\nPowered by mathjs. Use `to`, `in`, `as`, `into` for conversion.\n\n```\n5 km to mile                → 3.10686 mile\n5 km into mile              → 3.10686 mile\n1 inch in cm                → 2.54 cm\n100 celsius to fahrenheit   → 212 fahrenheit\n1 kg to lb                  → 2.20462 lb\n1 meter 20 cm               → 1.2 m\n1 meter 20 cm into cm       → 120 cm\n1 point to inch             → 0.0138889 inch\n1 are to m^2                → 100 m^2\n1 degree to radian          → 0.0174533 radian\n1 nautical mile to mile     → 1.15078 mile\n```\n\n### Supported unit categories\n\n- **Length**: meter, inch, foot, yard, mile, nautical mile, point, line, hand, furlong, cable, league, etc.\n- **Weight**: gram, kg, pound, ounce, tonne, stone, carat, etc.\n- **Temperature**: celsius, fahrenheit, kelvin\n- **Time**: second, minute, hour, day, week, month, year\n- **Angular**: radian, degree, and `°`\n- **Data**: bit, byte, KB, MB, GB, TB (with SI and binary prefixes)\n- **Area**: m², hectare, acre, are, plus aliases like `sq`, `square`, `sqm`\n- **Volume**: liter, gallon, pint, quart, cup, teaspoon, tablespoon, plus aliases like `cu`, `cubic`, `cb`, `cbm`\n\n## CSS Units\n\nSupports CSS-oriented `px`, `pt`, and `em` conversions with configurable `ppi` and `em`.\n\n```\n12 pt in px       → 16 px\nem = 20px\n1.2 em in px      → 24 px\nppi = 326\n1 cm in px        → 128.35 px\n```\n\n## Math Functions\n\n```\nsqrt(16)        → 4\nsqrt 16         → 4\ncbrt 8          → 2\nroot 2 (8)      → 2.8284\nsin(45 deg)     → 0.7071\nsin 45°         → 0.7071\ncos(pi)         → -1\nlog(100)        → 2\nlog 2 (8)       → 3\nln(e)           → 1\nabs(-42)        → 42\nround(3.7)      → 4\nround 3.45      → 3\nceil(3.2)       → 4\nfloor(3.9)      → 3\nfact(5)         → 120\narcsin(1)       → 1.5708\narccos(1)       → 0\narctan(1)       → 0.7854\n```\n\n## Number Formats\n\nAppend `in hex`, `in bin`, `in oct`, or `in sci` to format the result.\n\n```\n255 in hex      → 0xFF\n10 in bin       → 0b1010\n255 in oct      → 0o377\n5300 in sci     → 5.3e+3\n5 300 in sci    → 5.3e+3\n```\n\nInput also supports hex, binary, and octal literals:\n\n```\n0xFF            → 255\n0b1010          → 10\n0o377           → 255\n```\n\n## Previous Result\n\nUse `prev` to reference the result from the previous line.\n\n```\n10 + 5          → 15\nprev * 2        → 30\nprev - 5        → 25\n```\n\n## Sum & Total\n\n`sum` or `total` calculates the sum of all numeric results above (until an empty line).\n\n```\n10 + 5          → 15\n20 * 3          → 60\nsum             → 75\n```\n\n## Average\n\n`average` or `avg` calculates the mean of all numeric results above (until an empty line).\n\n```\n10\n20\n30\naverage         → 20\n```\n\n## Comments\n\nLines starting with `//` or `#` are treated as comments and produce no result.\n\n```\n// This is a comment\n# This is also a comment\n```\n\n## Date & Time\n\nConvert Unix timestamps to dates with `fromunix`.\n\n```\nfromunix(1446587186)    → 11/3/2015, ...\nfromunix(1446587186) + 2 day\n```\n\nTime arithmetic follows Numi-like semantics: `1 year = 365 days`, `1 month = 365 / 12 days`.\n\nCurrent time helpers:\n\n```\ntime\ntime()\nnow\nnow()\nnow in Madrid\nBerlin now\ntime() + 1 day\nnow + 1 day\n```\n\nTime zone conversion:\n\n```\nPST time\nNew York time\nTime in Madrid\n2:30 pm HKT in Berlin\n2:30 pm New York in Berlin\n2026-03-06 PST in Berlin\n2026-03-06 2:30 pm PST in Berlin\nMar 6 2026 PST in Berlin\n2:30 pm Mar 6 2026 PST in Berlin\ntomorrow PST in Berlin\n```\n\nTime unit arithmetic:\n\n```\n1 month in days          → 30.4167 days\nround(1 month in days)  → 30\nround 1 month in days   → 30\n2 hours + 30 minutes    → 2.5 hours\n```\n\n## Constants\n\n| Name | Value        |\n|------|--------------|\n| pi   | 3.1415926536 |\n| e    | 2.7182818285 |\n\n## Bitwise Operations\n\n```\n5 & 3           → 1\n5 | 3           → 7\n5 xor 3         → 6\n1 << 4          → 16\n16 >> 2         → 4\n6 (3)           → 18\n```\n\n## SI Prefixes\n\nSI-based units support all SI prefixes (case-sensitive):\n\n```\n1 mm            → 0.001 m\n3 GB            → 3e+9 bytes\n2 MHz           → 2,000,000 Hz\n```\n"
  },
  {
    "path": "src/renderer/components/math-notebook/ResultsPanel.vue",
    "content": "<script setup lang=\"ts\">\nimport type { LineResult } from '@/composables/math-notebook'\nimport { Button } from '@/components/ui/shadcn/button'\nimport { useCopyToClipboard } from '@/composables'\nimport { i18n, ipc } from '@/electron'\nimport { LoaderCircle, Sigma } from 'lucide-vue-next'\n\ninterface Props {\n  results: LineResult[]\n  scrollTop: number\n  activeLine: number\n}\n\nconst props = defineProps<Props>()\n\nconst showTotal = ref(true)\nconst copy = useCopyToClipboard()\nconst MATH_NOTEBOOK_DOCUMENTATION_URL\n  = 'https://masscode.io/documentation/math-notebook.html'\n\nconst total = computed(() => {\n  return props.results.reduce((sum, r) => {\n    if (r.type === 'number' || r.type === 'assignment') {\n      const num = Number.parseFloat((r.value || '').replace(/,/g, ''))\n      if (!Number.isNaN(num))\n        return sum + num\n    }\n    return sum\n  }, 0)\n})\n\nconst formattedTotal = computed(() => {\n  return Number.isInteger(total.value)\n    ? total.value.toLocaleString('en-US')\n    : total.value.toLocaleString('en-US', { maximumFractionDigits: 6 })\n})\n\nconst resultsStyle = computed(() => {\n  return {\n    transform: `translate3d(0, ${-Math.max(props.scrollTop, 0)}px, 0)`,\n  }\n})\n\nfunction handleClickResult(result: LineResult) {\n  if (result.value) {\n    copy(result.value)\n  }\n}\n\nfunction getResultClasses(result: LineResult) {\n  const base\n    = 'flex h-[22px] select-none items-center justify-end font-mono text-[13px] leading-[22px] transition-all duration-100'\n\n  if (result.error) {\n    return `${base} text-destructive`\n  }\n\n  if (result.type === 'pending') {\n    return `${base} text-muted-foreground`\n  }\n\n  if (result.type === 'comment') {\n    return `${base} text-muted-foreground`\n  }\n\n  if (result.type === 'assignment') {\n    return `${base} group text-muted-foreground`\n  }\n\n  if (result.value) {\n    return `${base} group`\n  }\n\n  return base\n}\n\nfunction getResultValueClasses(result: LineResult) {\n  const base = 'truncate rounded-md px-1.5 transition-colors duration-100'\n\n  if (result.type === 'assignment') {\n    return `${base} group-hover:bg-accent-hover`\n  }\n\n  if (result.value) {\n    return `${base} group-hover:bg-primary group-hover:text-white`\n  }\n\n  return base\n}\n\nfunction openDocumentation() {\n  void ipc.invoke('system:open-external', MATH_NOTEBOOK_DOCUMENTATION_URL)\n}\n</script>\n\n<template>\n  <div class=\"flex h-full flex-col overflow-hidden\">\n    <div class=\"min-h-0 flex-1 overflow-hidden py-1 pr-3 pl-3\">\n      <div\n        class=\"will-change-transform\"\n        :style=\"resultsStyle\"\n      >\n        <div\n          v-for=\"(result, index) in results\"\n          :key=\"index\"\n          :class=\"getResultClasses(result)\"\n          @click=\"handleClickResult(result)\"\n        >\n          <template v-if=\"result.type === 'pending'\">\n            <LoaderCircle class=\"h-3.5 w-3.5 animate-spin\" />\n          </template>\n          <template v-else-if=\"result.error && result.showError\">\n            <span class=\"truncate\">\n              {{ result.error }}\n            </span>\n          </template>\n          <template v-else>\n            <span\n              v-if=\"result.value\"\n              :class=\"[\n                getResultValueClasses(result),\n                {\n                  'font-medium':\n                    ['number', 'aggregate'].includes(result.type)\n                    && props.activeLine === index,\n                },\n              ]\"\n            >\n              {{ result.value }}\n            </span>\n          </template>\n        </div>\n      </div>\n    </div>\n\n    <transition name=\"total-slide\">\n      <div\n        v-if=\"showTotal\"\n        class=\"border-border flex h-[34px] shrink-0 items-center gap-2 border-t px-3\"\n      >\n        <UiText\n          variant=\"caption\"\n          weight=\"medium\"\n          uppercase\n          class=\"text-muted-foreground shrink-0 tracking-[0.1em]\"\n        >\n          {{ i18n.t(\"total\") }}\n        </UiText>\n        <span\n          class=\"group flex h-[22px] min-w-0 flex-1 items-center justify-end font-mono text-[13px] leading-[22px] select-none\"\n          @click=\"copy(formattedTotal)\"\n        >\n          <span\n            class=\"group-hover:bg-primary truncate rounded-md px-1.5 transition-colors duration-100 group-hover:text-white\"\n          >\n            {{ formattedTotal }}\n          </span>\n        </span>\n      </div>\n    </transition>\n\n    <div\n      class=\"border-border flex h-[34px] shrink-0 items-center justify-between border-t px-2\"\n    >\n      <Button\n        variant=\"ghost\"\n        size=\"sm\"\n        @click=\"openDocumentation\"\n      >\n        {{ i18n.t(\"menu:help.documentation\") }}\n      </Button>\n      <UiActionButton\n        :tooltip=\"i18n.t('total')\"\n        @click=\"showTotal = !showTotal\"\n      >\n        <Sigma class=\"text-foreground h-3.5 w-3.5 transition-colors\" />\n      </UiActionButton>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.total-slide-enter-active,\n.total-slide-leave-active {\n  transition: all 0.15s ease;\n}\n\n.total-slide-enter-from,\n.total-slide-leave-to {\n  opacity: 0;\n  height: 0;\n  overflow: hidden;\n}\n</style>\n"
  },
  {
    "path": "src/renderer/components/math-notebook/SheetList.vue",
    "content": "<script setup lang=\"ts\">\nimport * as ContextMenu from '@/components/ui/shadcn/context-menu'\nimport { useMathNotebook } from '@/composables'\nimport { i18n } from '@/electron'\nimport { format } from 'date-fns'\nimport { FileText, Plus } from 'lucide-vue-next'\n\nconst {\n  sheets,\n  activeSheetId,\n  createSheet,\n  deleteSheet,\n  selectSheet,\n  renameSheet,\n} = useMathNotebook()\n\nconst editingId = ref<string | null>(null)\nconst editingName = ref('')\n\nfunction handleCreateSheet() {\n  const id = createSheet()\n  const sheet = sheets.value.find(sheet => sheet.id === id)\n\n  if (sheet) {\n    startRename(sheet.id, sheet.name)\n  }\n}\n\nfunction startRename(id: string, currentName: string) {\n  editingId.value = id\n  editingName.value = currentName\n  nextTick(() => {\n    const input = document.querySelector(\n      '.sheet-rename-input',\n    ) as HTMLInputElement\n    input?.focus()\n    input?.select()\n  })\n}\n\nfunction finishRename(id: string) {\n  if (editingName.value.trim()) {\n    renameSheet(id, editingName.value.trim())\n  }\n  editingId.value = null\n}\n\nfunction cancelRename() {\n  editingId.value = null\n}\n</script>\n\n<template>\n  <div class=\"flex h-full flex-col overflow-hidden\">\n    <div class=\"_mt-1 flex items-center justify-between px-2 pb-2 select-none\">\n      <UiText\n        as=\"div\"\n        variant=\"caption\"\n        weight=\"bold\"\n        uppercase\n      >\n        {{ i18n.t(\"mathNotebook.sheetList\") }}\n      </UiText>\n      <UiActionButton\n        :tooltip=\"i18n.t('mathNotebook.newSheet')\"\n        @click=\"handleCreateSheet\"\n      >\n        <Plus class=\"h-4 w-4\" />\n      </UiActionButton>\n    </div>\n\n    <div class=\"scrollbar min-h-0 flex-1 overflow-y-auto px-2\">\n      <ContextMenu.ContextMenu\n        v-for=\"sheet in sheets\"\n        :key=\"sheet.id\"\n      >\n        <ContextMenu.ContextMenuTrigger as-child>\n          <div\n            class=\"group mb-0.5 flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 transition-colors duration-75\"\n            :class=\"\n              activeSheetId === sheet.id\n                ? 'bg-accent text-accent-foreground'\n                : 'hover:bg-accent-hover'\n            \"\n            @click=\"selectSheet(sheet.id)\"\n            @dblclick=\"startRename(sheet.id, sheet.name)\"\n          >\n            <FileText\n              class=\"h-3.5 w-3.5 shrink-0 transition-colors\"\n              :class=\"\n                activeSheetId === sheet.id\n                  ? 'text-accent-foreground'\n                  : 'text-muted-foreground'\n              \"\n              :stroke-width=\"1.5\"\n            />\n            <div class=\"min-w-0 flex-1\">\n              <input\n                v-if=\"editingId === sheet.id\"\n                v-model=\"editingName\"\n                class=\"sheet-rename-input w-full bg-transparent text-[13px] outline-none\"\n                @blur=\"finishRename(sheet.id)\"\n                @keydown.enter=\"finishRename(sheet.id)\"\n                @keydown.escape=\"cancelRename\"\n                @click.stop\n              >\n              <template v-else>\n                <UiText\n                  as=\"div\"\n                  variant=\"sm\"\n                  class=\"truncate leading-tight\"\n                >\n                  {{ sheet.name }}\n                </UiText>\n                <UiText\n                  as=\"div\"\n                  variant=\"caption\"\n                  class=\"leading-tight transition-colors\"\n                  muted\n                >\n                  {{ format(new Date(sheet.updatedAt), \"dd.MM.yyyy\") }}\n                </UiText>\n              </template>\n            </div>\n          </div>\n        </ContextMenu.ContextMenuTrigger>\n\n        <ContextMenu.ContextMenuContent>\n          <ContextMenu.ContextMenuItem\n            @click=\"startRename(sheet.id, sheet.name)\"\n          >\n            {{ i18n.t(\"action.rename\") }}\n          </ContextMenu.ContextMenuItem>\n          <ContextMenu.ContextMenuSeparator />\n          <ContextMenu.ContextMenuItem @click=\"deleteSheet(sheet.id)\">\n            {{ i18n.t(\"action.delete.common\") }}\n          </ContextMenu.ContextMenuItem>\n        </ContextMenu.ContextMenuContent>\n      </ContextMenu.ContextMenu>\n\n      <div\n        v-if=\"sheets.length === 0\"\n        class=\"text-muted-foreground mt-8 text-center text-[12px]\"\n      >\n        {{ i18n.t(\"placeholder.emptySheetList\") }}\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/math-notebook/Workspace.vue",
    "content": "<script setup lang=\"ts\">\nimport type { LineResult } from '@/composables/math-notebook'\nimport { useMathEngine, useMathNotebook } from '@/composables'\nimport { i18n, ipc } from '@/electron'\nimport { Calculator } from 'lucide-vue-next'\n\ninterface CurrencyRatesPayload {\n  rates: Record<string, number>\n  source: 'live' | 'cache' | 'unavailable'\n}\n\nconst { activeSheet, updateSheet } = useMathNotebook()\nconst { evaluateDocument, setCurrencyServiceState, updateCurrencyRates }\n  = useMathEngine()\n\nconst scrollTop = ref(0)\nconst activeLine = ref(0)\nconst results = ref<LineResult[]>([])\nconst timeTick = ref(0)\nlet timeTickInterval: number | undefined\n\nconst content = computed({\n  get: () => activeSheet.value?.content || '',\n  set: (value: string) => {\n    if (activeSheet.value) {\n      updateSheet(activeSheet.value.id, value)\n    }\n  },\n})\n\nwatch(\n  [content, timeTick],\n  ([text]) => {\n    results.value = evaluateDocument(text)\n  },\n  { immediate: true },\n)\n\nonMounted(async () => {\n  timeTickInterval = window.setInterval(() => {\n    timeTick.value = Date.now()\n  }, 60_000)\n\n  try {\n    const payload = await ipc.invoke<null, CurrencyRatesPayload>(\n      'system:currency-rates',\n      null,\n    )\n    if (payload.source === 'unavailable') {\n      setCurrencyServiceState(\n        'unavailable',\n        i18n.t('mathNotebook.currencyUnavailable'),\n      )\n    }\n    else {\n      updateCurrencyRates(payload.rates)\n    }\n    results.value = evaluateDocument(content.value)\n  }\n  catch {\n    setCurrencyServiceState(\n      'unavailable',\n      i18n.t('mathNotebook.currencyUnavailable'),\n    )\n    results.value = evaluateDocument(content.value)\n  }\n})\n\nonBeforeUnmount(() => {\n  if (timeTickInterval !== undefined) {\n    window.clearInterval(timeTickInterval)\n  }\n})\n\nfunction handleScroll(top: number) {\n  scrollTop.value = top\n}\n\nfunction handleActiveLine(line: number) {\n  activeLine.value = line\n}\n</script>\n\n<template>\n  <div\n    v-if=\"activeSheet\"\n    class=\"grid h-full min-h-0 overflow-hidden\"\n    style=\"grid-template-columns: 1fr 1px 220px\"\n  >\n    <MathNotebookMathEditor\n      :key=\"activeSheet.id\"\n      v-model=\"content\"\n      @scroll=\"handleScroll\"\n      @active-line=\"handleActiveLine\"\n    />\n    <div class=\"bg-border/50\" />\n    <MathNotebookResultsPanel\n      :results=\"results\"\n      :scroll-top=\"scrollTop\"\n      :active-line=\"activeLine\"\n    />\n  </div>\n\n  <div\n    v-else\n    class=\"flex h-full flex-col items-center justify-center gap-4\"\n  >\n    <div class=\"text-muted-foreground/20\">\n      <Calculator\n        class=\"h-16 w-16\"\n        :stroke-width=\"1\"\n      />\n    </div>\n    <!-- <div class=\"text-center\">\n      <p class=\"text-muted-foreground/60 text-[13px]\">\n        {{ i18n.t(\"mathNotebook.newSheet\") }}\n      </p>\n    </div> -->\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/math-notebook/math-editor-highlight.ts",
    "content": "import {\n  currencySymbols,\n  knownUnitTokens,\n  MATH_UNARY_FUNCTIONS,\n  timeZoneAliases,\n} from '@/composables/math-notebook/math-engine/constants'\n\nconst assignmentPattern = /^\\s*([A-Z_]\\w*)\\s*=(?!=)/i\nconst highlightableTokenPattern = /R\\$|[$€£¥₽₴₩₹]|[A-Z_]\\w*/gi\n\nconst keywordTokens = new Set(['in', 'to', 'as', 'into', 'xor'])\n\nconst unitTokens = new Set([\n  ...knownUnitTokens,\n  'sq',\n  'square',\n  'cu',\n  'cubic',\n  'cb',\n])\n\nconst builtinTokens = new Set([\n  ...MATH_UNARY_FUNCTIONS,\n  'fromunix',\n  'root',\n  'log',\n  'now',\n  'time',\n  'prev',\n  'sum',\n  'total',\n  'avg',\n  'average',\n  'today',\n  'tomorrow',\n  'yesterday',\n  'bitand',\n  'bitor',\n  'bitxor',\n  'bitnot',\n  'unitvalue',\n  ...Object.keys(timeZoneAliases),\n])\n\nconst currencySymbolTokens = new Set(Object.keys(currencySymbols))\n\nfunction escapeHtml(text: string) {\n  return text\n    .replaceAll('&', '&amp;')\n    .replaceAll('<', '&lt;')\n    .replaceAll('>', '&gt;')\n    .replaceAll('\"', '&quot;')\n    .replaceAll('\\'', '&#39;')\n}\n\nfunction collectAssignedVariables(source: string) {\n  const variables = new Set<string>()\n\n  for (const line of source.split('\\n')) {\n    const match = line.match(assignmentPattern)\n    if (!match) {\n      continue\n    }\n\n    variables.add(match[1])\n  }\n\n  return variables\n}\n\nfunction resolveTokenClass(token: string, assignedVariables: Set<string>) {\n  if (assignedVariables.has(token)) {\n    return 'variable'\n  }\n\n  if (currencySymbolTokens.has(token)) {\n    return 'unit'\n  }\n\n  const normalized = token.toLowerCase()\n\n  if (keywordTokens.has(normalized)) {\n    return 'keyword'\n  }\n\n  if (unitTokens.has(normalized)) {\n    return 'unit'\n  }\n\n  if (builtinTokens.has(normalized)) {\n    return 'builtin'\n  }\n\n  return null\n}\n\nfunction highlightLine(line: string, assignedVariables: Set<string>) {\n  let html = ''\n  let lastIndex = 0\n\n  for (const match of line.matchAll(highlightableTokenPattern)) {\n    const [token] = match\n    const index = match.index ?? 0\n\n    if (index > lastIndex) {\n      html += escapeHtml(line.slice(lastIndex, index))\n    }\n\n    const tokenClass = resolveTokenClass(token, assignedVariables)\n    const escapedToken = escapeHtml(token)\n\n    html += tokenClass\n      ? `<span class=\"mn-editor-token mn-editor-token--${tokenClass}\">${escapedToken}</span>`\n      : escapedToken\n\n    lastIndex = index + token.length\n  }\n\n  if (lastIndex < line.length) {\n    html += escapeHtml(line.slice(lastIndex))\n  }\n\n  return html\n}\n\nexport function renderMathEditorHighlight(source: string) {\n  const assignedVariables = collectAssignedVariables(source)\n\n  return source\n    .split('\\n')\n    .map(line => highlightLine(line, assignedVariables))\n    .join('\\n')\n}\n"
  },
  {
    "path": "src/renderer/components/preferences/API.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { i18n, ipc, store } from '@/electron'\n\nconst apiPort = ref(store.preferences.get('apiPort'))\n\nwatch(apiPort, (value) => {\n  const port = Number(value)\n  if (port >= 1024 && port <= 65535) {\n    store.preferences.set('apiPort', port)\n  }\n})\n</script>\n\n<template>\n  <div>\n    <UiMenuFormSection :label=\"i18n.t('preferences:api.label')\">\n      <UiMenuFormItem :label=\"i18n.t('preferences:api.port.label')\">\n        <UiInput\n          v-model=\"apiPort\"\n          type=\"number\"\n          min=\"1024\"\n          max=\"65535\"\n          size=\"sm\"\n          class=\"w-32\"\n        />\n        <template #description>\n          {{ i18n.t(\"preferences:api.port.description\") }}\n        </template>\n        <template #actions>\n          <Button\n            variant=\"outline\"\n            @click=\"ipc.invoke('system:reload', null)\"\n          >\n            {{ i18n.t(\"action.reload.app\") }}\n          </Button>\n        </template>\n      </UiMenuFormItem>\n    </UiMenuFormSection>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/preferences/Appearance.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport * as Select from '@/components/ui/shadcn/select'\nimport { useTheme } from '@/composables'\nimport { i18n, ipc } from '@/electron'\n\nconst { currentThemeId, customThemes, loadCustomThemes, setTheme } = useTheme()\n\nconst builtInThemes = [\n  {\n    id: 'light',\n    label: i18n.t('preferences:appearance.theme.light'),\n  },\n  {\n    id: 'dark',\n    label: i18n.t('preferences:appearance.theme.dark'),\n  },\n  {\n    id: 'auto',\n    label: i18n.t('preferences:appearance.theme.system'),\n  },\n]\n\nconst customDarkThemes = computed(() => {\n  return customThemes.value.filter(theme => theme.type === 'dark')\n})\n\nconst customLightThemes = computed(() => {\n  return customThemes.value.filter(theme => theme.type === 'light')\n})\n\nasync function onThemeChange(id: string) {\n  await setTheme(id)\n}\n\nasync function openThemesDir() {\n  await ipc.invoke('theme:open-dir', null)\n}\n\nasync function createThemeTemplate() {\n  await ipc.invoke('theme:create-template', null)\n  await loadCustomThemes()\n}\n\nvoid loadCustomThemes()\n</script>\n\n<template>\n  <div>\n    <UiMenuFormSection :label=\"i18n.t('preferences:appearance.label')\">\n      <UiMenuFormItem :label=\"i18n.t('preferences:appearance.theme.label')\">\n        <Select.Select\n          :model-value=\"currentThemeId\"\n          @update:model-value=\"onThemeChange\"\n        >\n          <Select.SelectTrigger class=\"w-64\">\n            <Select.SelectValue />\n          </Select.SelectTrigger>\n          <Select.SelectContent>\n            <Select.SelectGroup>\n              <Select.SelectLabel>\n                {{ i18n.t(\"preferences:appearance.theme.builtIn\") }}\n              </Select.SelectLabel>\n              <Select.SelectItem\n                v-for=\"theme in builtInThemes\"\n                :key=\"theme.id\"\n                :value=\"theme.id\"\n              >\n                {{ theme.label }}\n              </Select.SelectItem>\n            </Select.SelectGroup>\n\n            <template v-if=\"customThemes.length\">\n              <Select.SelectSeparator />\n\n              <Select.SelectGroup v-if=\"customDarkThemes.length\">\n                <Select.SelectLabel>\n                  {{\n                    `${i18n.t(\"preferences:appearance.theme.custom\")} · ${i18n.t(\"preferences:appearance.theme.dark\")}`\n                  }}\n                </Select.SelectLabel>\n                <Select.SelectItem\n                  v-for=\"theme in customDarkThemes\"\n                  :key=\"theme.id\"\n                  :value=\"theme.id\"\n                >\n                  {{ theme.name }}\n                </Select.SelectItem>\n              </Select.SelectGroup>\n\n              <Select.SelectGroup v-if=\"customLightThemes.length\">\n                <Select.SelectLabel>\n                  {{\n                    `${i18n.t(\"preferences:appearance.theme.custom\")} · ${i18n.t(\"preferences:appearance.theme.light\")}`\n                  }}\n                </Select.SelectLabel>\n                <Select.SelectItem\n                  v-for=\"theme in customLightThemes\"\n                  :key=\"theme.id\"\n                  :value=\"theme.id\"\n                >\n                  {{ theme.name }}\n                </Select.SelectItem>\n              </Select.SelectGroup>\n            </template>\n          </Select.SelectContent>\n        </Select.Select>\n      </UiMenuFormItem>\n\n      <UiMenuFormItem :label=\"i18n.t('preferences:appearance.theme.themesDir')\">\n        <template #description>\n          {{ i18n.t(\"preferences:appearance.theme.dirDescription\") }}\n        </template>\n        <template #actions>\n          <div class=\"flex gap-2\">\n            <Button\n              variant=\"outline\"\n              @click=\"openThemesDir\"\n            >\n              {{ i18n.t(\"preferences:appearance.theme.openDir\") }}\n            </Button>\n            <Button @click=\"createThemeTemplate\">\n              {{ i18n.t(\"preferences:appearance.theme.createTemplate\") }}\n            </Button>\n          </div>\n        </template>\n      </UiMenuFormItem>\n    </UiMenuFormSection>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/preferences/Editor.vue",
    "content": "<script setup lang=\"ts\">\nimport * as Select from '@/components/ui/shadcn/select'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useEditor } from '@/composables'\nimport { i18n } from '@/electron'\n\nconst { settings } = useEditor()\n\nconst wrap = ref(settings.wrap ? 'true' : 'false')\n\nwatch(wrap, () => {\n  settings.wrap = wrap.value === 'true'\n})\n\nwatch(\n  settings,\n  () => {\n    if (settings.fontSize < 1)\n      settings.fontSize = 1\n  },\n  { deep: true },\n)\n</script>\n\n<template>\n  <div class=\"space-y-4\">\n    <UiMenuFormSection :label=\"i18n.t('preferences:editor.label')\">\n      <UiMenuFormItem :label=\"i18n.t('preferences:editor.fontSize')\">\n        <UiInput\n          v-model=\"settings.fontSize\"\n          type=\"number\"\n          size=\"sm\"\n        />\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:editor.fontFamily')\">\n        <UiInput\n          v-model=\"settings.fontFamily\"\n          size=\"sm\"\n        />\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:editor.tabSize')\">\n        <UiInput\n          v-model=\"settings.tabSize\"\n          type=\"number\"\n          size=\"sm\"\n        />\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:editor.wrap.label')\">\n        <Select.Select v-model=\"wrap\">\n          <Select.SelectTrigger class=\"w-64\">\n            <Select.SelectValue />\n          </Select.SelectTrigger>\n          <Select.SelectContent>\n            <Select.SelectItem value=\"true\">\n              {{ i18n.t(\"preferences:editor.wrap.wordWrap\") }}\n            </Select.SelectItem>\n            <Select.SelectItem value=\"false\">\n              {{ i18n.t(\"preferences:editor.wrap.off\") }}\n            </Select.SelectItem>\n          </Select.SelectContent>\n        </Select.Select>\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:editor.highlightLine')\">\n        <Switch\n          :checked=\"settings.highlightLine\"\n          @update:checked=\"settings.highlightLine = $event\"\n        />\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:editor.matchBrackets')\">\n        <Switch\n          :checked=\"settings.matchBrackets\"\n          @update:checked=\"settings.matchBrackets = $event\"\n        />\n      </UiMenuFormItem>\n    </UiMenuFormSection>\n    <UiMenuFormSection :label=\"i18n.t('preferences:editor.prettier.label')\">\n      <UiMenuFormItem\n        :label=\"i18n.t('preferences:editor.prettier.trailingComma.label')\"\n      >\n        <Select.Select v-model=\"settings.trailingComma\">\n          <Select.SelectTrigger class=\"w-64\">\n            <Select.SelectValue />\n          </Select.SelectTrigger>\n          <Select.SelectContent>\n            <Select.SelectItem value=\"all\">\n              {{ i18n.t(\"preferences:editor.prettier.trailingComma.all\") }}\n            </Select.SelectItem>\n            <Select.SelectItem value=\"none\">\n              {{ i18n.t(\"preferences:editor.prettier.trailingComma.none\") }}\n            </Select.SelectItem>\n            <Select.SelectItem value=\"es5\">\n              {{ i18n.t(\"preferences:editor.prettier.trailingComma.es5\") }}\n            </Select.SelectItem>\n          </Select.SelectContent>\n        </Select.Select>\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:editor.prettier.semi')\">\n        <Switch\n          :checked=\"settings.semi\"\n          @update:checked=\"settings.semi = $event\"\n        />\n      </UiMenuFormItem>\n      <UiMenuFormItem\n        :label=\"i18n.t('preferences:editor.prettier.singleQuote')\"\n      >\n        <Switch\n          :checked=\"settings.singleQuote\"\n          @update:checked=\"settings.singleQuote = $event\"\n        />\n      </UiMenuFormItem>\n    </UiMenuFormSection>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/preferences/Language.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport * as Select from '@/components/ui/shadcn/select'\nimport { i18n, ipc, store } from '@/electron'\nimport { language } from '~/main/i18n/language'\n\nconst languageOptions = Object.entries(language).map(([key, value]) => ({\n  label: value,\n  value: key,\n}))\n\nconst selectedLanguage = ref(store.preferences.get('language'))\n\nwatch(selectedLanguage, (value) => {\n  store.preferences.set('language', value)\n})\n</script>\n\n<template>\n  <div>\n    <UiMenuFormSection :label=\"i18n.t('preferences:language.label')\">\n      <UiMenuFormItem :label=\"i18n.t('preferences:language.label')\">\n        <template #description>\n          {{ i18n.t(\"messages:description.language\") }}\n        </template>\n        <Select.Select v-model=\"selectedLanguage\">\n          <Select.SelectTrigger class=\"w-64\">\n            <Select.SelectValue placeholder=\"Select a language\" />\n          </Select.SelectTrigger>\n          <Select.SelectContent>\n            <Select.SelectItem\n              v-for=\"i in languageOptions\"\n              :key=\"i.value\"\n              :value=\"i.value\"\n            >\n              {{ i.label }}\n            </Select.SelectItem>\n          </Select.SelectContent>\n        </Select.Select>\n        <template #actions>\n          <Button\n            variant=\"outline\"\n            @click=\"ipc.invoke('system:reload', null)\"\n          >\n            {{ i18n.t(\"action.reload.app\") }}\n          </Button>\n        </template>\n      </UiMenuFormItem>\n    </UiMenuFormSection>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/preferences/Storage.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Backup } from '~/main/db/types'\nimport type { PreferencesStore } from '~/main/store/types'\nimport type { DialogOptions } from '~/main/types/ipc'\nimport type { SnippetsCountsResponse } from '~/renderer/services/api/generated'\nimport { Button } from '@/components/ui/shadcn/button'\nimport * as Select from '@/components/ui/shadcn/select'\nimport { Switch } from '@/components/ui/shadcn/switch'\nimport { useDialog, useFolders, useSnippets, useSonner } from '@/composables'\nimport { i18n, ipc, store } from '@/electron'\nimport { format } from 'date-fns'\nimport { LoaderCircle, RotateCcw, Trash2 } from 'lucide-vue-next'\nimport { api } from '~/renderer/services/api'\n\nconst { sonner } = useSonner()\nconst { getFolders } = useFolders()\nconst { getSnippets } = useSnippets()\n\nfunction normalizeStorageEngine(\n  engine: string | undefined,\n): PreferencesStore['storage']['engine'] {\n  return engine === 'markdown' ? 'markdown' : 'sqlite'\n}\n\nfunction getDefaultVaultPath(baseStoragePath: string): string {\n  const separator = baseStoragePath.includes('\\\\') ? '\\\\' : '/'\n  const hasTrailingSeparator\n    = baseStoragePath.endsWith('\\\\') || baseStoragePath.endsWith('/')\n\n  return `${baseStoragePath}${hasTrailingSeparator ? '' : separator}markdown-vault`\n}\n\nconst storagePath = ref(store.preferences.get('storagePath'))\nconst storageSettings = reactive<PreferencesStore['storage']>({\n  engine: normalizeStorageEngine(\n    (store.preferences.get('storage') as Partial<PreferencesStore['storage']>)\n      ?.engine as string | undefined,\n  ),\n  vaultPath: null,\n  ...(store.preferences.get('storage') as Partial<PreferencesStore['storage']>),\n})\nstorageSettings.engine = normalizeStorageEngine(\n  storageSettings.engine as string,\n)\nconst backupSettings = reactive(store.preferences.get('backup'))\nconst backups = ref<Backup[]>([])\n\nconst isShowBackupList = ref(false)\nconst isRestoringBackup = ref(false)\n\nconst storageEngineOptions = [\n  { label: i18n.t('preferences:storage.engine.sqlite'), value: 'sqlite' },\n  { label: i18n.t('preferences:storage.engine.markdown'), value: 'markdown' },\n]\n\nconst isMarkdownEngine = computed(() => storageSettings.engine === 'markdown')\nconst isSqliteEngine = computed(() => storageSettings.engine === 'sqlite')\nconst effectiveVaultPath = computed(() => {\n  if (storageSettings.vaultPath && storageSettings.vaultPath.trim()) {\n    return storageSettings.vaultPath\n  }\n\n  return getDefaultVaultPath(storagePath.value)\n})\n\nconst backupItervalOptions = [\n  { label: i18n.t('preferences:storage.backup.interval.1'), value: 1 },\n  { label: i18n.t('preferences:storage.backup.interval.6'), value: 6 },\n  { label: i18n.t('preferences:storage.backup.interval.12'), value: 12 },\n  { label: i18n.t('preferences:storage.backup.interval.24'), value: 24 },\n]\n\nconst backupMaxBackupsOptions = [\n  { label: '5', value: 5 },\n  { label: '10', value: 10 },\n  { label: '15', value: 15 },\n  { label: '20', value: 20 },\n]\n\nconst counts = reactive<SnippetsCountsResponse>({\n  total: 0,\n  trash: 0,\n})\nconst isLoadingCounts = ref(false)\nlet loadingCountsTimer: ReturnType<typeof setTimeout> | null = null\n\nfunction showLoadingCounts() {\n  loadingCountsTimer = setTimeout(() => {\n    isLoadingCounts.value = true\n  }, 300)\n}\n\nfunction hideLoadingCounts() {\n  clearTimeout(loadingCountsTimer!)\n  isLoadingCounts.value = false\n}\n\nasync function getSnippetsCounts() {\n  showLoadingCounts()\n\n  try {\n    const { data } = await api.snippets.getSnippetsCounts()\n\n    counts.total = data.total\n    counts.trash = data.trash\n  }\n  catch (err) {\n    console.error(err)\n  }\n  finally {\n    hideLoadingCounts()\n  }\n}\n\ngetSnippetsCounts()\n\nasync function moveStorage() {\n  const result = await ipc.invoke<DialogOptions, string>(\n    'main-menu:open-dialog',\n    {\n      properties: ['openDirectory'],\n    },\n  )\n\n  if (result) {\n    try {\n      await ipc.invoke('db:move', result)\n      storagePath.value = result\n      sonner({ message: 'Storage successfully moved', type: 'success' })\n    }\n    catch (err) {\n      const e = err as Error\n      sonner({ message: e.message, type: 'error' })\n    }\n  }\n}\n\nasync function openStorage() {\n  const result = await ipc.invoke<DialogOptions, string>(\n    'main-menu:open-dialog',\n    {\n      properties: ['openDirectory'],\n    },\n  )\n\n  if (result) {\n    try {\n      await ipc.invoke('db:relaod', result)\n      storagePath.value = result\n      await getSnippetsCounts()\n      sonner({ message: 'Database successfully loaded', type: 'success' })\n    }\n    catch (err) {\n      const e = err as Error\n      sonner({ message: e.message, type: 'error' })\n    }\n  }\n}\n\nasync function onStorageEngineChange(value: string) {\n  storageSettings.engine = value as PreferencesStore['storage']['engine']\n  store.preferences.set('storage.engine', storageSettings.engine)\n\n  showLoadingCounts()\n\n  try {\n    if (storageSettings.engine === 'sqlite') {\n      await ipc.invoke('db:start-auto-backup', null)\n    }\n    else {\n      await ipc.invoke('db:stop-auto-backup', null)\n    }\n\n    await getFolders(false)\n    await getSnippets()\n\n    const { data } = await api.snippets.getSnippetsCounts()\n    counts.total = data.total\n    counts.trash = data.trash\n  }\n  finally {\n    hideLoadingCounts()\n  }\n}\n\nasync function openVaultStorage() {\n  const result = await ipc.invoke<DialogOptions, string>(\n    'main-menu:open-dialog',\n    {\n      properties: ['openDirectory', 'createDirectory'],\n    },\n  )\n\n  if (result) {\n    storageSettings.vaultPath = result\n    await nextTick()\n    showLoadingCounts()\n    try {\n      await getFolders(false)\n      await getSnippets()\n      const { data } = await api.snippets.getSnippetsCounts()\n      counts.total = data.total\n      counts.trash = data.trash\n    }\n    finally {\n      hideLoadingCounts()\n    }\n    sonner({\n      message: i18n.t('messages:success.vaultLoaded'),\n      type: 'success',\n    })\n  }\n}\n\nasync function migrateSqliteToMarkdown() {\n  const { confirm } = useDialog()\n  const isConfirmed = await confirm({\n    title: i18n.t('messages:confirm.migrateToMarkdown.0'),\n    content: i18n.t('messages:confirm.migrateToMarkdown.1'),\n  })\n\n  if (!isConfirmed) {\n    return\n  }\n\n  try {\n    const result = await ipc.invoke<\n      undefined,\n      { folders: number, snippets: number, tags: number }\n    >('db:migrate-to-markdown', undefined)\n\n    sonner({\n      message: i18n.t('messages:success.migrateToMarkdown', {\n        folders: result.folders,\n        snippets: result.snippets,\n        tags: result.tags,\n      }),\n      type: 'success',\n    })\n    await getSnippetsCounts()\n  }\n  catch (err) {\n    const e = err as Error\n    sonner({ message: e.message, type: 'error' })\n  }\n}\n\nasync function migrateMarkdownToSqlite() {\n  const { confirm } = useDialog()\n  const isConfirmed = await confirm({\n    title: i18n.t('messages:confirm.migrateToSqlite.0'),\n    content: i18n.t('messages:confirm.migrateToSqlite.1'),\n  })\n\n  if (!isConfirmed) {\n    return\n  }\n\n  try {\n    const result = await ipc.invoke<\n      undefined,\n      { folders: number, snippets: number, tags: number }\n    >('db:migrate-to-sqlite', undefined)\n\n    sonner({\n      message: i18n.t('messages:success.migrateToSqlite', {\n        folders: result.folders,\n        snippets: result.snippets,\n        tags: result.tags,\n      }),\n      type: 'success',\n    })\n    await getSnippetsCounts()\n  }\n  catch (err) {\n    const e = err as Error\n    sonner({ message: e.message, type: 'error' })\n  }\n}\n\nasync function migrateFromV3() {\n  const result = await ipc.invoke<DialogOptions, string>(\n    'main-menu:open-dialog',\n    {\n      properties: ['openFile'],\n      filters: [{ name: '*', extensions: ['json'] }],\n    },\n  )\n\n  const { confirm } = useDialog()\n\n  if (!result) {\n    return\n  }\n\n  const isConfirmed = await confirm({\n    title: i18n.t('messages:confirm.migrateDb.0'),\n    content: i18n.t('messages:confirm.migrateDb.1'),\n  })\n\n  if (isConfirmed) {\n    try {\n      await ipc.invoke('db:migrate', result)\n      await getSnippetsCounts()\n      sonner({ message: 'Migration successfully completed', type: 'success' })\n    }\n    catch (err) {\n      const e = err as Error\n      sonner({ message: e.message, type: 'error' })\n    }\n  }\n}\n\nasync function clearDatabase() {\n  const { confirm } = useDialog()\n\n  const isConfirmed = await confirm({\n    title: i18n.t('messages:confirm.clearDb'),\n    content: i18n.t('messages:warning.noUndo'),\n  })\n\n  if (isConfirmed) {\n    try {\n      await ipc.invoke('db:clear', null)\n      await getSnippetsCounts()\n      sonner({ message: 'Database successfully cleared', type: 'success' })\n    }\n    catch (err) {\n      const e = err as Error\n      sonner({ message: e.message, type: 'error' })\n    }\n  }\n}\n\nasync function createBackup() {\n  await ipc.invoke('db:backup', true)\n  sonner({\n    message: i18n.t('messages:success.backup.created'),\n    type: 'success',\n  })\n\n  if (isShowBackupList.value) {\n    await showBackupList()\n  }\n}\n\nasync function restoreBackup(backupPath: string) {\n  const { confirm } = useDialog()\n\n  const isConfirmed = await confirm({\n    title: i18n.t('messages:confirm.backup.restore'),\n    content: i18n.t('messages:warning.noUndo'),\n  })\n\n  if (!isConfirmed)\n    return\n\n  isRestoringBackup.value = true\n\n  try {\n    await ipc.invoke('db:restore', backupPath)\n    sonner({\n      message: i18n.t('messages:success.backup.restored'),\n      type: 'success',\n    })\n    await getSnippetsCounts()\n  }\n  catch (err) {\n    const e = err as Error\n    sonner({ message: e.message, type: 'error' })\n  }\n  finally {\n    isRestoringBackup.value = false\n  }\n}\n\nasync function deleteBackup(backupPath: string) {\n  const { confirm } = useDialog()\n\n  const isConfirmed = await confirm({\n    title: i18n.t('messages:confirm.backup.delete'),\n    content: i18n.t('messages:warning.noUndo'),\n  })\n\n  if (!isConfirmed)\n    return\n\n  await ipc.invoke('db:delete-backup', backupPath)\n  await showBackupList()\n  sonner({\n    message: i18n.t('messages:success.backup.deleted'),\n    type: 'success',\n  })\n}\n\nasync function moveBackupStorage() {\n  const result = await ipc.invoke<DialogOptions, string>(\n    'main-menu:open-dialog',\n    {\n      properties: ['openDirectory', 'createDirectory'],\n    },\n  )\n\n  if (result) {\n    await ipc.invoke('db:move-backup', result)\n    sonner({\n      message: i18n.t('messages:success.backup.moved'),\n      type: 'success',\n    })\n  }\n}\n\nasync function openBackupStorage() {\n  const result = await ipc.invoke<DialogOptions, string>(\n    'main-menu:open-dialog',\n    {\n      properties: ['openDirectory'],\n    },\n  )\n\n  if (result) {\n    backupSettings.path = result\n    store.preferences.set('backup', JSON.parse(JSON.stringify(backupSettings)))\n  }\n\n  if (isShowBackupList.value) {\n    await showBackupList()\n  }\n}\n\nasync function showBackupList() {\n  backups.value = (await ipc.invoke('db:backup-list', null)) as Backup[]\n  isShowBackupList.value = true\n}\n\nfunction onBackupIntervalChange(value: string) {\n  backupSettings.interval = Number.parseInt(value)\n  ipc.invoke('db:stop-auto-backup', null)\n  ipc.invoke('db:start-auto-backup', null)\n}\n\nfunction formatFileSize(bytes: number) {\n  if (bytes === 0)\n    return '0 Bytes'\n\n  const k = 1024\n  const sizes = ['Bytes', 'KB', 'MB', 'GB']\n  const i = Math.floor(Math.log(bytes) / Math.log(k))\n\n  return `${Number.parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`\n}\n\nfunction isManualBackup(backup: Backup) {\n  return backup.name.startsWith('massCode-manual-backup-')\n}\n\nfunction hideBackupList() {\n  isShowBackupList.value = false\n}\n\nwatch(\n  backupSettings,\n  () => {\n    store.preferences.set('backup', JSON.parse(JSON.stringify(backupSettings)))\n  },\n  { deep: true },\n)\n\nwatch(\n  storageSettings,\n  () => {\n    store.preferences.set(\n      'storage',\n      JSON.parse(JSON.stringify(storageSettings)),\n    )\n  },\n  { deep: true },\n)\n</script>\n\n<template>\n  <div class=\"space-y-4\">\n    <!-- Section 1: Main -->\n    <UiMenuFormSection :label=\"i18n.t('preferences:storage.section.main')\">\n      <UiMenuFormItem :label=\"i18n.t('preferences:storage.engine.label')\">\n        <Select.Select\n          :model-value=\"storageSettings.engine\"\n          @update:model-value=\"onStorageEngineChange\"\n        >\n          <Select.SelectTrigger class=\"w-64\">\n            <Select.SelectValue />\n          </Select.SelectTrigger>\n          <Select.SelectContent>\n            <Select.SelectItem\n              v-for=\"option in storageEngineOptions\"\n              :key=\"option.value\"\n              :value=\"option.value\"\n            >\n              {{ option.label }}\n            </Select.SelectItem>\n          </Select.SelectContent>\n        </Select.Select>\n        <template #description>\n          {{ i18n.t(\"messages:description.storageEngine\") }}\n        </template>\n      </UiMenuFormItem>\n      <UiMenuFormItem\n        v-if=\"isSqliteEngine\"\n        :label=\"i18n.t('path')\"\n      >\n        <UiInput\n          v-model=\"storagePath\"\n          disabled\n          size=\"sm\"\n        />\n        <template #actions>\n          <div class=\"flex gap-2\">\n            <Button\n              variant=\"outline\"\n              @click=\"moveStorage\"\n            >\n              {{ i18n.t(\"action.move.storage\") }}\n            </Button>\n            <Button\n              variant=\"outline\"\n              @click=\"openStorage\"\n            >\n              {{ i18n.t(\"action.open.storage\") }}\n            </Button>\n          </div>\n        </template>\n        <template #description>\n          {{ i18n.t(\"messages:description.storage\") }}\n        </template>\n      </UiMenuFormItem>\n      <UiMenuFormItem\n        v-if=\"isMarkdownEngine\"\n        :label=\"i18n.t('preferences:storage.vaultPath')\"\n      >\n        <UiInput\n          :model-value=\"effectiveVaultPath\"\n          disabled\n          size=\"sm\"\n        />\n        <template #actions>\n          <Button\n            variant=\"outline\"\n            @click=\"openVaultStorage\"\n          >\n            {{ i18n.t(\"action.select.directory\") }}\n          </Button>\n        </template>\n        <template #description>\n          {{ i18n.t(\"messages:description.storageVault\") }}\n        </template>\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:storage.count')\">\n        <LoaderCircle\n          v-if=\"isLoadingCounts\"\n          class=\"h-4 w-4 animate-spin\"\n        />\n        <template v-else>\n          {{ i18n.t(\"total\") }}: {{ counts.total }},\n          {{ i18n.t(\"sidebar.trash\") }}:\n          {{ counts.trash }}\n        </template>\n      </UiMenuFormItem>\n    </UiMenuFormSection>\n\n    <!-- Section 2: Migration -->\n    <UiMenuFormSection :label=\"i18n.t('preferences:storage.section.migration')\">\n      <UiMenuFormItem\n        v-if=\"isSqliteEngine\"\n        :label=\"i18n.t('preferences:storage.migrate')\"\n      >\n        <Button\n          variant=\"outline\"\n          @click=\"migrateFromV3\"\n        >\n          {{ i18n.t(\"action.migrate.fromV3\") }}\n        </Button>\n        <template #description>\n          {{ i18n.t(\"messages:description.migrate.fromV3\") }}\n        </template>\n      </UiMenuFormItem>\n      <UiMenuFormItem\n        v-if=\"isSqliteEngine\"\n        :label=\"i18n.t('preferences:storage.migrateSqliteToMarkdown')\"\n      >\n        <Button\n          variant=\"outline\"\n          @click=\"migrateSqliteToMarkdown\"\n        >\n          {{ i18n.t(\"preferences:storage.migrateSqliteToMarkdown\") }}\n        </Button>\n      </UiMenuFormItem>\n      <UiMenuFormItem\n        v-if=\"isSqliteEngine\"\n        :label=\"i18n.t('preferences:storage.vaultPath')\"\n      >\n        <UiInput\n          :model-value=\"effectiveVaultPath\"\n          disabled\n          size=\"sm\"\n        />\n        <template #actions>\n          <Button\n            variant=\"outline\"\n            @click=\"openVaultStorage\"\n          >\n            {{ i18n.t(\"action.select.directory\") }}\n          </Button>\n        </template>\n        <template #description>\n          {{ i18n.t(\"messages:description.storageVault\") }}\n        </template>\n      </UiMenuFormItem>\n      <UiMenuFormItem\n        v-if=\"isMarkdownEngine\"\n        :label=\"i18n.t('preferences:storage.migrateMarkdownToSqlite')\"\n      >\n        <Button\n          variant=\"outline\"\n          @click=\"migrateMarkdownToSqlite\"\n        >\n          {{ i18n.t(\"preferences:storage.migrateMarkdownToSqlite\") }}\n        </Button>\n      </UiMenuFormItem>\n    </UiMenuFormSection>\n\n    <!-- Section 3: Danger Zone (SQLite only) -->\n    <UiMenuFormSection\n      v-if=\"isSqliteEngine\"\n      :label=\"i18n.t('preferences:storage.section.dangerZone')\"\n      variant=\"danger\"\n    >\n      <UiMenuFormItem :label=\"i18n.t('preferences:storage.clearDatabase')\">\n        <Button\n          variant=\"destructive\"\n          @click=\"clearDatabase\"\n        >\n          {{ i18n.t(\"action.delete.allData\") }}\n        </Button>\n        <template #description>\n          {{ i18n.t(\"messages:warning.clearDb\") }}\n        </template>\n      </UiMenuFormItem>\n    </UiMenuFormSection>\n\n    <!-- Section 4: Backup (SQLite only) -->\n    <UiMenuFormSection\n      v-if=\"isSqliteEngine\"\n      :label=\"i18n.t('preferences:storage.backup.label')\"\n    >\n      <UiMenuFormItem :label=\"i18n.t('path')\">\n        <UiInput\n          v-model=\"backupSettings.path\"\n          disabled\n          size=\"sm\"\n        />\n        <template #actions>\n          <div class=\"flex gap-2\">\n            <Button\n              variant=\"outline\"\n              @click=\"moveBackupStorage\"\n            >\n              {{ i18n.t(\"action.move.storage\") }}\n            </Button>\n            <Button\n              variant=\"outline\"\n              @click=\"openBackupStorage\"\n            >\n              {{ i18n.t(\"action.open.storage\") }}\n            </Button>\n          </div>\n        </template>\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:storage.backup.enabled')\">\n        <Switch\n          :checked=\"backupSettings.enabled\"\n          @update:checked=\"backupSettings.enabled = $event\"\n        />\n      </UiMenuFormItem>\n      <UiMenuFormItem\n        :label=\"i18n.t('preferences:storage.backup.interval.label')\"\n      >\n        <Select.Select\n          :model-value=\"backupSettings.interval.toString()\"\n          @update:model-value=\"onBackupIntervalChange\"\n        >\n          <Select.SelectTrigger class=\"w-64\">\n            <Select.SelectValue />\n          </Select.SelectTrigger>\n          <Select.SelectContent>\n            <Select.SelectItem\n              v-for=\"option in backupItervalOptions\"\n              :key=\"option.value\"\n              :value=\"option.value.toString()\"\n            >\n              {{ option.label }}\n            </Select.SelectItem>\n          </Select.SelectContent>\n        </Select.Select>\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:storage.backup.maxBackups')\">\n        <Select.Select\n          :model-value=\"backupSettings.maxBackups.toString()\"\n          @update:model-value=\"\n            backupSettings.maxBackups = Number.parseInt($event)\n          \"\n        >\n          <Select.SelectTrigger class=\"w-64\">\n            <Select.SelectValue />\n          </Select.SelectTrigger>\n          <Select.SelectContent>\n            <Select.SelectItem\n              v-for=\"option in backupMaxBackupsOptions\"\n              :key=\"option.value\"\n              :value=\"option.value.toString()\"\n            >\n              {{ option.label }}\n            </Select.SelectItem>\n          </Select.SelectContent>\n        </Select.Select>\n        <template #description>\n          {{ i18n.t(\"messages:description.backup.manual\") }}\n        </template>\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:storage.backup.createNow')\">\n        <Button\n          variant=\"outline\"\n          @click=\"createBackup\"\n        >\n          {{ i18n.t(\"action.backup.create\") }}\n        </Button>\n      </UiMenuFormItem>\n      <UiMenuFormItem :label=\"i18n.t('preferences:storage.backup.list')\">\n        <div class=\"flex gap-2\">\n          <Button\n            variant=\"outline\"\n            @click=\"showBackupList\"\n          >\n            {{ i18n.t(\"action.backup.showList\") }}\n          </Button>\n          <Button\n            v-if=\"isShowBackupList\"\n            variant=\"outline\"\n            @click=\"hideBackupList\"\n          >\n            {{ i18n.t(\"action.hide\") }}\n          </Button>\n        </div>\n        <div\n          v-if=\"isShowBackupList\"\n          class=\"space-y-2\"\n        >\n          <div\n            v-for=\"backup in backups\"\n            :key=\"backup.path\"\n            class=\"border-border flex items-center justify-between rounded-lg border p-3\"\n          >\n            <div class=\"flex-1\">\n              <UiText\n                as=\"div\"\n                variant=\"base\"\n                weight=\"medium\"\n                class=\"tabular-nums\"\n              >\n                {{ format(backup.createdAt, \"dd.MM.yyyy HH:mm:ss\") }} •\n                {{ formatFileSize(backup.size) }}\n                {{ isManualBackup(backup) ? \"(manual)\" : \"\" }}\n              </UiText>\n            </div>\n\n            <UiActionButton\n              :tooltip=\"i18n.t('action.delete.common')\"\n              @click=\"deleteBackup(backup.path)\"\n            >\n              <Trash2 class=\"h-3 w-3 text-red-500\" />\n            </UiActionButton>\n            <UiActionButton\n              :tooltip=\"i18n.t('action.backup.restore')\"\n              :disabled=\"isRestoringBackup\"\n              @click=\"restoreBackup(backup.path)\"\n            >\n              <RotateCcw class=\"h-3 w-3\" />\n            </UiActionButton>\n            <!-- <Button\n              size=\"sm\"\n\n              :disabled=\"isRestoringBackup\"\n              @click=\"restoreBackup(backup.path)\"\n            >\n              {{ i18n.t('action.backup.restore') }}\n            </Button> -->\n          </div>\n        </div>\n      </UiMenuFormItem>\n    </UiMenuFormSection>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/preferences/keys.ts",
    "content": "import type { InjectionKey, ShallowRef } from 'vue'\n\nexport interface PreferencesInjection {\n  scrollRef: Readonly<ShallowRef<HTMLElement | null>>\n}\n\nexport const preferencesKeys: InjectionKey<PreferencesInjection>\n  = Symbol('preferences')\n"
  },
  {
    "path": "src/renderer/components/sidebar/Sidebar.vue",
    "content": "<script setup lang=\"ts\">\nimport { i18n } from '@/electron'\n</script>\n\n<template>\n  <div\n    data-sidebar\n    class=\"flex h-full flex-col px-1 pt-[var(--content-top-offset)]\"\n  >\n    <div class=\"truncate px-1 pb-2 font-bold select-none\">\n      {{ i18n.t(\"sidebar.title\") }}\n    </div>\n    <UiText\n      as=\"div\"\n      variant=\"caption\"\n      weight=\"bold\"\n      uppercase\n      class=\"flex gap-1 pb-1 pl-1 select-none\"\n    >\n      {{ i18n.t(\"sidebar.library\") }}\n    </UiText>\n    <SidebarLibrary />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/sidebar/folders/Tree.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TreeNode as TreeNodeType } from '@/components/ui/tree/types'\nimport type { Node, Position } from './types'\nimport { languages } from '@/components/editor/grammars/languages'\nimport * as ContextMenu from '@/components/ui/shadcn/context-menu'\nimport { Tree as UiTree } from '@/components/ui/tree'\nimport { useApp, useDialog, useFolders, useSnippets } from '@/composables'\nimport { i18n } from '@/electron'\nimport { scrollToElement } from '@/utils'\nimport { Folder } from 'lucide-vue-next'\nimport CustomIcons from './custom-icons/CustomIcons.vue'\n\ninterface Props {\n  modelValue: Node[]\n  selectedId?: string | number\n}\n\ninterface Emits {\n  (e: 'update:modelValue', value: Node[]): void\n  (e: 'clickNode', value: { id: number, event?: MouseEvent }): void\n  (\n    e: 'dragNode',\n    value: { nodes: Node[], target: Node, position: Position },\n  ): void\n  (e: 'toggleNode', value: Node): void\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<Emits>()\n\nconst {\n  createFolderAndSelect,\n  deleteFolder,\n  folders,\n  updateFolder,\n  getFolderByIdFromTree,\n  getFolders,\n  selectedFolderIds,\n  clearFolderSelection,\n  selectFolder,\n} = useFolders()\nconst {\n  state,\n  highlightedFolderIds,\n  highlightedSnippetIds,\n  highlightedTagId,\n  focusedFolderId,\n} = useApp()\nconst {\n  clearSnippetsState,\n  displayedSnippets,\n  updateSnippets,\n  selectFirstSnippet,\n} = useSnippets()\n\n// --- Data mapping ---\n\nfunction mapToTreeNode(folder: Node): TreeNodeType {\n  return {\n    id: folder.id,\n    label: folder.name,\n    isExpanded: Boolean(folder.isOpen),\n    children: folder.children?.map(mapToTreeNode) || [],\n  }\n}\n\nconst treeData = computed(() => props.modelValue.map(mapToTreeNode))\n\nconst selectedIds = computed({\n  get: () => selectedFolderIds.value as (string | number)[],\n  set: (val) => {\n    selectedFolderIds.value = val as number[]\n  },\n})\n\nconst editableId = ref<string | number | null>(null)\n\nconst focusedId = computed({\n  get: () => focusedFolderId.value as string | number | undefined,\n  set: (val) => {\n    focusedFolderId.value = val as number | undefined\n  },\n})\n\nconst highlightedIds = computed({\n  get: () => highlightedFolderIds.value as Set<string | number>,\n  set: (val) => {\n    highlightedFolderIds.value.clear()\n    val.forEach(id => highlightedFolderIds.value.add(id as number))\n  },\n})\n\n// --- Context menu state ---\n\nconst contextNode = ref<Node | null>(null)\n\nconst isContextMultiSelection = computed(() => {\n  if (!contextNode.value)\n    return false\n  if (selectedFolderIds.value.length <= 1)\n    return false\n  return selectedFolderIds.value.includes(contextNode.value.id)\n})\n\nconst contextNodeDefaultLanguage = computed(() => {\n  if (!contextNode.value)\n    return ''\n  return (\n    getFolderByIdFromTree(folders.value, contextNode.value.id)\n      ?.defaultLanguage || ''\n  )\n})\n\n// --- Event handlers ---\n\nfunction onClickNode({\n  node,\n  event,\n}: {\n  node: TreeNodeType\n  event?: MouseEvent\n}) {\n  highlightedFolderIds.value.clear()\n  highlightedTagId.value = undefined\n  state.tagId = undefined\n  emit('clickNode', { id: Number(node.id), event })\n}\n\nfunction onDblclickNode(node: TreeNodeType) {\n  setTimeout(() => {\n    editableId.value = node.id\n  }, 100)\n}\n\nfunction onToggleNode(node: TreeNodeType) {\n  const folderNode = getFolderByIdFromTree(\n    folders.value,\n    Number(node.id),\n  ) as Node\n  if (folderNode) {\n    emit('toggleNode', folderNode)\n  }\n}\n\nfunction onDragNode({\n  nodes,\n  target,\n  position,\n}: {\n  nodes: TreeNodeType[]\n  target: TreeNodeType\n  position: Position\n}) {\n  const folderNodes = nodes\n    .map(n => getFolderByIdFromTree(folders.value, Number(n.id)))\n    .filter((n): n is Node => Boolean(n))\n  const folderTarget = getFolderByIdFromTree(\n    folders.value,\n    Number(target.id),\n  ) as Node\n\n  if (folderNodes.length && folderTarget) {\n    emit('dragNode', { nodes: folderNodes, target: folderTarget, position })\n  }\n}\n\nasync function onExternalDrop({\n  data,\n  target,\n}: {\n  data: DataTransfer\n  target: TreeNodeType\n  position: Position\n}) {\n  const snippetIds = JSON.parse(data.getData('snippetIds') || '[]')\n  const snippets = displayedSnippets.value?.filter(s =>\n    snippetIds.includes(s.id),\n  )\n\n  if (!snippets?.length)\n    return\n\n  const folderId = Number(target.id)\n\n  if (snippets.every(s => s.folder?.id === folderId && !s.isDeleted))\n    return\n\n  const ids = snippets.map(s => s.id)\n  const updateData = snippets.map(() => ({\n    folderId,\n    isDeleted: 0,\n  }))\n\n  await updateSnippets(ids, updateData)\n\n  if (state.snippetId && ids.includes(state.snippetId)) {\n    selectFirstSnippet()\n  }\n}\n\nfunction onContextMenu({\n  node,\n}: {\n  node: TreeNodeType\n  selectedNodes: TreeNodeType[]\n}) {\n  contextNode.value = getFolderByIdFromTree(\n    folders.value,\n    Number(node.id),\n  ) as Node\n  highlightedSnippetIds.value.clear()\n}\n\nfunction onUpdateLabel({ node, value }: { node: TreeNodeType, value: string }) {\n  updateFolder(Number(node.id), { name: value })\n  editableId.value = null\n}\n\nfunction onCancelEdit() {\n  editableId.value = null\n}\n\n// --- Context menu actions ---\n\nasync function onDeleteFolder() {\n  if (!contextNode.value)\n    return\n\n  const { confirm } = useDialog()\n  const activeBeforeDelete = state.folderId\n  const targetIds = selectedFolderIds.value.includes(contextNode.value.id)\n    ? [...selectedFolderIds.value]\n    : [contextNode.value.id]\n  const folderName = getFolderByIdFromTree(\n    folders.value,\n    contextNode.value.id,\n  )?.name\n\n  const isConfirmed = await confirm({\n    title:\n      targetIds.length > 1\n        ? i18n.t('messages:confirm.delete', {\n            name: i18n.t('sidebar.folders'),\n          })\n        : i18n.t('messages:confirm.delete', { name: folderName }),\n    description: i18n.t('messages:warning:allSnippetsMoveToTrash'),\n  })\n\n  if (!isConfirmed)\n    return\n\n  await Promise.all(targetIds.map(id => deleteFolder(id, false)))\n  await getFolders(false)\n\n  if (activeBeforeDelete && targetIds.includes(activeBeforeDelete)) {\n    clearSnippetsState()\n    const fallbackId = selectedFolderIds.value[0]\n\n    if (fallbackId) {\n      await selectFolder(fallbackId)\n      scrollToElement(`[id=\"${fallbackId}\"]`)\n    }\n    else {\n      clearFolderSelection()\n    }\n  }\n}\n\nfunction onRenameFolder() {\n  setTimeout(() => {\n    if (!contextNode.value)\n      return\n    editableId.value = contextNode.value.id\n  }, 100)\n}\n\nfunction onSelectLanguage(language: string) {\n  if (!contextNode.value)\n    return\n  updateFolder(contextNode.value.id, { defaultLanguage: language })\n}\n\nfunction scrollToSelectedLanguage(el: any, isSelected: boolean) {\n  if (isSelected && el) {\n    nextTick(() => {\n      const element = el.$el || el\n      if (element instanceof HTMLElement) {\n        element.scrollIntoView({ block: 'center' })\n      }\n    })\n  }\n}\n\nfunction onSetCustomIcon() {\n  if (!contextNode.value)\n    return\n\n  const { showDialog } = useDialog()\n\n  showDialog({\n    title: i18n.t('action.setCustomIcon'),\n    content: h(CustomIcons, {\n      nodeId: contextNode.value.id,\n    }),\n  })\n}\n\nasync function onRemoveCustomIcon() {\n  if (!contextNode.value)\n    return\n\n  updateFolder(contextNode.value.id, { icon: null })\n  await getFolders()\n}\n</script>\n\n<template>\n  <div class=\"h-full min-h-0\">\n    <ContextMenu.ContextMenu>\n      <ContextMenu.ContextMenuTrigger as-child>\n        <UiTree\n          :model-value=\"treeData\"\n          :selected-ids=\"selectedIds\"\n          :editable-id=\"editableId\"\n          :focused-id=\"focusedId\"\n          :highlighted-ids=\"highlightedIds\"\n          @click-node=\"onClickNode\"\n          @dblclick-node=\"onDblclickNode\"\n          @toggle-node=\"onToggleNode\"\n          @drag-node=\"onDragNode\"\n          @external-drop=\"onExternalDrop\"\n          @context-menu=\"onContextMenu\"\n          @update-label=\"onUpdateLabel\"\n          @cancel-edit=\"onCancelEdit\"\n          @update:selected-ids=\"selectedIds = $event\"\n          @update:editable-id=\"editableId = $event\"\n          @update:focused-id=\"focusedId = $event\"\n          @update:highlighted-ids=\"highlightedIds = $event\"\n        >\n          <template #icon=\"{ node }\">\n            <div class=\"mr-1.5 flex flex-shrink-0 items-center\">\n              <UiFolderIcon\n                v-if=\"getFolderByIdFromTree(folders, Number(node.id))?.icon\"\n                :name=\"getFolderByIdFromTree(folders, Number(node.id))!.icon!\"\n              />\n              <Folder\n                v-else\n                class=\"h-4 w-4\"\n              />\n            </div>\n          </template>\n        </UiTree>\n      </ContextMenu.ContextMenuTrigger>\n      <ContextMenu.ContextMenuContent>\n        <template v-if=\"isContextMultiSelection\">\n          <ContextMenu.ContextMenuItem @click=\"onDeleteFolder\">\n            {{ i18n.t(\"action.delete.common\") }}\n          </ContextMenu.ContextMenuItem>\n        </template>\n        <template v-else>\n          <ContextMenu.ContextMenuItem\n            @click=\"createFolderAndSelect(contextNode?.id)\"\n          >\n            {{ i18n.t(\"action.new.folder\") }}\n          </ContextMenu.ContextMenuItem>\n          <ContextMenu.ContextMenuSeparator />\n          <ContextMenu.ContextMenuItem @click=\"onRenameFolder\">\n            {{ i18n.t(\"action.rename\") }}\n          </ContextMenu.ContextMenuItem>\n          <ContextMenu.ContextMenuItem @click=\"onDeleteFolder\">\n            {{ i18n.t(\"action.delete.common\") }}\n          </ContextMenu.ContextMenuItem>\n          <ContextMenu.ContextMenuSeparator />\n          <ContextMenu.ContextMenuItem @click=\"onSetCustomIcon\">\n            {{ i18n.t(\"action.setCustomIcon\") }}\n          </ContextMenu.ContextMenuItem>\n          <ContextMenu.ContextMenuItem\n            v-if=\"contextNode?.icon\"\n            @click=\"onRemoveCustomIcon\"\n          >\n            {{ i18n.t(\"action.removeCustomIcon\") }}\n          </ContextMenu.ContextMenuItem>\n          <ContextMenu.ContextMenuSeparator />\n          <ContextMenu.ContextMenuSub>\n            <ContextMenu.ContextMenuSubTrigger>\n              {{ i18n.t(\"action.defaultLanguage\") }}\n            </ContextMenu.ContextMenuSubTrigger>\n            <ContextMenu.ContextMenuSubContent>\n              <div class=\"scrollbar max-h-[250px] min-h-0 overflow-y-auto\">\n                <ContextMenu.ContextMenuCheckboxItem\n                  v-for=\"language in languages\"\n                  :key=\"language.value\"\n                  :ref=\"\n                    (el) =>\n                      scrollToSelectedLanguage(\n                        el,\n                        contextNodeDefaultLanguage === language.value,\n                      )\n                  \"\n                  :checked=\"contextNodeDefaultLanguage === language.value\"\n                  @click=\"onSelectLanguage(language.value)\"\n                >\n                  {{ language.name }}\n                </ContextMenu.ContextMenuCheckboxItem>\n              </div>\n            </ContextMenu.ContextMenuSubContent>\n          </ContextMenu.ContextMenuSub>\n        </template>\n      </ContextMenu.ContextMenuContent>\n    </ContextMenu.ContextMenu>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/sidebar/folders/custom-icons/CustomIcons.vue",
    "content": "<script setup lang=\"ts\">\nimport UiInput from '~/renderer/components/ui/input/Input.vue'\nimport { useFolders } from '~/renderer/composables'\nimport { icons, iconsSet } from './icons'\n\ninterface Props {\n  nodeId: number\n}\n\nconst props = defineProps<Props>()\n\nconst { updateFolder, getFolders } = useFolders()\n\nconst search = ref('')\n\nconst containerRef = useTemplateRef('containerRef')\n\nconst iconsBySearch = computed(() => {\n  if (search.value === '') {\n    return icons\n  }\n  return icons.filter(i => i.name?.includes(search.value.toLowerCase()))\n})\n\nconst selectedIndex = ref(-1)\n\nfunction onKeydown(e: KeyboardEvent) {\n  const len = iconsBySearch.value.length\n\n  if (e.key === 'ArrowDown') {\n    e.preventDefault()\n    if (selectedIndex.value + 1 < len) {\n      selectedIndex.value += 1\n    }\n  }\n  else if (e.key === 'ArrowUp') {\n    e.preventDefault()\n    if (selectedIndex.value - 1 >= 0) {\n      selectedIndex.value -= 1\n    }\n  }\n  else if (e.key === 'Enter') {\n    e.preventDefault()\n    onSet(iconsBySearch.value[selectedIndex.value].name!)\n  }\n}\n\nasync function onSet(name: string) {\n  if (!props.nodeId)\n    return\n\n  await updateFolder(props.nodeId, {\n    icon: name,\n  })\n  await getFolders()\n\n  containerRef.value?.dispatchEvent(\n    new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }),\n  )\n}\n\nwatch(\n  () => search.value,\n  () => {\n    selectedIndex.value = -1\n  },\n)\n\nwatch(\n  () => iconsBySearch.value,\n  () => {\n    if (selectedIndex.value >= iconsBySearch.value.length) {\n      selectedIndex.value = -1\n    }\n  },\n  { immediate: true },\n)\n\nwatch(selectedIndex, () => {\n  if (selectedIndex.value >= 0) {\n    const el = document.getElementById(`icon-${selectedIndex.value}`)\n    el?.scrollIntoView({\n      behavior: 'auto',\n      block: 'nearest',\n    })\n  }\n})\n</script>\n\n<template>\n  <div\n    ref=\"containerRef\"\n    class=\"space-y-5\"\n  >\n    <div>\n      <UiInput\n        v-model=\"search\"\n        placeholder=\"Search...\"\n        @keydown=\"onKeydown\"\n      />\n    </div>\n    <div class=\"scrollbar max-h-[200px] overflow-y-auto\">\n      <div class=\"grid auto-rows-[36px] grid-cols-8 gap-2\">\n        <div\n          v-for=\"(icon, index) in iconsBySearch\"\n          :id=\"`icon-${index}`\"\n          :key=\"icon.name\"\n          class=\"user-select-none flex items-center justify-center rounded-md\"\n          :class=\"index === selectedIndex ? 'bg-muted' : 'hover:bg-muted'\"\n          @click=\"onSet(icon.name!)\"\n        >\n          <span\n            class=\"*:size-5\"\n            v-html=\"iconsSet[icon.name!]\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/sidebar/folders/custom-icons/icons.ts",
    "content": "const files = import.meta.glob('@/assets/svg/icons/**.svg', {\n  as: 'raw',\n  eager: true,\n})\nconst re = /\\/([^/]+)\\.svg$/\n\nconst iconsSet: Record<string, string> = {}\n\nconst icons = Object.entries(files).map(([k, v]) => {\n  const name = k.match(re)?.[1]\n  if (name) {\n    iconsSet[name] = v as unknown as string\n  }\n  return {\n    name,\n    source: v,\n  }\n})\n\nexport { icons, iconsSet }\n"
  },
  {
    "path": "src/renderer/components/sidebar/folders/types/index.ts",
    "content": "import type { FoldersItem } from '~/main/api/dto/folders'\n\nexport type Position = 'after' | 'before' | 'center'\n\nexport interface Node extends FoldersItem {\n  children: Node[]\n}\n\nexport interface Store {\n  dragNode?: Node\n  dragNodes?: Node[]\n  dragEnterNode?: Node\n}\n"
  },
  {
    "path": "src/renderer/components/sidebar/library/Item.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SnippetsQuery } from '~/renderer/services/api/generated'\nimport { useApp, useFolders, useSnippets } from '@/composables'\nimport { LibraryFilter } from '@/composables/types'\nimport { onClickOutside } from '@vueuse/core'\n\nconst props = defineProps<Props>()\n\ninterface Props {\n  id: (typeof LibraryFilter)[keyof typeof LibraryFilter]\n  name: string\n  icon: Component\n}\n\nconst { state } = useApp()\nconst { clearFolderSelection } = useFolders()\n\nconst { getSnippets, selectFirstSnippet, clearSearch, isRestoreStateBlocked }\n  = useSnippets()\n\nconst isFocused = ref(false)\nconst itemRef = ref<HTMLElement>()\nconst isSelected = computed(() => state.libraryFilter === props.id)\n\nasync function onItemClick(\n  id: (typeof LibraryFilter)[keyof typeof LibraryFilter],\n) {\n  isFocused.value = true\n  isRestoreStateBlocked.value = true\n  clearSearch()\n\n  state.libraryFilter = id\n  clearFolderSelection()\n  state.tagId = undefined\n\n  const query: SnippetsQuery = {}\n\n  if (id === LibraryFilter.Favorites) {\n    query.isFavorites = 1\n  }\n  else if (id === LibraryFilter.Trash) {\n    query.isDeleted = 1\n  }\n  else if (id === LibraryFilter.All) {\n    query.isDeleted = 0\n  }\n  else if (id === LibraryFilter.Inbox) {\n    query.isInbox = 1\n  }\n\n  await getSnippets(query)\n  selectFirstSnippet()\n}\n\nonClickOutside(itemRef, () => {\n  isFocused.value = false\n})\n</script>\n\n<template>\n  <div\n    ref=\"itemRef\"\n    data-sidebar-item\n    :data-selected=\"isSelected ? 'true' : undefined\"\n    :data-focused=\"isFocused ? 'true' : undefined\"\n    class=\"data-[selected=true]:bg-accent data-[focused=true]:bg-primary! data-[focused=true]:text-primary-foreground rounded-md\"\n    :class=\"{ 'hover:bg-accent-hover': !isSelected && !isFocused }\"\n    @click=\"onItemClick(id)\"\n  >\n    <div class=\"ml-5.5 flex items-center\">\n      <component\n        :is=\"icon\"\n        class=\"mr-0.5 h-4 w-4\"\n      />\n      <div class=\"ml-1 select-none\">\n        {{ name }}\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/sidebar/library/Library.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Node } from '@/components/sidebar/folders/types'\nimport Tree from '@/components/sidebar/folders/Tree.vue'\nimport LibraryItem from '@/components/sidebar/library/Item.vue'\nimport * as ContextMenu from '@/components/ui/shadcn/context-menu'\nimport * as Resizable from '@/components/ui/shadcn/resizable'\nimport { useApp, useFolders, useSnippets } from '@/composables'\nimport { LibraryFilter } from '@/composables/types'\nimport { scrollToSnippetIndex } from '@/composables/useSnippetScroller'\nimport { i18n, store } from '@/electron'\nimport { scrollToElement } from '@/utils'\nimport { Archive, Inbox, Plus, Star, Trash } from 'lucide-vue-next'\nimport { APP_DEFAULTS } from '~/main/store/constants'\n\nconst { state, isAppLoading, isCodeSpaceInitialized } = useApp()\nconst {\n  getSnippets,\n  selectFirstSnippet,\n  emptyTrash,\n  isRestoreStateBlocked,\n  clearSearch,\n  displayedSnippets,\n} = useSnippets()\nconst {\n  getFolders,\n  folders,\n  selectFolder,\n  createFolderAndSelect,\n  updateFolder,\n  selectedFolderIds,\n} = useFolders()\n\nconst MIN_TAGS_PANEL_SIZE = 12\n\nfunction normalizeTagsListHeight(value: number | undefined) {\n  if (typeof value !== 'number' || Number.isNaN(value)) {\n    return APP_DEFAULTS.sizes.tagsList\n  }\n\n  return Math.max(\n    MIN_TAGS_PANEL_SIZE,\n    Math.min(100 - MIN_TAGS_PANEL_SIZE, value),\n  )\n}\n\nconst tagsListHeight = normalizeTagsListHeight(\n  store.app.get('sizes.tagsListHeight') as number | undefined,\n)\n\nconst libraryItems = [\n  { id: LibraryFilter.Inbox, name: i18n.t('sidebar.inbox'), icon: Inbox },\n  {\n    id: LibraryFilter.Favorites,\n    name: i18n.t('sidebar.favorites'),\n    icon: Star,\n  },\n  { id: LibraryFilter.All, name: i18n.t('sidebar.allSnippets'), icon: Archive },\n  { id: LibraryFilter.Trash, name: i18n.t('sidebar.trash'), icon: Trash },\n]\n\nasync function initGetFolders() {\n  await getFolders()\n\n  nextTick(() => {\n    scrollToElement(`[id=\"${state.folderId}\"]`)\n  })\n}\n\nasync function initGetSnippets() {\n  await getSnippets()\n\n  nextTick(() => {\n    const index\n      = displayedSnippets.value?.findIndex(s => s.id === state.snippetId) ?? -1\n    if (index >= 0) {\n      scrollToSnippetIndex(index)\n    }\n  })\n}\n\nasync function initApp() {\n  if (isCodeSpaceInitialized.value) {\n    isAppLoading.value = false\n    return\n  }\n\n  isAppLoading.value = true\n\n  const results = await Promise.allSettled([\n    initGetFolders(),\n    initGetSnippets(),\n  ])\n\n  results.forEach((result) => {\n    if (result.status === 'rejected') {\n      console.error('App init error:', result.reason)\n    }\n  })\n\n  isCodeSpaceInitialized.value = results.every(\n    result => result.status === 'fulfilled',\n  )\n\n  isAppLoading.value = false\n}\n\nvoid initApp()\n\nasync function onFolderClick({\n  id,\n  event,\n}: {\n  id: number\n  event?: MouseEvent\n}) {\n  if (event?.shiftKey) {\n    await selectFolder(id, { mode: 'range', ensureVisibility: false })\n    return\n  }\n\n  if (event && (event.metaKey || event.ctrlKey)) {\n    await selectFolder(id, { mode: 'toggle', ensureVisibility: false })\n    return\n  }\n\n  if (state.folderId !== id || selectedFolderIds.value.length > 1) {\n    isRestoreStateBlocked.value = true\n    clearSearch()\n\n    await selectFolder(id)\n    await getSnippets({ folderId: id })\n    selectFirstSnippet()\n  }\n}\n\nasync function onFolderToggle(node: Node) {\n  try {\n    const { id, isOpen } = node\n\n    updateFolder(id, { isOpen: !isOpen ? 1 : 0 })\n  }\n  catch (error) {\n    console.error('Folder update error:', error)\n  }\n}\n\nasync function onFolderDrag({\n  nodes,\n  target,\n  position,\n}: {\n  nodes: Node[]\n  target: Node\n  position: 'before' | 'after' | 'center'\n}) {\n  try {\n    // Фильтруем узлы, исключая целевой, чтобы избежать перемещения папки в себя\n    const movableNodes = nodes.filter(node => node.id !== target.id)\n\n    if (!movableNodes.length) {\n      return\n    }\n\n    if (position === 'center') {\n      // Перемещение внутрь целевой папки\n      const destinationParentId = Number(target.id)\n      let orderIndex = target.children?.length || 0\n\n      for (const node of movableNodes) {\n        await updateFolder(node.id, {\n          parentId: destinationParentId,\n          orderIndex,\n        })\n        orderIndex += 1\n      }\n\n      return\n    }\n\n    // Перемещение до или после целевой папки\n    for (const node of movableNodes) {\n      const isDraggingUp = node.orderIndex > target.orderIndex\n\n      const newParentId: number | null = target.parentId || null\n      let newOrderIndex: number\n\n      if (node.parentId === target.parentId) {\n        // Если перемещаем внутри одного списка, корректируем по направлению и позиции\n        if (position === 'after') {\n          newOrderIndex = isDraggingUp\n            ? target.orderIndex + 1\n            : target.orderIndex\n        }\n        else {\n          newOrderIndex = isDraggingUp\n            ? target.orderIndex\n            : Math.max(target.orderIndex - 1, 0)\n        }\n      }\n      else {\n        // Если перемещение в другой родительский элемент\n        newOrderIndex\n          = position === 'after' ? target.orderIndex + 1 : target.orderIndex\n      }\n\n      await updateFolder(node.id, {\n        parentId: newParentId,\n        orderIndex: newOrderIndex,\n      })\n    }\n  }\n  catch (error) {\n    console.error('Folder update error:', error)\n  }\n}\n\nfunction onResizeTagList(val: number[]) {\n  store.app.set('sizes.tagsListHeight', normalizeTagsListHeight(val[1]))\n}\n</script>\n\n<template>\n  <div class=\"flex h-full min-h-0 flex-col\">\n    <div\n      class=\"shrink-0 overflow-hidden\"\n      data-sidebar-library\n    >\n      <ContextMenu.ContextMenu>\n        <ContextMenu.ContextMenuTrigger>\n          <div class=\"px-1\">\n            <LibraryItem\n              v-for=\"i in libraryItems\"\n              :id=\"i.id\"\n              :key=\"i.name\"\n              :name=\"i.name\"\n              :icon=\"i.icon\"\n            />\n          </div>\n        </ContextMenu.ContextMenuTrigger>\n        <ContextMenu.ContextMenuContent>\n          <ContextMenu.ContextMenuItem @click=\"emptyTrash\">\n            {{ i18n.t(\"action.delete.trash\") }}\n          </ContextMenu.ContextMenuItem>\n        </ContextMenu.ContextMenuContent>\n      </ContextMenu.ContextMenu>\n    </div>\n\n    <Resizable.ResizablePanelGroup\n      id=\"1\"\n      direction=\"vertical\"\n      class=\"min-h-0 flex-1\"\n      @layout=\"onResizeTagList\"\n    >\n      <Resizable.ResizablePanel>\n        <div class=\"flex h-full min-h-0 flex-col\">\n          <div\n            class=\"mt-1 flex items-center justify-between py-1 pl-1 select-none\"\n          >\n            <UiText\n              as=\"div\"\n              variant=\"caption\"\n              weight=\"bold\"\n              uppercase\n            >\n              {{ i18n.t(\"sidebar.folders\") }}\n            </UiText>\n            <UiActionButton\n              :tooltip=\"i18n.t('action.new.folder')\"\n              @click=\"createFolderAndSelect()\"\n            >\n              <Plus class=\"h-4 w-4\" />\n            </UiActionButton>\n          </div>\n\n          <div class=\"min-h-0 flex-1\">\n            <Tree\n              v-if=\"folders?.length\"\n              v-model=\"folders\"\n              class=\"h-full px-0.5 pb-1\"\n              @click-node=\"onFolderClick\"\n              @toggle-node=\"onFolderToggle\"\n              @drag-node=\"onFolderDrag\"\n            />\n\n            <UiEmptyPlaceholder\n              v-else\n              :text=\"i18n.t('placeholder.emptyFoldersList')\"\n            />\n          </div>\n        </div>\n      </Resizable.ResizablePanel>\n\n      <Resizable.ResizableHandle />\n\n      <Resizable.ResizablePanel\n        :min-size=\"MIN_TAGS_PANEL_SIZE\"\n        :default-size=\"tagsListHeight\"\n      >\n        <div class=\"flex h-full min-h-0 flex-col\">\n          <div class=\"flex items-center justify-between py-1 pl-1 select-none\">\n            <UiText\n              as=\"div\"\n              variant=\"caption\"\n              weight=\"bold\"\n              uppercase\n            >\n              {{ i18n.t(\"sidebar.tags\") }}\n            </UiText>\n          </div>\n\n          <div class=\"min-h-0 flex-1\">\n            <SidebarTags class=\"h-full px-1 pb-1\" />\n          </div>\n        </div>\n      </Resizable.ResizablePanel>\n    </Resizable.ResizablePanelGroup>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/sidebar/tags/Item.vue",
    "content": "<script setup lang=\"ts\">\nimport { useApp } from '@/composables'\nimport { onClickOutside } from '@vueuse/core'\nimport { Tag } from 'lucide-vue-next'\n\ninterface Props {\n  id: number\n  name: string\n}\n\nconst props = defineProps<Props>()\n\nconst { highlightedTagId, state } = useApp()\n\nconst tagRef = useTemplateRef('tagRef')\n\nconst isFocused = ref(false)\nconst isSelected = computed(() => state.tagId === props.id)\nconst isHighlighted = computed(() => highlightedTagId.value === props.id)\n\nfunction onClickItem() {\n  highlightedTagId.value = undefined\n  isFocused.value = true\n}\n\nonClickOutside(tagRef, () => {\n  isFocused.value = false\n})\n</script>\n\n<template>\n  <div\n    ref=\"tagRef\"\n    :data-selected=\"isSelected ? 'true' : undefined\"\n    :data-focused=\"isFocused ? 'true' : undefined\"\n    :data-highlighted=\"isHighlighted ? 'true' : undefined\"\n    class=\"data-[selected=true]:bg-accent data-[focused=true]:bg-primary! data-[focused=true]:text-primary-foreground data-[highlighted=true]:outline-primary flex items-center gap-2 rounded-md px-6 select-none data-[highlighted=true]:bg-transparent! data-[highlighted=true]:outline-2 data-[highlighted=true]:-outline-offset-2\"\n    :class=\"{ 'hover:bg-accent-hover': !isSelected && !isFocused }\"\n    @click=\"onClickItem\"\n  >\n    <Tag class=\"h-3 w-3 shrink-0\" />\n    <span class=\"truncate\">{{ name }}</span>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/sidebar/tags/Tags.vue",
    "content": "<script setup lang=\"ts\">\nimport * as ContextMenu from '@/components/ui/shadcn/context-menu'\nimport {\n  useApp,\n  useDialog,\n  useFolders,\n  useSnippets,\n  useTags,\n} from '@/composables'\nimport { i18n } from '@/electron'\n\nconst { tags, getTags, deleteTag } = useTags()\nconst { highlightedTagId, state } = useApp()\nconst {\n  getSnippets,\n  selectFirstSnippet,\n  clearSnippets,\n  clearSearch,\n  isRestoreStateBlocked,\n} = useSnippets()\nconst { clearFolderSelection } = useFolders()\n\ngetTags()\n\nconst idToDelete = ref(0)\n\nasync function onTagClick(tagId: number) {\n  state.tagId = tagId\n  clearFolderSelection()\n  state.libraryFilter = undefined\n\n  isRestoreStateBlocked.value = true\n  clearSearch()\n\n  await getSnippets({ tagId })\n  selectFirstSnippet()\n}\n\nfunction onClickContextMenu(tagId: number) {\n  highlightedTagId.value = tagId\n  idToDelete.value = tagId\n}\n\nasync function onDelete() {\n  const { confirm } = useDialog()\n\n  const name = tags.value.find(\n    tag => tag.id === highlightedTagId.value,\n  )?.name\n\n  const isConfirmed = await confirm({\n    title: i18n.t('messages:confirm.delete', { name }),\n    content: i18n.t('messages:warning.deleteTag'),\n  })\n\n  if (isConfirmed && idToDelete.value) {\n    await deleteTag(idToDelete.value)\n\n    if (state.tagId === idToDelete.value) {\n      state.tagId = undefined\n      clearSnippets()\n    }\n    else if (state.tagId) {\n      await getSnippets({ tagId: state.tagId })\n    }\n\n    idToDelete.value = 0\n  }\n}\n\nfunction onUpdateContextMenu(bool: boolean) {\n  if (!bool) {\n    highlightedTagId.value = undefined\n  }\n}\n</script>\n\n<template>\n  <div\n    v-if=\"tags.length\"\n    data-sidebar-tags\n    class=\"h-full min-h-0\"\n  >\n    <div class=\"scrollbar h-full min-h-0 overflow-x-hidden overflow-y-auto\">\n      <ContextMenu.ContextMenu @update:open=\"onUpdateContextMenu\">\n        <ContextMenu.ContextMenuTrigger>\n          <SidebarTagsItem\n            v-for=\"tag in tags\"\n            :id=\"tag.id\"\n            :key=\"tag.id\"\n            :name=\"tag.name\"\n            @click=\"onTagClick(tag.id)\"\n            @contextmenu=\"onClickContextMenu(tag.id)\"\n          />\n        </ContextMenu.ContextMenuTrigger>\n        <ContextMenu.ContextMenuContent>\n          <ContextMenu.ContextMenuItem @click=\"onDelete\">\n            {{ i18n.t(\"action.delete.common\") }}\n          </ContextMenu.ContextMenuItem>\n        </ContextMenu.ContextMenuContent>\n      </ContextMenu.ContextMenu>\n    </div>\n  </div>\n  <UiEmptyPlaceholder\n    v-else\n    :text=\"i18n.t('placeholder.emptyTagList')\"\n  />\n</template>\n"
  },
  {
    "path": "src/renderer/components/snippet/Header.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport { useApp, useSnippets } from '@/composables'\nimport { i18n, ipc } from '@/electron'\nimport { Plus, Search, X } from 'lucide-vue-next'\n\nconst {\n  isSearch,\n  searchQuery,\n  createSnippetAndSelect,\n  clearSearch,\n  search,\n  searchSelectedIndex,\n  selectSearchSnippet,\n  displayedSnippets,\n} = useSnippets()\nconst { isFocusedSearch } = useApp()\n\nipc.on('main-menu:find', () => {\n  isFocusedSearch.value = true\n})\n\nwatch(searchQuery, (v) => {\n  if (v) {\n    search()\n  }\n  else {\n    clearSearch(true)\n  }\n})\n\nfunction onKeydown(event: KeyboardEvent) {\n  if (event.key === 'ArrowDown') {\n    event.preventDefault()\n    const nextIndex = Math.min(\n      searchSelectedIndex.value + 1,\n      (displayedSnippets.value?.length || 0) - 1,\n    )\n    selectSearchSnippet(nextIndex)\n  }\n  else if (event.key === 'ArrowUp') {\n    event.preventDefault()\n    const prevIndex = Math.max(searchSelectedIndex.value - 1, 0)\n    selectSearchSnippet(prevIndex)\n  }\n  if (event.key === 'Escape') {\n    event.preventDefault()\n    clearSearch(true)\n  }\n}\n</script>\n\n<template>\n  <div class=\"border-border mt-[var(--content-top-offset)] mb-2 border-b pb-1\">\n    <div class=\"flex items-center px-1\">\n      <Search class=\"text-muted-foreground ml-1 h-4 w-4\" />\n      <div class=\"flex-grow\">\n        <UiInput\n          v-model=\"searchQuery\"\n          :placeholder=\"i18n.t('placeholder.search')\"\n          variant=\"ghost\"\n          :focus=\"isFocusedSearch\"\n          @blur=\"isFocusedSearch = false\"\n          @keydown=\"onKeydown\"\n        />\n      </div>\n      <Button\n        v-if=\"searchQuery\"\n        variant=\"ghost\"\n        @click=\"clearSearch(true)\"\n      >\n        <X class=\"h-4 w-4\" />\n      </Button>\n      <UiActionButton\n        v-if=\"!isSearch\"\n        :tooltip=\"i18n.t('action.new.snippet')\"\n        @click=\"createSnippetAndSelect\"\n      >\n        <Plus class=\"h-4 w-4\" />\n      </UiActionButton>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/snippet/Item.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SnippetsResponse } from '@/services/api/generated'\nimport * as ContextMenu from '@/components/ui/shadcn/context-menu'\nimport { useApp, useDialog, useSnippets } from '@/composables'\nimport { LibraryFilter } from '@/composables/types'\nimport { i18n } from '@/electron'\nimport { onClickOutside, useClipboard } from '@vueuse/core'\nimport { format } from 'date-fns'\n\ninterface Props {\n  snippet: SnippetsResponse[0]\n}\n\nconst props = defineProps<Props>()\n\nconst {\n  highlightedSnippetIds,\n  highlightedFolderIds,\n  isFocusedSnippetName,\n  focusedSnippetId,\n  state,\n} = useApp()\n\nconst {\n  selectSnippet,\n  selectFirstSnippet,\n  duplicateSnippet,\n  selectedSnippetIds,\n  updateSnippet,\n  updateSnippets,\n  deleteSnippet,\n  deleteSnippets,\n  displayedSnippets,\n} = useSnippets()\n\nconst { confirm } = useDialog()\nconst { copy } = useClipboard()\n\nconst snippetRef = ref<HTMLDivElement>()\n\nconst isSelected = computed(() => state.snippetId === props.snippet.id)\n\nconst isInMultiSelection = computed(\n  () =>\n    selectedSnippetIds.value.length > 1\n    && selectedSnippetIds.value.includes(props.snippet.id),\n)\nconst isHighlighted = computed(() =>\n  highlightedSnippetIds.value.has(props.snippet.id),\n)\n\nconst isFocused = computed(() => focusedSnippetId.value === props.snippet.id)\n\nconst isDuplicateDisabled = computed(\n  () => highlightedSnippetIds.value.size > 1,\n)\n\nconst isFavoritesLibrarySelected = computed(\n  () => state.libraryFilter === LibraryFilter.Favorites,\n)\n\nconst isTrashLibrarySelectd = computed(\n  () => state.libraryFilter === LibraryFilter.Trash,\n)\n\nconst folderName = computed(() => {\n  if (props.snippet.folder) {\n    return props.snippet.folder.name\n  }\n\n  if (props.snippet.isDeleted) {\n    return i18n.t('sidebar.trash')\n  }\n\n  return i18n.t('sidebar.inbox')\n})\n\nfunction onSnippetClick(id: number, event: MouseEvent) {\n  selectSnippet(id, event.shiftKey)\n  focusedSnippetId.value = id\n}\n\nfunction onClickContextMenu() {\n  highlightedFolderIds.value.clear()\n  highlightedSnippetIds.value.clear()\n  highlightedSnippetIds.value.add(props.snippet.id)\n\n  if (selectedSnippetIds.value.length > 1) {\n    selectedSnippetIds.value.forEach(id =>\n      highlightedSnippetIds.value.add(id),\n    )\n  }\n}\n\nasync function onAddFavorites() {\n  const isFavorites = isFavoritesLibrarySelected.value ? 0 : 1\n\n  if (selectedSnippetIds.value.length > 1) {\n    const snippetsData = selectedSnippetIds.value?.map(() => ({ isFavorites }))\n    await updateSnippets(selectedSnippetIds.value, snippetsData)\n  }\n  else {\n    await updateSnippet(props.snippet.id, { isFavorites })\n  }\n  if (isFavoritesLibrarySelected.value) {\n    if (\n      selectedSnippetIds.value.length > 1\n      || state.snippetId === props.snippet.id\n    ) {\n      selectFirstSnippet()\n    }\n  }\n}\n\nasync function onDelete() {\n  if (selectedSnippetIds.value.length > 1) {\n    const isAllSoftDeleted = displayedSnippets.value?.every(s => s.isDeleted)\n\n    if (isAllSoftDeleted) {\n      const isConfirmed = await confirm({\n        title: i18n.t('messages:confirm.deleteConfirmMultipleSnippets', {\n          count: selectedSnippetIds.value.length,\n        }),\n        content: i18n.t('messages:warning.noUndo'),\n      })\n\n      if (isConfirmed) {\n        await deleteSnippets(selectedSnippetIds.value)\n      }\n    }\n    else {\n      // Мягкое удаление\n      const snippetsData = selectedSnippetIds.value?.map(() => ({\n        folderId: null,\n        isDeleted: 1,\n      }))\n\n      await updateSnippets(selectedSnippetIds.value, snippetsData)\n    }\n  }\n  else if (props.snippet.isDeleted) {\n    const isConfirmed = await confirm({\n      title: i18n.t('messages:confirm.deletePermanently', {\n        name: props.snippet.name,\n      }),\n      content: i18n.t('messages:warning.noUndo'),\n    })\n\n    if (isConfirmed) {\n      await deleteSnippet(props.snippet.id)\n    }\n  }\n  else {\n    // Мягкое удаление\n    await updateSnippet(props.snippet.id, {\n      folderId: null,\n      isDeleted: 1,\n    })\n  }\n\n  if (\n    selectedSnippetIds.value.length > 1\n    || state.snippetId === props.snippet.id\n  ) {\n    selectFirstSnippet()\n  }\n}\n\nasync function onRestore() {\n  if (selectedSnippetIds.value.length > 1) {\n    const snippetsData = selectedSnippetIds.value?.map(() => ({\n      folderId: null,\n      isDeleted: 0,\n    }))\n\n    await updateSnippets(selectedSnippetIds.value, snippetsData)\n  }\n  else {\n    await updateSnippet(props.snippet.id, {\n      folderId: null,\n      isDeleted: 0,\n    })\n  }\n}\n\nasync function onDuplicate() {\n  await duplicateSnippet(props.snippet.id)\n  selectFirstSnippet()\n  isFocusedSnippetName.value = true\n}\n\nfunction onCopySnippetLink() {\n  // copy(`masscode://folder/${state.folderId}/snippet/${props.snippet.id}`)\n  copy(\n    `masscode://goto?folderId=${state.folderId}&snippetId=${props.snippet.id}`,\n  )\n}\n\nfunction onDragStart(event: DragEvent) {\n  const ids\n    = selectedSnippetIds.value.length > 1\n      ? selectedSnippetIds.value\n      : [props.snippet.id]\n\n  event.dataTransfer?.setData('snippetIds', JSON.stringify(ids))\n\n  const el = document.createElement('div')\n\n  if (selectedSnippetIds.value.length > 1) {\n    el.className\n      = 'fixed left-[-100%] text-foreground truncate max-w-[200px] flex items-center'\n    el.id = 'ghost'\n    el.innerHTML = `\n      <span class=\"rounded-full bg-primary text-white px-2 py-0.5 text-xs ml-3\">\n        ${selectedSnippetIds.value.length}\n      </span>\n    `\n  }\n  else {\n    el.className = 'fixed left-[-100%] text-foreground truncate max-w-[200px]'\n    el.id = 'ghost'\n    el.innerHTML = props.snippet.name\n  }\n\n  document.body.appendChild(el)\n  event.dataTransfer?.setDragImage(el, 0, 0)\n\n  setTimeout(() => el.remove(), 0)\n}\n\nonClickOutside(snippetRef, () => {\n  focusedSnippetId.value = undefined\n  highlightedSnippetIds.value.clear()\n})\n</script>\n\n<template>\n  <div\n    ref=\"snippetRef\"\n    data-snippet-item\n    class=\"border-border relative border-b px-1 focus-visible:outline-none\"\n    :class=\"{\n      'is-selected': isSelected,\n      'is-multi-selected': isInMultiSelection,\n      'is-focused': isFocused,\n      'is-highlighted': isHighlighted,\n    }\"\n    draggable=\"true\"\n    @click=\"(event) => onSnippetClick(snippet.id, event)\"\n    @contextmenu=\"onClickContextMenu\"\n    @dragstart.stop=\"onDragStart\"\n  >\n    <ContextMenu.ContextMenu>\n      <ContextMenu.ContextMenuTrigger>\n        <div class=\"flex flex-col p-2 select-none\">\n          <div\n            class=\"mb-2 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap\"\n          >\n            {{ snippet.name || i18n.t(\"snippet.untitled\") }}\n          </div>\n          <UiText\n            as=\"div\"\n            variant=\"xs\"\n            muted\n            class=\"meta flex justify-between\"\n          >\n            <div>\n              {{ folderName }}\n            </div>\n            <div>\n              {{ format(new Date(snippet.createdAt), \"dd.MM.yyyy\") }}\n            </div>\n          </UiText>\n        </div>\n      </ContextMenu.ContextMenuTrigger>\n      <ContextMenu.ContextMenuContent>\n        <template v-if=\"!isTrashLibrarySelectd\">\n          <ContextMenu.ContextMenuItem @click=\"onAddFavorites\">\n            {{\n              isFavoritesLibrarySelected\n                ? i18n.t(\"action.remove.fromFavorites\")\n                : i18n.t(\"action.add.toFavorites\")\n            }}\n          </ContextMenu.ContextMenuItem>\n          <ContextMenu.ContextMenuSeparator />\n          <ContextMenu.ContextMenuItem @click=\"onCopySnippetLink\">\n            {{ i18n.t(\"action.copy.snippetLink\") }}\n          </ContextMenu.ContextMenuItem>\n          <ContextMenu.ContextMenuSeparator />\n          <ContextMenu.ContextMenuItem\n            :disabled=\"isDuplicateDisabled\"\n            @click=\"onDuplicate\"\n          >\n            {{ i18n.t(\"action.duplicate\") }}\n          </ContextMenu.ContextMenuItem>\n        </template>\n        <ContextMenu.ContextMenuItem @click=\"onDelete\">\n          {{\n            state.libraryFilter === LibraryFilter.Trash\n              ? i18n.t(\"action.delete.common\")\n              : i18n.t(\"action.move.toTrash\")\n          }}\n        </ContextMenu.ContextMenuItem>\n        <ContextMenu.ContextMenuItem\n          v-if=\"isTrashLibrarySelectd\"\n          @click=\"onRestore\"\n        >\n          {{ i18n.t(\"action.restore\") }}\n        </ContextMenu.ContextMenuItem>\n      </ContextMenu.ContextMenuContent>\n    </ContextMenu.ContextMenu>\n  </div>\n</template>\n\n<style lang=\"scss\">\n@reference \"../../styles.css\";\n[data-snippet-item] {\n  &:not(.is-selected):not(.is-focused):not(.is-multi-selected) {\n    @apply hover:bg-accent-hover hover:rounded-md;\n  }\n  &.is-selected {\n    @apply bg-accent text-accent-foreground z-10 rounded-md border-transparent;\n    .meta {\n      @apply text-accent-foreground;\n    }\n  }\n  &.is-multi-selected {\n    @apply bg-accent text-accent-foreground z-10 rounded-md border-transparent;\n    .meta {\n      @apply text-accent-foreground;\n    }\n  }\n  &.is-focused:not(.is-multi-selected) {\n    @apply bg-primary text-primary-foreground z-10 rounded-md border-transparent;\n    .meta {\n      @apply text-primary-foreground;\n    }\n  }\n  &.is-highlighted {\n    @apply outline-primary rounded-md outline-2 -outline-offset-2;\n    &.is-focused,\n    &.is-selected,\n    &.is-multi-selected {\n      @apply bg-background text-accent-foreground;\n      .meta {\n        @apply text-accent-foreground;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/renderer/components/snippet/List.vue",
    "content": "<script setup lang=\"ts\">\nimport { useApp, useSnippets } from '@/composables'\nimport { setSnippetScrollerRef } from '@/composables/useSnippetScroller'\nimport { i18n } from '@/electron'\n\nconst snippetScrollerLocalRef = ref<{\n  scrollToItem: (index: number) => void\n} | null>(null)\nconst isInitialSnippetPositionRestored = ref(false)\nconst SNIPPET_ITEM_SIZE = 61\n\nconst { state } = useApp()\nconst { displayedSnippets } = useSnippets()\n\nfunction setScrollerRef(\n  value: { scrollToItem: (index: number) => void } | null,\n) {\n  snippetScrollerLocalRef.value = value\n  setSnippetScrollerRef(value)\n}\n\nwatch(\n  [displayedSnippets, () => state.snippetId, snippetScrollerLocalRef],\n  ([snippets, snippetId, scroller]) => {\n    if (isInitialSnippetPositionRestored.value)\n      return\n\n    if (!scroller || !snippets?.length || snippetId === undefined)\n      return\n\n    const index = snippets.findIndex(snippet => snippet.id === snippetId)\n\n    if (index < 0)\n      return\n\n    isInitialSnippetPositionRestored.value = true\n\n    nextTick(() => {\n      requestAnimationFrame(() => {\n        scroller.scrollToItem(index)\n      })\n    })\n  },\n  {\n    immediate: true,\n    flush: 'post',\n  },\n)\n</script>\n\n<template>\n  <div\n    data-snippets-list\n    class=\"flex h-full flex-col\"\n  >\n    <div>\n      <SnippetHeader />\n    </div>\n    <RecycleScroller\n      v-if=\"displayedSnippets?.length\"\n      :ref=\"setScrollerRef\"\n      v-slot=\"{ item }\"\n      class=\"scrollbar flex-grow px-2\"\n      :items=\"displayedSnippets\"\n      :item-size=\"SNIPPET_ITEM_SIZE\"\n      key-field=\"id\"\n    >\n      <SnippetItem :snippet=\"item\" />\n    </RecycleScroller>\n    <UiEmptyPlaceholder\n      v-else\n      :text=\"i18n.t('placeholder.emptySnippetsList')\"\n    />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/space-rail/SpaceRail.vue",
    "content": "<script setup lang=\"ts\">\nimport * as Tooltip from '@/components/ui/shadcn/tooltip'\nimport { useApp, useTheme } from '@/composables'\nimport { i18n, ipc } from '@/electron'\nimport { RouterName } from '@/router'\nimport { getSpaceDefinitions } from '@/spaceDefinitions'\nimport { isMac } from '@/utils'\nimport { Settings } from 'lucide-vue-next'\nimport { RouterLink, useRoute } from 'vue-router'\nimport packageJson from '../../../../package.json'\n\nconst { isSponsored } = useApp()\nconst { isDark } = useTheme()\nconst route = useRoute()\n\nfunction openDonatePage() {\n  void ipc.invoke('system:open-external', 'https://masscode.io/donate/')\n}\n\nconst spaces = computed(() => {\n  return getSpaceDefinitions().map(space => ({\n    ...space,\n    active: space.isActive(route.name),\n  }))\n})\n</script>\n\n<template>\n  <nav\n    class=\"flex h-full flex-col items-center px-2 pb-3\"\n    :class=\"isMac ? 'pt-[calc(var(--content-top-offset)+8px)]' : 'pt-3'\"\n    :aria-label=\"i18n.t('spaces.label')\"\n  >\n    <div class=\"flex w-full flex-col gap-1\">\n      <RouterLink\n        v-for=\"space in spaces\"\n        :key=\"space.id\"\n        v-slot=\"{ navigate }\"\n        custom\n        :to=\"space.to\"\n      >\n        <Tooltip.Tooltip>\n          <Tooltip.TooltipTrigger as-child>\n            <button\n              type=\"button\"\n              class=\"text-muted-foreground flex w-full cursor-default flex-col items-center gap-1 rounded-lg px-2 py-2 transition-colors\"\n              :class=\"\n                space.active\n                  ? 'bg-accent text-accent-foreground'\n                  : 'hover:bg-accent-hover'\n              \"\n              @click=\"navigate\"\n            >\n              <component\n                :is=\"space.icon\"\n                class=\"h-4 w-4 shrink-0\"\n              />\n              <UiText\n                variant=\"caption\"\n                weight=\"medium\"\n                class=\"leading-none select-none\"\n              >\n                {{ space.label }}\n              </UiText>\n            </button>\n          </Tooltip.TooltipTrigger>\n          <Tooltip.TooltipContent side=\"right\">\n            {{ space.tooltip }}\n          </Tooltip.TooltipContent>\n        </Tooltip.Tooltip>\n      </RouterLink>\n    </div>\n    <div\n      v-if=\"!isSponsored\"\n      class=\"mt-auto flex flex-1 flex-col items-center justify-end gap-2 pb-2\"\n    >\n      <span\n        class=\"cursor-pointer text-center text-[9px] leading-none font-semibold tracking-[0.14em] uppercase select-none [writing-mode:sideways-lr]\"\n        :class=\"isDark ? 'text-amber-300/70' : 'text-violet-500/70'\"\n        role=\"link\"\n        tabindex=\"0\"\n        @click=\"openDonatePage\"\n        @keydown.enter=\"openDonatePage\"\n        @keydown.space.prevent=\"openDonatePage\"\n      >\n        {{ i18n.t(\"messages:special.unsponsored\") }}\n      </span>\n      <RouterLink\n        v-slot=\"{ navigate }\"\n        custom\n        :to=\"{ name: RouterName.preferencesStorage }\"\n      >\n        <UiActionButton\n          :tooltip=\"i18n.t('preferences:label')\"\n          @click=\"navigate\"\n        >\n          <Settings class=\"h-4 w-4\" />\n        </UiActionButton>\n      </RouterLink>\n      <UiText\n        as=\"div\"\n        variant=\"caption\"\n        weight=\"medium\"\n        class=\"text-muted-foreground/55 leading-none select-none\"\n      >\n        v{{ packageJson.version }}\n      </UiText>\n    </div>\n  </nav>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/action-button/ActionButton.vue",
    "content": "<script setup lang=\"ts\">\nimport { Button } from '@/components/ui/shadcn/button'\nimport * as Tooltip from '@/components/ui/shadcn/tooltip'\n\ninterface Props {\n  tooltip?: string\n}\n\ndefineProps<Props>()\n</script>\n\n<template>\n  <Tooltip.Tooltip v-if=\"tooltip\">\n    <Tooltip.TooltipTrigger as-child>\n      <Button\n        variant=\"icon\"\n        size=\"icon\"\n        v-bind=\"$attrs\"\n      >\n        <slot />\n      </Button>\n    </Tooltip.TooltipTrigger>\n    <Tooltip.TooltipContent>\n      {{ tooltip }}\n    </Tooltip.TooltipContent>\n  </Tooltip.Tooltip>\n  <Button\n    v-else\n    variant=\"icon\"\n    size=\"icon\"\n    v-bind=\"$attrs\"\n  >\n    <slot />\n  </Button>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/color-picker/ColorPicker.vue",
    "content": "<script setup lang=\"ts\">\nimport { cn } from '@/utils'\nimport chroma from 'chroma-js'\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\n\ninterface Props {\n  class?: string\n  disabled?: boolean\n  showInput?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  showInput: true,\n})\n\nconst model = defineModel<string>({ default: '#ff0000' })\n\nconst colorAreaRef = ref<HTMLElement>()\nconst hueSliderRef = ref<HTMLElement>()\nconst alphaSliderRef = ref<HTMLElement>()\n\nconst isDraggingColor = ref(false)\nconst isDraggingHue = ref(false)\nconst isDraggingAlpha = ref(false)\n\nconst hsv = ref({ h: 0, s: 100, v: 100 })\nconst alpha = ref(1)\n\nconst colorPosition = ref({ x: 100, y: 0 })\nconst huePosition = ref(0)\nconst alphaPosition = ref(100)\n\nconst isUpdatingFromModel = ref(false)\n\nconst currentChroma = computed(() => {\n  try {\n    return chroma\n      .hsv(hsv.value.h, hsv.value.s / 100, hsv.value.v / 100)\n      .alpha(alpha.value)\n  }\n  catch {\n    return chroma('#000000')\n  }\n})\n\nconst currentRgb = computed(() => {\n  const [r, g, b] = currentChroma.value.rgb()\n  return { r: Math.round(r), g: Math.round(g), b: Math.round(b) }\n})\n\nconst currentHex = computed(() => {\n  const chromaColor = currentChroma.value\n  return chromaColor.alpha() < 1 ? chromaColor.hex('rgba') : chromaColor.hex()\n})\n\nconst pureHueColor = computed(() => {\n  try {\n    return chroma.hsv(hsv.value.h, 1, 1).hex()\n  }\n  catch {\n    return '#ff0000'\n  }\n})\n\nfunction handleColorAreaMouseDown(event: MouseEvent) {\n  if (props.disabled)\n    return\n\n  event.preventDefault()\n\n  isDraggingColor.value = true\n  updateColorFromPosition(event)\n\n  document.addEventListener('mousemove', handleColorAreaMouseMove)\n  document.addEventListener('mouseup', handleColorAreaMouseUp)\n}\n\nfunction handleColorAreaMouseMove(event: MouseEvent) {\n  if (!isDraggingColor.value)\n    return\n\n  event.preventDefault()\n\n  updateColorFromPosition(event)\n}\n\nfunction handleColorAreaMouseUp() {\n  isDraggingColor.value = false\n  document.removeEventListener('mousemove', handleColorAreaMouseMove)\n  document.removeEventListener('mouseup', handleColorAreaMouseUp)\n}\n\nfunction updateColorFromPosition(event: MouseEvent) {\n  if (!colorAreaRef.value)\n    return\n\n  const rect = colorAreaRef.value.getBoundingClientRect()\n  const x = Math.max(0, Math.min(rect.width, event.clientX - rect.left))\n  const y = Math.max(0, Math.min(rect.height, event.clientY - rect.top))\n\n  colorPosition.value = { x, y }\n\n  const newS = (x / rect.width) * 100\n  const newV = 100 - (y / rect.height) * 100\n  hsv.value.s = Math.round(newS)\n  hsv.value.v = Math.round(newV)\n}\n\nfunction handleHueMouseDown(event: MouseEvent) {\n  if (props.disabled)\n    return\n\n  event.preventDefault()\n\n  isDraggingHue.value = true\n  updateHueFromPosition(event)\n\n  document.addEventListener('mousemove', handleHueMouseMove)\n  document.addEventListener('mouseup', handleHueMouseUp)\n}\n\nfunction handleHueMouseMove(event: MouseEvent) {\n  if (!isDraggingHue.value)\n    return\n\n  event.preventDefault()\n\n  updateHueFromPosition(event)\n}\n\nfunction handleHueMouseUp() {\n  isDraggingHue.value = false\n  document.removeEventListener('mousemove', handleHueMouseMove)\n  document.removeEventListener('mouseup', handleHueMouseUp)\n}\n\nfunction updateHueFromPosition(event: MouseEvent) {\n  if (!hueSliderRef.value)\n    return\n\n  const rect = hueSliderRef.value.getBoundingClientRect()\n  const x = Math.max(0, Math.min(rect.width, event.clientX - rect.left))\n\n  huePosition.value = x\n  hsv.value.h = Math.min(359.99, (x / rect.width) * 360)\n}\n\nfunction handleAlphaMouseDown(event: MouseEvent) {\n  if (props.disabled)\n    return\n\n  event.preventDefault()\n\n  isDraggingAlpha.value = true\n  updateAlphaFromPosition(event)\n\n  document.addEventListener('mousemove', handleAlphaMouseMove)\n  document.addEventListener('mouseup', handleAlphaMouseUp)\n}\n\nfunction handleAlphaMouseMove(event: MouseEvent) {\n  if (!isDraggingAlpha.value)\n    return\n\n  event.preventDefault()\n\n  updateAlphaFromPosition(event)\n}\n\nfunction handleAlphaMouseUp() {\n  isDraggingAlpha.value = false\n  document.removeEventListener('mousemove', handleAlphaMouseMove)\n  document.removeEventListener('mouseup', handleAlphaMouseUp)\n}\n\nfunction updateAlphaFromPosition(event: MouseEvent) {\n  if (!alphaSliderRef.value)\n    return\n\n  const rect = alphaSliderRef.value.getBoundingClientRect()\n  const x = Math.max(0, Math.min(rect.width, event.clientX - rect.left))\n\n  alphaPosition.value = x\n  alpha.value = x / rect.width\n}\n\nfunction updatePositions() {\n  if (!colorAreaRef.value || !hueSliderRef.value || !alphaSliderRef.value)\n    return\n\n  const colorRect = colorAreaRef.value.getBoundingClientRect()\n  const hueRect = hueSliderRef.value.getBoundingClientRect()\n  const alphaRect = alphaSliderRef.value.getBoundingClientRect()\n\n  colorPosition.value = {\n    x: (hsv.value.s / 100) * colorRect.width,\n    y: ((100 - hsv.value.v) / 100) * colorRect.height,\n  }\n\n  huePosition.value = (hsv.value.h / 360) * hueRect.width\n  alphaPosition.value = alpha.value * alphaRect.width\n}\n\nfunction initializeFromModel() {\n  isUpdatingFromModel.value = true\n\n  try {\n    const chromaColor = chroma(model.value)\n    const [h, s, v] = chromaColor.hsv()\n\n    hsv.value = {\n      h: Number.isNaN(h) ? 0 : h,\n      s: Math.round(s * 100),\n      v: Math.round(v * 100),\n    }\n    alpha.value = chromaColor.alpha()\n\n    nextTick(() => {\n      updatePositions()\n      nextTick(() => {\n        isUpdatingFromModel.value = false\n      })\n    })\n  }\n  catch {\n    hsv.value = { h: 0, s: 0, v: 0 }\n    alpha.value = 1\n    isUpdatingFromModel.value = false\n  }\n}\n\nwatch(\n  () => model.value,\n  () => {\n    if (!isUpdatingFromModel.value) {\n      initializeFromModel()\n    }\n  },\n  { immediate: true },\n)\n\nwatch([currentHex, alpha], () => {\n  if (!isUpdatingFromModel.value) {\n    const newHex = currentHex.value\n\n    try {\n      const currentColor = chroma(model.value)\n      const newColor = chroma(newHex)\n\n      const [r1, g1, b1] = currentColor.rgb()\n      const [r2, g2, b2] = newColor.rgb()\n      const a1 = currentColor.alpha()\n      const a2 = newColor.alpha()\n\n      const colorChanged\n        = Math.abs(r1 - r2) > 1\n          || Math.abs(g1 - g2) > 1\n          || Math.abs(b1 - b2) > 1\n          || Math.abs(a1 - a2) > 0.01\n\n      if (colorChanged) {\n        isUpdatingFromModel.value = true\n        model.value = newHex\n        nextTick(() => {\n          isUpdatingFromModel.value = false\n        })\n      }\n    }\n    catch {\n      isUpdatingFromModel.value = true\n      model.value = newHex\n      nextTick(() => {\n        isUpdatingFromModel.value = false\n      })\n    }\n  }\n})\n\nwatch(\n  [hsv, alpha],\n  () => {\n    if (!isUpdatingFromModel.value) {\n      nextTick(() => {\n        updatePositions()\n      })\n    }\n  },\n  { deep: true },\n)\n\nonMounted(() => {\n  initializeFromModel()\n})\n</script>\n\n<template>\n  <div :class=\"cn('space-y-2', props.class)\">\n    <div class=\"relative\">\n      <div\n        ref=\"colorAreaRef\"\n        class=\"border-border relative h-48 w-full cursor-crosshair overflow-hidden rounded-md border select-none\"\n        :class=\"{ 'cursor-not-allowed opacity-50': disabled }\"\n        :style=\"{ backgroundColor: pureHueColor }\"\n        @mousedown=\"handleColorAreaMouseDown\"\n      >\n        <div\n          class=\"absolute inset-0 bg-gradient-to-r from-white to-transparent\"\n        />\n        <div\n          class=\"absolute inset-0 bg-gradient-to-b from-transparent to-black\"\n        />\n      </div>\n      <div\n        class=\"pointer-events-none absolute z-10 h-4 w-4 -translate-x-1/2 -translate-y-1/2 transform rounded-full border-2 border-white shadow-md\"\n        :style=\"{\n          left: `${colorPosition.x}px`,\n          top: `${colorPosition.y}px`,\n          backgroundColor: currentHex,\n        }\"\n      />\n    </div>\n    <div class=\"relative py-1\">\n      <div\n        ref=\"hueSliderRef\"\n        class=\"border-border relative h-4 w-full cursor-pointer rounded-md border select-none\"\n        :class=\"{ 'cursor-not-allowed opacity-50': disabled }\"\n        style=\"\n          background: linear-gradient(\n            to right,\n            #ff0000 0%,\n            #ffff00 17%,\n            #00ff00 33%,\n            #00ffff 50%,\n            #0000ff 67%,\n            #ff00ff 83%,\n            #ff0000 100%\n          );\n        \"\n        @mousedown=\"handleHueMouseDown\"\n      />\n      <div\n        class=\"pointer-events-none absolute top-1/2 z-10 h-4 w-4 -translate-x-1/2 -translate-y-1/2 transform rounded-full border-2 border-white shadow-md\"\n        :style=\"{\n          left: `${huePosition}px`,\n          backgroundColor: pureHueColor,\n        }\"\n      />\n    </div>\n    <div class=\"relative py-1\">\n      <div\n        class=\"absolute inset-x-0 top-1 bottom-1 rounded-md\"\n        style=\"\n          background-image:\n            linear-gradient(45deg, #ccc 25%, transparent 25%),\n            linear-gradient(-45deg, #ccc 25%, transparent 25%),\n            linear-gradient(45deg, transparent 75%, #ccc 75%),\n            linear-gradient(-45deg, transparent 75%, #ccc 75%);\n          background-size: 8px 8px;\n          background-position:\n            0 0,\n            0 4px,\n            4px -4px,\n            -4px 0px;\n        \"\n      />\n      <div\n        ref=\"alphaSliderRef\"\n        class=\"border-border relative h-4 w-full cursor-pointer rounded-md border select-none\"\n        :class=\"{ 'cursor-not-allowed opacity-50': disabled }\"\n        :style=\"{\n          background: `linear-gradient(to right, transparent 0%, ${chroma.rgb(currentRgb.r, currentRgb.g, currentRgb.b).hex()} 100%)`,\n        }\"\n        @mousedown=\"handleAlphaMouseDown\"\n      />\n      <div\n        class=\"pointer-events-none absolute top-1/2 z-10 h-4 w-4 -translate-x-1/2 -translate-y-1/2 transform rounded-full border-2 border-white shadow-md\"\n        :style=\"{\n          left: `${alphaPosition}px`,\n          backgroundColor: currentHex,\n        }\"\n      />\n    </div>\n    <div\n      v-if=\"showInput\"\n      class=\"flex items-center gap-3\"\n    >\n      <div\n        class=\"border-border relative h-[27px] w-[27px] shrink-0 overflow-hidden rounded-md border\"\n      >\n        <div\n          class=\"absolute inset-0\"\n          style=\"\n            background-image:\n              linear-gradient(45deg, #ccc 25%, transparent 25%),\n              linear-gradient(-45deg, #ccc 25%, transparent 25%),\n              linear-gradient(45deg, transparent 75%, #ccc 75%),\n              linear-gradient(-45deg, transparent 75%, #ccc 75%);\n            background-size: 4px 4px;\n            background-position:\n              0 0,\n              0 2px,\n              2px -2px,\n              -2px 0px;\n          \"\n        />\n        <div\n          class=\"absolute inset-0\"\n          :style=\"{ backgroundColor: currentHex }\"\n        />\n      </div>\n      <div class=\"w-full\">\n        <UiInput\n          v-model=\"model\"\n          type=\"text\"\n          :disabled=\"disabled\"\n          placeholder=\"#000000\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/empty/Placeholder.vue",
    "content": "<script setup lang=\"ts\">\ninterface Props {\n  text: string\n}\n\ndefineProps<Props>()\n</script>\n\n<template>\n  <div\n    class=\"text-muted-foreground flex h-full items-center justify-center text-center\"\n  >\n    {{ text }}\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/folder-icon/FolderIcon.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Variants } from './variants'\nimport { cn } from '@/utils'\nimport { iconsSet } from './icons'\nimport { variants } from './variants'\n\ninterface Props {\n  name: string\n  size?: Variants['size']\n  class?: string\n}\n\nconst props = defineProps<Props>()\n</script>\n\n<template>\n  <div\n    :class=\"cn(variants({ size }), props.class)\"\n    :data-icon-name=\"name\"\n    v-html=\"iconsSet[name]\"\n  />\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/folder-icon/icons.ts",
    "content": "const files = import.meta.glob('@/assets/svg/icons/**.svg', {\n  as: 'raw',\n  eager: true,\n})\nconst re = /\\/([^/]+)\\.svg$/\n\nconst iconsSet: Record<string, string> = {}\n\nconst icons = Object.entries(files).map(([k, v]) => {\n  const name = k.match(re)?.[1]\n  if (name) {\n    iconsSet[name] = v as string\n  }\n  return {\n    name,\n    source: v,\n  }\n})\n\nexport { icons, iconsSet }\n"
  },
  {
    "path": "src/renderer/components/ui/folder-icon/variants.ts",
    "content": "import type { VariantProps } from 'class-variance-authority'\nimport { cva } from 'class-variance-authority'\n\nexport const variants = cva('', {\n  variants: {\n    size: {\n      sm: 'w-4 h-4',\n      md: 'w-8 h-8',\n    },\n  },\n  defaultVariants: {\n    size: 'sm',\n  },\n})\n\nexport type Variants = VariantProps<typeof variants>\n"
  },
  {
    "path": "src/renderer/components/ui/heading/Heading.vue",
    "content": "<script setup lang=\"ts\">\ninterface Props {\n  title: string\n  description?: string\n  level?: 2 | 3\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  level: 2,\n})\n\nconst levelStyles = computed(() => {\n  return {\n    'text-lg font-bold': props.level === 2,\n    'text-md font-bold': props.level === 3,\n  }\n})\n</script>\n\n<template>\n  <div class=\"mb-3 not-first:mt-3\">\n    <component\n      :is=\"`h${level}`\"\n      :class=\"levelStyles\"\n    >\n      {{ title }}\n    </component>\n    <UiText\n      v-if=\"description\"\n      as=\"p\"\n      variant=\"base\"\n      muted\n    >\n      {{ description }}\n    </UiText>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/input/Input.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Variants } from './variants'\nimport { cn } from '@/utils'\nimport { X } from 'lucide-vue-next'\nimport { variants } from './variants'\n\ninterface Props {\n  variant?: Variants['variant']\n  class?: string\n  placeholder?: string\n  clearable?: boolean\n  type?: 'text' | 'textarea' | 'number'\n  focus?: boolean\n  select?: boolean\n  disabled?: boolean\n  readonly?: boolean\n  rows?: number\n  error?: string\n  description?: string\n}\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<Props>(), {\n  type: 'text',\n})\n\nconst attrs = useAttrs()\n\nconst model = defineModel<string | number>()\n\nfunction clear() {\n  model.value = ''\n}\n\nconst inputRef = useTemplateRef('inputRef')\n\nwatchEffect(() => {\n  if (props.focus) {\n    nextTick(() => {\n      inputRef.value?.focus()\n    })\n  }\n})\n\nwatchEffect(() => {\n  if (props.select) {\n    nextTick(() => {\n      inputRef.value?.select()\n    })\n  }\n})\n</script>\n\n<template>\n  <div>\n    <div class=\"relative flex\">\n      <input\n        v-if=\"type !== 'textarea'\"\n        ref=\"inputRef\"\n        v-model=\"model\"\n        :class=\"[\n          cn(variants({ variant }), props.class),\n          { 'pr-9': clearable && model },\n          { 'text-muted-foreground cursor-not-allowed': disabled },\n          { 'text-muted-foreground': readonly },\n          { 'border-red-500': error },\n        ]\"\n        :placeholder=\"placeholder\"\n        :type=\"type\"\n        v-bind=\"attrs\"\n        :disabled=\"disabled || readonly\"\n      >\n      <textarea\n        v-else\n        v-model=\"model\"\n        class=\"scrollbar\"\n        :class=\"[\n          cn(variants({ variant }), props.class),\n          { 'pr-9': clearable && model },\n          { 'text-muted-foreground cursor-not-allowed': disabled },\n          { 'text-muted-foreground': readonly },\n          { 'border-red-500': error },\n        ]\"\n        :placeholder=\"placeholder\"\n        :rows=\"rows || 3\"\n        v-bind=\"attrs\"\n        :disabled=\"disabled || readonly\"\n      />\n\n      <div\n        v-if=\"clearable && model\"\n        class=\"border-border absolute top-1/2 right-3 -translate-y-1/2 rounded-full border p-0.5\"\n        @click=\"clear\"\n      >\n        <X class=\"text-muted-foreground h-3 w-3\" />\n      </div>\n    </div>\n    <UiText\n      v-if=\"description\"\n      as=\"div\"\n      variant=\"xs\"\n      muted\n      class=\"mt-1\"\n    >\n      {{ description }}\n    </UiText>\n    <div\n      v-if=\"error\"\n      class=\"text-sm text-red-500\"\n    >\n      {{ error }}\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/input/variants.ts",
    "content": "import type { VariantProps } from 'class-variance-authority'\nimport { cva } from 'class-variance-authority'\n\nexport const variants = cva(\n  'w-full rounded-md focus:outline-none placeholder:text-muted-foreground py-0.5 px-2 border bg-[color-mix(in_oklch,var(--foreground)_2%,var(--background))] [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n  {\n    variants: {\n      variant: {\n        default: 'border-border focus:border-primary',\n        ghost: 'border-transparent focus:border-transparent !bg-transparent',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n)\n\nexport type Variants = VariantProps<typeof variants>\n"
  },
  {
    "path": "src/renderer/components/ui/input-tags/InputTags.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TagItem } from './types'\nimport { i18n } from '@/electron'\nimport { X } from 'lucide-vue-next'\n\ninterface Props {\n  modelValue: TagItem[]\n  placeholder?: string\n  suggestions: TagItem[]\n}\n\ninterface Emits {\n  (e: 'update:modelValue', value: TagItem[]): void\n  (e: 'createTag', value: TagItem): void\n  (e: 'deleteTag', value: TagItem): void\n  (e: 'addTag', value: TagItem): void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  placeholder: `${i18n.t('placeholder.addTag')}...`,\n})\n\nconst emit = defineEmits<Emits>()\n\nconst tags = ref<TagItem[]>([...props.modelValue])\nconst inputValue = ref('')\nconst filteredSuggestions = ref<TagItem[]>([])\nconst warningTagIndex = ref<number | null>(null)\nconst selectedSuggestionIndex = ref(-1)\n\nconst isFocused = ref(false)\n\nconst inputRef = ref<HTMLInputElement | null>(null)\nconst containerRef = ref<HTMLDivElement | null>(null)\nconst suggestionsRef = ref<HTMLDivElement | null>(null)\nconst scrollContainerRef = ref<HTMLDivElement | null>(null)\n\nconst dropdownStyle = ref({\n  top: '0px',\n  left: '0px',\n  width: '0px',\n})\n\nfunction updateDropdownPosition() {\n  nextTick(() => {\n    if (containerRef.value && suggestionsRef.value) {\n      const rect = containerRef.value.getBoundingClientRect()\n\n      const availableHeight = window.innerHeight - rect.bottom - 10 // 10px - отступ снизу\n      const maxHeight = Math.min(240, availableHeight)\n\n      dropdownStyle.value = {\n        top: `${rect.bottom}px`,\n        left: `${rect.left}px`,\n        width: `${rect.width}px`,\n      }\n\n      if (scrollContainerRef.value) {\n        scrollContainerRef.value.style.maxHeight = `${maxHeight}px`\n      }\n    }\n  })\n}\n\nfunction addTag() {\n  const value = inputValue.value.trim()\n  if (\n    value\n    && !tags.value.some(tag => tag.name.toLowerCase() === value.toLowerCase())\n  ) {\n    const existingTag = props.suggestions.find(\n      suggestion => suggestion.name.toLowerCase() === value.toLowerCase(),\n    )\n\n    if (existingTag) {\n      tags.value.push({ ...existingTag })\n      emit('addTag', { ...existingTag })\n    }\n    else {\n      const newId = Date.now()\n      const newTag = { id: newId, name: value }\n      tags.value.push(newTag)\n      emit('createTag', newTag)\n    }\n\n    inputValue.value = ''\n    filteredSuggestions.value = []\n    selectedSuggestionIndex.value = -1\n  }\n}\n\nfunction removeTag(index: number) {\n  const tagToRemove = tags.value[index]\n  tags.value.splice(index, 1)\n  warningTagIndex.value = null\n  emit('deleteTag', tagToRemove)\n}\n\nfunction removeLastTag() {\n  if (inputValue.value === '' && tags.value.length > 0) {\n    const lastIndex = tags.value.length - 1\n\n    if (warningTagIndex.value === lastIndex) {\n      // Второе нажатие backspace - удаляем тег\n      const tagToRemove = tags.value[lastIndex]\n      tags.value.pop()\n      warningTagIndex.value = null\n      emit('deleteTag', tagToRemove)\n    }\n    else {\n      // Первое нажатие backspace - показываем предупреждение\n      warningTagIndex.value = lastIndex\n    }\n  }\n}\n\nfunction handleKeydown(e: KeyboardEvent) {\n  if (e.key === 'Escape') {\n    e.preventDefault()\n    inputValue.value = ''\n    filteredSuggestions.value = []\n    warningTagIndex.value = null\n    inputRef.value?.blur()\n    return\n  }\n\n  if (filteredSuggestions.value.length > 0) {\n    if (e.key === 'ArrowDown') {\n      e.preventDefault()\n      // Переход на следующий элемент или в начало списка\n      selectedSuggestionIndex.value\n        = (selectedSuggestionIndex.value + 1) % filteredSuggestions.value.length\n\n      ensureSelectedSuggestionVisible()\n    }\n    else if (e.key === 'ArrowUp') {\n      e.preventDefault()\n      // Переход на предыдущий элемент или в конец списка\n      selectedSuggestionIndex.value\n        = selectedSuggestionIndex.value <= 0\n          ? filteredSuggestions.value.length - 1\n          : selectedSuggestionIndex.value - 1\n\n      ensureSelectedSuggestionVisible()\n    }\n    else if (e.key === 'Enter') {\n      e.preventDefault()\n\n      if (selectedSuggestionIndex.value !== -1) {\n        selectSuggestion(\n          filteredSuggestions.value[selectedSuggestionIndex.value],\n        )\n      }\n      else {\n        addTag()\n      }\n\n      warningTagIndex.value = null\n    }\n  }\n  else if (e.key === 'Enter') {\n    e.preventDefault()\n    addTag()\n    warningTagIndex.value = null\n  }\n\n  if (e.key === 'Backspace') {\n    removeLastTag()\n  }\n  else if (\n    e.key !== 'ArrowDown'\n    && e.key !== 'ArrowUp'\n    && e.key !== 'Enter'\n    && e.key !== 'Escape'\n  ) {\n    warningTagIndex.value = null\n  }\n}\n\nfunction ensureSelectedSuggestionVisible() {\n  nextTick(() => {\n    const listItems = suggestionsRef.value?.querySelectorAll('li')\n    const scrollContainer = scrollContainerRef.value\n\n    if (listItems && scrollContainer && selectedSuggestionIndex.value >= 0) {\n      const selectedItem = listItems[selectedSuggestionIndex.value]\n\n      if (selectedItem) {\n        const containerRect = scrollContainer.getBoundingClientRect()\n        const selectedRect = selectedItem.getBoundingClientRect()\n\n        if (selectedRect.top < containerRect.top) {\n          // Элемент выше видимой области\n          scrollContainer.scrollTop -= containerRect.top - selectedRect.top\n        }\n        else if (selectedRect.bottom > containerRect.bottom) {\n          // Элемент ниже видимой области\n          scrollContainer.scrollTop\n            += selectedRect.bottom - containerRect.bottom\n        }\n      }\n    }\n  })\n}\n\nfunction updateFilteredSuggestions() {\n  if (inputValue.value) {\n    const lowerCaseInput = inputValue.value.toLowerCase()\n    filteredSuggestions.value = props.suggestions\n      .filter(\n        suggestion => !tags.value.some(tag => tag.id === suggestion.id),\n      )\n      .filter(suggestion =>\n        suggestion.name.toLowerCase().includes(lowerCaseInput),\n      )\n\n    if (filteredSuggestions.value.length > 0) {\n      updateDropdownPosition()\n    }\n  }\n  else {\n    filteredSuggestions.value = []\n  }\n}\n\nfunction handleInput() {\n  updateFilteredSuggestions()\n}\n\nfunction selectSuggestion(suggestion: TagItem) {\n  if (!tags.value.some(tag => tag.id === suggestion.id)) {\n    tags.value.push({ ...suggestion })\n    emit('addTag', { ...suggestion })\n    inputValue.value = ''\n    filteredSuggestions.value = []\n    selectedSuggestionIndex.value = -1\n  }\n}\n\nfunction focusInput() {\n  inputRef.value?.focus()\n  isFocused.value = true\n  if (filteredSuggestions.value.length > 0) {\n    updateDropdownPosition()\n  }\n}\n\nfunction handleBlur() {\n  setTimeout(() => {}, 200)\n\n  nextTick(() => {\n    isFocused.value = false\n    filteredSuggestions.value = []\n    warningTagIndex.value = null\n    selectedSuggestionIndex.value = -1\n    inputValue.value = ''\n  })\n}\n\nfunction resetWarning() {\n  warningTagIndex.value = null\n}\n\nfunction handleResize() {\n  if (isFocused.value && filteredSuggestions.value.length > 0) {\n    updateDropdownPosition()\n  }\n}\n\nonMounted(() => {\n  window.addEventListener('resize', handleResize)\n})\n\nonBeforeUnmount(() => {\n  window.removeEventListener('resize', handleResize)\n})\n\nwatch(\n  () => props.modelValue,\n  (newValue) => {\n    tags.value = [...newValue]\n  },\n  { deep: true },\n)\n\nwatch(filteredSuggestions, () => {\n  selectedSuggestionIndex.value = -1\n})\n\nwatch(isFocused, (newValue) => {\n  if (newValue && filteredSuggestions.value.length > 0) {\n    updateDropdownPosition()\n  }\n})\n</script>\n\n<template>\n  <div\n    ref=\"containerRef\"\n    class=\"relative flex flex-wrap items-center gap-1 rounded px-2 py-1\"\n    @click=\"focusInput\"\n  >\n    <div\n      v-for=\"(tag, index) in tags\"\n      :key=\"tag.id\"\n      class=\"bg-accent text-text flex items-center rounded-sm px-1.5 py-0.5 text-xs select-none\"\n      :class=\"{ 'ring-primary ring-1': warningTagIndex === index }\"\n      @click=\"resetWarning\"\n    >\n      <div>{{ tag.name }}</div>\n      <X\n        class=\"hover:text-muted-foreground relative top-[1px] -mr-0.5 ml-1 h-3 w-3\"\n        @click.stop=\"removeTag(index)\"\n      />\n    </div>\n    <input\n      ref=\"inputRef\"\n      v-model=\"inputValue\"\n      type=\"text\"\n      :placeholder=\"tags.length ? '' : placeholder\"\n      class=\"w-full min-w-[120px] flex-1 bg-transparent text-xs outline-none\"\n      @keydown=\"handleKeydown\"\n      @input=\"handleInput\"\n      @focus=\"focusInput\"\n      @blur=\"handleBlur\"\n    >\n  </div>\n  <div\n    v-if=\"isFocused && filteredSuggestions.length > 0\"\n    ref=\"suggestionsRef\"\n    class=\"bg-background border-border fixed z-50 rounded-md border shadow-lg\"\n    :style=\"dropdownStyle\"\n  >\n    <div\n      ref=\"scrollContainerRef\"\n      class=\"scrollbar max-h-[240px] overflow-x-hidden overflow-y-auto\"\n    >\n      <ul class=\"w-full p-1\">\n        <li\n          v-for=\"(suggestion, index) in filteredSuggestions\"\n          :key=\"suggestion.id\"\n          class=\"cursor-pointer rounded-sm px-2 py-0.5 text-sm\"\n          :class=\"[\n            `suggestion-item-${index}`,\n            index === selectedSuggestionIndex\n              ? 'bg-accent text-text'\n              : 'hover:bg-accent-hover',\n          ]\"\n          @mousedown.prevent=\"selectSuggestion(suggestion)\"\n          @mouseover=\"selectedSuggestionIndex = index\"\n        >\n          {{ suggestion.name }}\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/input-tags/types/index.ts",
    "content": "export interface TagItem {\n  id: number\n  name: string\n}\n"
  },
  {
    "path": "src/renderer/components/ui/menu/FormItem.vue",
    "content": "<script setup lang=\"ts\">\nimport { cn } from '@/utils'\n\ninterface Props {\n  label: string\n  class?: string\n}\n\nconst props = defineProps<Props>()\n</script>\n\n<template>\n  <div :class=\"cn('grid grid-cols-[200px_1fr] gap-2', props.class)\">\n    <div class=\"flex min-h-9 items-start text-sm font-medium\">\n      {{ label }}\n    </div>\n    <div class=\"space-y-2\">\n      <slot />\n      <UiText\n        v-if=\"$slots.description\"\n        as=\"div\"\n        variant=\"base\"\n        muted\n      >\n        <slot name=\"description\" />\n      </UiText>\n      <div v-if=\"$slots.actions\">\n        <slot name=\"actions\" />\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/menu/FormSection.vue",
    "content": "<script setup lang=\"ts\">\nimport { cn } from '@/utils'\n\ninterface Props {\n  label: string\n  description?: string\n  variant?: 'default' | 'danger'\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  description: undefined,\n  variant: 'default',\n})\n</script>\n\n<template>\n  <div>\n    <div class=\"mb-2 px-1\">\n      <h3\n        class=\"text-muted-foreground text-xs font-semibold tracking-wide uppercase\"\n      >\n        {{ label }}\n      </h3>\n      <p\n        v-if=\"description\"\n        class=\"text-muted-foreground mt-0.5 text-xs\"\n      >\n        {{ description }}\n      </p>\n    </div>\n    <div\n      :class=\"\n        cn(\n          'rounded-lg border p-5',\n          props.variant === 'danger'\n            ? 'border-destructive/20 bg-[color-mix(in_oklch,var(--destructive)_5%,var(--background))]'\n            : 'border-border bg-[color-mix(in_oklch,var(--foreground)_4%,var(--background))]',\n        )\n      \"\n    >\n      <div\n        class=\"divide-border/40 divide-y [&>*]:py-4 [&>*:first-child]:pt-0 [&>*:last-child]:pb-0\"\n      >\n        <slot />\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/menu/Item.vue",
    "content": "<script setup lang=\"ts\">\ninterface Props {\n  label: string\n  isActive?: boolean\n}\n\ndefineProps<Props>()\n</script>\n\n<template>\n  <div\n    class=\"flex items-center gap-2 rounded-md px-2 py-1\"\n    :class=\"\n      isActive ? 'bg-accent text-accent-foreground' : 'hover:bg-accent-hover'\n    \"\n  >\n    <div\n      v-if=\"$slots.icon\"\n      class=\"text-muted-foreground flex h-4 w-4 shrink-0 items-center justify-center\"\n    >\n      <slot name=\"icon\" />\n    </div>\n    <div\n      class=\"truncate select-none\"\n      :class=\"!$slots.icon && 'ml-3.5'\"\n    >\n      {{ label }}\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/button/Button.vue",
    "content": "<script setup lang=\"ts\">\nimport type { PrimitiveProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport type { ButtonVariants } from '.'\nimport { cn } from '@/utils'\nimport { Primitive } from 'reka-ui'\nimport { buttonVariants } from '.'\n\ninterface Props extends PrimitiveProps {\n  variant?: ButtonVariants['variant']\n  size?: ButtonVariants['size']\n  class?: HTMLAttributes['class']\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  as: 'button',\n})\n</script>\n\n<template>\n  <Primitive\n    data-slot=\"button\"\n    :data-variant=\"variant\"\n    :as=\"as\"\n    :as-child=\"asChild\"\n    :class=\"cn(buttonVariants({ variant, size }), props.class)\"\n  >\n    <slot />\n  </Primitive>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/button/index.ts",
    "content": "import type { VariantProps } from 'class-variance-authority'\nimport { cva } from 'class-variance-authority'\n\nexport { default as Button } from './Button.vue'\n\nexport const buttonVariants = cva(\n  'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-default disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*=\\'size-\\'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n  {\n    variants: {\n      variant: {\n        default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n        destructive:\n          'bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n        outline:\n          'border bg-[color-mix(in_oklch,var(--foreground)_2%,var(--background))] shadow-xs hover:bg-[color-mix(in_oklch,var(--foreground)_5%,var(--background))] hover:text-accent-foreground',\n        secondary:\n          'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n        ghost:\n          'hover:bg-accent-hover hover:text-accent-foreground dark:hover:bg-accent/50',\n        icon: 'text-muted-foreground hover:bg-accent-hover hover:text-accent-foreground [&_svg:not([class*=\\'size-\\'])]:size-4',\n        link: 'text-primary underline-offset-4 hover:underline',\n      },\n      size: {\n        default: 'h-7 px-3',\n        sm: 'h-6 px-2',\n        lg: 'h-8 px-4',\n        icon: 'h-7 w-7 px-0',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n    },\n  },\n)\nexport type ButtonVariants = VariantProps<typeof buttonVariants>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/checkbox/Checkbox.vue",
    "content": "<script setup lang=\"ts\">\nimport type { CheckboxRootEmits, CheckboxRootProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { Check } from 'lucide-vue-next'\nimport { CheckboxIndicator, CheckboxRoot, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<\n  CheckboxRootProps & { class?: HTMLAttributes['class'] }\n>()\nconst emits = defineEmits<CheckboxRootEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <CheckboxRoot\n    v-slot=\"slotProps\"\n    data-slot=\"checkbox\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn(\n        'peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n        props.class,\n      )\n    \"\n  >\n    <CheckboxIndicator\n      data-slot=\"checkbox-indicator\"\n      class=\"grid place-content-center text-current transition-none\"\n    >\n      <slot v-bind=\"slotProps\">\n        <Check class=\"size-3.5\" />\n      </slot>\n    </CheckboxIndicator>\n  </CheckboxRoot>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/checkbox/index.ts",
    "content": "export { default as Checkbox } from './Checkbox.vue'\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/Command.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ListboxRootEmits, ListboxRootProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ListboxRoot, useFilter, useForwardPropsEmits } from 'reka-ui'\nimport { reactive, ref, watch } from 'vue'\nimport { provideCommandContext } from '.'\n\nconst props = withDefaults(\n  defineProps<ListboxRootProps & { class?: HTMLAttributes['class'] }>(),\n  {\n    modelValue: '',\n  },\n)\n\nconst emits = defineEmits<ListboxRootEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n\nconst allItems = ref<Map<string, string>>(new Map())\nconst allGroups = ref<Map<string, Set<string>>>(new Map())\n\nconst { contains } = useFilter({ sensitivity: 'base' })\nconst filterState = reactive({\n  search: '',\n  filtered: {\n    /** The count of all visible items. */\n    count: 0,\n    /** Map from visible item id to its search score. */\n    items: new Map() as Map<string, number>,\n    /** Set of groups with at least one visible item. */\n    groups: new Set() as Set<string>,\n  },\n})\n\nfunction filterItems() {\n  if (!filterState.search) {\n    filterState.filtered.count = allItems.value.size\n    // Do nothing, each item will know to show itself because search is empty\n    return\n  }\n\n  // Reset the groups\n  filterState.filtered.groups = new Set()\n  let itemCount = 0\n\n  // Check which items should be included\n  for (const [id, value] of allItems.value) {\n    const score = contains(value, filterState.search)\n    filterState.filtered.items.set(id, score ? 1 : 0)\n    if (score)\n      itemCount++\n  }\n\n  // Check which groups have at least 1 item shown\n  for (const [groupId, group] of allGroups.value) {\n    for (const itemId of group) {\n      if (filterState.filtered.items.get(itemId)! > 0) {\n        filterState.filtered.groups.add(groupId)\n        break\n      }\n    }\n  }\n\n  filterState.filtered.count = itemCount\n}\n\nwatch(\n  () => filterState.search,\n  () => {\n    filterItems()\n  },\n)\n\nprovideCommandContext({\n  allItems,\n  allGroups,\n  filterState,\n})\n</script>\n\n<template>\n  <ListboxRoot\n    data-slot=\"command\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn(\n        'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n        props.class,\n      )\n    \"\n  >\n    <slot />\n  </ListboxRoot>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/CommandDialog.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DialogRootEmits, DialogRootProps } from 'reka-ui'\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from '@/components/ui/shadcn/dialog'\nimport { useForwardPropsEmits } from 'reka-ui'\nimport Command from './Command.vue'\n\nconst props = withDefaults(\n  defineProps<\n    DialogRootProps & {\n      title?: string\n      description?: string\n    }\n  >(),\n  {\n    title: 'Command Palette',\n    description: 'Search for a command to run...',\n  },\n)\nconst emits = defineEmits<DialogRootEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <Dialog\n    v-slot=\"slotProps\"\n    v-bind=\"forwarded\"\n  >\n    <DialogContent class=\"overflow-hidden p-0\">\n      <DialogHeader class=\"sr-only\">\n        <DialogTitle>{{ title }}</DialogTitle>\n        <DialogDescription>{{ description }}</DialogDescription>\n      </DialogHeader>\n      <Command>\n        <slot v-bind=\"slotProps\" />\n      </Command>\n    </DialogContent>\n  </Dialog>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/CommandEmpty.vue",
    "content": "<script setup lang=\"ts\">\nimport type { PrimitiveProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { Primitive } from 'reka-ui'\nimport { computed } from 'vue'\nimport { useCommand } from '.'\n\nconst props = defineProps<\n  PrimitiveProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst { filterState } = useCommand()\nconst isRender = computed(\n  () => !!filterState.search && filterState.filtered.count === 0,\n)\n</script>\n\n<template>\n  <Primitive\n    v-if=\"isRender\"\n    data-slot=\"command-empty\"\n    v-bind=\"delegatedProps\"\n    :class=\"cn('py-6 text-center text-sm', props.class)\"\n  >\n    <slot />\n  </Primitive>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/CommandGroup.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ListboxGroupProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ListboxGroup, ListboxGroupLabel, useId } from 'reka-ui'\nimport { computed, onMounted, onUnmounted } from 'vue'\nimport { provideCommandGroupContext, useCommand } from '.'\n\nconst props = defineProps<\n  ListboxGroupProps & {\n    class?: HTMLAttributes['class']\n    heading?: string\n  }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst { allGroups, filterState } = useCommand()\nconst id = useId()\n\nconst isRender = computed(() =>\n  !filterState.search ? true : filterState.filtered.groups.has(id),\n)\n\nprovideCommandGroupContext({ id })\nonMounted(() => {\n  if (!allGroups.value.has(id))\n    allGroups.value.set(id, new Set())\n})\nonUnmounted(() => {\n  allGroups.value.delete(id)\n})\n</script>\n\n<template>\n  <ListboxGroup\n    v-bind=\"delegatedProps\"\n    :id=\"id\"\n    data-slot=\"command-group\"\n    :class=\"cn('text-foreground overflow-hidden p-1', props.class)\"\n    :hidden=\"isRender ? undefined : true\"\n  >\n    <ListboxGroupLabel\n      v-if=\"heading\"\n      data-slot=\"command-group-heading\"\n      class=\"text-muted-foreground px-2 py-1.5 text-xs font-medium\"\n    >\n      {{ heading }}\n    </ListboxGroupLabel>\n    <slot />\n  </ListboxGroup>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/CommandInput.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ListboxFilterProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { Search } from 'lucide-vue-next'\nimport { ListboxFilter, useForwardProps } from 'reka-ui'\nimport { useCommand } from '.'\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = defineProps<\n  ListboxFilterProps & {\n    class?: HTMLAttributes['class']\n  }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwardedProps = useForwardProps(delegatedProps)\n\nconst { filterState } = useCommand()\n</script>\n\n<template>\n  <div\n    data-slot=\"command-input-wrapper\"\n    class=\"flex h-9 items-center gap-2 border-b px-3\"\n  >\n    <Search class=\"size-4 shrink-0 opacity-50\" />\n    <ListboxFilter\n      v-bind=\"{ ...forwardedProps, ...$attrs }\"\n      v-model=\"filterState.search\"\n      data-slot=\"command-input\"\n      auto-focus\n      :class=\"\n        cn(\n          'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n          props.class,\n        )\n      \"\n    />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/CommandItem.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ListboxItemEmits, ListboxItemProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit, useCurrentElement } from '@vueuse/core'\nimport { ListboxItem, useForwardPropsEmits, useId } from 'reka-ui'\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\nimport { useCommand, useCommandGroup } from '.'\n\nconst props = defineProps<\n  ListboxItemProps & { class?: HTMLAttributes['class'] }\n>()\nconst emits = defineEmits<ListboxItemEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n\nconst id = useId()\nconst { filterState, allItems, allGroups } = useCommand()\nconst groupContext = useCommandGroup()\n\nconst isRender = computed(() => {\n  if (!filterState.search) {\n    return true\n  }\n  else {\n    const filteredCurrentItem = filterState.filtered.items.get(id)\n    // If the filtered items is undefined means not in the all times map yet\n    // Do the first render to add into the map\n    if (filteredCurrentItem === undefined) {\n      return true\n    }\n\n    // Check with filter\n    return filteredCurrentItem > 0\n  }\n})\n\nconst itemRef = ref()\nconst currentElement = useCurrentElement(itemRef)\nonMounted(() => {\n  if (!(currentElement.value instanceof HTMLElement))\n    return\n\n  // textValue to perform filter\n  allItems.value.set(\n    id,\n    currentElement.value.textContent ?? props.value?.toString() ?? '',\n  )\n\n  const groupId = groupContext?.id\n  if (groupId) {\n    if (!allGroups.value.has(groupId)) {\n      allGroups.value.set(groupId, new Set([id]))\n    }\n    else {\n      allGroups.value.get(groupId)?.add(id)\n    }\n  }\n})\nonUnmounted(() => {\n  allItems.value.delete(id)\n})\n</script>\n\n<template>\n  <ListboxItem\n    v-if=\"isRender\"\n    v-bind=\"forwarded\"\n    :id=\"id\"\n    ref=\"itemRef\"\n    data-slot=\"command-item\"\n    :class=\"\n      cn(\n        'data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg:not([class*=\\'text-\\'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\\'size-\\'])]:size-4',\n        props.class,\n      )\n    \"\n    @select=\"\n      () => {\n        filterState.search = '';\n      }\n    \"\n  >\n    <slot />\n  </ListboxItem>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/CommandList.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ListboxContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ListboxContent, useForwardProps } from 'reka-ui'\n\nconst props = defineProps<\n  ListboxContentProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardProps(delegatedProps)\n</script>\n\n<template>\n  <ListboxContent\n    data-slot=\"command-list\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn(\n        'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n        props.class,\n      )\n    \"\n  >\n    <div role=\"presentation\">\n      <slot />\n    </div>\n  </ListboxContent>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/CommandSeparator.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SeparatorProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { Separator } from 'reka-ui'\n\nconst props = defineProps<\n  SeparatorProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n  <Separator\n    data-slot=\"command-separator\"\n    v-bind=\"delegatedProps\"\n    :class=\"cn('bg-border -mx-1 h-px', props.class)\"\n  >\n    <slot />\n  </Separator>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/CommandShortcut.vue",
    "content": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\n\nconst props = defineProps<{\n  class?: HTMLAttributes['class']\n}>()\n</script>\n\n<template>\n  <span\n    data-slot=\"command-shortcut\"\n    :class=\"\n      cn('text-muted-foreground ml-auto text-xs tracking-widest', props.class)\n    \"\n  >\n    <slot />\n  </span>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/command/index.ts",
    "content": "import type { Ref } from 'vue'\nimport { createContext } from 'reka-ui'\n\nexport { default as Command } from './Command.vue'\nexport { default as CommandDialog } from './CommandDialog.vue'\nexport { default as CommandEmpty } from './CommandEmpty.vue'\nexport { default as CommandGroup } from './CommandGroup.vue'\nexport { default as CommandInput } from './CommandInput.vue'\nexport { default as CommandItem } from './CommandItem.vue'\nexport { default as CommandList } from './CommandList.vue'\nexport { default as CommandSeparator } from './CommandSeparator.vue'\nexport { default as CommandShortcut } from './CommandShortcut.vue'\n\nexport const [useCommand, provideCommandContext] = createContext<{\n  allItems: Ref<Map<string, string>>\n  allGroups: Ref<Map<string, Set<string>>>\n  filterState: {\n    search: string\n    filtered: {\n      count: number\n      items: Map<string, number>\n      groups: Set<string>\n    }\n  }\n}>('Command')\n\nexport const [useCommandGroup, provideCommandGroupContext] = createContext<{\n  id?: string\n}>('CommandGroup')\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenu.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuRootEmits, ContextMenuRootProps } from 'reka-ui'\nimport { ContextMenuRoot, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<ContextMenuRootProps>()\nconst emits = defineEmits<ContextMenuRootEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <ContextMenuRoot\n    data-slot=\"context-menu\"\n    v-bind=\"forwarded\"\n  >\n    <slot />\n  </ContextMenuRoot>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuCheckboxItem.vue",
    "content": "<script setup lang=\"ts\">\nimport type {\n  ContextMenuCheckboxItemEmits,\n  ContextMenuCheckboxItemProps,\n} from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { Check } from 'lucide-vue-next'\nimport {\n  ContextMenuCheckboxItem,\n  ContextMenuItemIndicator,\n  useForwardPropsEmits,\n} from 'reka-ui'\n\nconst props = defineProps<\n  ContextMenuCheckboxItemProps & { class?: HTMLAttributes['class'] }\n>()\nconst emits = defineEmits<ContextMenuCheckboxItemEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <ContextMenuCheckboxItem\n    data-slot=\"context-menu-checkbox-item\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn(\n        'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\\'size-\\'])]:size-4',\n        props.class,\n      )\n    \"\n  >\n    <span\n      class=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\"\n    >\n      <ContextMenuItemIndicator>\n        <slot name=\"indicator-icon\">\n          <Check class=\"size-4\" />\n        </slot>\n      </ContextMenuItemIndicator>\n    </span>\n    <slot />\n  </ContextMenuCheckboxItem>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuContent.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuContentEmits, ContextMenuContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport {\n  ContextMenuContent,\n  ContextMenuPortal,\n  useForwardPropsEmits,\n} from 'reka-ui'\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = defineProps<\n  ContextMenuContentProps & { class?: HTMLAttributes['class'] }\n>()\nconst emits = defineEmits<ContextMenuContentEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <ContextMenuPortal>\n    <ContextMenuContent\n      data-slot=\"context-menu-content\"\n      v-bind=\"{ ...$attrs, ...forwarded }\"\n      :class=\"\n        cn(\n          'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--reka-context-menu-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md',\n          props.class,\n        )\n      \"\n    >\n      <slot />\n    </ContextMenuContent>\n  </ContextMenuPortal>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuGroup.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuGroupProps } from 'reka-ui'\nimport { ContextMenuGroup } from 'reka-ui'\n\nconst props = defineProps<ContextMenuGroupProps>()\n</script>\n\n<template>\n  <ContextMenuGroup\n    data-slot=\"context-menu-group\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </ContextMenuGroup>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuItem.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuItemEmits, ContextMenuItemProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ContextMenuItem, useForwardPropsEmits } from 'reka-ui'\n\nconst props = withDefaults(\n  defineProps<\n    ContextMenuItemProps & {\n      class?: HTMLAttributes['class']\n      inset?: boolean\n      variant?: 'default' | 'destructive'\n    }\n  >(),\n  {\n    variant: 'default',\n  },\n)\nconst emits = defineEmits<ContextMenuItemEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <ContextMenuItem\n    data-slot=\"context-menu-item\"\n    :data-inset=\"inset ? '' : undefined\"\n    :data-variant=\"variant\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn(\n        'focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive-foreground data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/40 data-[variant=destructive]:focus:text-destructive-foreground data-[variant=destructive]:*:[svg]:!text-destructive-foreground [&_svg:not([class*=\\'text-\\'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\\'size-\\'])]:size-4',\n        props.class,\n      )\n    \"\n  >\n    <slot />\n  </ContextMenuItem>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuLabel.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuLabelProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ContextMenuLabel } from 'reka-ui'\n\nconst props = defineProps<\n  ContextMenuLabelProps & { class?: HTMLAttributes['class'], inset?: boolean }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n  <ContextMenuLabel\n    data-slot=\"context-menu-label\"\n    :data-inset=\"inset ? '' : undefined\"\n    v-bind=\"delegatedProps\"\n    :class=\"\n      cn(\n        'text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8',\n        props.class,\n      )\n    \"\n  >\n    <slot />\n  </ContextMenuLabel>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuPortal.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuPortalProps } from 'reka-ui'\nimport { ContextMenuPortal } from 'reka-ui'\n\nconst props = defineProps<ContextMenuPortalProps>()\n</script>\n\n<template>\n  <ContextMenuPortal\n    data-slot=\"context-menu-portal\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </ContextMenuPortal>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuRadioGroup.vue",
    "content": "<script setup lang=\"ts\">\nimport type {\n  ContextMenuRadioGroupEmits,\n  ContextMenuRadioGroupProps,\n} from 'reka-ui'\nimport { ContextMenuRadioGroup, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<ContextMenuRadioGroupProps>()\nconst emits = defineEmits<ContextMenuRadioGroupEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <ContextMenuRadioGroup\n    data-slot=\"context-menu-radio-group\"\n    v-bind=\"forwarded\"\n  >\n    <slot />\n  </ContextMenuRadioGroup>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuRadioItem.vue",
    "content": "<script setup lang=\"ts\">\nimport type {\n  ContextMenuRadioItemEmits,\n  ContextMenuRadioItemProps,\n} from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { Circle } from 'lucide-vue-next'\nimport {\n  ContextMenuItemIndicator,\n  ContextMenuRadioItem,\n  useForwardPropsEmits,\n} from 'reka-ui'\n\nconst props = defineProps<\n  ContextMenuRadioItemProps & { class?: HTMLAttributes['class'] }\n>()\nconst emits = defineEmits<ContextMenuRadioItemEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <ContextMenuRadioItem\n    data-slot=\"context-menu-radio-item\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn(\n        'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\\'size-\\'])]:size-4',\n        props.class,\n      )\n    \"\n  >\n    <span\n      class=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\"\n    >\n      <ContextMenuItemIndicator>\n        <slot name=\"indicator-icon\">\n          <Circle class=\"size-2 fill-current\" />\n        </slot>\n      </ContextMenuItemIndicator>\n    </span>\n    <slot />\n  </ContextMenuRadioItem>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuSeparator.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuSeparatorProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ContextMenuSeparator } from 'reka-ui'\n\nconst props = defineProps<\n  ContextMenuSeparatorProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n  <ContextMenuSeparator\n    data-slot=\"context-menu-separator\"\n    v-bind=\"delegatedProps\"\n    :class=\"cn('bg-border -mx-1 my-1 h-px', props.class)\"\n  />\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuShortcut.vue",
    "content": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\n\nconst props = defineProps<{\n  class?: HTMLAttributes['class']\n}>()\n</script>\n\n<template>\n  <span\n    data-slot=\"context-menu-shortcut\"\n    :class=\"\n      cn('text-muted-foreground ml-auto text-xs tracking-widest', props.class)\n    \"\n  >\n    <slot />\n  </span>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuSub.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuSubEmits, ContextMenuSubProps } from 'reka-ui'\nimport { ContextMenuSub, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<ContextMenuSubProps>()\nconst emits = defineEmits<ContextMenuSubEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <ContextMenuSub\n    data-slot=\"context-menu-sub\"\n    v-bind=\"forwarded\"\n  >\n    <slot />\n  </ContextMenuSub>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuSubContent.vue",
    "content": "<script setup lang=\"ts\">\nimport type {\n  DropdownMenuSubContentEmits,\n  DropdownMenuSubContentProps,\n} from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ContextMenuSubContent, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<\n  DropdownMenuSubContentProps & { class?: HTMLAttributes['class'] }\n>()\nconst emits = defineEmits<DropdownMenuSubContentEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <ContextMenuSubContent\n    data-slot=\"context-menu-sub-content\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn(\n        'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--reka-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg',\n        props.class,\n      )\n    \"\n  >\n    <slot />\n  </ContextMenuSubContent>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuSubTrigger.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuSubTriggerProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ChevronRight } from 'lucide-vue-next'\nimport { ContextMenuSubTrigger, useForwardProps } from 'reka-ui'\n\nconst props = defineProps<\n  ContextMenuSubTriggerProps & {\n    class?: HTMLAttributes['class']\n    inset?: boolean\n  }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n  <ContextMenuSubTrigger\n    data-slot=\"context-menu-sub-trigger\"\n    :data-inset=\"inset ? '' : undefined\"\n    v-bind=\"forwardedProps\"\n    :class=\"\n      cn(\n        'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\\'size-\\'])]:size-4',\n        props.class,\n      )\n    \"\n  >\n    <slot />\n    <ChevronRight class=\"ml-auto\" />\n  </ContextMenuSubTrigger>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/ContextMenuTrigger.vue",
    "content": "<script setup lang=\"ts\">\nimport type { ContextMenuTriggerProps } from 'reka-ui'\nimport { ContextMenuTrigger, useForwardProps } from 'reka-ui'\n\nconst props = defineProps<ContextMenuTriggerProps>()\n\nconst forwardedProps = useForwardProps(props)\n</script>\n\n<template>\n  <ContextMenuTrigger\n    data-slot=\"context-menu-trigger\"\n    v-bind=\"forwardedProps\"\n  >\n    <slot />\n  </ContextMenuTrigger>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/context-menu/index.ts",
    "content": "export { default as ContextMenu } from './ContextMenu.vue'\nexport { default as ContextMenuCheckboxItem } from './ContextMenuCheckboxItem.vue'\nexport { default as ContextMenuContent } from './ContextMenuContent.vue'\nexport { default as ContextMenuGroup } from './ContextMenuGroup.vue'\nexport { default as ContextMenuItem } from './ContextMenuItem.vue'\nexport { default as ContextMenuLabel } from './ContextMenuLabel.vue'\nexport { default as ContextMenuRadioGroup } from './ContextMenuRadioGroup.vue'\nexport { default as ContextMenuRadioItem } from './ContextMenuRadioItem.vue'\nexport { default as ContextMenuSeparator } from './ContextMenuSeparator.vue'\nexport { default as ContextMenuShortcut } from './ContextMenuShortcut.vue'\nexport { default as ContextMenuSub } from './ContextMenuSub.vue'\nexport { default as ContextMenuSubContent } from './ContextMenuSubContent.vue'\nexport { default as ContextMenuSubTrigger } from './ContextMenuSubTrigger.vue'\nexport { default as ContextMenuTrigger } from './ContextMenuTrigger.vue'\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/Dialog.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DialogRootEmits, DialogRootProps } from 'reka-ui'\nimport { DialogRoot, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<DialogRootProps>()\nconst emits = defineEmits<DialogRootEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <DialogRoot\n    v-slot=\"slotProps\"\n    data-slot=\"dialog\"\n    v-bind=\"forwarded\"\n  >\n    <slot v-bind=\"slotProps\" />\n  </DialogRoot>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/DialogClose.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DialogCloseProps } from 'reka-ui'\nimport { DialogClose } from 'reka-ui'\n\nconst props = defineProps<DialogCloseProps>()\n</script>\n\n<template>\n  <DialogClose\n    data-slot=\"dialog-close\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </DialogClose>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/DialogContent.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DialogContentEmits, DialogContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { X } from 'lucide-vue-next'\nimport {\n  DialogClose,\n  DialogContent,\n  DialogPortal,\n  useForwardPropsEmits,\n} from 'reka-ui'\nimport DialogOverlay from './DialogOverlay.vue'\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<\n    DialogContentProps & {\n      class?: HTMLAttributes['class']\n      showCloseButton?: boolean\n    }\n  >(),\n  {\n    showCloseButton: true,\n  },\n)\nconst emits = defineEmits<DialogContentEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogContent\n      data-slot=\"dialog-content\"\n      v-bind=\"{ ...$attrs, ...forwarded }\"\n      :class=\"\n        cn(\n          'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',\n          props.class,\n        )\n      \"\n    >\n      <slot />\n\n      <DialogClose\n        v-if=\"showCloseButton\"\n        data-slot=\"dialog-close\"\n        class=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n      >\n        <X />\n        <span class=\"sr-only\">Close</span>\n      </DialogClose>\n    </DialogContent>\n  </DialogPortal>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/DialogDescription.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DialogDescriptionProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { DialogDescription, useForwardProps } from 'reka-ui'\n\nconst props = defineProps<\n  DialogDescriptionProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n  <DialogDescription\n    data-slot=\"dialog-description\"\n    v-bind=\"forwardedProps\"\n    :class=\"cn('text-muted-foreground text-sm', props.class)\"\n  >\n    <slot />\n  </DialogDescription>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/DialogFooter.vue",
    "content": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { Button } from '@/components/ui/shadcn/button'\nimport { cn } from '@/utils'\nimport { DialogClose } from 'reka-ui'\n\nconst props = withDefaults(\n  defineProps<{\n    class?: HTMLAttributes['class']\n    showCloseButton?: boolean\n  }>(),\n  {\n    showCloseButton: false,\n  },\n)\n</script>\n\n<template>\n  <div\n    data-slot=\"dialog-footer\"\n    :class=\"\n      cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', props.class)\n    \"\n  >\n    <slot />\n    <DialogClose\n      v-if=\"showCloseButton\"\n      as-child\n    >\n      <Button variant=\"outline\">\n        Close\n      </Button>\n    </DialogClose>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/DialogHeader.vue",
    "content": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\n\nconst props = defineProps<{\n  class?: HTMLAttributes['class']\n}>()\n</script>\n\n<template>\n  <div\n    data-slot=\"dialog-header\"\n    :class=\"cn('flex flex-col gap-2 text-center sm:text-left', props.class)\"\n  >\n    <slot />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/DialogOverlay.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DialogOverlayProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { DialogOverlay } from 'reka-ui'\n\nconst props = defineProps<\n  DialogOverlayProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n  <DialogOverlay\n    data-slot=\"dialog-overlay\"\n    v-bind=\"delegatedProps\"\n    :class=\"\n      cn(\n        'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80',\n        props.class,\n      )\n    \"\n  >\n    <slot />\n  </DialogOverlay>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/DialogScrollContent.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DialogContentEmits, DialogContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { X } from 'lucide-vue-next'\nimport {\n  DialogClose,\n  DialogContent,\n  DialogOverlay,\n  DialogPortal,\n  useForwardPropsEmits,\n} from 'reka-ui'\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = defineProps<\n  DialogContentProps & { class?: HTMLAttributes['class'] }\n>()\nconst emits = defineEmits<DialogContentEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <DialogPortal>\n    <DialogOverlay\n      class=\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 grid place-items-center overflow-y-auto bg-black/80\"\n    >\n      <DialogContent\n        :class=\"\n          cn(\n            'border-border bg-background relative z-50 my-8 grid w-full max-w-lg gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg md:w-full',\n            props.class,\n          )\n        \"\n        v-bind=\"{ ...$attrs, ...forwarded }\"\n        @pointer-down-outside=\"\n          (event) => {\n            const originalEvent = event.detail.originalEvent;\n            const target = originalEvent.target as HTMLElement;\n            if (\n              originalEvent.offsetX > target.clientWidth\n              || originalEvent.offsetY > target.clientHeight\n            ) {\n              event.preventDefault();\n            }\n          }\n        \"\n      >\n        <slot />\n\n        <DialogClose\n          class=\"hover:bg-secondary absolute top-4 right-4 rounded-md p-0.5 transition-colors\"\n        >\n          <X class=\"h-4 w-4\" />\n          <span class=\"sr-only\">Close</span>\n        </DialogClose>\n      </DialogContent>\n    </DialogOverlay>\n  </DialogPortal>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/DialogTitle.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DialogTitleProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { DialogTitle, useForwardProps } from 'reka-ui'\n\nconst props = defineProps<\n  DialogTitleProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n  <DialogTitle\n    data-slot=\"dialog-title\"\n    v-bind=\"forwardedProps\"\n    :class=\"cn('text-lg leading-none font-semibold', props.class)\"\n  >\n    <slot />\n  </DialogTitle>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/DialogTrigger.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DialogTriggerProps } from 'reka-ui'\nimport { DialogTrigger } from 'reka-ui'\n\nconst props = defineProps<DialogTriggerProps>()\n</script>\n\n<template>\n  <DialogTrigger\n    data-slot=\"dialog-trigger\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </DialogTrigger>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/dialog/index.ts",
    "content": "export { default as Dialog } from './Dialog.vue'\nexport { default as DialogClose } from './DialogClose.vue'\nexport { default as DialogContent } from './DialogContent.vue'\nexport { default as DialogDescription } from './DialogDescription.vue'\nexport { default as DialogFooter } from './DialogFooter.vue'\nexport { default as DialogHeader } from './DialogHeader.vue'\nexport { default as DialogOverlay } from './DialogOverlay.vue'\nexport { default as DialogScrollContent } from './DialogScrollContent.vue'\nexport { default as DialogTitle } from './DialogTitle.vue'\nexport { default as DialogTrigger } from './DialogTrigger.vue'\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/input/Input.vue",
    "content": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport type { InputVariants } from '.'\nimport { cn } from '@/utils'\nimport { useVModel } from '@vueuse/core'\nimport { inputVariants } from '.'\n\nconst props = defineProps<{\n  defaultValue?: string | number\n  modelValue?: string | number\n  class?: HTMLAttributes['class']\n  variant?: InputVariants['variant']\n}>()\n\nconst emits = defineEmits<{\n  (e: 'update:modelValue', payload: string | number): void\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n  passive: true,\n  defaultValue: props.defaultValue,\n})\n</script>\n\n<template>\n  <input\n    v-model=\"modelValue\"\n    data-slot=\"input\"\n    :class=\"cn(inputVariants({ variant }), props.class)\"\n  >\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/input/index.ts",
    "content": "import type { VariantProps } from 'class-variance-authority'\nimport { cva } from 'class-variance-authority'\n\nexport { default as Input } from './Input.vue'\n\nexport const inputVariants = cva(\n  'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive h-7 w-full min-w-0 rounded-md px-2 text-sm outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n  {\n    variants: {\n      variant: {\n        default:\n          'border-input bg-background dark:bg-input/30 border shadow-xs focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n        ghost:\n          'border-transparent bg-transparent shadow-none focus-visible:border-transparent focus-visible:ring-0',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n)\n\nexport type InputVariants = VariantProps<typeof inputVariants>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/popover/Popover.vue",
    "content": "<script setup lang=\"ts\">\nimport type { PopoverRootEmits, PopoverRootProps } from 'reka-ui'\nimport { PopoverRoot, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<PopoverRootProps>()\nconst emits = defineEmits<PopoverRootEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <PopoverRoot\n    v-slot=\"slotProps\"\n    data-slot=\"popover\"\n    v-bind=\"forwarded\"\n  >\n    <slot v-bind=\"slotProps\" />\n  </PopoverRoot>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/popover/PopoverAnchor.vue",
    "content": "<script setup lang=\"ts\">\nimport type { PopoverAnchorProps } from 'reka-ui'\nimport { PopoverAnchor } from 'reka-ui'\n\nconst props = defineProps<PopoverAnchorProps>()\n</script>\n\n<template>\n  <PopoverAnchor\n    data-slot=\"popover-anchor\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </PopoverAnchor>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/popover/PopoverContent.vue",
    "content": "<script setup lang=\"ts\">\nimport type { PopoverContentEmits, PopoverContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { PopoverContent, PopoverPortal, useForwardPropsEmits } from 'reka-ui'\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<PopoverContentProps & { class?: HTMLAttributes['class'] }>(),\n  {\n    align: 'center',\n    sideOffset: 4,\n  },\n)\nconst emits = defineEmits<PopoverContentEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <PopoverPortal>\n    <PopoverContent\n      data-slot=\"popover-content\"\n      v-bind=\"{ ...$attrs, ...forwarded }\"\n      :class=\"\n        cn(\n          'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--reka-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n          props.class,\n        )\n      \"\n    >\n      <slot />\n    </PopoverContent>\n  </PopoverPortal>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/popover/PopoverTrigger.vue",
    "content": "<script setup lang=\"ts\">\nimport type { PopoverTriggerProps } from 'reka-ui'\nimport { PopoverTrigger } from 'reka-ui'\n\nconst props = defineProps<PopoverTriggerProps>()\n</script>\n\n<template>\n  <PopoverTrigger\n    data-slot=\"popover-trigger\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </PopoverTrigger>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/popover/index.ts",
    "content": "export { default as Popover } from './Popover.vue'\nexport { default as PopoverAnchor } from './PopoverAnchor.vue'\nexport { default as PopoverContent } from './PopoverContent.vue'\nexport { default as PopoverTrigger } from './PopoverTrigger.vue'\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/resizable/ResizableHandle.vue",
    "content": "<script setup lang=\"ts\">\nimport type {\n  SplitterResizeHandleEmits,\n  SplitterResizeHandleProps,\n} from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { GripVertical } from 'lucide-vue-next'\nimport { SplitterResizeHandle, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<\n  SplitterResizeHandleProps & {\n    class?: HTMLAttributes['class']\n    withHandle?: boolean\n  }\n>()\nconst emits = defineEmits<SplitterResizeHandleEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class', 'withHandle')\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <SplitterResizeHandle\n    data-slot=\"resizable-handle\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn(\n        'group/resizable-handle focus-visible:ring-ring before:bg-border hover:before:bg-primary focus-visible:before:bg-primary relative flex w-px items-center justify-center bg-transparent before:absolute before:inset-y-0 before:left-1/2 before:w-px before:-translate-x-1/2 before:transition-[background-color,width,height] before:delay-0 before:duration-150 before:content-[\\'\\'] after:absolute after:inset-y-0 after:left-1/2 after:w-3 after:-translate-x-1/2 after:content-[\\'\\'] hover:before:w-0.5 hover:before:delay-200 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden focus-visible:before:w-0.5 focus-visible:before:delay-0 data-[orientation=vertical]:h-px data-[orientation=vertical]:w-full data-[orientation=vertical]:before:top-1/2 data-[orientation=vertical]:before:left-0 data-[orientation=vertical]:before:h-px data-[orientation=vertical]:before:w-full data-[orientation=vertical]:before:translate-x-0 data-[orientation=vertical]:before:-translate-y-1/2 data-[orientation=vertical]:after:left-0 data-[orientation=vertical]:after:h-3 data-[orientation=vertical]:after:w-full data-[orientation=vertical]:after:translate-x-0 data-[orientation=vertical]:after:-translate-y-1/2 data-[orientation=vertical]:hover:before:h-0.5 data-[orientation=vertical]:focus-visible:before:h-0.5 [&[data-orientation=vertical]>div]:rotate-90',\n        props.class,\n      )\n    \"\n  >\n    <template v-if=\"props.withHandle\">\n      <div\n        class=\"bg-background border-border text-muted-foreground group-hover/resizable-handle:border-primary group-hover/resizable-handle:bg-primary/10 group-hover/resizable-handle:text-primary group-focus-visible/resizable-handle:border-primary group-focus-visible/resizable-handle:bg-primary/10 group-focus-visible/resizable-handle:text-primary z-10 flex h-4 w-3 items-center justify-center rounded-xs border transition-[border-color,background-color,color] delay-0 duration-150 group-hover/resizable-handle:delay-200 group-focus-visible/resizable-handle:delay-0\"\n      >\n        <slot>\n          <GripVertical class=\"size-2.5\" />\n        </slot>\n      </div>\n    </template>\n  </SplitterResizeHandle>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/resizable/ResizablePanel.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SplitterPanelEmits, SplitterPanelProps } from 'reka-ui'\nimport { SplitterPanel, useForwardExpose, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<SplitterPanelProps>()\nconst emits = defineEmits<SplitterPanelEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\nconst { forwardRef } = useForwardExpose()\n</script>\n\n<template>\n  <SplitterPanel\n    :ref=\"forwardRef\"\n    v-slot=\"slotProps\"\n    data-slot=\"resizable-panel\"\n    v-bind=\"forwarded\"\n  >\n    <slot v-bind=\"slotProps\" />\n  </SplitterPanel>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/resizable/ResizablePanelGroup.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SplitterGroupEmits, SplitterGroupProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { SplitterGroup, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<\n  SplitterGroupProps & { class?: HTMLAttributes['class'] }\n>()\nconst emits = defineEmits<SplitterGroupEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <SplitterGroup\n    v-slot=\"slotProps\"\n    data-slot=\"resizable-panel-group\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn('flex h-full w-full data-[orientation=vertical]:flex-col', props.class)\n    \"\n  >\n    <slot v-bind=\"slotProps\" />\n  </SplitterGroup>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/resizable/index.ts",
    "content": "export { default as ResizableHandle } from './ResizableHandle.vue'\nexport { default as ResizablePanel } from './ResizablePanel.vue'\nexport { default as ResizablePanelGroup } from './ResizablePanelGroup.vue'\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/Select.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectRootEmits, SelectRootProps } from 'reka-ui'\nimport { SelectRoot, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<SelectRootProps>()\nconst emits = defineEmits<SelectRootEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <SelectRoot\n    v-slot=\"slotProps\"\n    data-slot=\"select\"\n    v-bind=\"forwarded\"\n  >\n    <slot v-bind=\"slotProps\" />\n  </SelectRoot>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectContent.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectContentEmits, SelectContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport {\n  SelectContent,\n  SelectPortal,\n  SelectViewport,\n  useForwardPropsEmits,\n} from 'reka-ui'\nimport { SelectScrollDownButton, SelectScrollUpButton } from '.'\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<SelectContentProps & { class?: HTMLAttributes['class'] }>(),\n  {\n    position: 'popper',\n  },\n)\nconst emits = defineEmits<SelectContentEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <SelectPortal>\n    <SelectContent\n      data-slot=\"select-content\"\n      v-bind=\"{ ...$attrs, ...forwarded }\"\n      :class=\"\n        cn(\n          'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md',\n          position === 'popper'\n            && 'w-full min-w-[var(--reka-select-trigger-width)] data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n          props.class,\n        )\n      \"\n    >\n      <SelectScrollUpButton />\n      <SelectViewport\n        :class=\"\n          cn(\n            'p-1',\n            position === 'popper'\n              && 'w-full min-w-[var(--reka-select-trigger-width)] scroll-my-1',\n          )\n        \"\n      >\n        <slot />\n      </SelectViewport>\n      <SelectScrollDownButton />\n    </SelectContent>\n  </SelectPortal>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectGroup.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectGroupProps } from 'reka-ui'\nimport { SelectGroup } from 'reka-ui'\n\nconst props = defineProps<SelectGroupProps>()\n</script>\n\n<template>\n  <SelectGroup\n    data-slot=\"select-group\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </SelectGroup>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectItem.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectItemProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { Check } from 'lucide-vue-next'\nimport {\n  SelectItem,\n  SelectItemIndicator,\n  SelectItemText,\n  useForwardProps,\n} from 'reka-ui'\n\nconst props = defineProps<\n  SelectItemProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n  <SelectItem\n    data-slot=\"select-item\"\n    v-bind=\"forwardedProps\"\n    :class=\"\n      cn(\n        'focus:bg-accent focus:text-accent-foreground [&_svg:not([class*=\\'text-\\'])]:text-muted-foreground relative flex h-7 w-full cursor-default items-center gap-2 rounded-sm py-0 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\\'size-\\'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2',\n        props.class,\n      )\n    \"\n  >\n    <span class=\"absolute right-2 flex size-3.5 items-center justify-center\">\n      <SelectItemIndicator>\n        <slot name=\"indicator-icon\">\n          <Check class=\"size-4\" />\n        </slot>\n      </SelectItemIndicator>\n    </span>\n\n    <SelectItemText>\n      <slot />\n    </SelectItemText>\n  </SelectItem>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectItemText.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectItemTextProps } from 'reka-ui'\nimport { SelectItemText } from 'reka-ui'\n\nconst props = defineProps<SelectItemTextProps>()\n</script>\n\n<template>\n  <SelectItemText\n    data-slot=\"select-item-text\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </SelectItemText>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectLabel.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectLabelProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { SelectLabel } from 'reka-ui'\n\nconst props = defineProps<\n  SelectLabelProps & { class?: HTMLAttributes['class'] }\n>()\n</script>\n\n<template>\n  <SelectLabel\n    data-slot=\"select-label\"\n    :class=\"cn('text-muted-foreground px-2 py-1.5 text-xs', props.class)\"\n  >\n    <slot />\n  </SelectLabel>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectScrollDownButton.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectScrollDownButtonProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ChevronDown } from 'lucide-vue-next'\nimport { SelectScrollDownButton, useForwardProps } from 'reka-ui'\n\nconst props = defineProps<\n  SelectScrollDownButtonProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n  <SelectScrollDownButton\n    data-slot=\"select-scroll-down-button\"\n    v-bind=\"forwardedProps\"\n    :class=\"\n      cn('flex cursor-default items-center justify-center py-1', props.class)\n    \"\n  >\n    <slot>\n      <ChevronDown class=\"size-4\" />\n    </slot>\n  </SelectScrollDownButton>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectScrollUpButton.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectScrollUpButtonProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ChevronUp } from 'lucide-vue-next'\nimport { SelectScrollUpButton, useForwardProps } from 'reka-ui'\n\nconst props = defineProps<\n  SelectScrollUpButtonProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n  <SelectScrollUpButton\n    data-slot=\"select-scroll-up-button\"\n    v-bind=\"forwardedProps\"\n    :class=\"\n      cn('flex cursor-default items-center justify-center py-1', props.class)\n    \"\n  >\n    <slot>\n      <ChevronUp class=\"size-4\" />\n    </slot>\n  </SelectScrollUpButton>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectSeparator.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectSeparatorProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { SelectSeparator } from 'reka-ui'\n\nconst props = defineProps<\n  SelectSeparatorProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n  <SelectSeparator\n    data-slot=\"select-separator\"\n    v-bind=\"delegatedProps\"\n    :class=\"cn('bg-border pointer-events-none -mx-1 my-1 h-px', props.class)\"\n  />\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectTrigger.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectTriggerProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ChevronDown } from 'lucide-vue-next'\nimport { SelectIcon, SelectTrigger, useForwardProps } from 'reka-ui'\n\nconst props = defineProps<\n  SelectTriggerProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n  <SelectTrigger\n    data-slot=\"select-trigger\"\n    v-bind=\"forwardedProps\"\n    :class=\"\n      cn(\n        'border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*=\\'text-\\'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex h-7 w-fit items-center justify-between gap-2 rounded-md border bg-[color-mix(in_oklch,var(--foreground)_2%,var(--background))] px-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none hover:bg-[color-mix(in_oklch,var(--foreground)_5%,var(--background))] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\\'size-\\'])]:size-4 [&>span]:truncate',\n        props.class,\n      )\n    \"\n  >\n    <slot />\n    <SelectIcon as-child>\n      <ChevronDown class=\"size-4 opacity-50\" />\n    </SelectIcon>\n  </SelectTrigger>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/SelectValue.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SelectValueProps } from 'reka-ui'\nimport { SelectValue } from 'reka-ui'\n\nconst props = defineProps<SelectValueProps>()\n</script>\n\n<template>\n  <SelectValue\n    data-slot=\"select-value\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </SelectValue>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/select/index.ts",
    "content": "export { default as Select } from './Select.vue'\nexport { default as SelectContent } from './SelectContent.vue'\nexport { default as SelectGroup } from './SelectGroup.vue'\nexport { default as SelectItem } from './SelectItem.vue'\nexport { default as SelectItemText } from './SelectItemText.vue'\nexport { default as SelectLabel } from './SelectLabel.vue'\nexport { default as SelectScrollDownButton } from './SelectScrollDownButton.vue'\nexport { default as SelectScrollUpButton } from './SelectScrollUpButton.vue'\nexport { default as SelectSeparator } from './SelectSeparator.vue'\nexport { default as SelectTrigger } from './SelectTrigger.vue'\nexport { default as SelectValue } from './SelectValue.vue'\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/switch/Switch.vue",
    "content": "<script setup lang=\"ts\">\nimport type { SwitchRootEmits, SwitchRootProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { SwitchRoot, SwitchThumb, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<\n  SwitchRootProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst emits = defineEmits<SwitchRootEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <SwitchRoot\n    v-slot=\"slotProps\"\n    data-slot=\"switch\"\n    v-bind=\"forwarded\"\n    :class=\"\n      cn(\n        'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n        props.class,\n      )\n    \"\n  >\n    <SwitchThumb\n      data-slot=\"switch-thumb\"\n      :class=\"\n        cn(\n          'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0',\n        )\n      \"\n    >\n      <slot\n        name=\"thumb\"\n        v-bind=\"slotProps\"\n      />\n    </SwitchThumb>\n  </SwitchRoot>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/switch/index.ts",
    "content": "export { default as Switch } from './Switch.vue'\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tabs/Tabs.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TabsRootEmits, TabsRootProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { TabsRoot, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<\n  TabsRootProps & { class?: HTMLAttributes['class'] }\n>()\nconst emits = defineEmits<TabsRootEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <TabsRoot\n    v-slot=\"slotProps\"\n    data-slot=\"tabs\"\n    v-bind=\"forwarded\"\n    :class=\"cn('flex flex-col gap-2', props.class)\"\n  >\n    <slot v-bind=\"slotProps\" />\n  </TabsRoot>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tabs/TabsContent.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TabsContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { TabsContent } from 'reka-ui'\n\nconst props = defineProps<\n  TabsContentProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n  <TabsContent\n    data-slot=\"tabs-content\"\n    :class=\"cn('flex-1 outline-none', props.class)\"\n    v-bind=\"delegatedProps\"\n  >\n    <slot />\n  </TabsContent>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tabs/TabsList.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TabsListProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { TabsList } from 'reka-ui'\n\nconst props = defineProps<\n  TabsListProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n  <TabsList\n    data-slot=\"tabs-list\"\n    v-bind=\"delegatedProps\"\n    :class=\"\n      cn(\n        'bg-muted text-muted-foreground inline-flex h-7 w-fit items-center justify-center rounded-lg p-0.5',\n        props.class,\n      )\n    \"\n  >\n    <slot />\n  </TabsList>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tabs/TabsTrigger.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TabsTriggerProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { TabsTrigger, useForwardProps } from 'reka-ui'\n\nconst props = defineProps<\n  TabsTriggerProps & { class?: HTMLAttributes['class'] }\n>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n  <TabsTrigger\n    data-slot=\"tabs-trigger\"\n    :class=\"\n      cn(\n        'data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-full flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\\'size-\\'])]:size-4',\n        props.class,\n      )\n    \"\n    v-bind=\"forwardedProps\"\n  >\n    <slot />\n  </TabsTrigger>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tabs/index.ts",
    "content": "export { default as Tabs } from './Tabs.vue'\nexport { default as TabsContent } from './TabsContent.vue'\nexport { default as TabsList } from './TabsList.vue'\nexport { default as TabsTrigger } from './TabsTrigger.vue'\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/textarea/Textarea.vue",
    "content": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport type { TextareaVariants } from '.'\nimport { cn } from '@/utils'\nimport { useVModel } from '@vueuse/core'\nimport { textareaVariants } from '.'\n\nconst props = defineProps<{\n  class?: HTMLAttributes['class']\n  defaultValue?: string | number\n  modelValue?: string | number\n  variant?: TextareaVariants['variant']\n}>()\n\nconst emits = defineEmits<{\n  (e: 'update:modelValue', payload: string | number): void\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n  passive: true,\n  defaultValue: props.defaultValue,\n})\n</script>\n\n<template>\n  <textarea\n    v-model=\"modelValue\"\n    data-slot=\"textarea\"\n    :class=\"cn(textareaVariants({ variant }), props.class)\"\n  />\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/textarea/index.ts",
    "content": "import type { VariantProps } from 'class-variance-authority'\nimport { cva } from 'class-variance-authority'\n\nexport { default as Textarea } from './Textarea.vue'\n\nexport const textareaVariants = cva(\n  'placeholder:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n  {\n    variants: {\n      variant: {\n        default:\n          'border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n        ghost:\n          'border-transparent bg-transparent shadow-none focus-visible:border-transparent focus-visible:ring-0',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n)\n\nexport type TextareaVariants = VariantProps<typeof textareaVariants>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tooltip/Tooltip.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TooltipRootEmits, TooltipRootProps } from 'reka-ui'\nimport { TooltipRoot, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<TooltipRootProps>()\nconst emits = defineEmits<TooltipRootEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <TooltipRoot\n    v-slot=\"slotProps\"\n    data-slot=\"tooltip\"\n    v-bind=\"forwarded\"\n  >\n    <slot v-bind=\"slotProps\" />\n  </TooltipRoot>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tooltip/TooltipContent.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TooltipContentEmits, TooltipContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport {\n  TooltipArrow,\n  TooltipContent,\n  TooltipPortal,\n  useForwardPropsEmits,\n} from 'reka-ui'\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<TooltipContentProps & { class?: HTMLAttributes['class'] }>(),\n  {\n    sideOffset: 4,\n  },\n)\n\nconst emits = defineEmits<TooltipContentEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <TooltipPortal>\n    <TooltipContent\n      data-slot=\"tooltip-content\"\n      v-bind=\"{ ...forwarded, ...$attrs }\"\n      :class=\"\n        cn(\n          'bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md border px-3 py-1.5 text-xs text-balance shadow-md',\n          props.class,\n        )\n      \"\n    >\n      <slot />\n\n      <TooltipArrow\n        class=\"bg-popover fill-popover z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] border-r border-b\"\n      />\n    </TooltipContent>\n  </TooltipPortal>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tooltip/TooltipProvider.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TooltipProviderProps } from 'reka-ui'\nimport { TooltipProvider } from 'reka-ui'\n\nconst props = withDefaults(defineProps<TooltipProviderProps>(), {\n  delayDuration: 700,\n})\n</script>\n\n<template>\n  <TooltipProvider v-bind=\"props\">\n    <slot />\n  </TooltipProvider>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tooltip/TooltipTrigger.vue",
    "content": "<script setup lang=\"ts\">\nimport type { TooltipTriggerProps } from 'reka-ui'\nimport { TooltipTrigger } from 'reka-ui'\n\nconst props = defineProps<TooltipTriggerProps>()\n</script>\n\n<template>\n  <TooltipTrigger\n    data-slot=\"tooltip-trigger\"\n    v-bind=\"props\"\n  >\n    <slot />\n  </TooltipTrigger>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/shadcn/tooltip/index.ts",
    "content": "export { default as Tooltip } from './Tooltip.vue'\nexport { default as TooltipContent } from './TooltipContent.vue'\nexport { default as TooltipProvider } from './TooltipProvider.vue'\nexport { default as TooltipTrigger } from './TooltipTrigger.vue'\n"
  },
  {
    "path": "src/renderer/components/ui/sonner/Sonner.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Props } from './types'\nimport { Button } from '@/components/ui/shadcn/button'\nimport { AlertTriangle, CheckCircle2, Info, X, XCircle } from 'lucide-vue-next'\n\ninterface Emits {\n  (e: 'closeToast'): void\n}\n\nconst props = defineProps<Props>()\n\nconst emit = defineEmits<Emits>()\n\nfunction onActionClick() {\n  props.action?.onClick()\n  emit('closeToast')\n}\n\nconst icon = computed(() => {\n  if (props.type === 'success') {\n    return CheckCircle2\n  }\n  if (props.type === 'error') {\n    return XCircle\n  }\n  if (props.type === 'warning') {\n    return AlertTriangle\n  }\n\n  return Info\n})\n</script>\n\n<template>\n  <div\n    class=\"bg-background border-border relative w-[var(--width)] rounded-md border p-3 shadow-lg\"\n    :class=\"{\n      'border-red-700': type === 'error',\n      'border-yellow-600': type === 'warning',\n    }\"\n  >\n    <div\n      v-if=\"closeButton\"\n      class=\"border-border bg-background hover:bg-muted absolute -top-2.5 -left-2.5 rounded-full border p-0.5\"\n    >\n      <X\n        class=\"text-text h-4 w-4\"\n        @click=\"emit('closeToast')\"\n      />\n    </div>\n    <div class=\"grid grid-cols-[20px_1fr_auto] items-center gap-2\">\n      <div class=\"flex- shrink-0\">\n        <component\n          :is=\"icon\"\n          class=\"h-4 w-4\"\n          :class=\"{\n            'text-red-700': type === 'error',\n            'text-green-500': type === 'success',\n            'text-yellow-600': type === 'warning',\n          }\"\n        />\n      </div>\n      <div class=\"pr-6\">\n        <template v-if=\"message\">\n          {{ message }}\n        </template>\n        <component\n          :is=\"component\"\n          v-if=\"component\"\n          @close-toast=\"emit('closeToast')\"\n        />\n      </div>\n      <Button\n        v-if=\"action\"\n        class=\"shrink-0\"\n        variant=\"outline\"\n        @click=\"onActionClick\"\n      >\n        {{ action.label }}\n      </Button>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/sonner/templates/Donate.vue",
    "content": "<script setup lang=\"ts\">\nimport { i18n, ipc } from '@/electron'\n\ninterface Emits {\n  (e: 'closeToast'): void\n}\n\nconst emit = defineEmits<Emits>()\n\nconst message = computed(() => {\n  return i18n.t('messages:special.supportMessage', {\n    tagStart: '<a id=\"donate\" href=\"#\" class=\"text-blue-500\">',\n    tagEnd: '</a>',\n  })\n})\n\nonMounted(() => {\n  document.getElementById('donate')?.addEventListener('click', () => {\n    ipc.invoke('system:open-external', 'https://masscode.io/donate')\n    emit('closeToast')\n  })\n})\n</script>\n\n<template>\n  <div v-html=\"message\" />\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/sonner/types.ts",
    "content": "export interface Props {\n  message?: string\n  component?: Component\n  type?: 'default' | 'success' | 'error' | 'warning'\n  closeButton?: boolean\n  duration?: number\n  action?: {\n    label: string\n    onClick: () => void\n  }\n  onClose?: () => void\n}\n"
  },
  {
    "path": "src/renderer/components/ui/text/Text.vue",
    "content": "<script setup lang=\"ts\">\nimport type { PrimitiveProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport type { TextVariants } from '.'\nimport { cn } from '@/utils'\nimport { Primitive } from 'reka-ui'\nimport { textVariants } from '.'\n\ninterface Props extends PrimitiveProps {\n  variant?: TextVariants['variant']\n  weight?: TextVariants['weight']\n  mono?: boolean\n  muted?: boolean\n  uppercase?: boolean\n  class?: HTMLAttributes['class']\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  as: 'span',\n  mono: false,\n  muted: false,\n  uppercase: false,\n})\n</script>\n\n<template>\n  <Primitive\n    data-slot=\"text\"\n    :data-variant=\"variant\"\n    :data-weight=\"weight\"\n    :as=\"as\"\n    :as-child=\"asChild\"\n    :class=\"\n      cn(textVariants({ variant, weight, mono, muted, uppercase }), props.class)\n    \"\n  >\n    <slot />\n  </Primitive>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/text/index.ts",
    "content": "import type { VariantProps } from 'class-variance-authority'\nimport { cva } from 'class-variance-authority'\n\nexport { default as Text } from './Text.vue'\n\nexport const textVariants = cva('text-foreground', {\n  variants: {\n    variant: {\n      caption: 'text-[10px] leading-3',\n      xs: 'text-xs leading-4',\n      sm: 'text-[13px] leading-5',\n      base: 'text-sm leading-[21px]',\n      lg: 'text-base leading-6',\n      xl: 'text-lg leading-6',\n    },\n    weight: {\n      normal: 'font-normal',\n      medium: 'font-medium',\n      semibold: 'font-semibold',\n      bold: 'font-bold',\n    },\n    mono: {\n      true: 'font-mono',\n      false: '',\n    },\n    muted: {\n      true: 'text-muted-foreground',\n      false: '',\n    },\n    uppercase: {\n      true: 'uppercase',\n      false: '',\n    },\n  },\n  defaultVariants: {\n    variant: 'base',\n    weight: 'normal',\n    mono: false,\n    muted: false,\n    uppercase: false,\n  },\n})\n\nexport type TextVariants = VariantProps<typeof textVariants>\n"
  },
  {
    "path": "src/renderer/components/ui/textarea/Textarea.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Variants } from './variants'\nimport { cn } from '@/utils'\nimport { variants } from './variants'\n\ninterface Props {\n  variant?: Variants['variant']\n  class?: string\n  placeholder?: string\n  focus?: boolean\n}\n\nconst props = defineProps<Props>()\n\nconst model = defineModel<string>()\n\nconst inputRef = useTemplateRef('inputRef')\n\nfunction onBlur(e: FocusEvent) {\n  const target = e.target as HTMLDivElement\n  // eslint-disable-next-line unicorn/prefer-dom-node-text-content\n  model.value = target.innerText.trimEnd()\n}\n\nwatchEffect(() => {\n  if (props.focus) {\n    nextTick(() => {\n      inputRef.value?.focus()\n    })\n  }\n})\n</script>\n\n<template>\n  <div class=\"relative\">\n    <div class=\"scrollbar max-h-[100px] overflow-x-hidden overflow-y-auto\">\n      <div\n        ref=\"inputRef\"\n        :class=\"[cn(variants({ variant }), props.class)]\"\n        class=\"break-words whitespace-pre-wrap\"\n        contenteditable=\"true\"\n        spellcheck=\"false\"\n        role=\"textbox\"\n        :data-placeholder=\"placeholder\"\n        @blur=\"onBlur\"\n      >\n        {{ model }}\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/textarea/variants.ts",
    "content": "import type { VariantProps } from 'class-variance-authority'\nimport { cva } from 'class-variance-authority'\n\nexport const variants = cva(\n  'bg-background outline-none whitespace-pre-wrap break-words w-full rounded-md py-1 px-2 border text-sm',\n  {\n    variants: {\n      variant: {\n        default:\n          'border-input focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n        ghost:\n          'border-transparent bg-transparent shadow-none focus-visible:border-transparent focus-visible:ring-0',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n)\n\nexport type Variants = VariantProps<typeof variants>\n"
  },
  {
    "path": "src/renderer/components/ui/tree/Tree.vue",
    "content": "<script setup lang=\"ts\">\nimport type { DropPosition, TreeNode } from './types'\nimport { treeInjectionKey } from './keys'\nimport TreeNodeComponent from './TreeNode.vue'\n\ninterface Props {\n  modelValue: TreeNode[]\n  selectedIds?: (string | number)[]\n  editableId?: string | number | null\n  focusedId?: string | number | undefined\n  highlightedIds?: Set<string | number>\n  indent?: number\n}\n\ninterface Emits {\n  (e: 'update:modelValue', value: TreeNode[]): void\n  (e: 'update:selectedIds', value: (string | number)[]): void\n  (e: 'update:editableId', value: string | number | null): void\n  (e: 'update:focusedId', value: string | number | undefined): void\n  (e: 'update:highlightedIds', value: Set<string | number>): void\n  (e: 'clickNode', value: { node: TreeNode, event?: MouseEvent }): void\n  (e: 'dblclickNode', value: TreeNode): void\n  (e: 'toggleNode', value: TreeNode): void\n  (\n    e: 'dragNode',\n    value: { nodes: TreeNode[], target: TreeNode, position: DropPosition },\n  ): void\n  (\n    e: 'externalDrop',\n    value: { data: DataTransfer, target: TreeNode, position: DropPosition },\n  ): void\n  (e: 'updateLabel', value: { node: TreeNode, value: string }): void\n  (e: 'cancelEdit', value: TreeNode): void\n  (\n    e: 'contextMenu',\n    value: { node: TreeNode, selectedNodes: TreeNode[] },\n  ): void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  selectedIds: () => [],\n  editableId: null,\n  focusedId: undefined,\n  highlightedIds: () => new Set(),\n  indent: 10,\n})\n\nconst emit = defineEmits<Emits>()\n\nconst hoveredNodeId = ref('')\nconst isHoveredByIdDisabled = ref(false)\n\nconst internalEditableId = computed({\n  get: () => props.editableId,\n  set: val => emit('update:editableId', val),\n})\n\nconst internalSelectedIds = computed({\n  get: () => props.selectedIds,\n  set: val => emit('update:selectedIds', val),\n})\n\nconst internalFocusedId = computed({\n  get: () => props.focusedId,\n  set: val => emit('update:focusedId', val),\n})\n\nconst internalHighlightedIds = computed({\n  get: () => props.highlightedIds,\n  set: val => emit('update:highlightedIds', val),\n})\n\nfunction findNodeById(id: string | number): TreeNode | undefined {\n  const walk = (nodes: TreeNode[]): TreeNode | undefined => {\n    for (const node of nodes) {\n      if (node.id === id)\n        return node\n      if (node.children?.length) {\n        const found = walk(node.children)\n        if (found)\n          return found\n      }\n    }\n  }\n  return walk(props.modelValue)\n}\n\nfunction clickNode(id: string | number, event?: MouseEvent) {\n  const node = findNodeById(id)\n  if (!node)\n    return\n\n  emit('clickNode', { node, event })\n}\n\nfunction dblclickNode(node: TreeNode) {\n  emit('dblclickNode', node)\n}\n\nfunction dragNodeHandler(\n  nodes: TreeNode[],\n  target: TreeNode,\n  position: DropPosition,\n) {\n  emit('dragNode', { nodes, target, position })\n}\n\nfunction externalDropHandler(\n  data: DataTransfer,\n  target: TreeNode,\n  position: DropPosition,\n) {\n  emit('externalDrop', { data, target, position })\n}\n\nfunction toggleNode(node: TreeNode) {\n  emit('toggleNode', node)\n}\n\nfunction contextMenu(node: TreeNode) {\n  const selectedNodes = internalSelectedIds.value\n    .map(id => findNodeById(id))\n    .filter((n): n is TreeNode => Boolean(n))\n\n  emit('contextMenu', { node, selectedNodes })\n}\n\nfunction updateLabelHandler(node: TreeNode, value: string) {\n  emit('updateLabel', { node, value })\n}\n\nfunction cancelEditHandler(node: TreeNode) {\n  emit('cancelEdit', node)\n}\n\nprovide(treeInjectionKey, {\n  clickNode,\n  dblclickNode,\n  dragNode: dragNodeHandler,\n  externalDrop: externalDropHandler,\n  toggleNode,\n  contextMenu,\n  updateLabel: updateLabelHandler,\n  cancelEdit: cancelEditHandler,\n  isHoveredByIdDisabled,\n  editableId: internalEditableId,\n  selectedIds: internalSelectedIds,\n  focusedId: internalFocusedId,\n  highlightedIds: internalHighlightedIds,\n})\n</script>\n\n<template>\n  <div\n    v-if=\"modelValue.length\"\n    class=\"h-full min-h-0\"\n  >\n    <div class=\"scrollbar h-full min-h-0 overflow-x-hidden overflow-y-auto\">\n      <div data-tree>\n        <TreeNodeComponent\n          v-for=\"(node, index) in modelValue\"\n          :key=\"node.id\"\n          :node=\"node\"\n          :nodes=\"modelValue\"\n          :index=\"index\"\n          :indent=\"indent\"\n          :hovered-node-id=\"hoveredNodeId\"\n        >\n          <template\n            v-if=\"$slots.icon\"\n            #icon=\"iconProps\"\n          >\n            <slot\n              name=\"icon\"\n              v-bind=\"iconProps\"\n            />\n          </template>\n        </TreeNodeComponent>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/components/ui/tree/TreeNode.vue",
    "content": "<script setup lang=\"ts\">\nimport type { CSSProperties } from 'vue'\nimport type { DropPosition, TreeNode } from './types'\nimport { onClickOutside } from '@vueuse/core'\nimport { ChevronRight } from 'lucide-vue-next'\nimport {\n  dragNodeChildrenIds,\n  dragNodeIds,\n  dragStore,\n  isDragAllowed,\n  TREE_DND_TYPE,\n} from './composables'\nimport { treeInjectionKey } from './keys'\n\ninterface Props {\n  index: number\n  deep?: number\n  node: TreeNode\n  nodes: TreeNode[]\n  indent?: number\n  hoveredNodeId?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  index: 0,\n  deep: 0,\n  indent: 10,\n})\n\nconst {\n  clickNode,\n  dblclickNode,\n  dragNode,\n  externalDrop,\n  toggleNode,\n  isHoveredByIdDisabled,\n  contextMenu,\n  updateLabel,\n  cancelEdit,\n  editableId,\n  selectedIds,\n  focusedId,\n  highlightedIds,\n} = inject(treeInjectionKey)!\n\nconst hoveredId = ref<string | number>()\nconst overPosition = ref<DropPosition>()\nconst isDragged = ref(false)\nconst isDraggingExternal = ref(false)\nconst rowRef = ref<HTMLElement>()\nconst editInputRef = ref<HTMLInputElement>()\nconst editValue = ref(props.node.label)\n\nconst hasChildren = computed(\n  () => props.node.children && props.node.children.length > 0,\n)\n\nconst isFirst = computed(() => props.index === 0)\n\nconst isHovered = computed(() => {\n  return props.node.id === hoveredId.value && overPosition.value === 'center'\n})\n\nconst isSelected = computed(() => {\n  return (\n    selectedIds.value.length <= 1 && selectedIds.value.includes(props.node.id)\n  )\n})\n\nconst isMultiSelected = computed(() => {\n  return (\n    selectedIds.value.length > 1 && selectedIds.value.includes(props.node.id)\n  )\n})\n\nconst isFocused = computed(() => focusedId.value === props.node.id)\n\nconst isHighlighted = computed(() => highlightedIds.value.has(props.node.id))\n\nconst isEditing = computed(() => editableId.value === props.node.id)\n\nconst isDragActive = computed(() => Boolean(dragStore.dragNode))\n\nconst isShowBetweenLine = computed(() => {\n  if (!isDragAllowed.value)\n    return false\n  return overPosition.value === 'before' || overPosition.value === 'after'\n})\n\nconst indentStyle = computed(() => `${props.indent}px`)\n\nconst hoveredOffsetStyle = computed(() => {\n  return `${-(props.deep * props.indent)}px`\n})\n\nconst betweenLineStyle = computed(() => {\n  const style: CSSProperties = {\n    position: 'absolute',\n    width: `calc(100% - ${props.deep} * ${indentStyle.value})`,\n  }\n\n  if (overPosition.value === 'before') {\n    style.top = '-4px'\n  }\n\n  if (overPosition.value === 'after') {\n    style.bottom = '-4px'\n  }\n\n  return style\n})\n\nwatch(\n  () => props.node.label,\n  (newLabel) => {\n    editValue.value = newLabel\n  },\n)\n\nwatch(isEditing, (editing) => {\n  if (editing) {\n    nextTick(() => {\n      editInputRef.value?.focus()\n      editInputRef.value?.select()\n    })\n  }\n})\n\nonClickOutside(rowRef, () => {\n  if (focusedId.value === props.node.id) {\n    focusedId.value = undefined\n  }\n  highlightedIds.value.delete(props.node.id)\n})\n\nfunction onClickArrow(node: TreeNode) {\n  toggleNode(node)\n}\n\nfunction onClickNode(id: string | number, event?: MouseEvent) {\n  focusedId.value = id\n  clickNode(id, event)\n}\n\nfunction onDblclickLabel() {\n  dblclickNode(props.node)\n}\n\nfunction onContextMenu() {\n  highlightedIds.value.clear()\n  highlightedIds.value.add(props.node.id)\n\n  if (\n    selectedIds.value.length > 1\n    && selectedIds.value.includes(props.node.id)\n  ) {\n    selectedIds.value.forEach(id => highlightedIds.value.add(id))\n  }\n\n  contextMenu(props.node)\n}\n\n// --- Drag and Drop ---\n\nfunction findNodeById(\n  nodes: TreeNode[],\n  id: string | number,\n): TreeNode | undefined {\n  for (const node of nodes) {\n    if (node.id === id)\n      return node\n    if (node.children?.length) {\n      const found = findNodeById(node.children, id)\n      if (found)\n        return found\n    }\n  }\n}\n\nfunction hasSelectedAncestor(\n  nodeId: string | number,\n  selection: Set<string | number>,\n  rootNodes: TreeNode[],\n): boolean {\n  const findParentId = (\n    nodes: TreeNode[],\n    targetId: string | number,\n    parentId?: string | number,\n  ): string | number | undefined => {\n    for (const node of nodes) {\n      if (node.id === targetId)\n        return parentId\n      if (node.children?.length) {\n        const found = findParentId(node.children, targetId, node.id)\n        if (found !== undefined)\n          return found\n      }\n    }\n  }\n\n  let currentParentId = findParentId(rootNodes, nodeId)\n\n  while (currentParentId !== undefined) {\n    if (selection.has(currentParentId))\n      return true\n    currentParentId = findParentId(rootNodes, currentParentId)\n  }\n\n  return false\n}\n\nfunction getDraggedNodes(rootNodes: TreeNode[]) {\n  const selection = selectedIds.value.includes(props.node.id)\n    ? selectedIds.value\n    : [props.node.id]\n\n  const selectionSet = new Set(selection)\n\n  return selection\n    .map(id => findNodeById(rootNodes, id))\n    .filter((node): node is TreeNode => Boolean(node))\n    .filter(node => !hasSelectedAncestor(node.id, selectionSet, rootNodes))\n}\n\nfunction onDragStart(e: DragEvent) {\n  let draggedNodes = getDraggedNodes(props.nodes)\n\n  if (!draggedNodes.length) {\n    draggedNodes = [props.node]\n  }\n\n  const isMultiDrag\n    = selectedIds.value.length > 1 && selectedIds.value.includes(props.node.id)\n  const ghostCount = isMultiDrag\n    ? selectedIds.value.length\n    : draggedNodes.length\n\n  dragStore.dragNodes = draggedNodes\n  dragStore.dragNode = draggedNodes[0] || props.node\n  isHoveredByIdDisabled.value = true\n  isDragged.value = true\n\n  const el = document.createElement('div')\n  el.className\n    = 'fixed left-[-100%] text-foreground truncate max-w-[200px] flex items-center'\n  el.id = 'ghost'\n  el.innerHTML\n    = ghostCount > 1\n      ? `<span class=\"rounded-full bg-primary text-white px-2 py-0.5 text-xs ml-3\">${ghostCount}</span>`\n      : props.node.label\n\n  document.body.appendChild(el)\n  e.dataTransfer!.setDragImage(el, 0, 0)\n  setTimeout(() => el.remove(), 0)\n\n  e.dataTransfer!.setData(\n    TREE_DND_TYPE,\n    JSON.stringify(draggedNodes.map(node => node.id)),\n  )\n}\n\nfunction onDragEnd() {\n  dragStore.dragNode = undefined\n  dragStore.dragNodes = undefined\n  dragStore.dragEnterNode = undefined\n  overPosition.value = undefined\n  isDragged.value = false\n  isHoveredByIdDisabled.value = false\n}\n\nfunction onDragEnter() {\n  hoveredId.value = props.node.id\n  dragStore.dragEnterNode = props.node\n}\n\nfunction onDragOver(e: DragEvent) {\n  hoveredId.value = props.node.id\n\n  if (!e.dataTransfer?.types.includes(TREE_DND_TYPE)) {\n    isDraggingExternal.value = true\n    overPosition.value = 'center'\n    return\n  }\n\n  isDraggingExternal.value = false\n\n  const isInvalidTarget\n    = dragStore.dragNodes?.some(node => node.id === props.node.id)\n      || dragStore.dragNode?.id === props.node.id\n      || dragNodeIds.value.includes(props.node.id)\n      || dragNodeChildrenIds.value.includes(props.node.id)\n\n  if (isInvalidTarget) {\n    overPosition.value = undefined\n    return\n  }\n\n  const height = rowRef.value!.offsetHeight\n  const before = height * 0.3\n  const after = height - before\n\n  const isContainer = props.node.children !== undefined\n\n  if (isContainer) {\n    if (e.offsetY < before && isFirst.value) {\n      overPosition.value = 'before'\n    }\n    else if (e.offsetY > after) {\n      overPosition.value = 'after'\n    }\n    else {\n      overPosition.value = 'center'\n    }\n  }\n  else {\n    if (e.offsetY < height / 2) {\n      overPosition.value = isFirst.value ? 'before' : 'after'\n    }\n    else {\n      overPosition.value = 'after'\n    }\n  }\n}\n\nfunction onDragLeave() {\n  hoveredId.value = undefined\n  overPosition.value = undefined\n  isDraggingExternal.value = false\n}\n\nfunction onDrop(e: DragEvent) {\n  if (!e.dataTransfer?.types.includes(TREE_DND_TYPE)) {\n    if (e.dataTransfer) {\n      externalDrop(e.dataTransfer, props.node, overPosition.value || 'center')\n    }\n    hoveredId.value = undefined\n    overPosition.value = undefined\n    isDraggingExternal.value = false\n    return\n  }\n\n  if (!dragStore.dragNode || !isDragAllowed.value)\n    return\n\n  const draggedNodes = dragStore.dragNodes?.length\n    ? dragStore.dragNodes\n    : dragStore.dragNode\n      ? [dragStore.dragNode]\n      : []\n\n  if (overPosition.value && draggedNodes.length) {\n    dragNode(draggedNodes, props.node, overPosition.value)\n  }\n\n  overPosition.value = undefined\n}\n\n// --- Inline Edit ---\n\nfunction onUpdateLabel() {\n  const trimmed = editValue.value.trim()\n\n  if (trimmed === '' || editValue.value === props.node.label) {\n    editValue.value = props.node.label\n    cancelEdit(props.node)\n    return\n  }\n\n  updateLabel(props.node, editValue.value)\n}\n\nfunction onCancelEdit() {\n  editValue.value = props.node.label\n  cancelEdit(props.node)\n}\n</script>\n\n<template>\n  <div\n    data-tree-node\n    class=\"ui-tree-node user-select-none relative\"\n    :class=\"{\n      'has-children': hasChildren,\n      'is-dragged': isDragged,\n    }\"\n    draggable=\"true\"\n    @dragstart.stop=\"onDragStart\"\n    @dragleave.stop=\"onDragLeave\"\n    @dragend.stop=\"onDragEnd\"\n    @drop.stop=\"onDrop\"\n    @dragover.prevent\n  >\n    <div\n      :id=\"String(node.id)\"\n      ref=\"rowRef\"\n      class=\"ui-tree-node__row user-select-none relative flex py-px\"\n      :class=\"{\n        'is-hovered':\n          (isHovered && isDragAllowed)\n          || (isHovered && isDraggingExternal)\n          || hoveredNodeId === String(node.id),\n        'is-selected': isSelected && !isEditing,\n        'is-multi-selected': isMultiSelected && !isEditing,\n        'is-focused': isFocused && !isEditing,\n        'is-highlighted': isHighlighted && !isEditing,\n        'is-drag-active': isDragActive,\n        'is-editing': isEditing,\n      }\"\n      @dragenter.stop=\"onDragEnter\"\n      @dragover=\"onDragOver\"\n      @click=\"(event) => onClickNode(node.id, event)\"\n      @contextmenu=\"onContextMenu\"\n    >\n      <span class=\"ui-tree-node__name relative z-10 flex w-full items-center\">\n        <div\n          v-if=\"hasChildren\"\n          class=\"mx-1 flex h-4 w-4 flex-shrink-0 items-center justify-center\"\n          @click.stop=\"onClickArrow(node)\"\n        >\n          <ChevronRight\n            class=\"ui-tree-node__arrow h-3 w-3\"\n            :class=\"{ 'rotate-90': node.isExpanded }\"\n          />\n        </div>\n        <span\n          v-else\n          class=\"w-6 flex-shrink-0\"\n        />\n        <slot\n          name=\"icon\"\n          :node=\"node\"\n        />\n        <template v-if=\"!isEditing\">\n          <span\n            class=\"min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap\"\n            @dblclick=\"onDblclickLabel\"\n          >\n            {{ node.label }}\n          </span>\n        </template>\n        <input\n          v-else\n          ref=\"editInputRef\"\n          v-model=\"editValue\"\n          class=\"outline-primary min-w-0 flex-1 rounded-sm bg-transparent outline outline-1\"\n          @keydown.esc=\"onCancelEdit\"\n          @keydown.enter=\"onUpdateLabel\"\n          @blur=\"onUpdateLabel\"\n          @click.stop\n        >\n      </span>\n    </div>\n    <template v-if=\"node.children\">\n      <TreeNode\n        v-for=\"(child, idx) in node.children\"\n        v-show=\"node.isExpanded\"\n        :key=\"child.id\"\n        class=\"children pl-2\"\n        :index=\"idx\"\n        :deep=\"deep + 1\"\n        :node=\"child\"\n        :nodes=\"node.children\"\n        :indent=\"indent\"\n        :hovered-node-id=\"hoveredNodeId\"\n      >\n        <template\n          v-if=\"$slots.icon\"\n          #icon=\"iconProps\"\n        >\n          <slot\n            name=\"icon\"\n            v-bind=\"iconProps\"\n          />\n        </template>\n      </TreeNode>\n    </template>\n    <svg\n      v-if=\"isShowBetweenLine\"\n      class=\"pointer-events-none z-20\"\n      height=\"10\"\n      :style=\"betweenLineStyle\"\n    >\n      <circle\n        cx=\"5\"\n        cy=\"5\"\n        r=\"3\"\n        stroke=\"var(--primary)\"\n        fill=\"none\"\n        stroke-width=\"2\"\n      />\n      <line\n        x1=\"100%\"\n        x2=\"8\"\n        y1=\"5\"\n        y2=\"5\"\n        stroke=\"var(--primary)\"\n        stroke-width=\"2\"\n      />\n    </svg>\n  </div>\n</template>\n\n<style lang=\"scss\">\n@reference \"../../../styles.css\";\n.ui-tree-node {\n  $r: &;\n  &__row {\n    &.is-hovered,\n    &.is-selected,\n    &.is-focused,\n    &.is-highlighted,\n    &.is-multi-selected {\n      @apply text-accent-foreground;\n      &::before {\n        content: \"\";\n        left: v-bind(hoveredOffsetStyle);\n        @apply absolute top-0 right-0 bottom-0 z-0 rounded-md;\n      }\n    }\n    &:hover:not(.is-selected):not(.is-focused):not(.is-multi-selected):not(\n        .is-drag-active\n      ):not(.is-editing) {\n      @apply text-accent-foreground;\n      &::before {\n        content: \"\";\n        left: v-bind(hoveredOffsetStyle);\n        @apply bg-accent-hover absolute top-0 right-0 bottom-0 z-0 rounded-md;\n      }\n    }\n    &.is-hovered {\n      &::before {\n        @apply bg-accent-hover;\n      }\n    }\n    &.is-selected {\n      &::before {\n        @apply bg-accent;\n      }\n    }\n    &.is-multi-selected {\n      &::before {\n        @apply bg-accent/80;\n      }\n    }\n    &.is-focused {\n      @apply text-primary-foreground;\n      &::before {\n        @apply bg-primary;\n      }\n    }\n    &.is-highlighted {\n      @apply text-accent-foreground;\n      &::before {\n        @apply border-primary border-2 bg-transparent;\n      }\n    }\n  }\n  .children {\n    padding-left: v-bind(indentStyle);\n  }\n}\n</style>\n"
  },
  {
    "path": "src/renderer/components/ui/tree/composables.ts",
    "content": "import type { DragStore, TreeNode } from './types'\nimport { computed, reactive } from 'vue'\n\nexport const TREE_DND_TYPE = 'application/x-tree-node-ids'\n\nexport const dragStore = reactive<DragStore>({})\n\nconst draggedNodes = computed<TreeNode[]>(() => {\n  if (dragStore.dragNodes?.length) {\n    return dragStore.dragNodes\n  }\n\n  return dragStore.dragNode ? [dragStore.dragNode] : []\n})\n\nexport const dragNodeIds = computed<(string | number)[]>(() =>\n  draggedNodes.value.map(node => node.id),\n)\n\nexport const dragNodeChildrenIds = computed(() => {\n  const ids: (string | number)[] = []\n\n  const collectIds = (nodes: TreeNode[]) => {\n    nodes.forEach((node) => {\n      ids.push(node.id)\n      if (node.children?.length) {\n        collectIds(node.children)\n      }\n    })\n  }\n\n  draggedNodes.value.forEach(node => collectIds(node.children || []))\n\n  return ids\n})\n\nexport const isDragAllowed = computed(() => {\n  if (!draggedNodes.value.length || !dragStore.dragEnterNode)\n    return false\n\n  const isSameNode = dragNodeIds.value.includes(dragStore.dragEnterNode.id)\n  const isChildrenNode = dragNodeChildrenIds.value.includes(\n    dragStore.dragEnterNode.id,\n  )\n\n  return !isSameNode && !isChildrenNode\n})\n\nexport function flattenTree(nodes: TreeNode[] | undefined): TreeNode[] {\n  if (!nodes)\n    return []\n\n  const result: TreeNode[] = []\n\n  const walk = (items: TreeNode[]) => {\n    items.forEach((node) => {\n      result.push(node)\n      if (node.children?.length) {\n        walk(node.children)\n      }\n    })\n  }\n\n  walk(nodes)\n  return result\n}\n"
  },
  {
    "path": "src/renderer/components/ui/tree/index.ts",
    "content": "export { default as Tree } from './Tree.vue'\nexport { default as TreeNode } from './TreeNode.vue'\nexport type { DropPosition, TreeNode as TreeNodeData } from './types'\n"
  },
  {
    "path": "src/renderer/components/ui/tree/keys.ts",
    "content": "import type { InjectionKey, Ref } from 'vue'\nimport type { DropPosition, TreeNode } from './types'\n\nexport interface TreeInjection {\n  clickNode: (id: string | number, event?: MouseEvent) => void\n  dblclickNode: (node: TreeNode) => void\n  dragNode: (\n    nodes: TreeNode[],\n    target: TreeNode,\n    position: DropPosition,\n  ) => void\n  externalDrop: (\n    data: DataTransfer,\n    target: TreeNode,\n    position: DropPosition,\n  ) => void\n  toggleNode: (node: TreeNode) => void\n  contextMenu: (node: TreeNode) => void\n  updateLabel: (node: TreeNode, value: string) => void\n  cancelEdit: (node: TreeNode) => void\n  isHoveredByIdDisabled: Ref<boolean>\n  editableId: Ref<string | number | null>\n  selectedIds: Ref<(string | number)[]>\n  focusedId: Ref<string | number | undefined>\n  highlightedIds: Ref<Set<string | number>>\n}\n\nexport const treeInjectionKey: InjectionKey<TreeInjection> = Symbol('ui-tree')\n"
  },
  {
    "path": "src/renderer/components/ui/tree/types.ts",
    "content": "export interface TreeNode {\n  id: string | number\n  label: string\n  children?: TreeNode[]\n  isExpanded?: boolean\n}\n\nexport type DropPosition = 'after' | 'before' | 'center'\n\nexport interface DragStore {\n  dragNode?: TreeNode\n  dragNodes?: TreeNode[]\n  dragEnterNode?: TreeNode\n}\n"
  },
  {
    "path": "src/renderer/composables/__tests__/useMathEngine.test.ts",
    "content": "/* eslint-disable test/prefer-lowercase-title */\nimport { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'\nimport { useMathEngine } from '../math-notebook/useMathEngine'\n\nconst TEST_CURRENCY_RATES = {\n  USD: 1,\n  EUR: 0.92,\n  GBP: 0.79,\n  CAD: 1.36,\n}\n\nconst { evaluateDocument, setCurrencyServiceState, updateCurrencyRates }\n  = useMathEngine()\n\nfunction evalLine(expr: string) {\n  return evaluateDocument(expr)[0]\n}\n\nfunction evalLines(text: string) {\n  return evaluateDocument(text)\n}\n\nfunction expectValue(expr: string, expected: string) {\n  const result = evalLine(expr)\n  expect(result.value).toBe(expected)\n}\n\nfunction expectNumericClose(expr: string, expected: number, precision = 2) {\n  const result = evalLine(expr)\n  const num = Number.parseFloat(result.value!.replace(/,/g, ''))\n  expect(num).toBeCloseTo(expected, precision)\n}\n\nfunction expectDateWithYear(expr: string, year: string) {\n  const result = evalLine(expr)\n  expect(result.type).toBe('date')\n  expect(result.value).toContain(year)\n}\n\nbeforeEach(() => {\n  updateCurrencyRates(TEST_CURRENCY_RATES)\n})\n\ndescribe('arithmetic', () => {\n  it('addition', () => expectValue('10 + 5', '15'))\n  it('subtraction', () => expectValue('20 - 3', '17'))\n  it('multiplication', () => expectValue('4 * 5', '20'))\n  it('division', () => expectValue('100 / 4', '25'))\n  it('parentheses', () => expectValue('(2 + 3) * 4', '20'))\n  it('exponent', () => expectValue('2 ^ 10', '1,024'))\n  it('negative numbers', () => expectValue('-5 + 3', '-2'))\n  it('decimal', () => expectValue('0.1 + 0.2', '0.3'))\n  it('complex expression', () => expectValue('2 + 3 * 4 - 1', '13'))\n  it('implicit multiplication', () => expectValue('6 (3)', '18'))\n  it('grouped thousands', () => expectValue('5 300', '5,300'))\n})\n\ndescribe('math aliases', () => {\n  it('fact', () => expectValue('fact(5)', '120'))\n  it('arcsin', () => expectNumericClose('arcsin(1)', Math.PI / 2, 4))\n  it('arccos', () => expectNumericClose('arccos(1)', 0, 4))\n  it('arctan', () => expectNumericClose('arctan(1)', Math.PI / 4, 4))\n  it('root 2 (8)', () => expectNumericClose('root 2 (8)', Math.sqrt(8), 4))\n  it('log 2 (8)', () => expectNumericClose('log 2 (8)', 3, 4))\n})\n\ndescribe('word operators', () => {\n  it('times', () => expectValue('8 times 9', '72'))\n  it('plus', () => expectValue('10 plus 5', '15'))\n  it('and', () => expectValue('10 and 5', '15'))\n  it('with', () => expectValue('10 with 5', '15'))\n  it('minus', () => expectValue('20 minus 3', '17'))\n  it('subtract', () => expectValue('20 subtract 3', '17'))\n  it('without', () => expectValue('20 without 3', '17'))\n  it('multiplied by', () => expectValue('3 multiplied by 4', '12'))\n  it('divide', () => expectValue('100 divide 4', '25'))\n  it('divide by', () => expectValue('100 divide by 4', '25'))\n  it('mul', () => expectValue('5 mul 6', '30'))\n  it('mod', () => expectValue('17 mod 5', '2'))\n\n  it('does not replace words inside variable names', () => {\n    const results = evalLines('width = 100\\nwidth * 2')\n    expect(results[1].value).toBe('200')\n  })\n})\n\ndescribe('variables', () => {\n  it('assignment and reuse', () => {\n    const results = evalLines('v = 20\\nv * 7')\n    expect(results[0].value).toBe('20')\n    expect(results[0].type).toBe('assignment')\n    expect(results[1].value).toBe('140')\n  })\n\n  it('multiple variables', () => {\n    const results = evalLines('a = 10\\nb = 20\\na + b')\n    expect(results[2].value).toBe('30')\n  })\n\n  it('variable with word operator', () => {\n    const results = evalLines('v = 20\\nv times 7')\n    expect(results[1].value).toBe('140')\n  })\n\n  it('variable reassignment', () => {\n    const results = evalLines('x = 5\\nx = 10\\nx + 1')\n    expect(results[2].value).toBe('11')\n  })\n})\n\ndescribe('labels', () => {\n  it('strip label and evaluate', () => {\n    expectNumericClose('Price: 11 + 34.45', 45.45)\n  })\n\n  it('label with currency', () => {\n    const result = evalLine('Total: $100')\n    expect(result.type).toBe('unit')\n  })\n\n  it('label with multi-word', () => {\n    expectNumericClose('Monthly cost: 1200 / 12', 100)\n  })\n\n  it('no label — colon in time is not a label', () => {\n    const result = evalLine('10 + 5')\n    expect(result.value).toBe('15')\n  })\n})\n\ndescribe('quoted text', () => {\n  it('ignores inline quoted fragments', () => {\n    const result = evalLine('$275 for the \"Model 227\"')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('USD')\n    expectNumericClose('$275 for the \"Model 227\"', 275)\n  })\n})\n\ndescribe('percentage basic', () => {\n  it('X + Y%', () => expectNumericClose('100 + 15%', 115))\n  it('X - Y%', () => expectNumericClose('200 - 10%', 180))\n  it('Y% of X', () => expectNumericClose('15% of 200', 30))\n})\n\ndescribe('percentage advanced', () => {\n  it('Y% on X', () => expectNumericClose('5% on 200', 210))\n  it('Y% off X', () => expectNumericClose('5% off 200', 190))\n  it('X as a % of Y', () => expectNumericClose('50 as a % of 100', 50))\n  it('X as a % on Y', () => expectNumericClose('70 as a % on 20', 250))\n  it('X as a % off Y', () => expectNumericClose('20 as a % off 70', 71.43))\n  it('Y% of what is X', () => expectNumericClose('5% of what is 6', 120))\n  it('Y% on what is X', () => expectNumericClose('5% on what is 6', 5.71))\n  it('Y% off what is X', () => expectNumericClose('5% off what is 6', 6.32))\n})\n\ndescribe('scales', () => {\n  it('2k', () => {\n    const result = evalLine('2k')\n    const num = Number.parseFloat(result.value!.replace(/,/g, ''))\n    expect(num).toBe(2000)\n  })\n\n  it('2 K stays kelvin', () => {\n    const result = evalLine('2 K')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('K')\n  })\n\n  it('3M (millions)', () => {\n    const result = evalLine('3M')\n    const num = Number.parseFloat(result.value!.replace(/,/g, ''))\n    expect(num).toBe(3000000)\n  })\n\n  it('1.5 billion', () => {\n    const result = evalLine('1.5 billion')\n    const num = Number.parseFloat(result.value!.replace(/,/g, ''))\n    expect(num).toBe(1500000000)\n  })\n\n  it('10 thousand', () => {\n    const result = evalLine('10 thousand')\n    const num = Number.parseFloat(result.value!.replace(/,/g, ''))\n    expect(num).toBe(10000)\n  })\n\n  it('5 million', () => {\n    const result = evalLine('5 million')\n    const num = Number.parseFloat(result.value!.replace(/,/g, ''))\n    expect(num).toBe(5000000)\n  })\n\n  it('$2k as currency unit', () => {\n    const result = evalLine('$2k')\n    expect(result.type).toBe('unit')\n  })\n})\n\ndescribe('currency', () => {\n  it('waits for currency rates while loading', () => {\n    setCurrencyServiceState('loading')\n\n    const result = evalLine('100 USD to EUR')\n    expect(result.type).toBe('pending')\n    expect(result.value).toBeNull()\n  })\n\n  it('shows service unavailable when rates cannot be loaded', () => {\n    setCurrencyServiceState(\n      'unavailable',\n      'Currency rates service unavailable',\n    )\n\n    const result = evalLine('100 USD to EUR')\n    expect(result.type).toBe('empty')\n    expect(result.error).toBe('Currency rates service unavailable')\n  })\n\n  it('$ symbol', () => {\n    const result = evalLine('$30')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('USD')\n  })\n\n  it('€ symbol', () => {\n    const result = evalLine('€50')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('EUR')\n  })\n\n  it('£ symbol', () => {\n    const result = evalLine('£20')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('GBP')\n  })\n\n  it('ISO code', () => {\n    const result = evalLine('30 USD')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('USD')\n  })\n\n  it('currency addition', () => {\n    const result = evalLine('$10 + $20')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('USD')\n  })\n\n  it('currency conversion', () => {\n    const result = evalLine('100 USD to EUR')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('EUR')\n    expectNumericClose('100 USD to EUR', 92)\n  })\n\n  it('label with currency', () => {\n    const result = evalLine('Price: $11 + $34.45')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('USD')\n  })\n\n  it('currency word names', () => {\n    const result = evalLine('5 dollars + 10 dollars')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('USD')\n    expectNumericClose('5 dollars + 10 dollars', 15)\n  })\n})\n\ndescribe('unit conversion', () => {\n  it('stacked units', () => {\n    const result = evalLine('1 meter 20 cm')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('m')\n    expectNumericClose('1 meter 20 cm', 1.2, 2)\n  })\n\n  it('stacked units inside addition', () => {\n    const result = evalLine('1 meter 20 cm + 1 cm')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('m')\n    expectNumericClose('1 meter 20 cm + 1 cm', 1.21, 2)\n  })\n\n  it('stacked time units inside addition', () => {\n    const result = evalLine('1 hour 20 minutes + 30 minutes')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('hour')\n    expectNumericClose('1 hour 20 minutes + 30 minutes', 1.8333, 3)\n  })\n\n  it('stacked imperial units inside subtraction', () => {\n    const result = evalLine('10 ft 4 inch - 1 inch')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('ft')\n    expectNumericClose('10 ft 4 inch - 1 inch', 10.25, 2)\n  })\n\n  it('stacked units with conversion', () => {\n    const result = evalLine('1 meter 20 cm to cm')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('cm')\n    expectNumericClose('1 meter 20 cm to cm', 120, 2)\n  })\n\n  it('km to mile', () => {\n    const result = evalLine('5 km to mile')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('mile')\n  })\n\n  it('celsius to fahrenheit', () => {\n    const result = evalLine('100 celsius to fahrenheit')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('fahrenheit')\n  })\n\n  it('kg to lb', () => {\n    const result = evalLine('1 kg to lb')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('lb')\n  })\n\n  it('inch to cm', () => {\n    const result = evalLine('1 inch to cm')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('cm')\n  })\n\n  it('as is alias for to', () => {\n    const result = evalLine('5 km as mile')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('mile')\n  })\n\n  it('into is alias for to', () => {\n    const result = evalLine('5 km into mile')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('mile')\n  })\n\n  it('nautical mile alias', () => {\n    const result = evalLine('1 nautical mile to mile')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('mile')\n    expectNumericClose('1 nautical mile to mile', 1.15078, 4)\n  })\n\n  it('centner alias', () => {\n    const result = evalLine('1 centner to kg')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('kg')\n    expectNumericClose('1 centner to kg', 100, 2)\n  })\n\n  it('pound alias', () => {\n    const result = evalLine('1 pound to lb')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('lb')\n    expectNumericClose('1 pound to lb', 1, 2)\n  })\n\n  it('carat alias', () => {\n    const result = evalLine('1 carat to gram')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('gram')\n    expectNumericClose('1 carat to gram', 0.2, 2)\n  })\n})\n\ndescribe('css units', () => {\n  it('pt to px', () => expectNumericClose('12 pt in px', 16, 1))\n  it('pt into px', () => expectNumericClose('12 pt into px', 16, 1))\n\n  it('custom em', () => {\n    const results = evalLines('em = 20px\\n1.2 em in px')\n    expect(results[0].type).toBe('assignment')\n    expect(results[0].value).toBe('20 px')\n    expectCloseInResults(results[1], 24)\n  })\n\n  it('custom ppi', () => {\n    const results = evalLines('ppi = 326\\n1 cm in px')\n    expect(results[0].type).toBe('assignment')\n    expect(results[0].value).toBe('326')\n    expectCloseInResults(results[1], 128.35)\n  })\n})\n\ndescribe('math functions', () => {\n  it('sqrt without parentheses', () => expectValue('sqrt 16', '4'))\n  it('round without parentheses', () => expectValue('round 3.45', '3'))\n  it('cbrt without parentheses', () => expectValue('cbrt 8', '2'))\n  it('sqrt', () => expectValue('sqrt(16)', '4'))\n  it('abs', () => expectValue('abs(-42)', '42'))\n  it('round', () => expectValue('round(3.7)', '4'))\n  it('ceil', () => expectValue('ceil(3.2)', '4'))\n  it('floor', () => expectValue('floor(3.9)', '3'))\n\n  it('sin(45 deg)', () => expectNumericClose('sin(45 deg)', 0.7071))\n  it('sin 45°', () => expectNumericClose('sin 45°', 0.7071))\n  it('cos(pi)', () => expectNumericClose('cos(pi)', -1))\n  it('log(100)', () => {\n    const result = evalLine('log(100)')\n    expect(result.error).toBeNull()\n    expect(result.value).not.toBeNull()\n  })\n  it('ln(e)', () => expectNumericClose('ln(e)', 1))\n  it('round(1 month in days)', () =>\n    expectValue('round(1 month in days)', '30'))\n  it('round 1 month in days', () => expectValue('round 1 month in days', '30'))\n})\n\ndescribe('strict time semantics', () => {\n  it('1 month in days', () =>\n    expectNumericClose('1 month in days', 365 / 12, 3))\n  it('1 year in days', () => expectNumericClose('1 year in days', 365, 3))\n  it('2 hours + 30 minutes', () =>\n    expectNumericClose('2 hours + 30 minutes', 2.5, 2))\n})\n\ndescribe('number format', () => {\n  it('in hex', () => {\n    const result = evalLine('255 in hex')\n    expect(result.value).toBe('0xFF')\n  })\n\n  it('in bin', () => {\n    const result = evalLine('10 in bin')\n    expect(result.value).toBe('0b1010')\n  })\n\n  it('in oct', () => {\n    const result = evalLine('255 in oct')\n    expect(result.value).toBe('0o377')\n  })\n\n  it('in sci', () => {\n    const result = evalLine('5300 in sci')\n    expect(result.value).toBe('5.3e+3')\n  })\n\n  it('grouped thousands in sci', () => {\n    const result = evalLine('5 300 in sci')\n    expect(result.value).toBe('5.3e+3')\n  })\n\n  it('in scientific', () => {\n    const result = evalLine('5300 in scientific')\n    expect(result.value).toBe('5.3e+3')\n  })\n\n  it('hex input', () => expectValue('0xFF', '255'))\n  it('binary input', () => expectValue('0b1010', '10'))\n  it('octal input', () => expectValue('0o377', '255'))\n\n  it('0xFF in hex roundtrip', () => {\n    const result = evalLine('0xFF in hex')\n    expect(result.value).toBe('0xFF')\n  })\n})\n\ndescribe('area and volume aliases', () => {\n  it('sq alias', () => {\n    const result = evalLine('20 sq cm to cm^2')\n    expect(result.type).toBe('unit')\n    expectNumericClose('20 sq cm to cm^2', 20, 2)\n  })\n\n  it('square alias', () => {\n    const result = evalLine('30 square inches to inch^2')\n    expect(result.type).toBe('unit')\n    expectNumericClose('30 square inches to inch^2', 30, 2)\n  })\n\n  it('sqm alias', () => {\n    const result = evalLine('11 sqm to m^2')\n    expect(result.type).toBe('unit')\n    expectNumericClose('11 sqm to m^2', 11, 2)\n  })\n\n  it('cubic alias', () => {\n    const result = evalLine('30 cubic inches to inch^3')\n    expect(result.type).toBe('unit')\n    expectNumericClose('30 cubic inches to inch^3', 30, 2)\n  })\n\n  it('cbm alias', () => {\n    const result = evalLine('11 cbm to m^3')\n    expect(result.type).toBe('unit')\n    expectNumericClose('11 cbm to m^3', 11, 2)\n  })\n})\n\ndescribe('long-tail units', () => {\n  it('point', () => expectNumericClose('1 point to inch', 1 / 72, 4))\n  it('line', () => expectNumericClose('1 line to inch', 1 / 12, 4))\n  it('hand', () => expectNumericClose('1 hand to inch', 4, 4))\n  it('rod', () => expectNumericClose('1 rod to ft', 16.5, 4))\n  it('chain', () => expectNumericClose('1 chain to ft', 66, 4))\n  it('furlong', () => expectNumericClose('1 furlong to mile', 0.125, 4))\n  it('cable', () => expectNumericClose('1 cable to m', 185.2, 4))\n  it('league', () => expectNumericClose('1 league to mile', 3, 4))\n  it('are', () => expectNumericClose('1 are to m^2', 100, 4))\n  it('tea spoon alias', () =>\n    expectNumericClose('1 tea spoon to teaspoon', 1, 4))\n  it('table spoon alias', () =>\n    expectNumericClose('1 table spoon to tablespoon', 1, 4))\n  it('degree to radian', () =>\n    expectNumericClose('1 degree to radian', Math.PI / 180, 4))\n  it('radian to degree', () =>\n    expectNumericClose('1 radian to degree', 180 / Math.PI, 4))\n})\n\ndescribe('prev', () => {\n  it('references previous line result', () => {\n    const results = evalLines('10 + 5\\nprev * 2')\n    expect(results[0].value).toBe('15')\n    expect(results[1].value).toBe('30')\n  })\n\n  it('chain prev across multiple lines', () => {\n    const results = evalLines('10\\nprev + 5\\nprev * 2')\n    expect(results[0].value).toBe('10')\n    expect(results[1].value).toBe('15')\n    expect(results[2].value).toBe('30')\n  })\n\n  it('prev resets after empty line', () => {\n    const results = evalLines('10\\n\\nprev + 5')\n    expect(results[0].value).toBe('10')\n    expect(results[1].type).toBe('empty')\n    expect(results[2].error).not.toBeNull()\n  })\n\n  it('prev - 10', () => {\n    const results = evalLines('75\\nprev - 10')\n    expect(results[1].value).toBe('65')\n  })\n\n  it('date prev + 1 day', () => {\n    const results = evalLines('fromunix(1446587186)\\nprev + 1 day')\n    expect(results[1].type).toBe('date')\n    expect(results[1].value).toBe(\n      new Date((1446587186 + 86400) * 1000).toLocaleString(),\n    )\n  })\n})\n\ndescribe('sum and total', () => {\n  it('sum of lines above', () => {\n    const results = evalLines('10 + 5\\n20 * 3\\nsum')\n    expect(results[0].value).toBe('15')\n    expect(results[1].value).toBe('60')\n    expect(results[2].value).toBe('75')\n    expect(results[2].type).toBe('aggregate')\n  })\n\n  it('total is alias for sum', () => {\n    const results = evalLines('10\\n20\\n30\\ntotal')\n    expect(results[3].value).toBe('60')\n  })\n\n  it('sum resets after empty line', () => {\n    const results = evalLines('10\\n20\\n\\n5\\n15\\nsum')\n    expect(results[5].value).toBe('20')\n  })\n\n  it('sum of zero lines', () => {\n    const results = evalLines('\\nsum')\n    expect(results[1].value).toBe('0')\n  })\n\n  it('case insensitive', () => {\n    const results = evalLines('10\\n20\\nSUM')\n    expect(results[2].value).toBe('30')\n  })\n})\n\ndescribe('average and avg', () => {\n  it('average of lines above', () => {\n    const results = evalLines('10\\n20\\n30\\naverage')\n    expect(results[3].value).toBe('20')\n    expect(results[3].type).toBe('aggregate')\n  })\n\n  it('avg is alias', () => {\n    const results = evalLines('10\\n20\\n30\\navg')\n    expect(results[3].value).toBe('20')\n  })\n\n  it('average resets after empty line', () => {\n    const results = evalLines('10\\n20\\n\\n100\\naverage')\n    expect(results[4].value).toBe('100')\n  })\n\n  it('case insensitive', () => {\n    const results = evalLines('10\\n30\\nAVERAGE')\n    expect(results[2].value).toBe('20')\n  })\n})\n\ndescribe('comments', () => {\n  it('// comment', () => {\n    const result = evalLine('// This is a comment')\n    expect(result.type).toBe('comment')\n    expect(result.value).toBeNull()\n  })\n\n  it('# comment', () => {\n    const result = evalLine('# This is a header')\n    expect(result.type).toBe('comment')\n    expect(result.value).toBeNull()\n  })\n\n  it('comment does not break prev', () => {\n    const results = evalLines('10\\n// comment\\nprev + 5')\n    expect(results[0].value).toBe('10')\n    expect(results[1].type).toBe('comment')\n    expect(results[2].value).toBe('15')\n  })\n\n  it('comment does not affect sum', () => {\n    const results = evalLines('10\\n// comment\\n20\\nsum')\n    expect(results[3].value).toBe('30')\n  })\n})\n\ndescribe('empty lines', () => {\n  it('empty line produces empty result', () => {\n    const result = evalLine('')\n    expect(result.type).toBe('empty')\n    expect(result.value).toBeNull()\n  })\n\n  it('whitespace-only line is empty', () => {\n    const result = evalLine('   ')\n    expect(result.type).toBe('empty')\n    expect(result.value).toBeNull()\n  })\n})\n\ndescribe('fromunix', () => {\n  it('converts unix timestamp to date', () => {\n    const result = evalLine('fromunix(1446587186)')\n    expect(result.type).toBe('date')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('fromunix(0) is epoch', () => {\n    const result = evalLine('fromunix(0)')\n    expect(result.type).toBe('date')\n    expect(result.value).toContain('1970')\n  })\n\n  it('fromunix + 2 day', () => {\n    const result = evalLine('fromunix(1446587186) + 2 day')\n    expect(result.type).toBe('date')\n    expect(result.value).toBe(\n      new Date((1446587186 + 2 * 86400) * 1000).toLocaleString(),\n    )\n  })\n\n  it('date variable + 2 day', () => {\n    const results = evalLines('d = fromunix(1446587186)\\nd + 2 day')\n    expect(results[0].type).toBe('assignment')\n    expect(results[1].type).toBe('date')\n    expect(results[1].value).toBe(\n      new Date((1446587186 + 2 * 86400) * 1000).toLocaleString(),\n    )\n  })\n\n  it('local dotted date assignment + 2 day', () => {\n    const results = evalLines('x = 12.03.2025\\nx + 2 day')\n    expect(results[0].type).toBe('assignment')\n    expect(results[0].value).toBe(new Date(2025, 2, 12).toLocaleString())\n    expect(results[1].type).toBe('date')\n    expect(results[1].value).toBe(new Date(2025, 2, 14).toLocaleString())\n  })\n})\n\ndescribe('time zones', () => {\n  beforeEach(() => {\n    vi.useFakeTimers()\n    vi.setSystemTime(new Date('2026-03-06T12:00:00Z'))\n  })\n\n  afterEach(() => {\n    vi.useRealTimers()\n  })\n\n  it('PST time', () => {\n    const result = evalLine('PST time')\n    expect(result.type).toBe('date')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('time()', () => {\n    const result = evalLine('time()')\n    expect(result.type).toBe('date')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('time() + 1 day', () => {\n    const result = evalLine('time() + 1 day')\n    expect(result.type).toBe('date')\n    expect(result.value).toBe(\n      new Date('2026-03-07T12:00:00Z').toLocaleString(),\n    )\n  })\n\n  it('now()', () => {\n    const result = evalLine('now()')\n    expect(result.type).toBe('date')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('now + 1 day', () => {\n    const result = evalLine('now + 1 day')\n    expect(result.type).toBe('date')\n    expect(result.value).toBe(\n      new Date('2026-03-07T12:00:00Z').toLocaleString(),\n    )\n  })\n\n  it('Time in Madrid', () => {\n    const result = evalLine('Time in Madrid')\n    expect(result.type).toBe('date')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('now in Madrid', () => {\n    const result = evalLine('now in Madrid')\n    expect(result.type).toBe('date')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('Berlin now', () => {\n    const result = evalLine('Berlin now')\n    expect(result.type).toBe('date')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('PST time - Berlin time', () => {\n    const result = evalLine('PST time - Berlin time')\n    expect(result.type).toBe('unit')\n    expect(result.value).toContain('hour')\n    expectNumericClose('PST time - Berlin time', -9, 2)\n  })\n\n  it('2:30 pm HKT in Berlin', () => {\n    const result = evalLine('2:30 pm HKT in Berlin')\n    expect(result.type).toBe('date')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('2:30 pm New York in Berlin', () => {\n    const result = evalLine('2:30 pm New York in Berlin')\n    expect(result.type).toBe('date')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('2026-03-06 PST in Berlin', () => {\n    expectDateWithYear('2026-03-06 PST in Berlin', '2026')\n  })\n\n  it('2026-03-06 2:30 pm PST in Berlin', () => {\n    expectDateWithYear('2026-03-06 2:30 pm PST in Berlin', '2026')\n  })\n\n  it('Mar 6 2026 PST in Berlin', () => {\n    expectDateWithYear('Mar 6 2026 PST in Berlin', '2026')\n  })\n\n  it('2:30 pm Mar 6 2026 PST in Berlin', () => {\n    expectDateWithYear('2:30 pm Mar 6 2026 PST in Berlin', '2026')\n  })\n\n  it('tomorrow PST in Berlin', () => {\n    expectDateWithYear('tomorrow PST in Berlin', '2026')\n  })\n})\n\ndescribe('constants', () => {\n  it('pi', () => expectNumericClose('pi', 3.14159, 4))\n  it('e', () => expectNumericClose('e', 2.71828, 4))\n})\n\ndescribe('bitwise operations', () => {\n  it('AND', () => expectValue('5 & 3', '1'))\n  it('OR', () => expectValue('5 | 3', '7'))\n  it('XOR', () => expectValue('5 xor 3', '6'))\n  it('left shift', () => expectValue('1 << 4', '16'))\n  it('right shift', () => expectValue('16 >> 2', '4'))\n})\n\ndescribe('error handling', () => {\n  it('invalid expression returns error', () => {\n    const result = evalLine('hello world')\n    expect(result.error).not.toBeNull()\n    expect(result.type).toBe('empty')\n  })\n\n  it('division by zero', () => {\n    const result = evalLine('1 / 0')\n    expect(result.value).not.toBeNull()\n  })\n\n  it('undefined variable', () => {\n    const result = evalLine('unknownVar + 1')\n    expect(result.error).not.toBeNull()\n  })\n})\n\ndescribe('full document integration', () => {\n  it('full document', () => {\n    const doc = [\n      '8 times 9',\n      '$2k',\n      'Price: $11 + $34.45',\n      'v = 20',\n      'v times 7',\n      '100 + 15%',\n      '5% on 200',\n      '5% off 200',\n      '50 as a % of 100',\n      '5% of what is 6',\n      '// This is comment',\n      '# Header',\n      '',\n      '10 + 5',\n      '20 * 3',\n      'sum',\n      'prev - 10',\n      '0xFF in hex',\n      '5300 in sci',\n      'sqrt(16)',\n    ].join('\\n')\n\n    const results = evalLines(doc)\n\n    expect(results[0].value).toBe('72')\n    expect(results[1].type).toBe('unit')\n    expect(results[2].type).toBe('unit')\n    expect(results[3].type).toBe('assignment')\n    expect(results[3].value).toBe('20')\n    expect(results[4].value).toBe('140')\n    expectCloseInResults(results[5], 115)\n    expectCloseInResults(results[6], 210)\n    expectCloseInResults(results[7], 190)\n    expectCloseInResults(results[8], 50)\n    expectCloseInResults(results[9], 120)\n    expect(results[10].type).toBe('comment')\n    expect(results[10].value).toBeNull()\n    expect(results[11].type).toBe('comment')\n    expect(results[11].value).toBeNull()\n    expect(results[12].type).toBe('empty')\n    expect(results[13].value).toBe('15')\n    expect(results[14].value).toBe('60')\n    expect(results[15].value).toBe('75')\n    expect(results[16].value).toBe('65')\n    expect(results[17].value).toBe('0xFF')\n    expect(results[18].value).toBe('5.3e+3')\n    expect(results[19].value).toBe('4')\n  })\n})\n\nfunction expectCloseInResults(\n  result: ReturnType<typeof evalLine>,\n  expected: number,\n) {\n  const num = Number.parseFloat(result.value!.replace(/,/g, ''))\n  expect(num).toBeCloseTo(expected, 1)\n}\n"
  },
  {
    "path": "src/renderer/composables/index.ts",
    "content": "export * from './math-notebook'\nexport * from './useApp'\nexport * from './useCopyToClipboard'\nexport * from './useDialog'\nexport * from './useEditor'\nexport * from './useFolders'\nexport * from './useSnippets'\nexport * from './useSnippetUpdate'\nexport * from './useSonner'\nexport * from './useStorageMutation'\nexport * from './useTags'\nexport * from './useTheme'\n"
  },
  {
    "path": "src/renderer/composables/math-notebook/index.ts",
    "content": "export * from './useMathEngine'\nexport * from './useMathNotebook'\n"
  },
  {
    "path": "src/renderer/composables/math-notebook/math-engine/constants.ts",
    "content": "const currencyWordNames: Record<string, string> = {\n  dollar: 'USD',\n  dollars: 'USD',\n  euro: 'EUR',\n  euros: 'EUR',\n  pound: 'GBP',\n  pounds: 'GBP',\n  rouble: 'RUB',\n  roubles: 'RUB',\n  ruble: 'RUB',\n  rubles: 'RUB',\n  yen: 'JPY',\n  yuan: 'CNY',\n  rupee: 'INR',\n  rupees: 'INR',\n  real: 'BRL',\n  reais: 'BRL',\n  peso: 'MXN',\n  pesos: 'MXN',\n}\n\nexport const SUPPORTED_CURRENCY_CODES = [\n  'USD',\n  'EUR',\n  'GBP',\n  'CAD',\n  'RUB',\n  'JPY',\n  'CNY',\n  'CHF',\n  'AUD',\n  'KRW',\n  'INR',\n  'BRL',\n  'MXN',\n  'PLN',\n  'SEK',\n  'NOK',\n  'DKK',\n  'CZK',\n  'HUF',\n  'TRY',\n  'NZD',\n  'SGD',\n  'HKD',\n  'ZAR',\n  'THB',\n  'UAH',\n  'ILS',\n] as const\n\nexport const currencySymbols: Record<string, string> = {\n  '$': 'USD',\n  '€': 'EUR',\n  '£': 'GBP',\n  '¥': 'JPY',\n  '₽': 'RUB',\n  '₴': 'UAH',\n  '₩': 'KRW',\n  '₹': 'INR',\n  'R$': 'BRL',\n}\n\nexport { currencyWordNames }\n\nexport const weightContextPattern\n  = /\\b(?:lb|lbs|kg|gram|grams|ounce|ounces|tonne|tonnes|stone|stones|centner|centners|carat|carats)\\b/i\n\nexport const knownUnitTokens = new Set([\n  ...SUPPORTED_CURRENCY_CODES.map(code => code.toLowerCase()),\n  'meter',\n  'meters',\n  'm',\n  'cm',\n  'mm',\n  'km',\n  'inch',\n  'inches',\n  'foot',\n  'feet',\n  'ft',\n  'yard',\n  'yards',\n  'mile',\n  'miles',\n  'gram',\n  'grams',\n  'kg',\n  'lb',\n  'lbs',\n  'pound',\n  'pounds',\n  'centner',\n  'centners',\n  'tonne',\n  'tonnes',\n  'stone',\n  'stones',\n  'carat',\n  'carats',\n  'ounce',\n  'ounces',\n  'second',\n  'seconds',\n  'minute',\n  'minutes',\n  'hour',\n  'hours',\n  'day',\n  'days',\n  'week',\n  'weeks',\n  'month',\n  'months',\n  'year',\n  'years',\n  'celsius',\n  'fahrenheit',\n  'kelvin',\n  'bit',\n  'byte',\n  'kb',\n  'mb',\n  'gb',\n  'tb',\n  'liter',\n  'liters',\n  'litre',\n  'litres',\n  'gallon',\n  'gallons',\n  'pint',\n  'pints',\n  'quart',\n  'quarts',\n  'cup',\n  'cups',\n  'teaspoon',\n  'teaspoons',\n  'tablespoon',\n  'tablespoons',\n  'mil',\n  'rod',\n  'rods',\n  'chain',\n  'chains',\n  'hectare',\n  'hectares',\n  'are',\n  'ares',\n  'acre',\n  'acres',\n  'point',\n  'points',\n  'line',\n  'lines',\n  'hand',\n  'hands',\n  'furlong',\n  'furlongs',\n  'cable',\n  'cables',\n  'nauticalmile',\n  'nauticalmiles',\n  'league',\n  'leagues',\n  'radian',\n  'radians',\n  'degree',\n  'degrees',\n  'mcsecond',\n  'mcminute',\n  'mchour',\n  'mcday',\n  'mcweek',\n  'mcmonth',\n  'mcyear',\n  'px',\n  'pixel',\n  'pixels',\n  'pt',\n  'point',\n  'points',\n  'em',\n  ...Object.keys(currencyWordNames),\n])\n\nexport const lengthInchesByUnit: Record<string, number> = {\n  inch: 1,\n  inches: 1,\n  cm: 1 / 2.54,\n  mm: 1 / 25.4,\n  m: 39.37007874015748,\n  meter: 39.37007874015748,\n  meters: 39.37007874015748,\n  km: 39370.07874015748,\n  foot: 12,\n  feet: 12,\n  ft: 12,\n  yard: 36,\n  yards: 36,\n  mile: 63360,\n  miles: 63360,\n}\n\nexport const timeZoneAliases: Record<string, string> = {\n  pst: 'America/Los_Angeles',\n  pdt: 'America/Los_Angeles',\n  est: 'America/New_York',\n  edt: 'America/New_York',\n  cst: 'America/Chicago',\n  cdt: 'America/Chicago',\n  mst: 'America/Denver',\n  mdt: 'America/Denver',\n  hkt: 'Asia/Hong_Kong',\n  jst: 'Asia/Tokyo',\n  ist: 'Asia/Kolkata',\n  gmt: 'Etc/GMT',\n  utc: 'UTC',\n  cet: 'Europe/Paris',\n  cest: 'Europe/Paris',\n}\n\nexport const DEFAULT_EM_IN_PX = 16\nexport const DEFAULT_PPI = 96\nexport const MATH_UNARY_FUNCTIONS = [\n  'sqrt',\n  'cbrt',\n  'abs',\n  'ln',\n  'fact',\n  'round',\n  'ceil',\n  'floor',\n  'sin',\n  'cos',\n  'tan',\n  'arcsin',\n  'arccos',\n  'arctan',\n  'sinh',\n  'cosh',\n  'tanh',\n] as const\n\nexport const TIME_UNIT_TOKEN_MAP: Record<string, string> = {\n  second: 'mcsecond',\n  seconds: 'mcsecond',\n  minute: 'mcminute',\n  minutes: 'mcminute',\n  hour: 'mchour',\n  hours: 'mchour',\n  day: 'mcday',\n  days: 'mcday',\n  week: 'mcweek',\n  weeks: 'mcweek',\n  month: 'mcmonth',\n  months: 'mcmonth',\n  year: 'mcyear',\n  years: 'mcyear',\n}\n\nexport const HUMANIZED_UNIT_NAMES: Record<\n  string,\n  { singular: string, plural: string }\n> = {\n  mcsecond: { singular: 'second', plural: 'seconds' },\n  mcminute: { singular: 'minute', plural: 'minutes' },\n  mchour: { singular: 'hour', plural: 'hours' },\n  mcday: { singular: 'day', plural: 'days' },\n  mcweek: { singular: 'week', plural: 'weeks' },\n  mcmonth: { singular: 'month', plural: 'months' },\n  mcyear: { singular: 'year', plural: 'years' },\n  nauticalmile: { singular: 'nautical mile', plural: 'nautical miles' },\n  centner: { singular: 'centner', plural: 'centners' },\n  point: { singular: 'point', plural: 'points' },\n  line: { singular: 'line', plural: 'lines' },\n  hand: { singular: 'hand', plural: 'hands' },\n  furlong: { singular: 'furlong', plural: 'furlongs' },\n  cable: { singular: 'cable', plural: 'cables' },\n  league: { singular: 'league', plural: 'leagues' },\n  are: { singular: 'are', plural: 'ares' },\n  carat: { singular: 'carat', plural: 'carats' },\n}\n\nexport const MONTH_NAME_TO_INDEX: Record<string, number> = {\n  jan: 1,\n  january: 1,\n  feb: 2,\n  february: 2,\n  mar: 3,\n  march: 3,\n  apr: 4,\n  april: 4,\n  may: 5,\n  jun: 6,\n  june: 6,\n  jul: 7,\n  july: 7,\n  aug: 8,\n  august: 8,\n  sep: 9,\n  sept: 9,\n  september: 9,\n  oct: 10,\n  october: 10,\n  nov: 11,\n  november: 11,\n  dec: 12,\n  december: 12,\n}\n"
  },
  {
    "path": "src/renderer/composables/math-notebook/math-engine/css.ts",
    "content": "import type { CssContext, SpecialLineResult } from './types'\nimport { lengthInchesByUnit } from './constants'\nimport { splitByKeyword } from './preprocess'\n\nfunction normalizeCssUnit(unit: string) {\n  const normalized = unit.toLowerCase()\n\n  if (normalized === 'pixel' || normalized === 'pixels')\n    return 'px'\n  if (normalized === 'point' || normalized === 'points')\n    return 'pt'\n  if (normalized in lengthInchesByUnit)\n    return normalized\n  if (normalized === 'px' || normalized === 'pt' || normalized === 'em')\n    return normalized\n\n  return null\n}\n\nfunction parseCssQuantity(text: string) {\n  const match = text.trim().match(/^(-?\\d+(?:\\.\\d+)?)\\s*([a-z]+)$/i)\n  if (!match)\n    return null\n\n  const value = Number(match[1])\n  const unit = normalizeCssUnit(match[2])\n\n  if (Number.isNaN(value) || !unit)\n    return null\n\n  return { value, unit }\n}\n\nfunction toPx(\n  quantity: { value: number, unit: string },\n  cssContext: CssContext,\n) {\n  switch (quantity.unit) {\n    case 'px':\n      return quantity.value\n    case 'pt':\n      return (quantity.value * cssContext.ppi) / 72\n    case 'em':\n      return quantity.value * cssContext.emPx\n    default:\n      return (\n        quantity.value * lengthInchesByUnit[quantity.unit] * cssContext.ppi\n      )\n  }\n}\n\nfunction fromPx(pxValue: number, targetUnit: string, cssContext: CssContext) {\n  switch (targetUnit) {\n    case 'px':\n      return pxValue\n    case 'pt':\n      return (pxValue * 72) / cssContext.ppi\n    case 'em':\n      return pxValue / cssContext.emPx\n    default:\n      return pxValue / cssContext.ppi / lengthInchesByUnit[targetUnit]\n  }\n}\n\nfunction formatNumberValue(value: number) {\n  return Number.isInteger(value)\n    ? value.toLocaleString('en-US')\n    : value.toLocaleString('en-US', { maximumFractionDigits: 6 })\n}\n\nfunction formatUnitValue(value: number, unit: string) {\n  return `${formatNumberValue(value)} ${unit}`\n}\n\nexport function evaluateCssLine(\n  line: string,\n  cssContext: CssContext,\n): SpecialLineResult | null {\n  const ppiAssignmentMatch = line.match(/^ppi\\s*=\\s*(-?\\d+(?:\\.\\d+)?)$/i)\n  if (ppiAssignmentMatch) {\n    const nextPpi = Number(ppiAssignmentMatch[1])\n    if (Number.isNaN(nextPpi)) {\n      return null\n    }\n\n    cssContext.ppi = nextPpi\n    return {\n      lineResult: {\n        value: formatNumberValue(nextPpi),\n        error: null,\n        type: 'assignment',\n      },\n      rawResult: nextPpi,\n    }\n  }\n\n  const emAssignmentMatch = line.match(/^em\\s*=\\s*(-?\\d+(?:\\.\\d+)?)\\s*px$/i)\n  if (emAssignmentMatch) {\n    const nextEm = Number(emAssignmentMatch[1])\n    if (Number.isNaN(nextEm)) {\n      return null\n    }\n\n    cssContext.emPx = nextEm\n    return {\n      lineResult: {\n        value: formatUnitValue(nextEm, 'px'),\n        error: null,\n        type: 'assignment',\n      },\n      rawResult: nextEm,\n    }\n  }\n\n  const conversionParts = splitByKeyword(line, [\n    ' into ',\n    ' in ',\n    ' to ',\n    ' as ',\n  ])\n  if (!conversionParts) {\n    return null\n  }\n\n  const source = parseCssQuantity(conversionParts[0])\n  const targetUnit = normalizeCssUnit(conversionParts[1])\n\n  if (!source || !targetUnit) {\n    return null\n  }\n\n  const sourceIsCss = ['px', 'pt', 'em'].includes(source.unit)\n  const targetIsCss = ['px', 'pt', 'em'].includes(targetUnit)\n  const sourceIsLength = source.unit in lengthInchesByUnit\n  const targetIsLength = targetUnit in lengthInchesByUnit\n\n  if (!sourceIsCss && !targetIsCss && (!sourceIsLength || !targetIsLength)) {\n    return null\n  }\n\n  const pxValue = toPx(source, cssContext)\n  const converted = fromPx(pxValue, targetUnit, cssContext)\n\n  return {\n    lineResult: {\n      value: formatUnitValue(converted, targetUnit),\n      error: null,\n      type: 'unit',\n    },\n    rawResult: converted,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/math-notebook/math-engine/mathInstance.ts",
    "content": "import { all, create } from 'mathjs'\n\nfunction createUnitSafe(\n  mathInstance: ReturnType<typeof create>,\n  name: string,\n  options: { definition?: string, aliases: string[] },\n) {\n  try {\n    mathInstance.createUnit(name, options)\n  }\n  catch {\n    // Ignore duplicate or unsupported unit definitions and keep the rest of the registry intact.\n  }\n}\n\nexport function createMathInstance(currencyRates: Record<string, number>) {\n  const mathInstance = create(all, {\n    number: 'number',\n    precision: 14,\n  })\n\n  mathInstance.import(\n    {\n      fromunix: (ts: number) => new Date(ts * 1000),\n      ln: (x: number) => Math.log(x),\n      fact: (x: number) => mathInstance.factorial(x),\n      root: (degree: number, value: number) =>\n        mathInstance.nthRoot(value, degree),\n      arcsin: (x: number) => mathInstance.asin(x),\n      arccos: (x: number) => mathInstance.acos(x),\n      arctan: (x: number) => mathInstance.atan(x),\n      unitValue: (value: any) =>\n        value && typeof value.toNumber === 'function'\n          ? value.toNumber()\n          : Number(value),\n    },\n    { override: true },\n  )\n\n  createUnitSafe(mathInstance, 'USD', { aliases: ['usd'] })\n  createUnitSafe(mathInstance, 'mcsecond', {\n    definition: '1 second',\n    aliases: [],\n  })\n  createUnitSafe(mathInstance, 'mcminute', {\n    definition: '60 mcsecond',\n    aliases: [],\n  })\n  createUnitSafe(mathInstance, 'mchour', {\n    definition: '60 mcminute',\n    aliases: [],\n  })\n  createUnitSafe(mathInstance, 'mcday', {\n    definition: '24 mchour',\n    aliases: [],\n  })\n  createUnitSafe(mathInstance, 'mcweek', {\n    definition: '7 mcday',\n    aliases: [],\n  })\n  createUnitSafe(mathInstance, 'mcyear', {\n    definition: '365 mcday',\n    aliases: [],\n  })\n  createUnitSafe(mathInstance, 'mcmonth', {\n    definition: `${365 / 12} mcday`,\n    aliases: [],\n  })\n  createUnitSafe(mathInstance, 'are', {\n    definition: '100 m^2',\n    aliases: ['ares'],\n  })\n  createUnitSafe(mathInstance, 'carat', {\n    definition: '0.2 gram',\n    aliases: ['carats'],\n  })\n  createUnitSafe(mathInstance, 'pound', {\n    definition: '1 lb',\n    aliases: ['pounds'],\n  })\n  createUnitSafe(mathInstance, 'centner', {\n    definition: '100 kg',\n    aliases: ['centners'],\n  })\n  createUnitSafe(mathInstance, 'point', {\n    definition: '0.0138888888889 inch',\n    aliases: ['points'],\n  })\n  createUnitSafe(mathInstance, 'line', {\n    definition: '0.0833333333333 inch',\n    aliases: ['lines'],\n  })\n  createUnitSafe(mathInstance, 'hand', {\n    definition: '4 inch',\n    aliases: ['hands'],\n  })\n  createUnitSafe(mathInstance, 'furlong', {\n    definition: '660 ft',\n    aliases: ['furlongs'],\n  })\n  createUnitSafe(mathInstance, 'cable', {\n    definition: '185.2 m',\n    aliases: ['cables'],\n  })\n  createUnitSafe(mathInstance, 'nauticalmile', {\n    definition: '1852 m',\n    aliases: ['nauticalmiles'],\n  })\n  createUnitSafe(mathInstance, 'league', {\n    definition: '3 mile',\n    aliases: ['leagues'],\n  })\n\n  for (const [code, rate] of Object.entries(currencyRates)) {\n    if (code === 'USD')\n      continue\n\n    createUnitSafe(mathInstance, code, {\n      definition: `${1 / rate} USD`,\n      aliases: [code.toLowerCase()],\n    })\n  }\n\n  return mathInstance\n}\n"
  },
  {
    "path": "src/renderer/composables/math-notebook/math-engine/preprocess.ts",
    "content": "import {\n  currencySymbols,\n  currencyWordNames,\n  knownUnitTokens,\n  MATH_UNARY_FUNCTIONS,\n  SUPPORTED_CURRENCY_CODES,\n  TIME_UNIT_TOKEN_MAP,\n  weightContextPattern,\n} from './constants'\n\nfunction preprocessLabels(line: string): string {\n  const match = line.match(/^([a-z][a-z0-9]*(?:\\s[a-z0-9]+)*):\\s(\\S.*)$/i)\n  if (match)\n    return match[2]\n  return line\n}\n\nfunction preprocessQuotedText(line: string): string {\n  const stripped = line\n    .replace(/\"[^\"]*\"/g, ' ')\n    .replace(/\\s+/g, ' ')\n    .trim()\n\n  if (stripped === line) {\n    return line\n  }\n\n  const tokens = stripped.split(' ')\n  while (tokens.length > 1) {\n    const lastToken = tokens.at(-1)!.toLowerCase()\n\n    if (!/^[a-z-]+$/i.test(lastToken) || knownUnitTokens.has(lastToken)) {\n      break\n    }\n\n    tokens.pop()\n  }\n\n  return tokens.join(' ')\n}\n\nfunction sanitizeForCurrencyDetection(line: string) {\n  return preprocessQuotedText(preprocessLabels(line))\n}\n\nfunction preprocessGroupedNumbers(line: string): string {\n  return line.replace(/\\b\\d{1,3}(?:\\s\\d{3})+\\b/g, match =>\n    match.replace(/\\s+/g, ''))\n}\n\nfunction preprocessDegreeSigns(line: string): string {\n  return line.replace(/(-?\\d+(?:\\.\\d+)?)\\s*°/g, '$1 deg')\n}\n\nfunction preprocessTimeUnits(line: string): string {\n  return line.replace(\n    /\\b(seconds?|minutes?|hours?|days?|weeks?|months?|years?)\\b/gi,\n    match => TIME_UNIT_TOKEN_MAP[match.toLowerCase()] || match,\n  )\n}\n\nfunction normalizePowerUnit(unit: string) {\n  switch (unit.toLowerCase()) {\n    case 'inches':\n    case 'inch':\n      return 'inch'\n    case 'feet':\n    case 'foot':\n    case 'ft':\n      return 'ft'\n    case 'meters':\n    case 'meter':\n    case 'm':\n      return 'm'\n    case 'centimeter':\n    case 'centimeters':\n    case 'cm':\n      return 'cm'\n    case 'millimeter':\n    case 'millimeters':\n    case 'mm':\n      return 'mm'\n    case 'kilometer':\n    case 'kilometers':\n    case 'km':\n      return 'km'\n    case 'yards':\n    case 'yard':\n      return 'yard'\n    case 'miles':\n    case 'mile':\n      return 'mile'\n    default:\n      return unit.toLowerCase()\n  }\n}\n\nfunction preprocessUnitAliases(line: string): string {\n  return line\n    .replace(/\\btea\\s+spoons?\\b/gi, 'teaspoon')\n    .replace(/\\btable\\s+spoons?\\b/gi, 'tablespoon')\n    .replace(/\\bnautical\\s+miles?\\b/gi, 'nauticalmile')\n}\n\nfunction preprocessAreaVolumeAliases(line: string): string {\n  line = line.replace(/\\bsqm\\b/gi, 'm^2')\n  line = line.replace(/\\bcbm\\b/gi, 'm^3')\n\n  line = line.replace(\n    /(\\d+(?:\\.\\d+)?)\\s+(sq|square)\\s+([a-z]+)/gi,\n    (_, value: string, _prefix: string, unit: string) =>\n      `${value} ${normalizePowerUnit(unit)}^2`,\n  )\n  line = line.replace(\n    /(\\b(?:in|to|as|into)\\s+)(sq|square)\\s+([a-z]+)/gi,\n    (_, prefix: string, _keyword: string, unit: string) =>\n      `${prefix}${normalizePowerUnit(unit)}^2`,\n  )\n  line = line.replace(\n    /(\\d+(?:\\.\\d+)?)\\s+(cu|cubic|cb)\\s+([a-z]+)/gi,\n    (_, value: string, _prefix: string, unit: string) =>\n      `${value} ${normalizePowerUnit(unit)}^3`,\n  )\n  line = line.replace(\n    /(\\b(?:in|to|as|into)\\s+)(cu|cubic|cb)\\s+([a-z]+)/gi,\n    (_, prefix: string, _keyword: string, unit: string) =>\n      `${prefix}${normalizePowerUnit(unit)}^3`,\n  )\n\n  return line\n}\n\nfunction preprocessFunctionExpression(expression: string): string {\n  const trimmed = expression.trim()\n  const openIndex = trimmed.indexOf('(')\n  const closeIndex = trimmed.endsWith(')') ? trimmed.length - 1 : -1\n\n  if (openIndex > 0 && closeIndex > openIndex) {\n    if (trimmed.toLowerCase().startsWith('root ')) {\n      const degree = trimmed.slice(5, openIndex).trim()\n      const value = trimmed.slice(openIndex + 1, closeIndex).trim()\n      if (degree && value) {\n        return `root(${degree}, ${value})`\n      }\n    }\n\n    if (trimmed.toLowerCase().startsWith('log ')) {\n      const base = trimmed.slice(4, openIndex).trim()\n      const value = trimmed.slice(openIndex + 1, closeIndex).trim()\n      if (base && value) {\n        return `log(${value}, ${base})`\n      }\n    }\n  }\n\n  const unaryFunctionsPattern = MATH_UNARY_FUNCTIONS.join('|')\n  const unaryMatch = trimmed.match(\n    new RegExp(`^(${unaryFunctionsPattern})\\\\s+(.+)$`, 'i'),\n  )\n  if (unaryMatch && !unaryMatch[2].trim().startsWith('(')) {\n    return `${unaryMatch[1]}(${unaryMatch[2].trim()})`\n  }\n\n  return expression\n}\n\nfunction preprocessFunctionSyntax(line: string): string {\n  const assignmentIndex = line.indexOf('=')\n  if (assignmentIndex > 0) {\n    const left = line.slice(0, assignmentIndex).trim()\n    const right = line.slice(assignmentIndex + 1).trim()\n\n    if (/^[a-z_]\\w*$/i.test(left) && right) {\n      return `${line.slice(0, assignmentIndex + 1)} ${preprocessFunctionExpression(right)}`\n    }\n  }\n\n  return preprocessFunctionExpression(line)\n}\n\nfunction preprocessFunctionConversions(line: string): string {\n  const unaryFunctionsPattern = MATH_UNARY_FUNCTIONS.join('|')\n\n  return line.replace(\n    new RegExp(\n      `(^|[=,+\\\\-*/(]\\\\s*)(${unaryFunctionsPattern})\\\\(([^()]+?)\\\\s+(?:in|to|as|into)\\\\s+([a-z][a-z0-9^]*)\\\\)`,\n      'gi',\n    ),\n    (_, prefix: string, fn: string, source: string, target: string) => {\n      return `${prefix}${fn}(unitValue(to(${source.trim()}, ${target.trim()})))`\n    },\n  )\n}\n\nfunction preprocessCurrencySymbols(line: string): string {\n  let nextLine = line.replace(\n    /R\\$\\s*(\\d+(?:\\.\\d+)?(?:\\s*[kKM])?)\\b/g,\n    '$1 BRL',\n  )\n\n  for (const [symbol, code] of Object.entries(currencySymbols)) {\n    if (symbol === 'R$')\n      continue\n\n    const escaped = symbol.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n    nextLine = nextLine.replace(\n      new RegExp(`${escaped}\\\\s*(\\\\d+(?:\\\\.\\\\d+)?(?:\\\\s*(?:k|M))?)\\\\b`, 'g'),\n      `$1 ${code}`,\n    )\n  }\n\n  return nextLine\n}\n\nfunction preprocessCurrencyWords(line: string): string {\n  return line.replace(\n    /(\\d+(?:\\.\\d+)?)\\s+(dollars?|euros?|pounds?|roubles?|rubles?|yen|yuan|rupees?|reais|real|pesos?)\\b/gi,\n    (\n      _,\n      amount: string,\n      currencyName: string,\n      _offset: number,\n      fullLine: string,\n    ) => {\n      const lowerCurrencyName = currencyName.toLowerCase()\n\n      if (\n        (lowerCurrencyName === 'pound' || lowerCurrencyName === 'pounds')\n        && weightContextPattern.test(fullLine)\n      ) {\n        return `${amount} ${currencyName}`\n      }\n\n      const code = currencyWordNames[lowerCurrencyName]\n      return code ? `${amount} ${code}` : `${amount} ${currencyName}`\n    },\n  )\n}\n\nfunction preprocessScales(line: string): string {\n  return line\n    .replace(/(\\d+(?:\\.\\d+)?)\\s*k\\b/g, '($1 * 1000)')\n    .replace(/(\\d+(?:\\.\\d+)?)\\s*M\\b/g, '($1 * 1000000)')\n    .replace(/(\\d+(?:\\.\\d+)?)\\s+billion\\b/gi, '($1 * 1000000000)')\n    .replace(/(\\d+(?:\\.\\d+)?)\\s+million\\b/gi, '($1 * 1000000)')\n    .replace(/(\\d+(?:\\.\\d+)?)\\s+thousand\\b/gi, '($1 * 1000)')\n}\n\nfunction preprocessStackedUnits(line: string): string {\n  return line.replace(\n    /-?\\d+(?:\\.\\d+)?\\s+[a-z]+(?:\\s+-?\\d+(?:\\.\\d+)?\\s+[a-z]+)+/gi,\n    (match) => {\n      const tokens = match.trim().split(/\\s+/)\n      const pairs: string[] = []\n\n      for (let index = 0; index < tokens.length; index += 2) {\n        if (!/^-?\\d+(?:\\.\\d+)?$/.test(tokens[index])) {\n          return match\n        }\n\n        const unit = tokens[index + 1]?.toLowerCase()\n        if (!unit || !knownUnitTokens.has(unit)) {\n          return match\n        }\n\n        pairs.push(`${tokens[index]} ${tokens[index + 1]}`)\n      }\n\n      return pairs.length >= 2 ? `(${pairs.join(' + ')})` : match\n    },\n  )\n}\n\nfunction preprocessImplicitMultiplication(line: string): string {\n  return line.replace(/(\\d)\\s*\\(/g, '$1 * (')\n}\n\nfunction preprocessWordOperators(line: string): string {\n  return line\n    .replace(/\\bmultiplied\\s+by\\b/gi, '*')\n    .replace(/\\bdivide\\s+by\\b/gi, '/')\n    .replace(/(\\S+)\\s+xor\\s+(\\S+)/gi, 'bitXor($1, $2)')\n    .replace(/\\btimes\\b/gi, '*')\n    .replace(/\\bdivide\\b/gi, '/')\n    .replace(/\\bplus\\b/gi, '+')\n    .replace(/\\band\\b/gi, '+')\n    .replace(/\\bwith\\b/gi, '+')\n    .replace(/\\bminus\\b/gi, '-')\n    .replace(/\\bsubtract\\b/gi, '-')\n    .replace(/\\bwithout\\b/gi, '-')\n    .replace(/\\bmul\\b/gi, '*')\n    .replace(/\\bmod\\b/gi, '%')\n}\n\nfunction preprocessPercentages(line: string): string {\n  return line\n    .replace(\n      /(\\d+(?:\\.\\d+)?)%\\s+of\\s+what\\s+is\\s+(\\d+(?:\\.\\d+)?)/gi,\n      '$2 / ($1 / 100)',\n    )\n    .replace(\n      /(\\d+(?:\\.\\d+)?)%\\s+on\\s+what\\s+is\\s+(\\d+(?:\\.\\d+)?)/gi,\n      '$2 / (1 + $1 / 100)',\n    )\n    .replace(\n      /(\\d+(?:\\.\\d+)?)%\\s+off\\s+what\\s+is\\s+(\\d+(?:\\.\\d+)?)/gi,\n      '$2 / (1 - $1 / 100)',\n    )\n    .replace(\n      /(\\d+(?:\\.\\d+)?)\\s+as\\s+a\\s+%\\s+of\\s+(\\d+(?:\\.\\d+)?)/gi,\n      '($1 / $2) * 100',\n    )\n    .replace(\n      /(\\d+(?:\\.\\d+)?)\\s+as\\s+a\\s+%\\s+on\\s+(\\d+(?:\\.\\d+)?)/gi,\n      '(($1 - $2) / $2) * 100',\n    )\n    .replace(\n      /(\\d+(?:\\.\\d+)?)\\s+as\\s+a\\s+%\\s+off\\s+(\\d+(?:\\.\\d+)?)/gi,\n      '(($2 - $1) / $2) * 100',\n    )\n    .replace(/(\\d+(?:\\.\\d+)?)%\\s+on\\s+(\\d+(?:\\.\\d+)?)/gi, '$2 * (1 + $1 / 100)')\n    .replace(\n      /(\\d+(?:\\.\\d+)?)%\\s+off\\s+(\\d+(?:\\.\\d+)?)/gi,\n      '$2 * (1 - $1 / 100)',\n    )\n    .replace(/(\\d+(?:\\.\\d+)?)%\\s+of\\s+(\\d+(?:\\.\\d+)?)/gi, '$1 / 100 * $2')\n    .replace(/(\\d+(?:\\.\\d+)?)\\s*\\+\\s*(\\d+(?:\\.\\d+)?)%/g, '$1 * (1 + $2 / 100)')\n    .replace(/(\\d+(?:\\.\\d+)?)\\s*-\\s*(\\d+(?:\\.\\d+)?)%/g, '$1 * (1 - $2 / 100)')\n    .replace(/(\\d+(?:\\.\\d+)?)%(?!\\s*\\w)/g, '$1 / 100')\n}\n\nfunction preprocessConversions(line: string): string {\n  return line.replace(/\\s+as\\s+/gi, ' to ').replace(/\\s+into\\s+/gi, ' to ')\n}\n\nexport function splitByKeyword(line: string, keywords: string[]) {\n  const lowerLine = line.toLowerCase()\n\n  for (const keyword of keywords) {\n    const index = lowerLine.lastIndexOf(keyword)\n    if (index > 0) {\n      return [\n        line.slice(0, index).trim(),\n        line.slice(index + keyword.length).trim(),\n      ] as const\n    }\n  }\n\n  return null\n}\n\nexport function hasCurrencyExpression(line: string) {\n  const sanitized = sanitizeForCurrencyDetection(line)\n\n  if (!sanitized) {\n    return false\n  }\n\n  if (\n    Object.keys(currencySymbols).some(symbol => sanitized.includes(symbol))\n  ) {\n    return true\n  }\n\n  const currencyCodePattern = new RegExp(\n    `\\\\b(${SUPPORTED_CURRENCY_CODES.join('|')})\\\\b`,\n    'i',\n  )\n  if (currencyCodePattern.test(sanitized)) {\n    return true\n  }\n\n  return Object.keys(currencyWordNames).some((currencyName) => {\n    if (!new RegExp(`\\\\b${currencyName}\\\\b`, 'i').test(sanitized)) {\n      return false\n    }\n\n    if (\n      (currencyName === 'pound' || currencyName === 'pounds')\n      && weightContextPattern.test(sanitized)\n    ) {\n      return false\n    }\n\n    return true\n  })\n}\n\nexport function preprocessMathExpression(line: string) {\n  let processed = preprocessLabels(line)\n  processed = preprocessQuotedText(processed)\n  processed = preprocessGroupedNumbers(processed)\n  processed = preprocessDegreeSigns(processed)\n  processed = preprocessTimeUnits(processed)\n  processed = preprocessUnitAliases(processed)\n  processed = preprocessCurrencySymbols(processed)\n  processed = preprocessCurrencyWords(processed)\n  processed = preprocessScales(processed)\n  processed = preprocessAreaVolumeAliases(processed)\n  processed = preprocessStackedUnits(processed)\n  processed = preprocessFunctionSyntax(processed)\n  processed = preprocessFunctionConversions(processed)\n  processed = preprocessImplicitMultiplication(processed)\n  processed = preprocessWordOperators(processed)\n  processed = preprocessPercentages(processed)\n  processed = preprocessConversions(processed)\n  return processed\n}\n"
  },
  {
    "path": "src/renderer/composables/math-notebook/math-engine/timeZones.ts",
    "content": "import type { LineResult, SpecialLineResult } from './types'\nimport { MONTH_NAME_TO_INDEX, timeZoneAliases } from './constants'\nimport { splitByKeyword } from './preprocess'\n\ninterface ParsedTemporalExpression {\n  date: Date\n  explicitDate: boolean\n}\n\ninterface TimeZoneDifferenceOptions {\n  createHourUnit: (hours: number) => any\n  formatResult: (value: any) => LineResult\n}\n\nfunction getLocalTimeZone() {\n  return Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC'\n}\n\nfunction getSupportedTimeZones() {\n  if (typeof Intl.supportedValuesOf !== 'function')\n    return []\n\n  return Intl.supportedValuesOf('timeZone')\n}\n\nfunction normalizeTimeZoneInput(value: string) {\n  return value.toLowerCase().replace(/_/g, ' ').replace(/\\s+/g, ' ').trim()\n}\n\nfunction resolveTimeZone(value: string) {\n  const normalized = normalizeTimeZoneInput(value)\n\n  if (timeZoneAliases[normalized]) {\n    return timeZoneAliases[normalized]\n  }\n\n  return (\n    getSupportedTimeZones().find((timeZone) => {\n      const lowerTimeZone = normalizeTimeZoneInput(\n        timeZone.replace(/\\//g, ' '),\n      )\n      const cityName = normalizeTimeZoneInput(timeZone.split('/').at(-1) || '')\n\n      return lowerTimeZone === normalized || cityName === normalized\n    }) || null\n  )\n}\n\nfunction getTimeZoneParts(date: Date, timeZone: string) {\n  const formatter = new Intl.DateTimeFormat('en-US', {\n    timeZone,\n    hour12: false,\n    year: 'numeric',\n    month: '2-digit',\n    day: '2-digit',\n    hour: '2-digit',\n    minute: '2-digit',\n    second: '2-digit',\n  })\n\n  const parts = formatter.formatToParts(date)\n  const getPartValue = (type: string) =>\n    Number(parts.find(part => part.type === type)?.value)\n\n  return {\n    year: getPartValue('year'),\n    month: getPartValue('month'),\n    day: getPartValue('day'),\n    hour: getPartValue('hour'),\n    minute: getPartValue('minute'),\n    second: getPartValue('second'),\n  }\n}\n\nfunction zonedDateToUtc(\n  parts: {\n    year: number\n    month: number\n    day: number\n    hour: number\n    minute: number\n  },\n  timeZone: string,\n) {\n  let utcTimestamp = Date.UTC(\n    parts.year,\n    parts.month - 1,\n    parts.day,\n    parts.hour,\n    parts.minute,\n    0,\n  )\n\n  for (let iteration = 0; iteration < 3; iteration++) {\n    const actualParts = getTimeZoneParts(new Date(utcTimestamp), timeZone)\n    const expectedTimestamp = Date.UTC(\n      parts.year,\n      parts.month - 1,\n      parts.day,\n      parts.hour,\n      parts.minute,\n      0,\n    )\n    const actualTimestamp = Date.UTC(\n      actualParts.year,\n      actualParts.month - 1,\n      actualParts.day,\n      actualParts.hour,\n      actualParts.minute,\n      0,\n    )\n\n    utcTimestamp += expectedTimestamp - actualTimestamp\n  }\n\n  return new Date(utcTimestamp)\n}\n\nfunction formatTimeZoneDate(date: Date, timeZone: string, includeYear = false) {\n  return new Intl.DateTimeFormat('en-US', {\n    timeZone,\n    hour: 'numeric',\n    minute: '2-digit',\n    month: 'short',\n    day: 'numeric',\n    ...(includeYear ? { year: 'numeric' as const } : {}),\n    timeZoneName: 'short',\n  }).format(date)\n}\n\nfunction getTimeZoneOffsetMinutes(date: Date, timeZone: string) {\n  const parts = getTimeZoneParts(date, timeZone)\n  const zonedTimestamp = Date.UTC(\n    parts.year,\n    parts.month - 1,\n    parts.day,\n    parts.hour,\n    parts.minute,\n    parts.second,\n  )\n\n  return (zonedTimestamp - date.getTime()) / (1000 * 60)\n}\n\nfunction parseClockParts(value: string) {\n  const timeMatch = value\n    .trim()\n    .match(/^(\\d{1,2})(?::(\\d{2}))?(?:\\s*(am|pm))?$/i)\n  if (!timeMatch) {\n    return null\n  }\n\n  const [, hourText, minuteText, meridiem] = timeMatch\n  let hours = Number(hourText)\n  const minutes = Number(minuteText || '0')\n\n  if (Number.isNaN(hours) || Number.isNaN(minutes)) {\n    return null\n  }\n\n  if (meridiem?.toLowerCase() === 'pm' && hours < 12) {\n    hours += 12\n  }\n  if (meridiem?.toLowerCase() === 'am' && hours === 12) {\n    hours = 0\n  }\n\n  return { hour: hours, minute: minutes }\n}\n\nfunction splitTemporalExpressionWithLeadingTime(value: string) {\n  const tokens = value.trim().split(/\\s+/).filter(Boolean)\n\n  for (let length = Math.min(3, tokens.length); length >= 1; length--) {\n    const timeCandidate = tokens.slice(0, length).join(' ')\n    const timeParts = parseClockParts(timeCandidate)\n\n    if (timeParts) {\n      const remainder = tokens.slice(length).join(' ')\n      if (remainder) {\n        return {\n          timeParts,\n          remainder,\n        }\n      }\n    }\n  }\n\n  return null\n}\n\nfunction getCurrentDatePartsInTimeZone(now: Date, timeZone: string) {\n  const parts = getTimeZoneParts(now, timeZone)\n  return {\n    year: parts.year,\n    month: parts.month,\n    day: parts.day,\n  }\n}\n\nfunction shiftDateParts(\n  parts: { year: number, month: number, day: number },\n  dayDelta: number,\n) {\n  const shifted = new Date(\n    Date.UTC(parts.year, parts.month - 1, parts.day + dayDelta),\n  )\n  return {\n    year: shifted.getUTCFullYear(),\n    month: shifted.getUTCMonth() + 1,\n    day: shifted.getUTCDate(),\n  }\n}\n\nfunction parseDateParts(value: string, now: Date, timeZone: string) {\n  const trimmed = value.trim().replace(/,/g, '')\n  const currentDateParts = getCurrentDatePartsInTimeZone(now, timeZone)\n\n  if (!trimmed) {\n    return null\n  }\n\n  if (/^today$/i.test(trimmed)) {\n    return currentDateParts\n  }\n\n  if (/^tomorrow$/i.test(trimmed)) {\n    return shiftDateParts(currentDateParts, 1)\n  }\n\n  if (/^yesterday$/i.test(trimmed)) {\n    return shiftDateParts(currentDateParts, -1)\n  }\n\n  const isoMatch = trimmed.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/)\n  if (isoMatch) {\n    return {\n      year: Number(isoMatch[1]),\n      month: Number(isoMatch[2]),\n      day: Number(isoMatch[3]),\n    }\n  }\n\n  const slashMatch = trimmed.match(/^(\\d{1,2})\\/(\\d{1,2})(?:\\/(\\d{4}))?$/)\n  if (slashMatch) {\n    return {\n      year: Number(slashMatch[3] || currentDateParts.year),\n      month: Number(slashMatch[1]),\n      day: Number(slashMatch[2]),\n    }\n  }\n\n  const dottedMatch = trimmed.match(/^(\\d{1,2})\\.(\\d{1,2})(?:\\.(\\d{4}))?$/)\n  if (dottedMatch) {\n    return {\n      year: Number(dottedMatch[3] || currentDateParts.year),\n      month: Number(dottedMatch[2]),\n      day: Number(dottedMatch[1]),\n    }\n  }\n\n  const monthNameMatch = trimmed.match(\n    /^([a-z]+)\\s+(\\d{1,2})(?:\\s+(\\d{4}))?$/i,\n  )\n  if (monthNameMatch) {\n    const monthIndex = MONTH_NAME_TO_INDEX[monthNameMatch[1].toLowerCase()]\n    if (!monthIndex) {\n      return null\n    }\n\n    return {\n      year: Number(monthNameMatch[3] || currentDateParts.year),\n      month: monthIndex,\n      day: Number(monthNameMatch[2]),\n    }\n  }\n\n  return null\n}\n\nfunction resolveTrailingTimeZone(value: string) {\n  const tokens = value.trim().split(/\\s+/).filter(Boolean)\n  const maxParts = Math.min(4, tokens.length)\n\n  for (let length = maxParts; length >= 1; length--) {\n    const timeZoneText = tokens.slice(-length).join(' ')\n    const timeZone = resolveTimeZone(timeZoneText)\n\n    if (timeZone) {\n      return {\n        timeZone,\n        expression: tokens.slice(0, -length).join(' ').trim(),\n      }\n    }\n  }\n\n  return null\n}\n\nfunction parseTemporalBody(\n  value: string,\n  now: Date,\n  timeZone: string,\n): ParsedTemporalExpression | null {\n  const trimmed = value.trim()\n  if (!trimmed) {\n    return null\n  }\n\n  const timeOnly = parseClockParts(trimmed)\n  if (timeOnly) {\n    const dateParts = getCurrentDatePartsInTimeZone(now, timeZone)\n    return {\n      date: zonedDateToUtc(\n        {\n          ...dateParts,\n          hour: timeOnly.hour,\n          minute: timeOnly.minute,\n        },\n        timeZone,\n      ),\n      explicitDate: false,\n    }\n  }\n\n  const timeAtEndMatch = trimmed.match(\n    /^(.*\\S)\\s+(\\d{1,2}(?::\\d{2})?(?:\\s*(?:am|pm))?)$/i,\n  )\n  if (timeAtEndMatch) {\n    const dateParts = parseDateParts(timeAtEndMatch[1], now, timeZone)\n    const timeParts = parseClockParts(timeAtEndMatch[2])\n\n    if (dateParts && timeParts) {\n      return {\n        date: zonedDateToUtc(\n          {\n            ...dateParts,\n            hour: timeParts.hour,\n            minute: timeParts.minute,\n          },\n          timeZone,\n        ),\n        explicitDate: true,\n      }\n    }\n  }\n\n  const leadingTime = splitTemporalExpressionWithLeadingTime(trimmed)\n  if (leadingTime) {\n    const dateParts = parseDateParts(leadingTime.remainder, now, timeZone)\n\n    if (dateParts) {\n      return {\n        date: zonedDateToUtc(\n          {\n            ...dateParts,\n            hour: leadingTime.timeParts.hour,\n            minute: leadingTime.timeParts.minute,\n          },\n          timeZone,\n        ),\n        explicitDate: true,\n      }\n    }\n  }\n\n  const dateParts = parseDateParts(trimmed, now, timeZone)\n  if (dateParts) {\n    return {\n      date: zonedDateToUtc(\n        {\n          ...dateParts,\n          hour: 0,\n          minute: 0,\n        },\n        timeZone,\n      ),\n      explicitDate: true,\n    }\n  }\n\n  return null\n}\n\nfunction parseZonedTemporalExpression(value: string, now: Date) {\n  const resolved = resolveTrailingTimeZone(value)\n  if (!resolved) {\n    return null\n  }\n\n  return parseTemporalBody(resolved.expression, now, resolved.timeZone)\n}\n\nexport function parseExplicitLocalTemporalExpression(value: string, now: Date) {\n  const trimmed = value.trim()\n  const localTimeZone = getLocalTimeZone()\n\n  if (!trimmed) {\n    return null\n  }\n\n  const timeAtEndMatch = trimmed.match(\n    /^(.*\\S)\\s+(\\d{1,2}(?::\\d{2})?(?:\\s*(?:am|pm))?)$/i,\n  )\n  if (timeAtEndMatch) {\n    const dateParts = parseDateParts(timeAtEndMatch[1], now, localTimeZone)\n    const timeParts = parseClockParts(timeAtEndMatch[2])\n\n    if (dateParts && timeParts) {\n      return {\n        date: new Date(\n          dateParts.year,\n          dateParts.month - 1,\n          dateParts.day,\n          timeParts.hour,\n          timeParts.minute,\n        ),\n        explicitDate: true,\n      }\n    }\n  }\n\n  const leadingTime = splitTemporalExpressionWithLeadingTime(trimmed)\n  if (leadingTime) {\n    const dateParts = parseDateParts(leadingTime.remainder, now, localTimeZone)\n\n    if (dateParts) {\n      return {\n        date: new Date(\n          dateParts.year,\n          dateParts.month - 1,\n          dateParts.day,\n          leadingTime.timeParts.hour,\n          leadingTime.timeParts.minute,\n        ),\n        explicitDate: true,\n      }\n    }\n  }\n\n  const dateParts = parseDateParts(trimmed, now, localTimeZone)\n  if (!dateParts) {\n    return null\n  }\n\n  return {\n    date: new Date(dateParts.year, dateParts.month - 1, dateParts.day, 0, 0),\n    explicitDate: true,\n  }\n}\n\nfunction resolveCurrentTimeZoneExpression(line: string) {\n  const lowerLine = line.trim().toLowerCase()\n\n  if (\n    lowerLine === 'time'\n    || lowerLine === 'time()'\n    || lowerLine === 'now'\n    || lowerLine === 'now()'\n  ) {\n    return getLocalTimeZone()\n  }\n\n  if (lowerLine.endsWith(' time')) {\n    return resolveTimeZone(line.slice(0, -5))\n  }\n\n  if (lowerLine.endsWith(' now')) {\n    return resolveTimeZone(line.slice(0, -4))\n  }\n\n  if (lowerLine.startsWith('time in ')) {\n    return resolveTimeZone(line.slice(8))\n  }\n\n  if (lowerLine.startsWith('now in ')) {\n    return resolveTimeZone(line.slice(7))\n  }\n\n  return null\n}\n\nexport function evaluateTimeZoneDifferenceLine(\n  line: string,\n  now: Date,\n  options: TimeZoneDifferenceOptions,\n): SpecialLineResult | null {\n  const subtractionIndex = line.indexOf(' - ')\n  if (subtractionIndex <= 0) {\n    return null\n  }\n\n  const left = line.slice(0, subtractionIndex).trim()\n  const right = line.slice(subtractionIndex + 3).trim()\n\n  if (!left || !right) {\n    return null\n  }\n\n  const leftTimeZone = resolveCurrentTimeZoneExpression(left)\n  const rightTimeZone = resolveCurrentTimeZoneExpression(right)\n\n  if (!leftTimeZone || !rightTimeZone) {\n    return null\n  }\n\n  const diffHours\n    = (getTimeZoneOffsetMinutes(now, leftTimeZone)\n      - getTimeZoneOffsetMinutes(now, rightTimeZone))\n    / 60\n  const result = options.createHourUnit(diffHours)\n\n  return {\n    lineResult: options.formatResult(result),\n    rawResult: result,\n  }\n}\n\nexport function evaluateTimeZoneLine(\n  line: string,\n  now: Date,\n): SpecialLineResult | null {\n  const lowerLine = line.toLowerCase()\n  const localTimeZone = getLocalTimeZone()\n\n  if (\n    lowerLine === 'time'\n    || lowerLine === 'time()'\n    || lowerLine === 'now'\n    || lowerLine === 'now()'\n  ) {\n    return {\n      lineResult: {\n        value: formatTimeZoneDate(now, localTimeZone),\n        error: null,\n        type: 'date',\n      },\n      rawResult: now,\n    }\n  }\n\n  if (lowerLine.endsWith(' time')) {\n    const timeZone = resolveTimeZone(line.slice(0, -5))\n    if (!timeZone) {\n      return null\n    }\n\n    return {\n      lineResult: {\n        value: formatTimeZoneDate(now, timeZone),\n        error: null,\n        type: 'date',\n      },\n      rawResult: now,\n    }\n  }\n\n  if (lowerLine.endsWith(' now')) {\n    const timeZone = resolveTimeZone(line.slice(0, -4))\n    if (!timeZone) {\n      return null\n    }\n\n    return {\n      lineResult: {\n        value: formatTimeZoneDate(now, timeZone),\n        error: null,\n        type: 'date',\n      },\n      rawResult: now,\n    }\n  }\n\n  if (lowerLine.startsWith('time in ')) {\n    const timeZone = resolveTimeZone(line.slice(8))\n    if (!timeZone) {\n      return null\n    }\n\n    return {\n      lineResult: {\n        value: formatTimeZoneDate(now, timeZone),\n        error: null,\n        type: 'date',\n      },\n      rawResult: now,\n    }\n  }\n\n  if (lowerLine.startsWith('now in ')) {\n    const timeZone = resolveTimeZone(line.slice(7))\n    if (!timeZone) {\n      return null\n    }\n\n    return {\n      lineResult: {\n        value: formatTimeZoneDate(now, timeZone),\n        error: null,\n        type: 'date',\n      },\n      rawResult: now,\n    }\n  }\n\n  const conversionParts = splitByKeyword(line, [' in '])\n  if (!conversionParts) {\n    return null\n  }\n\n  const targetTimeZone = resolveTimeZone(conversionParts[1])\n  if (!targetTimeZone) {\n    return null\n  }\n\n  const parsedSourceExpression\n    = parseZonedTemporalExpression(conversionParts[0], now)\n      || parseTemporalBody(conversionParts[0], now, localTimeZone)\n  if (!parsedSourceExpression) {\n    return null\n  }\n\n  return {\n    lineResult: {\n      value: formatTimeZoneDate(\n        parsedSourceExpression.date,\n        targetTimeZone,\n        parsedSourceExpression.explicitDate,\n      ),\n      error: null,\n      type: 'date',\n    },\n    rawResult: parsedSourceExpression.date,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/math-notebook/math-engine/types.ts",
    "content": "export interface LineResult {\n  value: string | null\n  error: string | null\n  showError?: boolean\n  type:\n    | 'number'\n    | 'unit'\n    | 'date'\n    | 'pending'\n    | 'empty'\n    | 'comment'\n    | 'assignment'\n    | 'aggregate'\n}\n\nexport type CurrencyServiceState = 'loading' | 'ready' | 'unavailable'\n\nexport interface CssContext {\n  emPx: number\n  ppi: number\n}\n\nexport interface SpecialLineResult {\n  lineResult: LineResult\n  rawResult: any\n}\n"
  },
  {
    "path": "src/renderer/composables/math-notebook/useMathEngine.ts",
    "content": "import type {\n  CssContext,\n  CurrencyServiceState,\n  LineResult,\n  SpecialLineResult,\n} from './math-engine/types'\nimport {\n  DEFAULT_EM_IN_PX,\n  DEFAULT_PPI,\n  HUMANIZED_UNIT_NAMES,\n} from './math-engine/constants'\nimport { evaluateCssLine } from './math-engine/css'\nimport { createMathInstance } from './math-engine/mathInstance'\nimport {\n  hasCurrencyExpression,\n  preprocessMathExpression,\n} from './math-engine/preprocess'\nimport {\n  evaluateTimeZoneDifferenceLine,\n  evaluateTimeZoneLine,\n  parseExplicitLocalTemporalExpression,\n} from './math-engine/timeZones'\n\nexport type { LineResult } from './math-engine/types'\n\ninterface FormatDirective {\n  format: 'hex' | 'bin' | 'oct' | 'sci' | null\n  expression: string\n}\n\nlet activeCurrencyRates: Record<string, number> = {}\nlet currencyServiceState: CurrencyServiceState = 'loading'\nlet currencyUnavailableMessage = ''\nlet math = createMathInstance(activeCurrencyRates)\n\nfunction detectFormatDirective(line: string): FormatDirective {\n  const formatMap: Record<string, 'hex' | 'bin' | 'oct' | 'sci'> = {\n    'in hex': 'hex',\n    'in bin': 'bin',\n    'in oct': 'oct',\n    'in sci': 'sci',\n    'in scientific': 'sci',\n  }\n  const lower = line.toLowerCase()\n\n  for (const [suffix, format] of Object.entries(formatMap)) {\n    if (lower.endsWith(suffix)) {\n      return {\n        format,\n        expression: line.slice(0, line.length - suffix.length).trim(),\n      }\n    }\n  }\n\n  return { format: null, expression: line }\n}\n\nfunction applyFormat(\n  result: any,\n  format: NonNullable<FormatDirective['format']>,\n): LineResult {\n  const num\n    = typeof result === 'number'\n      ? result\n      : result\n        && typeof result === 'object'\n        && typeof result.toNumber === 'function'\n        ? result.toNumber()\n        : Number(result)\n\n  if (Number.isNaN(num)) {\n    return { value: String(result), error: null, type: 'number' }\n  }\n\n  const intValue = Math.round(num)\n\n  switch (format) {\n    case 'hex':\n      return {\n        value: `0x${intValue.toString(16).toUpperCase()}`,\n        error: null,\n        type: 'number',\n      }\n    case 'bin':\n      return {\n        value: `0b${intValue.toString(2)}`,\n        error: null,\n        type: 'number',\n      }\n    case 'oct':\n      return {\n        value: `0o${intValue.toString(8)}`,\n        error: null,\n        type: 'number',\n      }\n    case 'sci':\n      return { value: num.toExponential(), error: null, type: 'number' }\n  }\n}\n\nfunction humanizeFormattedUnits(value: string) {\n  return value.replace(\n    /(-?\\d[\\d,]*(?:\\.\\d+)?)\\s+([a-z][a-z0-9]*)\\b/gi,\n    (match, amountText: string, unitId: string) => {\n      const displayUnit = HUMANIZED_UNIT_NAMES[unitId]\n      if (!displayUnit) {\n        return match\n      }\n\n      const numericAmount = Number.parseFloat(amountText.replace(/,/g, ''))\n      const unitLabel\n        = Math.abs(numericAmount) === 1\n          ? displayUnit.singular\n          : displayUnit.plural\n\n      return `${amountText} ${unitLabel}`\n    },\n  )\n}\n\nfunction formatResult(result: any): LineResult {\n  if (result === undefined || result === null) {\n    return { value: null, error: null, type: 'empty' }\n  }\n\n  if (result instanceof Date) {\n    return {\n      value: result.toLocaleString(),\n      error: null,\n      type: 'date',\n    }\n  }\n\n  if (\n    result\n    && typeof result === 'object'\n    && typeof result.toNumber === 'function'\n    && result.units\n  ) {\n    return {\n      value: humanizeFormattedUnits(math.format(result, { precision: 6 })),\n      error: null,\n      type: 'unit',\n    }\n  }\n\n  if (typeof result === 'number') {\n    const formatted = Number.isInteger(result)\n      ? result.toLocaleString('en-US')\n      : result.toLocaleString('en-US', { maximumFractionDigits: 6 })\n\n    return { value: formatted, error: null, type: 'number' }\n  }\n\n  if (typeof result === 'string') {\n    return { value: result, error: null, type: 'number' }\n  }\n\n  if (result && typeof result.toString === 'function') {\n    return {\n      value: humanizeFormattedUnits(math.format(result, { precision: 6 })),\n      error: null,\n      type: 'number',\n    }\n  }\n\n  return { value: String(result), error: null, type: 'number' }\n}\n\nfunction getNumericValue(result: any): number | null {\n  if (typeof result === 'number')\n    return result\n\n  if (\n    result\n    && typeof result === 'object'\n    && typeof result.toNumber === 'function'\n  ) {\n    try {\n      return result.toNumber()\n    }\n    catch {\n      return null\n    }\n  }\n\n  return null\n}\n\nfunction splitTopLevelAddSub(expression: string) {\n  const terms: string[] = []\n  const operators: Array<'+' | '-'> = []\n  let depth = 0\n  let segmentStart = 0\n\n  for (let index = 0; index < expression.length; index++) {\n    const char = expression[index]\n\n    if (char === '(') {\n      depth += 1\n      continue\n    }\n\n    if (char === ')') {\n      depth = Math.max(0, depth - 1)\n      continue\n    }\n\n    if (depth !== 0 || (char !== '+' && char !== '-')) {\n      continue\n    }\n\n    let prevIndex = index - 1\n    while (prevIndex >= 0 && /\\s/.test(expression[prevIndex])) {\n      prevIndex -= 1\n    }\n\n    let nextIndex = index + 1\n    while (nextIndex < expression.length && /\\s/.test(expression[nextIndex])) {\n      nextIndex += 1\n    }\n\n    if (prevIndex < 0 || nextIndex >= expression.length) {\n      continue\n    }\n\n    if ('+-*/%^,('.includes(expression[prevIndex])) {\n      continue\n    }\n\n    terms.push(expression.slice(segmentStart, index).trim())\n    operators.push(char)\n    segmentStart = index + 1\n  }\n\n  if (operators.length === 0) {\n    return null\n  }\n\n  terms.push(expression.slice(segmentStart).trim())\n\n  if (terms.some(term => !term)) {\n    return null\n  }\n\n  return { terms, operators }\n}\n\nfunction evaluateDateLikeExpression(\n  expression: string,\n  now: Date,\n  scope: Record<string, any>,\n) {\n  const timeZoneResult = evaluateTimeZoneLine(expression, now)\n  if (timeZoneResult?.rawResult instanceof Date) {\n    return timeZoneResult.rawResult\n  }\n\n  const localTemporalResult = parseExplicitLocalTemporalExpression(\n    expression,\n    now,\n  )\n  if (localTemporalResult) {\n    return localTemporalResult.date\n  }\n\n  try {\n    const result = math.evaluate(expression, scope)\n    return result instanceof Date ? result : null\n  }\n  catch {\n    return null\n  }\n}\n\nfunction evaluateDurationMilliseconds(\n  expression: string,\n  scope: Record<string, any>,\n) {\n  try {\n    const result = math.evaluate(expression, scope)\n    if (\n      result\n      && typeof result === 'object'\n      && typeof result.toNumber === 'function'\n    ) {\n      const milliseconds = result.toNumber('ms')\n      return Number.isFinite(milliseconds) ? milliseconds : null\n    }\n  }\n  catch {\n    return null\n  }\n\n  return null\n}\n\nfunction evaluateDateArithmeticLine(\n  line: string,\n  now: Date,\n  scope: Record<string, any>,\n): SpecialLineResult | null {\n  const split = splitTopLevelAddSub(line)\n  if (!split) {\n    return null\n  }\n\n  const initialDate = evaluateDateLikeExpression(split.terms[0], now, scope)\n  const initialDuration = initialDate\n    ? null\n    : evaluateDurationMilliseconds(split.terms[0], scope)\n\n  if (!initialDate && initialDuration === null) {\n    return null\n  }\n\n  let currentDate = initialDate ? new Date(initialDate.getTime()) : null\n  let currentDuration = initialDuration\n\n  for (let index = 0; index < split.operators.length; index++) {\n    const operator = split.operators[index]\n    const term = split.terms[index + 1]\n    const nextDate = evaluateDateLikeExpression(term, now, scope)\n    const nextDuration = nextDate\n      ? null\n      : evaluateDurationMilliseconds(term, scope)\n\n    if (currentDate) {\n      if (nextDuration === null) {\n        return null\n      }\n\n      currentDate = new Date(\n        currentDate.getTime()\n        + (operator === '+' ? nextDuration : -nextDuration),\n      )\n      continue\n    }\n\n    if (nextDate) {\n      if (operator !== '+' || currentDuration === null) {\n        return null\n      }\n\n      currentDate = new Date(nextDate.getTime() + currentDuration)\n      currentDuration = null\n      continue\n    }\n\n    if (currentDuration === null || nextDuration === null) {\n      return null\n    }\n\n    currentDuration\n      = operator === '+'\n        ? currentDuration + nextDuration\n        : currentDuration - nextDuration\n  }\n\n  if (!currentDate) {\n    return null\n  }\n\n  return {\n    lineResult: formatResult(currentDate),\n    rawResult: currentDate,\n  }\n}\n\nfunction evaluateDateAssignmentLine(\n  line: string,\n  now: Date,\n  scope: Record<string, any>,\n): SpecialLineResult | null {\n  const assignmentIndex = line.indexOf('=')\n  if (assignmentIndex <= 0) {\n    return null\n  }\n\n  const variableName = line.slice(0, assignmentIndex).trim()\n  if (!/^[a-z_]\\w*$/i.test(variableName)) {\n    return null\n  }\n\n  const expression = line.slice(assignmentIndex + 1).trim()\n  if (!expression) {\n    return null\n  }\n\n  const dateValue = evaluateDateLikeExpression(expression, now, scope)\n\n  if (!dateValue) {\n    return null\n  }\n\n  scope[variableName] = dateValue\n\n  return {\n    lineResult: {\n      ...formatResult(dateValue),\n      type: 'assignment',\n    },\n    rawResult: dateValue,\n  }\n}\n\nexport function useMathEngine() {\n  function evaluateDocument(text: string): LineResult[] {\n    const lines = text.split('\\n')\n    const results: LineResult[] = []\n    const scope: Record<string, any> = {\n      em: DEFAULT_EM_IN_PX,\n      ppi: DEFAULT_PPI,\n    }\n    const cssContext: CssContext = {\n      emPx: DEFAULT_EM_IN_PX,\n      ppi: DEFAULT_PPI,\n    }\n    const currentDate = new Date()\n\n    let prevResult: any\n    let numericBlock: number[] = []\n\n    for (const line of lines) {\n      const trimmed = line.trim()\n\n      if (!trimmed) {\n        results.push({ value: null, error: null, type: 'empty' })\n        prevResult = undefined\n        numericBlock = []\n        continue\n      }\n\n      if (trimmed.startsWith('//') || trimmed.startsWith('#')) {\n        results.push({ value: null, error: null, type: 'comment' })\n        continue\n      }\n\n      if (prevResult !== undefined) {\n        scope.prev = prevResult\n      }\n\n      const lowerTrimmed = trimmed.toLowerCase()\n      if (lowerTrimmed === 'sum' || lowerTrimmed === 'total') {\n        const total = numericBlock.reduce((sum, value) => sum + value, 0)\n        const formatted = formatResult(total)\n        formatted.type = 'aggregate'\n        results.push(formatted)\n        prevResult = total\n        numericBlock.push(total)\n        continue\n      }\n\n      if (lowerTrimmed === 'average' || lowerTrimmed === 'avg') {\n        const total = numericBlock.reduce((sum, value) => sum + value, 0)\n        const average\n          = numericBlock.length > 0 ? total / numericBlock.length : 0\n        const formatted = formatResult(average)\n        formatted.type = 'aggregate'\n        results.push(formatted)\n        prevResult = average\n        numericBlock.push(average)\n        continue\n      }\n\n      try {\n        if (\n          currencyServiceState !== 'ready'\n          && hasCurrencyExpression(trimmed)\n        ) {\n          results.push(\n            currencyServiceState === 'loading'\n              ? { value: null, error: null, type: 'pending' }\n              : {\n                  value: null,\n                  error: currencyUnavailableMessage,\n                  showError: true,\n                  type: 'empty',\n                },\n          )\n          prevResult = undefined\n          continue\n        }\n\n        const timeZoneDifferenceResult = evaluateTimeZoneDifferenceLine(\n          trimmed,\n          currentDate,\n          {\n            createHourUnit: hours => math.unit(hours, 'hour'),\n            formatResult,\n          },\n        )\n        if (timeZoneDifferenceResult) {\n          results.push(timeZoneDifferenceResult.lineResult)\n          prevResult = timeZoneDifferenceResult.rawResult\n          const numericValue = getNumericValue(\n            timeZoneDifferenceResult.rawResult,\n          )\n          if (numericValue !== null) {\n            numericBlock.push(numericValue)\n          }\n          continue\n        }\n\n        const timeZoneResult = evaluateTimeZoneLine(trimmed, currentDate)\n        if (timeZoneResult) {\n          results.push(timeZoneResult.lineResult)\n          prevResult = timeZoneResult.rawResult\n          continue\n        }\n\n        const cssResult = evaluateCssLine(trimmed, cssContext)\n        if (cssResult) {\n          scope.em = cssContext.emPx\n          scope.ppi = cssContext.ppi\n          results.push(cssResult.lineResult)\n          prevResult = cssResult.rawResult\n          if (typeof cssResult.rawResult === 'number') {\n            numericBlock.push(cssResult.rawResult)\n          }\n          continue\n        }\n\n        const processed = preprocessMathExpression(trimmed)\n\n        const dateAssignmentResult = evaluateDateAssignmentLine(\n          processed,\n          currentDate,\n          scope,\n        )\n        if (dateAssignmentResult) {\n          results.push(dateAssignmentResult.lineResult)\n          prevResult = dateAssignmentResult.rawResult\n          continue\n        }\n\n        const dateArithmeticResult = evaluateDateArithmeticLine(\n          processed,\n          currentDate,\n          scope,\n        )\n        if (dateArithmeticResult) {\n          results.push(dateArithmeticResult.lineResult)\n          prevResult = dateArithmeticResult.rawResult\n          continue\n        }\n\n        const localTemporalResult = parseExplicitLocalTemporalExpression(\n          processed,\n          currentDate,\n        )\n        if (localTemporalResult) {\n          results.push(formatResult(localTemporalResult.date))\n          prevResult = localTemporalResult.date\n          continue\n        }\n\n        const { format, expression } = detectFormatDirective(processed)\n        const toEvaluate = format ? expression : processed\n        const result = math.evaluate(toEvaluate, scope)\n\n        if (result === undefined) {\n          results.push({ value: null, error: null, type: 'empty' })\n          prevResult = undefined\n          continue\n        }\n\n        if (format) {\n          const formatted = applyFormat(result, format)\n          results.push(formatted)\n          prevResult = result\n          const numericValue = getNumericValue(result)\n          if (numericValue !== null) {\n            numericBlock.push(numericValue)\n          }\n          continue\n        }\n\n        const formatted = formatResult(result)\n        if (\n          /^[a-z_]\\w*\\s*=/i.test(trimmed)\n          && !/^[a-z_]\\w*\\s*==/i.test(trimmed)\n        ) {\n          formatted.type = 'assignment'\n        }\n\n        results.push(formatted)\n        prevResult = result\n        const numericValue = getNumericValue(result)\n        if (numericValue !== null) {\n          numericBlock.push(numericValue)\n        }\n      }\n      catch (error: any) {\n        results.push({\n          value: null,\n          error: error.message || 'Error',\n          type: 'empty',\n        })\n        prevResult = undefined\n      }\n    }\n\n    return results\n  }\n\n  function updateCurrencyRates(rates: Record<string, number>) {\n    currencyServiceState = 'ready'\n    currencyUnavailableMessage = ''\n    activeCurrencyRates = {\n      ...rates,\n    }\n    math = createMathInstance(activeCurrencyRates)\n  }\n\n  function setCurrencyServiceState(\n    state: CurrencyServiceState,\n    errorMessage = '',\n  ) {\n    currencyServiceState = state\n    currencyUnavailableMessage = state === 'unavailable' ? errorMessage : ''\n\n    if (state !== 'ready') {\n      activeCurrencyRates = {}\n      math = createMathInstance(activeCurrencyRates)\n    }\n  }\n\n  return {\n    evaluateDocument,\n    setCurrencyServiceState,\n    updateCurrencyRates,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/math-notebook/useMathNotebook.ts",
    "content": "import type { MathSheet } from '~/main/store/types'\nimport { markPersistedStorageMutation } from '@/composables/useStorageMutation'\nimport { i18n, ipc } from '@/electron'\nimport { useDebounceFn } from '@vueuse/core'\nimport { nanoid } from 'nanoid'\n\nfunction escapeRegExp(value: string): string {\n  return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n\nfunction getNextIndexedName(baseName: string, existingNames: string[]): string {\n  const normalizedBase = baseName.trim()\n  const indexedNameRe = new RegExp(\n    `^${escapeRegExp(normalizedBase)}(?:\\\\s+(\\\\d+))?$`,\n    'i',\n  )\n\n  let maxIndex = 0\n\n  existingNames.forEach((name) => {\n    const match = name.trim().match(indexedNameRe)\n    if (!match) {\n      return\n    }\n\n    const index = match[1] ? Number(match[1]) : 0\n    if (Number.isFinite(index)) {\n      maxIndex = Math.max(maxIndex, index)\n    }\n  })\n\n  return `${normalizedBase} ${maxIndex + 1}`\n}\n\nconst sheets = ref<MathSheet[]>([])\nconst activeSheetId = ref<string | null>(null)\nlet initialized = false\n\nconst activeSheet = computed(() => {\n  return sheets.value.find(s => s.id === activeSheetId.value)\n})\n\nfunction persist() {\n  markPersistedStorageMutation()\n  ipc.invoke('spaces:math:write', {\n    sheets: JSON.parse(JSON.stringify(sheets.value)),\n    activeSheetId: activeSheetId.value,\n  })\n}\n\nconst debouncedPersist = useDebounceFn(persist, 500)\n\nasync function loadFromDisk() {\n  const data = await ipc.invoke('spaces:math:read', null)\n  sheets.value = Array.isArray(data?.sheets) ? data.sheets : []\n  activeSheetId.value = data?.activeSheetId ?? null\n}\n\nexport function useMathNotebook() {\n  async function init() {\n    if (initialized) {\n      return\n    }\n    initialized = true\n    await loadFromDisk()\n  }\n\n  async function reloadFromDisk() {\n    await loadFromDisk()\n  }\n\n  function createSheet() {\n    const nextSheetName = getNextIndexedName(\n      i18n.t('mathNotebook.untitled'),\n      sheets.value.map(sheet => sheet.name),\n    )\n    const sheet: MathSheet = {\n      id: nanoid(),\n      name: nextSheetName,\n      content: '',\n      createdAt: Date.now(),\n      updatedAt: Date.now(),\n    }\n    sheets.value = [...sheets.value, sheet]\n    activeSheetId.value = sheet.id\n    persist()\n\n    return sheet.id\n  }\n\n  function deleteSheet(id: string) {\n    const index = sheets.value.findIndex(s => s.id === id)\n    if (index === -1)\n      return\n\n    const next = [...sheets.value]\n    next.splice(index, 1)\n    sheets.value = next\n\n    if (activeSheetId.value === id) {\n      activeSheetId.value\n        = next.length > 0 ? next[Math.min(index, next.length - 1)].id : null\n    }\n    persist()\n  }\n\n  function updateSheet(id: string, content: string) {\n    const sheet = sheets.value.find(s => s.id === id)\n    if (sheet) {\n      sheet.content = content\n      sheet.updatedAt = Date.now()\n      debouncedPersist()\n    }\n  }\n\n  function selectSheet(id: string) {\n    activeSheetId.value = id\n    persist()\n  }\n\n  function renameSheet(id: string, name: string) {\n    const sheet = sheets.value.find(s => s.id === id)\n    if (sheet) {\n      sheet.name = name\n      sheet.updatedAt = Date.now()\n      persist()\n    }\n  }\n\n  return {\n    sheets,\n    activeSheetId,\n    activeSheet,\n    init,\n    reloadFromDisk,\n    createSheet,\n    deleteSheet,\n    updateSheet,\n    selectSheet,\n    renameSheet,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/types/index.ts",
    "content": "export const LibraryFilter = {\n  All: 'all',\n  Favorites: 'favorites',\n  Inbox: 'inbox',\n  Trash: 'trash',\n} as const\n\nexport const LibraryTab = {\n  Library: 'library',\n  Tags: 'tags',\n} as const\n\nexport type StateAction = 'beforeSearch'\n\nexport interface SavedState {\n  snippetId?: number\n  snippetContentIndex?: number\n  folderId?: number\n  tagId?: number\n  libraryFilter?: (typeof LibraryFilter)[keyof typeof LibraryFilter]\n  isSidebarHidden?: boolean\n}\n"
  },
  {
    "path": "src/renderer/composables/useApp.ts",
    "content": "import type { SavedState, StateAction } from './types'\nimport { store } from '@/electron'\n\nconst isSponsored = import.meta.env.VITE_SPONSORED === 'true'\n\nconst stateSnapshots = reactive<Record<StateAction, SavedState>>({\n  beforeSearch: {},\n})\n\nconst state = reactive<SavedState>(store.app.get('state') as SavedState)\nconst storedSidebarHidden = store.app.get('state.isSidebarHidden') as\n  | boolean\n  | undefined\nconst isSidebarHidden = ref(\n  storedSidebarHidden ?? state.isSidebarHidden ?? false,\n)\n\nif (state.isSidebarHidden === undefined)\n  state.isSidebarHidden = isSidebarHidden.value\n\nconst highlightedFolderIds = ref<Set<number>>(new Set())\nconst highlightedSnippetIds = ref<Set<number>>(new Set())\nconst highlightedTagId = ref<number>()\nconst focusedFolderId = ref<number | undefined>()\nconst focusedSnippetId = ref<number | undefined>()\n\nconst isAppLoading = ref(true)\nconst isCodeSpaceInitialized = ref(false)\nconst isFocusedSnippetName = ref(false)\nconst isFocusedSearch = ref(false)\nconst isShowMarkdown = ref(false)\nconst isShowMarkdownPresentation = ref(false)\nconst isShowMindmap = ref(false)\nconst isShowCodePreview = ref(false)\nconst isShowCodeImage = ref(false)\nconst isShowJsonVisualizer = ref(false)\n\nfunction saveStateSnapshot(action: StateAction): void {\n  stateSnapshots[action] = {\n    snippetId: state.snippetId,\n    folderId: state.folderId,\n    tagId: state.tagId,\n    snippetContentIndex: state.snippetContentIndex,\n    libraryFilter: state.libraryFilter,\n    isSidebarHidden: isSidebarHidden.value,\n  }\n}\n\nfunction restoreStateSnapshot(action: StateAction): void {\n  const snapshot = stateSnapshots[action]\n\n  if (!snapshot)\n    return\n\n  if (snapshot.snippetId !== undefined)\n    state.snippetId = snapshot.snippetId\n  if (snapshot.folderId !== undefined)\n    state.folderId = snapshot.folderId\n  if (snapshot.tagId !== undefined)\n    state.tagId = snapshot.tagId\n  if (snapshot.snippetContentIndex !== undefined)\n    state.snippetContentIndex = snapshot.snippetContentIndex\n  if (snapshot.isSidebarHidden !== undefined)\n    isSidebarHidden.value = snapshot.isSidebarHidden\n}\n\nwatch(\n  state,\n  () => {\n    store.app.set('state', JSON.parse(JSON.stringify(state)))\n  },\n  { deep: true },\n)\n\nwatch(isSidebarHidden, (value) => {\n  state.isSidebarHidden = value\n})\n\nexport function useApp() {\n  return {\n    focusedFolderId,\n    focusedSnippetId,\n    isAppLoading,\n    isCodeSpaceInitialized,\n    highlightedFolderIds,\n    highlightedSnippetIds,\n    highlightedTagId,\n    isFocusedSnippetName,\n    isFocusedSearch,\n    isShowCodeImage,\n    isShowCodePreview,\n    isShowMarkdown,\n    isShowMarkdownPresentation,\n    isShowMindmap,\n    isShowJsonVisualizer,\n    isSidebarHidden,\n    isSponsored,\n    restoreStateSnapshot,\n    saveStateSnapshot,\n    state,\n    stateSnapshots,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/useCopyToClipboard.ts",
    "content": "import { useSonner } from '@/composables'\nimport { i18n } from '@/electron'\nimport { useClipboard } from '@vueuse/core'\n\nexport function useCopyToClipboard() {\n  const { copy: clipboard } = useClipboard()\n  const { sonner } = useSonner()\n\n  function copy(value: string) {\n    clipboard(value)\n    sonner({ message: i18n.t('messages:success.copied'), type: 'success' })\n  }\n\n  return copy\n}\n"
  },
  {
    "path": "src/renderer/composables/useDialog.ts",
    "content": "import { Button } from '@/components/ui/shadcn/button'\nimport * as Dialog from '@/components/ui/shadcn/dialog'\nimport { i18n } from '@/electron'\nimport { useEventListener } from '@vueuse/core'\nimport {\n  createVNode,\n  defineComponent,\n  h,\n  onBeforeUnmount,\n  ref,\n  render,\n} from 'vue'\n\nexport interface DialogOptions {\n  title?: string\n  description?: string\n  confirmText?: string\n  cancelText?: string\n  content?: string | Component\n}\n\nexport function useDialog() {\n  const createDialogContainer = () => {\n    const container = document.createElement('div')\n    document.body.appendChild(container)\n    return container\n  }\n\n  const showDialog = (options: DialogOptions = {}) => {\n    const { title, description, confirmText, cancelText, content } = options\n\n    const container = createDialogContainer()\n\n    let isDialogActive = true\n\n    const cleanup = () => {\n      isDialogActive = false\n\n      if (container && container.parentNode) {\n        render(null, container)\n        container.parentNode.removeChild(container)\n      }\n    }\n\n    return new Promise<boolean>((resolve) => {\n      const DialogComponent = defineComponent({\n        setup() {\n          const isOpen = ref(true)\n\n          const onConfirm = () => {\n            if (!isDialogActive)\n              return\n\n            resolve(true)\n            isOpen.value = false\n            cleanup()\n          }\n\n          const onCancel = () => {\n            if (!isDialogActive)\n              return\n\n            resolve(false)\n            isOpen.value = false\n            cleanup()\n          }\n\n          const handleKeyDown = (event: KeyboardEvent) => {\n            if (event.key === 'Enter' && isOpen.value && isDialogActive) {\n              event.preventDefault()\n              onConfirm()\n            }\n          }\n\n          useEventListener(document, 'keydown', handleKeyDown)\n\n          onBeforeUnmount(() => {\n            isDialogActive = false\n          })\n\n          return () =>\n            h(\n              Dialog.Dialog,\n              {\n                'defaultOpen': isOpen.value,\n                'open': isOpen.value,\n                'onUpdate:open': (open: boolean) => {\n                  isOpen.value = open\n                  // Если диалог закрывается через UI, вызываем onCancel\n                  if (!open && isDialogActive) {\n                    onCancel()\n                  }\n                },\n              },\n              {\n                default: () => [\n                  h(\n                    Dialog.DialogContent,\n                    { class: 'sm:max-w-[425px]' },\n                    {\n                      default: () => [\n                        h(\n                          Dialog.DialogHeader,\n                          {},\n                          {\n                            default: () => [\n                              h(\n                                Dialog.DialogTitle,\n                                {},\n                                { default: () => title },\n                              ),\n                              description\n                                ? h(\n                                    Dialog.DialogDescription,\n                                    {},\n                                    { default: () => description },\n                                  )\n                                : null,\n                            ],\n                          },\n                        ),\n                        content && typeof content === 'string'\n                          ? h('div', { class: '' }, { default: () => content })\n                          : content && typeof content === 'object'\n                            ? h(content)\n                            : null,\n                        confirmText && cancelText\n                          ? h(\n                              Dialog.DialogFooter,\n                              {},\n                              {\n                                default: () => [\n                                  h(\n                                    Button,\n                                    {\n                                      variant: 'outline',\n                                      onClick: onCancel,\n                                    },\n                                    { default: () => cancelText },\n                                  ),\n                                  h(\n                                    Button,\n                                    {\n                                      onClick: onConfirm,\n                                    },\n                                    { default: () => confirmText },\n                                  ),\n                                ],\n                              },\n                            )\n                          : null,\n                      ],\n                    },\n                  ),\n                ],\n              },\n            )\n        },\n      })\n\n      render(createVNode(DialogComponent), container)\n    })\n  }\n\n  const confirm = (options: DialogOptions) => {\n    const defaultOptions = {\n      title: 'Confirm',\n      confirmText: i18n.t('button.confirm'),\n      cancelText: i18n.t('button.cancel'),\n    }\n\n    return showDialog({ ...defaultOptions, ...options })\n  }\n\n  return {\n    showDialog,\n    confirm,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/useEditor.ts",
    "content": "import { store } from '@/electron'\n\nconst cursorPosition = reactive({\n  row: 0,\n  column: 0,\n})\n\nconst settings = reactive(store.preferences.get('editor'))\n\nwatch(\n  settings,\n  () => {\n    store.preferences.set('editor', JSON.parse(JSON.stringify(settings)))\n  },\n  { deep: true },\n)\n\nexport function useEditor() {\n  return {\n    cursorPosition,\n    settings,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/useFolders.ts",
    "content": "import type {\n  FoldersTreeResponse,\n  FoldersUpdate,\n} from '@/services/api/generated'\nimport { useApp, useSnippets } from '@/composables'\nimport { markPersistedStorageMutation } from '@/composables/useStorageMutation'\nimport { i18n } from '@/electron'\nimport { api } from '@/services/api'\nimport { getContiguousSelection, scrollToElement } from '../utils'\n\nconst { state } = useApp()\n\nconst folders = shallowRef<FoldersTreeResponse>()\n\nconst renameFolderId = ref<number | null>(null)\n\nconst selectedFolderIds = ref<number[]>(state.folderId ? [state.folderId] : [])\nconst lastSelectedFolderId = ref<number | undefined>(state.folderId)\n\nfunction escapeRegExp(value: string): string {\n  return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n\nfunction getNextIndexedName(baseName: string, existingNames: string[]): string {\n  const normalizedBase = baseName.trim()\n  const indexedNameRe = new RegExp(\n    `^${escapeRegExp(normalizedBase)}(?:\\\\s+(\\\\d+))?$`,\n    'i',\n  )\n\n  let maxIndex = 0\n\n  existingNames.forEach((name) => {\n    const match = name.trim().match(indexedNameRe)\n    if (!match) {\n      return\n    }\n\n    const index = match[1] ? Number(match[1]) : 0\n    if (Number.isFinite(index)) {\n      maxIndex = Math.max(maxIndex, index)\n    }\n  })\n\n  return `${normalizedBase} ${maxIndex + 1}`\n}\n\nfunction getNextUntitledFolderName(parentId?: number): string {\n  const normalizedParentId = parentId ?? null\n  const siblingNames = flattenFolderTree(folders.value)\n    .filter(folder => (folder.parentId ?? null) === normalizedParentId)\n    .map(folder => folder.name)\n\n  return getNextIndexedName(i18n.t('folder.untitled'), siblingNames)\n}\n\nfunction flattenFolderTree(\n  nodes?: FoldersTreeResponse,\n  acc: FoldersTreeResponse[0][] = [],\n) {\n  if (!nodes) {\n    return acc\n  }\n\n  nodes.forEach((folder) => {\n    acc.push(folder)\n\n    if (folder.children?.length) {\n      flattenFolderTree(folder.children, acc)\n    }\n  })\n\n  return acc\n}\n\nconst flatFolderList = computed(() => flattenFolderTree(folders.value))\n\nconst folderOrderMap = computed(() => {\n  const map = new Map<number, number>()\n\n  flatFolderList.value.forEach((folder, index) => {\n    map.set(folder.id, index)\n  })\n\n  return map\n})\n\nfunction sortFolderIdsByTreeOrder(ids: number[]) {\n  const seen = new Set<number>()\n\n  return ids\n    .filter((id) => {\n      if (seen.has(id)) {\n        return false\n      }\n      seen.add(id)\n      return folderOrderMap.value.has(id)\n    })\n    .sort((a, b) => {\n      const orderA = folderOrderMap.value.get(a) ?? Number.MAX_SAFE_INTEGER\n      const orderB = folderOrderMap.value.get(b) ?? Number.MAX_SAFE_INTEGER\n\n      return orderA - orderB\n    })\n}\n\nfunction syncSelectedFoldersWithTree() {\n  // Если выбрана системная папка (Inbox, Favorites, All, Trash),\n  // selectedFolderIds пуст — не нужно назначать fallback\n  if (state.libraryFilter) {\n    return\n  }\n\n  const orderedIds = flatFolderList.value.map(folder => folder.id)\n\n  if (!orderedIds.length) {\n    clearFolderSelection()\n    return\n  }\n\n  const filteredSelection = selectedFolderIds.value.filter(id =>\n    folderOrderMap.value.has(id),\n  )\n\n  if (!filteredSelection.length) {\n    const fallbackId\n      = state.folderId && folderOrderMap.value.has(state.folderId)\n        ? state.folderId\n        : orderedIds[0]\n\n    if (fallbackId) {\n      setFolderSelection([fallbackId])\n    }\n    else {\n      clearFolderSelection()\n    }\n\n    return\n  }\n\n  setFolderSelection(filteredSelection)\n}\n\nwatch(\n  () => state.folderId,\n  (folderId) => {\n    if (folderId === undefined) {\n      selectedFolderIds.value = []\n      lastSelectedFolderId.value = undefined\n      return\n    }\n\n    if (!selectedFolderIds.value.includes(folderId)) {\n      selectedFolderIds.value = sortFolderIdsByTreeOrder([\n        folderId,\n        ...selectedFolderIds.value,\n      ])\n    }\n  },\n)\n\nfunction clearFolderSelection() {\n  selectedFolderIds.value = []\n  state.folderId = undefined\n  state.snippetId = undefined\n  lastSelectedFolderId.value = undefined\n}\n\nfunction setFolderSelection(ids: number[]) {\n  if (!ids.length) {\n    clearFolderSelection()\n    return\n  }\n\n  const orderedSelection = sortFolderIdsByTreeOrder(ids)\n  selectedFolderIds.value = orderedSelection\n  state.folderId = orderedSelection[0]\n  lastSelectedFolderId.value = orderedSelection[orderedSelection.length - 1]\n}\n\nfunction applySingleFolderSelection(folderId: number) {\n  selectedFolderIds.value = [folderId]\n  state.folderId = folderId\n  lastSelectedFolderId.value = folderId\n}\n\nfunction applyRangeFolderSelection(folderId: number) {\n  const orderedIds = flatFolderList.value.map(folder => folder.id)\n\n  if (!orderedIds.length) {\n    applySingleFolderSelection(folderId)\n    return\n  }\n\n  const anchorId = state.folderId ?? selectedFolderIds.value[0] ?? folderId\n  const rangeSelection = getContiguousSelection(orderedIds, anchorId, folderId)\n\n  if (!rangeSelection.length) {\n    applySingleFolderSelection(folderId)\n    return\n  }\n\n  selectedFolderIds.value = rangeSelection\n  lastSelectedFolderId.value = folderId\n}\n\nfunction applyToggleFolderSelection(folderId: number) {\n  if (selectedFolderIds.value.includes(folderId)) {\n    if (selectedFolderIds.value.length === 1) {\n      return\n    }\n\n    selectedFolderIds.value = selectedFolderIds.value.filter(\n      id => id !== folderId,\n    )\n    state.folderId = selectedFolderIds.value[0]\n    lastSelectedFolderId.value\n      = selectedFolderIds.value[selectedFolderIds.value.length - 1]\n    return\n  }\n\n  selectedFolderIds.value = sortFolderIdsByTreeOrder([\n    ...selectedFolderIds.value,\n    folderId,\n  ])\n  state.folderId = folderId\n  lastSelectedFolderId.value = folderId\n}\n\nfunction findParentFolderIds(folderId: number, allFolders: any[]): number[] {\n  const parentIds: number[] = []\n\n  function findParents(currentFolderId: number) {\n    const folder = allFolders.find(f => f.id === currentFolderId)\n    if (folder && folder.parentId) {\n      parentIds.push(folder.parentId)\n      findParents(folder.parentId)\n    }\n  }\n\n  findParents(folderId)\n  return parentIds\n}\n\nasync function ensureSelectedFolderIsVisible() {\n  if (!state.folderId || !folders.value) {\n    return\n  }\n\n  const parentIds = findParentFolderIds(state.folderId, flatFolderList.value)\n\n  if (parentIds.length === 0) {\n    return\n  }\n\n  const foldersToOpen = parentIds.filter((parentId) => {\n    const folder = flatFolderList.value.find(f => f.id === parentId)\n    return folder && folder.isOpen === 0\n  })\n\n  if (foldersToOpen.length === 0) {\n    return\n  }\n\n  try {\n    const updateResults = await Promise.allSettled(\n      foldersToOpen.map(folderId =>\n        api.folders.patchFoldersById(String(folderId), { isOpen: 1 }),\n      ),\n    )\n\n    const failedUpdates = updateResults\n      .map((result, index) => ({ result, folderId: foldersToOpen[index] }))\n      .filter(({ result }) => result.status === 'rejected')\n\n    if (failedUpdates.length > 0) {\n      console.warn('Some folders failed to open:', failedUpdates)\n    }\n\n    await getFolders(false)\n  }\n  catch (error) {\n    console.error('Error while opening parent folders:', error)\n    try {\n      await getFolders(false)\n    }\n    catch (fallbackError) {\n      console.error('Failed to refresh folders:', fallbackError)\n    }\n  }\n}\n\nfunction getFolderByIdFromTree(\n  nodes: any[] | undefined,\n  id: number | null,\n): FoldersTreeResponse[0] | undefined {\n  if (!nodes || id === null) {\n    return undefined\n  }\n  for (const node of nodes) {\n    if (node.id === id) {\n      return node\n    }\n    if (node.children?.length) {\n      const foundFolder = getFolderByIdFromTree(node.children, id)\n      if (foundFolder) {\n        return foundFolder\n      }\n    }\n  }\n}\n\nasync function getFolders(shouldEnsureVisibility = true) {\n  try {\n    const { data } = await api.folders.getFoldersTree()\n    folders.value = data\n    syncSelectedFoldersWithTree()\n\n    if (shouldEnsureVisibility) {\n      await ensureSelectedFolderIsVisible()\n    }\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nasync function createFolder(parentId?: number) {\n  try {\n    const nextFolderName = getNextUntitledFolderName(parentId)\n\n    markPersistedStorageMutation()\n    const { data } = await api.folders.postFolders({\n      name: nextFolderName,\n      ...(parentId !== undefined && { parentId }),\n    })\n\n    if (parentId) {\n      await updateFolder(parentId, { isOpen: 1 })\n    }\n\n    await getFolders(false)\n\n    return data.id\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nasync function createFolderAndSelect(parentId?: number) {\n  const { clearSnippetsState } = useSnippets()\n  const id = await createFolder(parentId)\n\n  if (id) {\n    await selectFolder(Number(id))\n    clearSnippetsState()\n    scrollToElement(`[id=\"${id}\"]`)\n    renameFolderId.value = Number(id)\n  }\n}\n\nasync function updateFolder(folderId: number, data: FoldersUpdate) {\n  try {\n    markPersistedStorageMutation()\n    await api.folders.patchFoldersById(String(folderId), data)\n    await getFolders(false)\n\n    if (folderId === state.folderId) {\n      const { getSnippets } = useSnippets()\n      await getSnippets({ folderId })\n    }\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nasync function deleteFolder(folderId: number, shouldRefresh = true) {\n  try {\n    markPersistedStorageMutation()\n    await api.folders.deleteFoldersById(String(folderId))\n    if (shouldRefresh) {\n      await getFolders(false)\n    }\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\ninterface SelectFolderOptions {\n  mode?: 'single' | 'range' | 'toggle'\n  ensureVisibility?: boolean\n}\n\nasync function selectFolder(\n  folderId: number,\n  options: SelectFolderOptions = {},\n) {\n  const mode = options.mode ?? 'single'\n  const shouldEnsureVisibility = options.ensureVisibility ?? mode === 'single'\n\n  if (mode === 'range') {\n    applyRangeFolderSelection(folderId)\n  }\n  else if (mode === 'toggle') {\n    applyToggleFolderSelection(folderId)\n  }\n  else {\n    applySingleFolderSelection(folderId)\n    state.libraryFilter = undefined\n    state.tagId = undefined\n    state.snippetId = undefined\n  }\n\n  if (folders.value?.length && shouldEnsureVisibility) {\n    await ensureSelectedFolderIsVisible()\n  }\n}\n\nexport function useFolders() {\n  return {\n    createFolder,\n    createFolderAndSelect,\n    clearFolderSelection,\n    deleteFolder,\n    folders,\n    getFolderByIdFromTree,\n    getFolders,\n    lastSelectedFolderId,\n    renameFolderId,\n    selectedFolderIds,\n    setFolderSelection,\n    selectFolder,\n    updateFolder,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/useSnippetScroller.ts",
    "content": "interface SnippetScroller {\n  scrollToItem: (index: number) => void\n}\n\nconst snippetScrollerRef = ref<SnippetScroller | null>(null)\nconst pendingScrollIndex = ref<number | null>(null)\n\nexport function setSnippetScrollerRef(value: SnippetScroller | null) {\n  snippetScrollerRef.value = value\n\n  if (value && pendingScrollIndex.value !== null) {\n    const index = pendingScrollIndex.value\n    pendingScrollIndex.value = null\n    nextTick(() => value.scrollToItem(index))\n  }\n}\n\nexport function scrollToSnippetIndex(index: number) {\n  if (index < 0)\n    return\n\n  if (snippetScrollerRef.value) {\n    snippetScrollerRef.value.scrollToItem(index)\n    return\n  }\n\n  pendingScrollIndex.value = index\n}\n"
  },
  {
    "path": "src/renderer/composables/useSnippetUpdate.ts",
    "content": "import type {\n  SnippetContentsAdd,\n  SnippetsUpdate,\n} from '../services/api/generated'\nimport { useDebounceFn } from '@vueuse/core'\nimport { useSnippets } from './useSnippets'\nimport { markUserEdit } from './useStorageMutation'\n\ninterface UpdateQueueItem {\n  snippetId: number\n  data: SnippetsUpdate\n}\n\ninterface UpdateContentQueueItem {\n  snippetId: number\n  contentId: number\n  data: SnippetContentsAdd\n}\n\nconst UPDATE_DEBOUNCE_TIME = 500\n\nconst { updateSnippetContent, updateSnippet } = useSnippets()\n\nconst updateQueue = ref<Map<string, UpdateQueueItem>>(new Map())\nconst updateContentQueue = ref<Map<string, UpdateContentQueueItem>>(new Map())\nconst contentUpdateTimers = ref<Map<string, ReturnType<typeof setTimeout>>>(\n  new Map(),\n)\nconst inFlightContentKeys = ref<Set<string>>(new Set())\n\nconst updateDebounced = useDebounceFn((snippetId: number) => {\n  const key = `${snippetId}`\n  const update = updateQueue.value.get(key)\n\n  if (update) {\n    updateSnippet(update.snippetId, update.data)\n    updateQueue.value.delete(key)\n  }\n}, UPDATE_DEBOUNCE_TIME)\n\nfunction getContentUpdateKey(snippetId: number, contentId: number) {\n  return `${snippetId}-${contentId}`\n}\n\nasync function flushContentUpdate(key: string) {\n  const update = updateContentQueue.value.get(key)\n  if (!update) {\n    return\n  }\n\n  updateContentQueue.value.delete(key)\n  inFlightContentKeys.value.add(key)\n\n  try {\n    await updateSnippetContent(update.snippetId, update.contentId, update.data)\n  }\n  catch (error) {\n    console.error(error)\n  }\n  finally {\n    inFlightContentKeys.value.delete(key)\n\n    if (updateContentQueue.value.has(key)) {\n      scheduleContentUpdate(key)\n    }\n  }\n}\n\nfunction scheduleContentUpdate(key: string) {\n  const pendingTimer = contentUpdateTimers.value.get(key)\n  if (pendingTimer) {\n    clearTimeout(pendingTimer)\n  }\n\n  const timer = setTimeout(() => {\n    contentUpdateTimers.value.delete(key)\n    void flushContentUpdate(key)\n  }, UPDATE_DEBOUNCE_TIME)\n\n  contentUpdateTimers.value.set(key, timer)\n}\n\nfunction addToUpdateQueue(snippetId: number, data: SnippetsUpdate) {\n  markUserEdit()\n  const key = `${snippetId}`\n  updateQueue.value.set(key, { snippetId, data })\n  updateDebounced(snippetId)\n}\n\nfunction addToUpdateContentQueue(\n  snippetId: number,\n  contentId: number,\n  data: SnippetContentsAdd,\n) {\n  markUserEdit()\n  const key = getContentUpdateKey(snippetId, contentId)\n  updateContentQueue.value.set(key, { snippetId, contentId, data })\n\n  if (inFlightContentKeys.value.has(key)) {\n    return\n  }\n\n  scheduleContentUpdate(key)\n}\n\nfunction getPendingContentUpdate(snippetId: number, contentId: number) {\n  const key = getContentUpdateKey(snippetId, contentId)\n  return updateContentQueue.value.get(key)?.data\n}\n\nfunction isContentUpdateBusy(snippetId: number, contentId: number) {\n  const key = getContentUpdateKey(snippetId, contentId)\n  return (\n    updateContentQueue.value.has(key) || inFlightContentKeys.value.has(key)\n  )\n}\n\nfunction hasBusyContentUpdates() {\n  return (\n    updateContentQueue.value.size > 0 || inFlightContentKeys.value.size > 0\n  )\n}\n\nexport function useSnippetUpdate() {\n  return {\n    addToUpdateContentQueue,\n    addToUpdateQueue,\n    getPendingContentUpdate,\n    hasBusyContentUpdates,\n    isContentUpdateBusy,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/useSnippets.ts",
    "content": "import type {\n  SnippetContentsUpdate,\n  SnippetsQuery,\n  SnippetsResponse,\n  SnippetsUpdate,\n} from '~/renderer/services/api/generated'\nimport { markPersistedStorageMutation } from '@/composables/useStorageMutation'\nimport { i18n } from '@/electron'\nimport { getContiguousSelection } from '@/utils'\nimport { api } from '~/renderer/services/api'\nimport { useApp, useDialog, useFolders } from '.'\nimport { LibraryFilter } from './types'\nimport { scrollToSnippetIndex } from './useSnippetScroller'\n\nconst { state, saveStateSnapshot, restoreStateSnapshot, isFocusedSnippetName }\n  = useApp()\nconst { folders, getFolderByIdFromTree } = useFolders()\n\nconst selectedSnippetIds = ref<number[]>(\n  state.snippetId ? [state.snippetId] : [],\n)\nconst lastSelectedSnippetId = ref<number | undefined>()\n\nconst snippets = shallowRef<SnippetsResponse>()\nconst snippetsBySearch = shallowRef<SnippetsResponse>()\n\nconst searchQuery = ref('')\nconst isSearch = ref(false)\nconst isRestoreStateBlocked = ref(false)\nconst searchSelectedIndex = ref<number>(-1)\n\nfunction escapeRegExp(value: string): string {\n  return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n\nfunction getNextIndexedName(baseName: string, existingNames: string[]): string {\n  const normalizedBase = baseName.trim()\n  const indexedNameRe = new RegExp(\n    `^${escapeRegExp(normalizedBase)}(?:\\\\s+(\\\\d+))?$`,\n    'i',\n  )\n\n  let maxIndex = 0\n\n  existingNames.forEach((name) => {\n    const match = name.trim().match(indexedNameRe)\n    if (!match) {\n      return\n    }\n\n    const index = match[1] ? Number(match[1]) : 0\n    if (Number.isFinite(index)) {\n      maxIndex = Math.max(maxIndex, index)\n    }\n  })\n\n  return `${normalizedBase} ${maxIndex + 1}`\n}\n\nasync function getSnippetNamesForCreate(\n  folderId: number | null,\n): Promise<string[]> {\n  const query: SnippetsQuery\n    = folderId !== null\n      ? { folderId, isDeleted: 0 }\n      : { isInbox: 1, isDeleted: 0 }\n  const { data } = await api.snippets.getSnippets(query)\n\n  return data.map(snippet => snippet.name)\n}\n\nconst displayedSnippets = computed(() => {\n  if (isSearch.value) {\n    return snippetsBySearch.value\n  }\n\n  return snippets.value\n})\n\nconst selectedSnippet = computed(() => {\n  if (isSearch.value) {\n    return snippetsBySearch.value?.find(s => s.id === state.snippetId)\n  }\n\n  return snippets.value?.find(s => s.id === state.snippetId)\n})\n\nconst selectedSnippetContent = computed(() => {\n  return selectedSnippet.value?.contents[state.snippetContentIndex || 0]\n})\n\nconst selectedSnippets = computed(() => {\n  const source = isSearch.value ? snippetsBySearch.value : snippets.value\n  return source?.filter(s => selectedSnippetIds.value.includes(s.id)) || []\n})\n\nconst queryByLibraryOrFolderOrSearch = computed(() => {\n  const query: SnippetsQuery = {}\n\n  if (isSearch.value) {\n    query.search = searchQuery.value\n    return query\n  }\n\n  if (state.tagId) {\n    query.tagId = state.tagId\n    return query\n  }\n\n  if (state.folderId) {\n    query.folderId = state.folderId\n  }\n  else if (state.libraryFilter === LibraryFilter.Favorites) {\n    query.isFavorites = 1\n  }\n  else if (state.libraryFilter === LibraryFilter.Trash) {\n    query.isDeleted = 1\n  }\n  else if (state.libraryFilter === LibraryFilter.All) {\n    query.isDeleted = 0\n  }\n  else if (state.libraryFilter === LibraryFilter.Inbox) {\n    query.isInbox = 1\n  }\n\n  return query\n})\n\nconst isEmpty = computed(() => {\n  if (isSearch.value) {\n    return snippetsBySearch.value?.length === 0\n  }\n\n  return snippets.value?.length === 0\n})\n\nconst isAvailableToCodePreview = computed(() => {\n  const langAvailable = ['html', 'css', 'javascript']\n  return langAvailable.includes(selectedSnippetContent.value?.language || '')\n})\n\nasync function getSnippets(query?: SnippetsQuery) {\n  const { data } = await api.snippets.getSnippets(\n    query || queryByLibraryOrFolderOrSearch.value,\n  )\n\n  if (isSearch.value) {\n    snippetsBySearch.value = data\n  }\n  else {\n    snippets.value = data\n  }\n}\n\nasync function createSnippet() {\n  try {\n    const targetFolderId = state.folderId || null\n    const folder = getFolderByIdFromTree(folders.value, targetFolderId)\n    const existingNames = await getSnippetNamesForCreate(targetFolderId)\n    const nextSnippetName = getNextIndexedName(\n      i18n.t('snippet.untitled'),\n      existingNames,\n    )\n\n    markPersistedStorageMutation()\n    const { data } = await api.snippets.postSnippets({\n      name: nextSnippetName,\n      folderId: targetFolderId,\n    })\n\n    await api.snippets.postSnippetsByIdContents(String(data.id), {\n      label: `${i18n.t('fragment')} 1`,\n      value: '',\n      language: folder?.defaultLanguage || 'plain_text',\n    })\n\n    if (\n      state.libraryFilter === LibraryFilter.Trash\n      || state.libraryFilter === LibraryFilter.Favorites\n    ) {\n      state.libraryFilter = LibraryFilter.All\n    }\n\n    await getSnippets(queryByLibraryOrFolderOrSearch.value)\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nasync function createSnippetAndSelect() {\n  await createSnippet()\n  selectFirstSnippet()\n  isFocusedSnippetName.value = true\n}\n\nasync function duplicateSnippet(snippetId: number) {\n  const snippet = snippets.value?.find(s => s.id === snippetId)\n\n  if (!snippet) {\n    return\n  }\n\n  try {\n    const { data } = await api.snippets.postSnippets({\n      name: `${snippet.name} - copy`,\n      folderId: snippet.folder?.id || null,\n    })\n\n    for (const content of snippet.contents) {\n      await api.snippets.postSnippetsByIdContents(String(data.id), {\n        label: content.label,\n        value: content.value,\n        language: content.language,\n      })\n    }\n\n    for (const tag of snippet.tags) {\n      await api.snippets.postSnippetsByIdTagsByTagId(\n        String(data.id),\n        String(tag.id),\n      )\n    }\n\n    await getSnippets(queryByLibraryOrFolderOrSearch.value)\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nasync function createSnippetContent(snippetId: number) {\n  const lastContentIndex = selectedSnippet.value?.contents.length || 0\n  const folder = getFolderByIdFromTree(\n    folders.value,\n    selectedSnippet.value?.folder?.id || null,\n  )\n\n  try {\n    await api.snippets.postSnippetsByIdContents(String(snippetId), {\n      label: `${i18n.t('fragment')} ${lastContentIndex + 1}`,\n      value: '',\n      language: folder?.defaultLanguage || 'plain_text',\n    })\n\n    await getSnippets(queryByLibraryOrFolderOrSearch.value)\n\n    return lastContentIndex\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nasync function addFragment() {\n  if (!selectedSnippet.value) {\n    return\n  }\n\n  const index = await createSnippetContent(selectedSnippet.value.id)\n\n  if (index) {\n    state.snippetContentIndex = index\n  }\n}\n\nasync function updateSnippet(snippetId: number, data: SnippetsUpdate) {\n  markPersistedStorageMutation()\n  await api.snippets.patchSnippetsById(String(snippetId), data)\n  await getSnippets(queryByLibraryOrFolderOrSearch.value)\n}\n\nasync function updateSnippets(snippetIds: number[], data: SnippetsUpdate[]) {\n  for (const [index, snippetId] of snippetIds.entries()) {\n    await api.snippets.patchSnippetsById(String(snippetId), data[index])\n  }\n  await getSnippets(queryByLibraryOrFolderOrSearch.value)\n}\n\nasync function updateSnippetContent(\n  snippetId: number,\n  contentId: number,\n  data: SnippetContentsUpdate,\n) {\n  markPersistedStorageMutation()\n  await api.snippets.patchSnippetsByIdContentsByContentId(\n    String(snippetId),\n    String(contentId),\n    data,\n  )\n  await getSnippets(queryByLibraryOrFolderOrSearch.value)\n}\n\nasync function deleteSnippet(snippetId: number) {\n  markPersistedStorageMutation()\n  await api.snippets.deleteSnippetsById(String(snippetId))\n  await getSnippets(queryByLibraryOrFolderOrSearch.value)\n}\n\nasync function deleteSnippets(snippetIds: number[]) {\n  for (const snippetId of snippetIds) {\n    await api.snippets.deleteSnippetsById(String(snippetId))\n  }\n  await getSnippets(queryByLibraryOrFolderOrSearch.value)\n}\n\nasync function deleteSnippetContent(snippetId: number, contentId: number) {\n  try {\n    await api.snippets.deleteSnippetsByIdContentsByContentId(\n      String(snippetId),\n      String(contentId),\n    )\n\n    await getSnippets(queryByLibraryOrFolderOrSearch.value)\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nasync function addTagToSnippet(tagId: number, snippetId: number) {\n  try {\n    await api.snippets.postSnippetsByIdTagsByTagId(\n      String(snippetId),\n      String(tagId),\n    )\n    await getSnippets(queryByLibraryOrFolderOrSearch.value)\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nasync function deleteTagFromSnippet(tagId: number, snippetId: number) {\n  try {\n    await api.snippets.deleteSnippetsByIdTagsByTagId(\n      String(snippetId),\n      String(tagId),\n    )\n    await getSnippets(queryByLibraryOrFolderOrSearch.value)\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nasync function emptyTrash() {\n  const { confirm } = useDialog()\n\n  const isConfirmed = await confirm({\n    title: i18n.t('messages:confirm.emptyTrash'),\n    content: i18n.t('messages:warning.noUndo'),\n  })\n\n  if (isConfirmed) {\n    await api.snippets.deleteSnippetsTrash()\n    await getSnippets(queryByLibraryOrFolderOrSearch.value)\n  }\n}\n\nfunction selectSnippet(snippetId: number, withShift = false) {\n  if (!withShift) {\n    selectedSnippetIds.value = [snippetId]\n    state.snippetId = snippetId\n    state.snippetContentIndex = 0\n    return\n  }\n\n  if (state.snippetId !== undefined) {\n    const source = isSearch.value ? snippetsBySearch.value : snippets.value\n\n    if (source?.length) {\n      const orderedIds = source.map(snippet => snippet.id)\n      const rangeSelection = getContiguousSelection(\n        orderedIds,\n        state.snippetId,\n        snippetId,\n      )\n\n      if (rangeSelection.length) {\n        selectedSnippetIds.value = rangeSelection\n        lastSelectedSnippetId.value = snippetId\n        state.snippetContentIndex = 0\n      }\n    }\n  }\n  else {\n    selectedSnippetIds.value = [snippetId]\n    lastSelectedSnippetId.value = snippetId\n    state.snippetId = snippetId\n    state.snippetContentIndex = 0\n  }\n}\n\nfunction selectFirstSnippet() {\n  let firstSnippet: SnippetsResponse[0] | undefined\n\n  if (isSearch.value) {\n    firstSnippet = snippetsBySearch.value?.[0]\n  }\n  else {\n    firstSnippet = snippets.value?.[0]\n  }\n\n  if (firstSnippet) {\n    state.snippetId = firstSnippet.id\n    selectedSnippetIds.value = [firstSnippet.id]\n    lastSelectedSnippetId.value = firstSnippet.id\n  }\n  else {\n    state.snippetId = undefined\n    selectedSnippetIds.value = []\n    lastSelectedSnippetId.value = undefined\n  }\n}\n\nfunction clearSnippets() {\n  snippets.value = []\n  snippetsBySearch.value = []\n}\n\nfunction clearSnippetsState() {\n  clearSnippets()\n  selectedSnippetIds.value = []\n  state.snippetId = undefined\n  state.snippetContentIndex = 0\n}\n\nasync function search() {\n  if (searchQuery.value) {\n    if (!isSearch.value) {\n      saveStateSnapshot('beforeSearch')\n      state.snippetContentIndex = 0\n    }\n\n    isSearch.value = true\n    isRestoreStateBlocked.value = false\n\n    await getSnippets({ search: searchQuery.value })\n    selectFirstSnippet()\n    searchSelectedIndex.value = 0\n    nextTick(() => scrollToSnippetIndex(0))\n  }\n  else {\n    isSearch.value = false\n  }\n}\n\nfunction selectSearchSnippet(index: number) {\n  if (\n    !displayedSnippets.value\n    || index < 0\n    || index >= displayedSnippets.value.length\n  ) {\n    return\n  }\n\n  const snippet = displayedSnippets.value[index]\n  selectSnippet(snippet.id)\n  searchSelectedIndex.value = index\n  nextTick(() => scrollToSnippetIndex(index))\n}\n\nfunction clearSearch(restoreState = false) {\n  if (restoreState && !isRestoreStateBlocked.value) {\n    restoreStateSnapshot('beforeSearch')\n  }\n\n  searchQuery.value = ''\n  isSearch.value = false\n  searchSelectedIndex.value = -1\n}\n\nexport function useSnippets() {\n  return {\n    addTagToSnippet,\n    clearSearch,\n    clearSnippets,\n    clearSnippetsState,\n    createSnippet,\n    createSnippetContent,\n    deleteSnippet,\n    deleteSnippetContent,\n    deleteSnippets,\n    deleteTagFromSnippet,\n    displayedSnippets,\n    duplicateSnippet,\n    emptyTrash,\n    getSnippets,\n    isEmpty,\n    isRestoreStateBlocked,\n    isSearch,\n    lastSelectedSnippetId,\n    addFragment,\n    createSnippetAndSelect,\n    search,\n    searchQuery,\n    searchSelectedIndex,\n    selectedSnippet,\n    selectedSnippetContent,\n    selectedSnippetIds,\n    selectedSnippets,\n    selectFirstSnippet,\n    selectSearchSnippet,\n    selectSnippet,\n    updateSnippet,\n    updateSnippetContent,\n    updateSnippets,\n    isAvailableToCodePreview,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/useSonner.ts",
    "content": "import type { Props } from '@/components/ui/sonner/types'\nimport Sonner from '@/components/ui/sonner/Sonner.vue'\nimport { toast } from 'vue-sonner'\n\nexport function useSonner() {\n  const sonner = (config: Props) => {\n    toast.custom(markRaw(Sonner), {\n      componentProps: config,\n      duration: config.action ? Infinity : config.duration || 5000,\n      onDismiss: config.onClose,\n    })\n  }\n\n  return {\n    sonner,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/useStorageMutation.ts",
    "content": "const MUTATION_COOLDOWN_MS = 1500\nconst EDIT_DEBOUNCE_MS = 1000\n\nlet lastMutationTimestamp = 0\nlet lastEditTimestamp = 0\n\nexport function markPersistedStorageMutation(): void {\n  lastMutationTimestamp = Date.now()\n}\n\nexport function markUserEdit(): void {\n  lastEditTimestamp = Date.now()\n}\n\nexport function shouldSkipStorageSyncRefresh(): boolean {\n  const now = Date.now()\n\n  if (now - lastMutationTimestamp < MUTATION_COOLDOWN_MS) {\n    return true\n  }\n\n  if (now - lastEditTimestamp < EDIT_DEBOUNCE_MS) {\n    return true\n  }\n\n  return false\n}\n\nexport function useStorageMutation() {\n  return {\n    markPersistedStorageMutation,\n    markUserEdit,\n    shouldSkipStorageSyncRefresh,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/useTags.ts",
    "content": "import type { TagsResponse } from '@/services/api/generated'\nimport { api } from '@/services/api'\n\nconst tags = shallowRef<TagsResponse>([])\nconst isLoading = ref(false)\n\nasync function getTags() {\n  try {\n    isLoading.value = true\n    const { data } = await api.tags.getTags()\n    tags.value = data\n  }\n  catch (error) {\n    console.error(error)\n  }\n  finally {\n    isLoading.value = false\n  }\n}\n\nasync function addTag(tagName: string) {\n  const { data } = await api.tags.postTags({ name: tagName })\n\n  return data.id as number\n}\n\nasync function deleteTag(tagId: number) {\n  try {\n    await api.tags.deleteTagsById(String(tagId))\n    await getTags()\n  }\n  catch (error) {\n    console.error(error)\n  }\n}\n\nexport function useTags() {\n  return {\n    addTag,\n    deleteTag,\n    getTags,\n    isLoading,\n    tags,\n  }\n}\n"
  },
  {
    "path": "src/renderer/composables/useTheme.ts",
    "content": "import type {\n  ThemeEditorColors,\n  ThemeFile,\n  ThemeListItem,\n  ThemeType,\n} from '~/main/store/types/theme'\nimport { ipc, store } from '@/electron'\nimport { useColorMode } from '@vueuse/core'\n\ntype BuiltInThemeId = 'light' | 'dark' | 'auto'\n\nconst BUILT_IN_THEMES = new Set<BuiltInThemeId>(['light', 'dark', 'auto'])\nconst CUSTOM_STYLE_ID = 'masscode-custom-theme'\nconst LIGHT_EDITOR_THEME = 'neo'\nconst DARK_EDITOR_THEME = 'oceanic-next'\n\nconst TOKEN_MIGRATION_MAP: Record<string, string> = {\n  'color-primary': 'primary',\n  'color-bg': 'background',\n  'color-fg': 'foreground',\n  'color-text': 'foreground',\n  'color-text-muted': 'muted-foreground',\n  'color-border': 'border',\n  'color-button': 'muted',\n  'color-list-selection': 'accent',\n  'color-list-selection-fg': 'accent-foreground',\n  'color-scrollbar': 'scrollbar',\n}\n\nconst DROPPED_TOKENS = new Set(['color-button-hover'])\n\nconst storedThemeId = String(store.preferences.get('theme') || 'auto')\n\nconst colorMode = useColorMode()\nconst colorModeStore = colorMode.store\nconst currentThemeId = ref(storedThemeId)\nconst customThemes = ref<ThemeListItem[]>([])\nconst resolvedThemeType = ref<ThemeType>('light')\nconst currentCustomTheme = ref<ThemeFile | null>(null)\n\nconst isDark = computed(() => resolvedThemeType.value === 'dark')\n\nlet isInitialized = false\nlet isThemeReloadInProgress = false\nlet hasPendingThemeReload = false\n\nfunction persistThemePreference(id: string): void {\n  if (store.preferences.get('theme') === id) {\n    return\n  }\n\n  store.preferences.set('theme', id)\n}\n\nfunction isBuiltInTheme(id: string): id is BuiltInThemeId {\n  return BUILT_IN_THEMES.has(id as BuiltInThemeId)\n}\n\nfunction getBuiltInThemeType(id: BuiltInThemeId): ThemeType {\n  if (id === 'dark') {\n    return 'dark'\n  }\n\n  if (id === 'light') {\n    return 'light'\n  }\n\n  return colorMode.value === 'dark' ? 'dark' : 'light'\n}\n\nfunction removeCustomThemeStyle(): void {\n  const style = document.getElementById(CUSTOM_STYLE_ID)\n\n  if (style) {\n    style.remove()\n  }\n}\n\nfunction isValidCssToken(token: string): boolean {\n  return /^[a-z0-9-]+$/i.test(token)\n}\n\nfunction hasCustomEditorColors(editorColors?: ThemeEditorColors): boolean {\n  if (!editorColors) {\n    return false\n  }\n\n  return Object.entries(editorColors).some(([key, value]) => {\n    if (!key.startsWith('editor-')) {\n      return false\n    }\n\n    return isValidCssToken(key) && Boolean(value.trim())\n  })\n}\n\nfunction buildThemeCss(theme: ThemeFile): string {\n  const chunks: string[] = []\n  const themeSelector = theme.type === 'dark' ? 'html.dark' : ':root'\n\n  if (theme.colors) {\n    const colorVars = Object.entries(theme.colors)\n      .filter(\n        ([key, value]) =>\n          !DROPPED_TOKENS.has(key)\n          && isValidCssToken(key)\n          && Boolean(value.trim()),\n      )\n      .map(([key, value]) => {\n        const resolvedKey = TOKEN_MIGRATION_MAP[key] ?? key\n        return `  --${resolvedKey}: ${value};`\n      })\n\n    if (colorVars.length) {\n      chunks.push(`${themeSelector} {`)\n      chunks.push(...colorVars)\n      chunks.push('}')\n    }\n  }\n\n  if (theme.editorColors) {\n    const editorRules = Object.entries(theme.editorColors)\n      .filter(([key, value]) => {\n        if (!key.startsWith('editor-')) {\n          return false\n        }\n\n        return isValidCssToken(key) && Boolean(value.trim())\n      })\n      .map(([key, value]) => {\n        const token = key.slice('editor-'.length)\n\n        if (!token) {\n          return ''\n        }\n\n        return `.cm-s-masscode-custom span.cm-${token} { color: ${value} !important; }`\n      })\n      .filter(Boolean)\n\n    chunks.push(...editorRules)\n  }\n\n  return chunks.join('\\n')\n}\n\nfunction applyCustomThemeStyle(theme: ThemeFile): void {\n  removeCustomThemeStyle()\n\n  const css = buildThemeCss(theme)\n\n  if (!css) {\n    return\n  }\n\n  const style = document.createElement('style')\n  style.id = CUSTOM_STYLE_ID\n  style.textContent = css\n\n  document.head.append(style)\n}\n\nfunction applyBuiltInTheme(id: BuiltInThemeId): void {\n  currentCustomTheme.value = null\n  removeCustomThemeStyle()\n\n  colorModeStore.value = id\n  resolvedThemeType.value = getBuiltInThemeType(id)\n  currentThemeId.value = id\n\n  persistThemePreference(id)\n}\n\nasync function applyCustomTheme(id: string): Promise<boolean> {\n  const theme = await ipc.invoke<string, ThemeFile | null>('theme:get', id)\n\n  if (!theme) {\n    return false\n  }\n\n  colorModeStore.value = theme.type\n  resolvedThemeType.value = theme.type\n  currentCustomTheme.value = theme\n  currentThemeId.value = id\n\n  applyCustomThemeStyle(theme)\n  persistThemePreference(id)\n\n  return true\n}\n\nfunction fallbackToAuto(): void {\n  applyBuiltInTheme('auto')\n}\n\nasync function setTheme(id: string): Promise<void> {\n  if (isBuiltInTheme(id)) {\n    applyBuiltInTheme(id)\n    return\n  }\n\n  const isApplied = await applyCustomTheme(id)\n\n  if (!isApplied) {\n    fallbackToAuto()\n  }\n}\n\nasync function loadCustomThemes(): Promise<void> {\n  try {\n    customThemes.value = await ipc.invoke<null, ThemeListItem[]>(\n      'theme:list',\n      null,\n    )\n  }\n  catch (error) {\n    customThemes.value = []\n    console.error('Failed to load custom themes', error)\n  }\n}\n\nasync function handleThemesChanged(): Promise<void> {\n  await loadCustomThemes()\n\n  const selectedId = currentThemeId.value\n\n  if (isBuiltInTheme(selectedId)) {\n    return\n  }\n\n  const exists = customThemes.value.some(theme => theme.id === selectedId)\n\n  if (!exists) {\n    fallbackToAuto()\n    return\n  }\n\n  await setTheme(selectedId)\n}\n\nasync function processThemeReloadQueue(): Promise<void> {\n  if (isThemeReloadInProgress) {\n    hasPendingThemeReload = true\n    return\n  }\n\n  isThemeReloadInProgress = true\n\n  try {\n    do {\n      hasPendingThemeReload = false\n      await handleThemesChanged()\n    } while (hasPendingThemeReload)\n  }\n  catch (error) {\n    console.error('Failed to process theme updates', error)\n  }\n  finally {\n    isThemeReloadInProgress = false\n  }\n}\n\nconst editorThemeName = computed(() => {\n  const baseTheme\n    = resolvedThemeType.value === 'dark' ? DARK_EDITOR_THEME : LIGHT_EDITOR_THEME\n\n  if (!isBuiltInTheme(currentThemeId.value)) {\n    const editorColors = currentCustomTheme.value?.editorColors\n\n    if (hasCustomEditorColors(editorColors)) {\n      return `${baseTheme} masscode-custom`\n    }\n  }\n\n  return baseTheme\n})\n\nasync function initTheme(): Promise<void> {\n  await loadCustomThemes()\n  await setTheme(currentThemeId.value)\n}\n\nfunction onThemeChanged() {\n  void processThemeReloadQueue()\n}\n\nwatch(\n  () => colorMode.value,\n  () => {\n    if (isBuiltInTheme(currentThemeId.value)) {\n      resolvedThemeType.value = getBuiltInThemeType(currentThemeId.value)\n    }\n  },\n)\n\nexport function useTheme() {\n  if (!isInitialized) {\n    isInitialized = true\n\n    ipc.on('theme:changed', onThemeChanged)\n    void initTheme()\n  }\n\n  return {\n    currentThemeId,\n    customThemes,\n    resolvedThemeType,\n    isDark,\n    setTheme,\n    loadCustomThemes,\n    editorThemeName,\n  }\n}\n"
  },
  {
    "path": "src/renderer/electron.ts",
    "content": "const { ipc, db, store, i18n } = window.electron\n\nexport { db, i18n, ipc, store }\n"
  },
  {
    "path": "src/renderer/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>massCode</title>\n  </head>\n  <body>\n    <div id=\"app\"></div>\n    <script type=\"module\" src=\"./main.ts\"></script>\n  </body>\n</html>"
  },
  {
    "path": "src/renderer/ipc/index.ts",
    "content": "import { registerMainMenuListeners } from './listeners/main-menu'\nimport { registerSystemListeners } from './listeners/system'\n\nexport function registerIPCListeners() {\n  registerMainMenuListeners()\n  registerSystemListeners()\n}\n"
  },
  {
    "path": "src/renderer/ipc/listeners/main-menu.ts",
    "content": "import { useApp, useFolders, useSnippets } from '@/composables'\nimport { ipc } from '@/electron'\nimport { router, RouterName } from '@/router'\n\nconst { createSnippetAndSelect, addFragment } = useSnippets()\nconst { createFolderAndSelect } = useFolders()\nconst {\n  isShowMarkdown,\n  isShowMindmap,\n  isShowCodePreview,\n  isShowMarkdownPresentation,\n  isShowJsonVisualizer,\n  isSidebarHidden,\n} = useApp()\n\nexport function registerMainMenuListeners() {\n  ipc.on('main-menu:goto-preferences', () => {\n    router.push({ name: RouterName.preferencesStorage })\n  })\n\n  ipc.on('main-menu:goto-devtools', () => {\n    router.push({ name: RouterName.devtoolsCaseConverter })\n  })\n\n  ipc.on('main-menu:new-snippet', () => {\n    createSnippetAndSelect()\n  })\n\n  ipc.on('main-menu:new-fragment', () => {\n    addFragment()\n  })\n\n  ipc.on('main-menu:new-folder', () => {\n    createFolderAndSelect()\n  })\n\n  ipc.on('main-menu:preview-markdown', () => {\n    isShowMarkdown.value = !isShowMarkdown.value\n  })\n\n  ipc.on('main-menu:preview-mindmap', () => {\n    isShowMindmap.value = !isShowMindmap.value\n  })\n\n  ipc.on('main-menu:preview-code', () => {\n    isShowCodePreview.value = !isShowCodePreview.value\n  })\n\n  ipc.on('main-menu:preview-json', () => {\n    isShowJsonVisualizer.value = !isShowJsonVisualizer.value\n  })\n\n  ipc.on('main-menu:presentation-mode', () => {\n    isShowMarkdownPresentation.value = !isShowMarkdownPresentation.value\n    router.push({ name: RouterName.markdownPresentation })\n  })\n\n  ipc.on('main-menu:toggle-sidebar', () => {\n    isSidebarHidden.value = !isSidebarHidden.value\n  })\n\n  ipc.on('main-menu:goto-math-notebook', () => {\n    router.push({ name: RouterName.mathNotebook })\n  })\n}\n"
  },
  {
    "path": "src/renderer/ipc/listeners/system.ts",
    "content": "import {\n  useApp,\n  useFolders,\n  useMathNotebook,\n  useSnippets,\n  useSnippetUpdate,\n  useSonner,\n  useStorageMutation,\n} from '@/composables'\nimport { i18n, ipc } from '@/electron'\nimport { router, RouterName } from '@/router'\nimport { getActiveSpaceId } from '@/spaceDefinitions'\nimport { repository } from '../../../../package.json'\n\nconst {\n  state,\n  highlightedFolderIds,\n  highlightedSnippetIds,\n  focusedSnippetId,\n  focusedFolderId,\n} = useApp()\nconst { selectFolder, getFolders } = useFolders()\nconst { selectSnippet, getSnippets, selectFirstSnippet, displayedSnippets }\n  = useSnippets()\nconst { hasBusyContentUpdates } = useSnippetUpdate()\nconst { shouldSkipStorageSyncRefresh } = useStorageMutation()\nconst { reloadFromDisk: reloadMathFromDisk } = useMathNotebook()\nconst { sonner } = useSonner()\nlet storageSyncDebounceTimer: ReturnType<typeof setTimeout> | null = null\n\ninterface ReleaseNoticePayload {\n  sqliteSunsetVersion?: string\n}\n\nasync function refreshCodeSpace() {\n  const selectedSnippetId = state.snippetId\n\n  await getFolders(false)\n  await getSnippets()\n\n  if (!selectedSnippetId) {\n    return\n  }\n\n  const snippetExists = displayedSnippets.value?.some(\n    snippet => snippet.id === selectedSnippetId,\n  )\n\n  if (!snippetExists) {\n    selectFirstSnippet()\n  }\n}\n\nasync function refreshAfterStorageSync() {\n  const activeSpace = getActiveSpaceId()\n\n  switch (activeSpace) {\n    case 'math':\n      await reloadMathFromDisk()\n      break\n    case 'tools':\n      break\n    case 'code':\n    default:\n      await refreshCodeSpace()\n      break\n  }\n}\n\nfunction scheduleStorageSyncRefresh() {\n  if (storageSyncDebounceTimer) {\n    clearTimeout(storageSyncDebounceTimer)\n    storageSyncDebounceTimer = null\n  }\n\n  storageSyncDebounceTimer = setTimeout(() => {\n    if (shouldSkipStorageSyncRefresh() || hasBusyContentUpdates()) {\n      scheduleStorageSyncRefresh()\n      return\n    }\n\n    refreshAfterStorageSync().catch((error) => {\n      console.error('Failed to refresh after storage sync:', error)\n    })\n  }, 300)\n}\n\nexport function registerSystemListeners() {\n  ipc.on('system:deep-link', async (_, url: string) => {\n    try {\n      const u = new URL(url)\n      const folderId = u.searchParams.get('folderId')\n      const snippetId = u.searchParams.get('snippetId')\n\n      if (folderId && snippetId) {\n        const nextFolderId = Number(folderId)\n        const nextSnippetId = Number(snippetId)\n\n        highlightedFolderIds.value.clear()\n        highlightedSnippetIds.value.clear()\n        focusedSnippetId.value = undefined\n        focusedFolderId.value = undefined\n\n        await getSnippets({ folderId: nextFolderId })\n\n        await selectFolder(nextFolderId)\n        selectSnippet(nextSnippetId)\n      }\n    }\n    catch (error) {\n      console.error(error)\n    }\n  })\n\n  ipc.on('system:update-available', () => {\n    sonner({\n      message: 'Update available',\n      type: 'success',\n      action: {\n        label: 'Go to GitHub',\n        onClick: () => {\n          ipc.invoke('system:open-external', `${repository}/releases`)\n        },\n      },\n    })\n  })\n\n  ipc.on('system:feature-notice', (_, payload: ReleaseNoticePayload) => {\n    sonner({\n      message: i18n.t('messages:release.mdVaultAvailable', {\n        sqliteSunsetVersion: payload?.sqliteSunsetVersion || '5.0.0',\n      }),\n      type: 'success',\n      action: {\n        label: i18n.t('button.goToSettings'),\n        onClick: () => {\n          router.push({ name: RouterName.preferencesStorage })\n        },\n      },\n    })\n  })\n\n  ipc.on('system:storage-synced', () => {\n    scheduleStorageSyncRefresh()\n  })\n\n  ipc.on('system:error', (_, payload) => {\n    console.error(`[system][${payload.context}]`, payload)\n  })\n}\n"
  },
  {
    "path": "src/renderer/main.ts",
    "content": "import { createApp } from 'vue'\nimport VueVirtualScroller from 'vue-virtual-scroller'\nimport App from './App.vue'\nimport { router } from './router'\nimport './styles.css'\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css'\n\ncreateApp(App).use(router).use(VueVirtualScroller).mount('#app')\n"
  },
  {
    "path": "src/renderer/router/index.ts",
    "content": "import { createRouter, createWebHashHistory } from 'vue-router'\n\nexport const RouterName = {\n  main: 'main',\n  preferences: 'preferences',\n  preferencesStorage: 'preferences/storage',\n  preferencesLanguage: 'preferences/language',\n  preferencesAppearance: 'preferences/appearance',\n  preferencesEditor: 'preferences/editor',\n  preferencesAPI: 'preferences/api',\n  markdownPresentation: 'markdown-presentation',\n  devtools: 'devtools',\n  devtoolsCaseConverter: 'devtools/case-converter',\n  devtoolsTextToUnicode: 'devtools/text-to-unicode',\n  devtoolsTextToAscii: 'devtools/text-to-ascii',\n  devtoolsBase64Converter: 'devtools/base64-converter',\n  devtoolsJsonToYaml: 'devtools/json-to-yaml',\n  devtoolsJsonToToml: 'devtools/json-to-toml',\n  devtoolsJsonToXml: 'devtools/json-to-xml',\n  devtoolsHash: 'devtools/hash',\n  devtoolsHmac: 'devtools/hmac',\n  devtoolsPassword: 'devtools/password',\n  devtoolsUuid: 'devtools/uuid',\n  devtoolsUrlParser: 'devtools/url-parser',\n  devtoolsSlugify: 'devtools/slugify',\n  devtoolsUrlEncoder: 'devtools/url-encoder',\n  devtoolsColorConverter: 'devtools/color-converter',\n  devtoolsJsonGenerator: 'devtools/json-generator',\n  devtoolsLoremIpsumGenerator: 'devtools/lorem-ipsum-generator',\n  devtoolsShadcnComparison: 'devtools/shadcn-comparison',\n  mathNotebook: 'math-notebook',\n} as const\n\nconst routes = [\n  {\n    path: '/',\n    name: RouterName.main,\n    component: () => import('@/views/Main.vue'),\n  },\n  {\n    path: '/preferences',\n    name: RouterName.preferences,\n    component: () => import('@/views/Preferences.vue'),\n    children: [\n      {\n        path: 'storage',\n        name: RouterName.preferencesStorage,\n        component: () => import('@/components/preferences/Storage.vue'),\n      },\n      {\n        path: 'language',\n        name: RouterName.preferencesLanguage,\n        component: () => import('@/components/preferences/Language.vue'),\n      },\n      {\n        path: 'appearance',\n        name: RouterName.preferencesAppearance,\n        component: () => import('@/components/preferences/Appearance.vue'),\n      },\n      {\n        path: 'editor',\n        name: RouterName.preferencesEditor,\n        component: () => import('@/components/preferences/Editor.vue'),\n      },\n      {\n        path: 'api',\n        name: RouterName.preferencesAPI,\n        component: () => import('@/components/preferences/API.vue'),\n      },\n    ],\n  },\n  {\n    path: '/markdown-presentation',\n    name: RouterName.markdownPresentation,\n    component: () => import('@/views/MarkdownPresentation.vue'),\n  },\n  {\n    path: '/devtools',\n    name: RouterName.devtools,\n    component: () => import('@/views/Devtools.vue'),\n    children: [\n      {\n        path: 'text/case-converter',\n        name: RouterName.devtoolsCaseConverter,\n        component: () =>\n          import('@/components/devtools/converters/CaseConverter.vue'),\n      },\n      {\n        path: 'text/to-unicode',\n        name: RouterName.devtoolsTextToUnicode,\n        component: () =>\n          import('@/components/devtools/converters/TextToUnicode.vue'),\n      },\n      {\n        path: 'text/to-ascii',\n        name: RouterName.devtoolsTextToAscii,\n        component: () =>\n          import('@/components/devtools/converters/TextToAsciiBinary.vue'),\n      },\n      {\n        path: 'base64-converter',\n        name: RouterName.devtoolsBase64Converter,\n        component: () =>\n          import('@/components/devtools/converters/Base64Converter.vue'),\n      },\n      {\n        path: 'json-to-yaml',\n        name: RouterName.devtoolsJsonToYaml,\n        component: () =>\n          import('@/components/devtools/converters/JsonToYaml.vue'),\n      },\n      {\n        path: 'json-to-toml',\n        name: RouterName.devtoolsJsonToToml,\n        component: () =>\n          import('@/components/devtools/converters/JsonToToml.vue'),\n      },\n      {\n        path: 'json-to-xml',\n        name: RouterName.devtoolsJsonToXml,\n        component: () =>\n          import('@/components/devtools/converters/JsonToXml.vue'),\n      },\n      {\n        path: 'hash',\n        name: RouterName.devtoolsHash,\n        component: () => import('@/components/devtools/crypto/Hash.vue'),\n      },\n      {\n        path: 'hmac',\n        name: RouterName.devtoolsHmac,\n        component: () => import('@/components/devtools/crypto/Hmac.vue'),\n      },\n      {\n        path: 'password',\n        name: RouterName.devtoolsPassword,\n        component: () => import('@/components/devtools/crypto/Password.vue'),\n      },\n      {\n        path: 'uuid',\n        name: RouterName.devtoolsUuid,\n        component: () => import('@/components/devtools/crypto/Uuid.vue'),\n      },\n      {\n        path: 'url-parser',\n        name: RouterName.devtoolsUrlParser,\n        component: () => import('@/components/devtools/web/UrlParser.vue'),\n      },\n      {\n        path: 'slugify',\n        name: RouterName.devtoolsSlugify,\n        component: () => import('@/components/devtools/web/Slugify.vue'),\n      },\n      {\n        path: 'url-encoder',\n        name: RouterName.devtoolsUrlEncoder,\n        component: () => import('@/components/devtools/web/UrlEncoder.vue'),\n      },\n      {\n        path: 'color-converter',\n        name: RouterName.devtoolsColorConverter,\n        component: () =>\n          import('@/components/devtools/converters/ColorConverter.vue'),\n      },\n      {\n        path: 'json-generator',\n        name: RouterName.devtoolsJsonGenerator,\n        component: () =>\n          import('@/components/devtools/generators/JsonGenerator.vue'),\n      },\n      {\n        path: 'lorem-ipsum-generator',\n        name: RouterName.devtoolsLoremIpsumGenerator,\n        component: () =>\n          import('@/components/devtools/generators/LoremIpsumGenerator.vue'),\n      },\n      {\n        path: 'shadcn-comparison',\n        name: RouterName.devtoolsShadcnComparison,\n        component: () => import('@/components/devtools/ShadcnComparison.vue'),\n      },\n    ],\n  },\n  {\n    path: '/math-notebook',\n    name: RouterName.mathNotebook,\n    component: () => import('@/views/MathNotebook.vue'),\n  },\n]\n\nexport const router = createRouter({\n  history: createWebHashHistory(),\n  routes,\n})\n"
  },
  {
    "path": "src/renderer/services/api/generated/index.ts",
    "content": "/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API        ##\n * ##                                                           ##\n * ## AUTHOR: acacode                                           ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nexport interface SnippetContentsAdd {\n  label: string;\n  value: string | null;\n  language: string;\n}\n\nexport interface SnippetContentsUpdate {\n  label?: string;\n  value?: string | null;\n  language?: string;\n}\n\nexport interface SnippetsAdd {\n  name: string;\n  folderId?: number | null;\n}\n\nexport interface SnippetsUpdate {\n  name?: string;\n  folderId?: number | null;\n  description?: string | null;\n  /**\n   * @min 0\n   * @max 1\n   */\n  isDeleted?: number;\n  /**\n   * @min 0\n   * @max 1\n   */\n  isFavorites?: number;\n}\n\nexport interface SnippetsCountsResponse {\n  total: number;\n  trash: number;\n}\n\nexport interface SnippetsQuery {\n  search?: string;\n  sort?: string;\n  order?: \"ASC\" | \"DESC\";\n  folderId?: number;\n  tagId?: number;\n  /**\n   * @min 0\n   * @max 1\n   */\n  isFavorites?: number;\n  /**\n   * @min 0\n   * @max 1\n   */\n  isDeleted?: number;\n  /**\n   * @min 0\n   * @max 1\n   */\n  isInbox?: number;\n}\n\nexport type SnippetsResponse = {\n  id: number;\n  name: string;\n  description: string | null;\n  tags: {\n    id: number;\n    name: string;\n  }[];\n  folder: {\n    id: number;\n    name: string;\n  } | null;\n  contents: {\n    id: number;\n    label: string;\n    value: string | null;\n    language: string;\n  }[];\n  isFavorites: number;\n  isDeleted: number;\n  createdAt: number;\n  updatedAt: number;\n}[];\n\nexport interface FoldersAdd {\n  name: string;\n  parentId?: number | null;\n}\n\nexport type FoldersResponse = {\n  id: number;\n  name: string;\n  createdAt: number;\n  updatedAt: number;\n  icon: string | null;\n  parentId: number | null;\n  isOpen: number;\n  defaultLanguage: string;\n  orderIndex: number;\n}[];\n\nexport interface FoldersUpdate {\n  name?: string;\n  icon?: string | null;\n  defaultLanguage?: string;\n  parentId?: number | null;\n  /**\n   * @min 0\n   * @max 1\n   */\n  isOpen?: number;\n  orderIndex?: number;\n}\n\nexport type FoldersTreeResponse = {\n  id: number;\n  name: string;\n  createdAt: number;\n  updatedAt: number;\n  icon: string | null;\n  parentId: number | null;\n  isOpen: number;\n  defaultLanguage: string;\n  orderIndex: number;\n  children: any[];\n}[];\n\nexport interface TagsAdd {\n  name: string;\n}\n\nexport type TagsResponse = {\n  id: number;\n  name: string;\n}[];\n\nexport interface TagsAddResponse {\n  id: number;\n}\n\nexport type QueryParamsType = Record<string | number, any>;\nexport type ResponseFormat = keyof Omit<Body, \"body\" | \"bodyUsed\">;\n\nexport interface FullRequestParams extends Omit<RequestInit, \"body\"> {\n  /** set parameter to `true` for call `securityWorker` for this request */\n  secure?: boolean;\n  /** request path */\n  path: string;\n  /** content type of request body */\n  type?: ContentType;\n  /** query params */\n  query?: QueryParamsType;\n  /** format of response (i.e. response.json() -> format: \"json\") */\n  format?: ResponseFormat;\n  /** request body */\n  body?: unknown;\n  /** base url */\n  baseUrl?: string;\n  /** request cancellation token */\n  cancelToken?: CancelToken;\n}\n\nexport type RequestParams = Omit<\n  FullRequestParams,\n  \"body\" | \"method\" | \"query\" | \"path\"\n>;\n\nexport interface ApiConfig<SecurityDataType = unknown> {\n  baseUrl?: string;\n  baseApiParams?: Omit<RequestParams, \"baseUrl\" | \"cancelToken\" | \"signal\">;\n  securityWorker?: (\n    securityData: SecurityDataType | null,\n  ) => Promise<RequestParams | void> | RequestParams | void;\n  customFetch?: typeof fetch;\n}\n\nexport interface HttpResponse<D extends unknown, E extends unknown = unknown>\n  extends Response {\n  data: D;\n  error: E;\n}\n\ntype CancelToken = Symbol | string | number;\n\nexport enum ContentType {\n  Json = \"application/json\",\n  FormData = \"multipart/form-data\",\n  UrlEncoded = \"application/x-www-form-urlencoded\",\n  Text = \"text/plain\",\n}\n\nexport class HttpClient<SecurityDataType = unknown> {\n  public baseUrl: string = \"\";\n  private securityData: SecurityDataType | null = null;\n  private securityWorker?: ApiConfig<SecurityDataType>[\"securityWorker\"];\n  private abortControllers = new Map<CancelToken, AbortController>();\n  private customFetch = (...fetchParams: Parameters<typeof fetch>) =>\n    fetch(...fetchParams);\n\n  private baseApiParams: RequestParams = {\n    credentials: \"same-origin\",\n    headers: {},\n    redirect: \"follow\",\n    referrerPolicy: \"no-referrer\",\n  };\n\n  constructor(apiConfig: ApiConfig<SecurityDataType> = {}) {\n    Object.assign(this, apiConfig);\n  }\n\n  public setSecurityData = (data: SecurityDataType | null) => {\n    this.securityData = data;\n  };\n\n  protected encodeQueryParam(key: string, value: any) {\n    const encodedKey = encodeURIComponent(key);\n    return `${encodedKey}=${encodeURIComponent(typeof value === \"number\" ? value : `${value}`)}`;\n  }\n\n  protected addQueryParam(query: QueryParamsType, key: string) {\n    return this.encodeQueryParam(key, query[key]);\n  }\n\n  protected addArrayQueryParam(query: QueryParamsType, key: string) {\n    const value = query[key];\n    return value.map((v: any) => this.encodeQueryParam(key, v)).join(\"&\");\n  }\n\n  protected toQueryString(rawQuery?: QueryParamsType): string {\n    const query = rawQuery || {};\n    const keys = Object.keys(query).filter(\n      (key) => \"undefined\" !== typeof query[key],\n    );\n    return keys\n      .map((key) =>\n        Array.isArray(query[key])\n          ? this.addArrayQueryParam(query, key)\n          : this.addQueryParam(query, key),\n      )\n      .join(\"&\");\n  }\n\n  protected addQueryParams(rawQuery?: QueryParamsType): string {\n    const queryString = this.toQueryString(rawQuery);\n    return queryString ? `?${queryString}` : \"\";\n  }\n\n  private contentFormatters: Record<ContentType, (input: any) => any> = {\n    [ContentType.Json]: (input: any) =>\n      input !== null && (typeof input === \"object\" || typeof input === \"string\")\n        ? JSON.stringify(input)\n        : input,\n    [ContentType.Text]: (input: any) =>\n      input !== null && typeof input !== \"string\"\n        ? JSON.stringify(input)\n        : input,\n    [ContentType.FormData]: (input: any) =>\n      Object.keys(input || {}).reduce((formData, key) => {\n        const property = input[key];\n        formData.append(\n          key,\n          property instanceof Blob\n            ? property\n            : typeof property === \"object\" && property !== null\n              ? JSON.stringify(property)\n              : `${property}`,\n        );\n        return formData;\n      }, new FormData()),\n    [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input),\n  };\n\n  protected mergeRequestParams(\n    params1: RequestParams,\n    params2?: RequestParams,\n  ): RequestParams {\n    return {\n      ...this.baseApiParams,\n      ...params1,\n      ...(params2 || {}),\n      headers: {\n        ...(this.baseApiParams.headers || {}),\n        ...(params1.headers || {}),\n        ...((params2 && params2.headers) || {}),\n      },\n    };\n  }\n\n  protected createAbortSignal = (\n    cancelToken: CancelToken,\n  ): AbortSignal | undefined => {\n    if (this.abortControllers.has(cancelToken)) {\n      const abortController = this.abortControllers.get(cancelToken);\n      if (abortController) {\n        return abortController.signal;\n      }\n      return void 0;\n    }\n\n    const abortController = new AbortController();\n    this.abortControllers.set(cancelToken, abortController);\n    return abortController.signal;\n  };\n\n  public abortRequest = (cancelToken: CancelToken) => {\n    const abortController = this.abortControllers.get(cancelToken);\n\n    if (abortController) {\n      abortController.abort();\n      this.abortControllers.delete(cancelToken);\n    }\n  };\n\n  public request = async <T = any, E = any>({\n    body,\n    secure,\n    path,\n    type,\n    query,\n    format,\n    baseUrl,\n    cancelToken,\n    ...params\n  }: FullRequestParams): Promise<HttpResponse<T, E>> => {\n    const secureParams =\n      ((typeof secure === \"boolean\" ? secure : this.baseApiParams.secure) &&\n        this.securityWorker &&\n        (await this.securityWorker(this.securityData))) ||\n      {};\n    const requestParams = this.mergeRequestParams(params, secureParams);\n    const queryString = query && this.toQueryString(query);\n    const payloadFormatter = this.contentFormatters[type || ContentType.Json];\n    const responseFormat = format || requestParams.format;\n\n    return this.customFetch(\n      `${baseUrl || this.baseUrl || \"\"}${path}${queryString ? `?${queryString}` : \"\"}`,\n      {\n        ...requestParams,\n        headers: {\n          ...(requestParams.headers || {}),\n          ...(type && type !== ContentType.FormData\n            ? { \"Content-Type\": type }\n            : {}),\n        },\n        signal:\n          (cancelToken\n            ? this.createAbortSignal(cancelToken)\n            : requestParams.signal) || null,\n        body:\n          typeof body === \"undefined\" || body === null\n            ? null\n            : payloadFormatter(body),\n      },\n    ).then(async (response) => {\n      const r = response.clone() as HttpResponse<T, E>;\n      r.data = null as unknown as T;\n      r.error = null as unknown as E;\n\n      const data = !responseFormat\n        ? r\n        : await response[responseFormat]()\n            .then((data) => {\n              if (r.ok) {\n                r.data = data;\n              } else {\n                r.error = data;\n              }\n              return r;\n            })\n            .catch((e) => {\n              r.error = e;\n              return r;\n            });\n\n      if (cancelToken) {\n        this.abortControllers.delete(cancelToken);\n      }\n\n      if (!response.ok) throw data;\n      return data;\n    });\n  };\n}\n\n/**\n * @title massCode API\n * @version 4.3.0\n *\n * Development documentation\n */\nexport class Api<\n  SecurityDataType extends unknown,\n> extends HttpClient<SecurityDataType> {\n  snippets = {\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name GetSnippets\n     * @request GET:/snippets/\n     */\n    getSnippets: (\n      query?: {\n        search?: string;\n        sort?: string;\n        order?: \"ASC\" | \"DESC\";\n        folderId?: number;\n        tagId?: number;\n        /**\n         * @min 0\n         * @max 1\n         */\n        isFavorites?: number;\n        /**\n         * @min 0\n         * @max 1\n         */\n        isDeleted?: number;\n        /**\n         * @min 0\n         * @max 1\n         */\n        isInbox?: number;\n      },\n      params: RequestParams = {},\n    ) =>\n      this.request<SnippetsResponse, any>({\n        path: `/snippets/`,\n        method: \"GET\",\n        query: query,\n        format: \"json\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name PostSnippets\n     * @request POST:/snippets/\n     */\n    postSnippets: (data: SnippetsAdd, params: RequestParams = {}) =>\n      this.request<\n        {\n          id: number | bigint;\n        },\n        any\n      >({\n        path: `/snippets/`,\n        method: \"POST\",\n        body: data,\n        type: ContentType.Json,\n        format: \"json\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name GetSnippetsCounts\n     * @request GET:/snippets/counts\n     */\n    getSnippetsCounts: (params: RequestParams = {}) =>\n      this.request<SnippetsCountsResponse, any>({\n        path: `/snippets/counts`,\n        method: \"GET\",\n        format: \"json\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name PostSnippetsByIdContents\n     * @request POST:/snippets/{id}/contents\n     */\n    postSnippetsByIdContents: (\n      id: string,\n      data: SnippetContentsAdd,\n      params: RequestParams = {},\n    ) =>\n      this.request<\n        {\n          id: number | bigint;\n        },\n        any\n      >({\n        path: `/snippets/${id}/contents`,\n        method: \"POST\",\n        body: data,\n        type: ContentType.Json,\n        format: \"json\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name PatchSnippetsById\n     * @request PATCH:/snippets/{id}\n     */\n    patchSnippetsById: (\n      id: string,\n      data: SnippetsUpdate,\n      params: RequestParams = {},\n    ) =>\n      this.request<void, any>({\n        path: `/snippets/${id}`,\n        method: \"PATCH\",\n        body: data,\n        type: ContentType.Json,\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name DeleteSnippetsById\n     * @request DELETE:/snippets/{id}\n     */\n    deleteSnippetsById: (id: string, params: RequestParams = {}) =>\n      this.request<void, any>({\n        path: `/snippets/${id}`,\n        method: \"DELETE\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name PatchSnippetsByIdContentsByContentId\n     * @request PATCH:/snippets/{id}/contents/{contentId}\n     */\n    patchSnippetsByIdContentsByContentId: (\n      id: string,\n      contentId: string,\n      data: SnippetContentsUpdate,\n      params: RequestParams = {},\n    ) =>\n      this.request<void, any>({\n        path: `/snippets/${id}/contents/${contentId}`,\n        method: \"PATCH\",\n        body: data,\n        type: ContentType.Json,\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name DeleteSnippetsByIdContentsByContentId\n     * @request DELETE:/snippets/{id}/contents/{contentId}\n     */\n    deleteSnippetsByIdContentsByContentId: (\n      id: string,\n      contentId: string,\n      params: RequestParams = {},\n    ) =>\n      this.request<void, any>({\n        path: `/snippets/${id}/contents/${contentId}`,\n        method: \"DELETE\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name PostSnippetsByIdTagsByTagId\n     * @request POST:/snippets/{id}/tags/{tagId}\n     */\n    postSnippetsByIdTagsByTagId: (\n      id: string,\n      tagId: string,\n      params: RequestParams = {},\n    ) =>\n      this.request<void, any>({\n        path: `/snippets/${id}/tags/${tagId}`,\n        method: \"POST\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name DeleteSnippetsByIdTagsByTagId\n     * @request DELETE:/snippets/{id}/tags/{tagId}\n     */\n    deleteSnippetsByIdTagsByTagId: (\n      id: string,\n      tagId: string,\n      params: RequestParams = {},\n    ) =>\n      this.request<void, any>({\n        path: `/snippets/${id}/tags/${tagId}`,\n        method: \"DELETE\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Snippets\n     * @name DeleteSnippetsTrash\n     * @request DELETE:/snippets/trash\n     */\n    deleteSnippetsTrash: (params: RequestParams = {}) =>\n      this.request<void, any>({\n        path: `/snippets/trash`,\n        method: \"DELETE\",\n        ...params,\n      }),\n  };\n  folders = {\n    /**\n     * No description\n     *\n     * @tags Folders\n     * @name GetFolders\n     * @request GET:/folders/\n     */\n    getFolders: (params: RequestParams = {}) =>\n      this.request<FoldersResponse, any>({\n        path: `/folders/`,\n        method: \"GET\",\n        format: \"json\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Folders\n     * @name PostFolders\n     * @request POST:/folders/\n     */\n    postFolders: (data: FoldersAdd, params: RequestParams = {}) =>\n      this.request<\n        {\n          id: number | bigint;\n        },\n        any\n      >({\n        path: `/folders/`,\n        method: \"POST\",\n        body: data,\n        type: ContentType.Json,\n        format: \"json\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Folders\n     * @name GetFoldersTree\n     * @request GET:/folders/tree\n     */\n    getFoldersTree: (params: RequestParams = {}) =>\n      this.request<FoldersTreeResponse, any>({\n        path: `/folders/tree`,\n        method: \"GET\",\n        format: \"json\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Folders\n     * @name PatchFoldersById\n     * @request PATCH:/folders/{id}\n     */\n    patchFoldersById: (\n      id: string,\n      data: FoldersUpdate,\n      params: RequestParams = {},\n    ) =>\n      this.request<void, any>({\n        path: `/folders/${id}`,\n        method: \"PATCH\",\n        body: data,\n        type: ContentType.Json,\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Folders\n     * @name DeleteFoldersById\n     * @request DELETE:/folders/{id}\n     */\n    deleteFoldersById: (id: string, params: RequestParams = {}) =>\n      this.request<void, any>({\n        path: `/folders/${id}`,\n        method: \"DELETE\",\n        ...params,\n      }),\n  };\n  tags = {\n    /**\n     * No description\n     *\n     * @tags Tags\n     * @name GetTags\n     * @request GET:/tags/\n     */\n    getTags: (params: RequestParams = {}) =>\n      this.request<TagsResponse, any>({\n        path: `/tags/`,\n        method: \"GET\",\n        format: \"json\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Tags\n     * @name PostTags\n     * @request POST:/tags/\n     */\n    postTags: (data: TagsAdd, params: RequestParams = {}) =>\n      this.request<TagsAddResponse, any>({\n        path: `/tags/`,\n        method: \"POST\",\n        body: data,\n        type: ContentType.Json,\n        format: \"json\",\n        ...params,\n      }),\n\n    /**\n     * No description\n     *\n     * @tags Tags\n     * @name DeleteTagsById\n     * @request DELETE:/tags/{id}\n     */\n    deleteTagsById: (id: string, params: RequestParams = {}) =>\n      this.request<void, any>({\n        path: `/tags/${id}`,\n        method: \"DELETE\",\n        ...params,\n      }),\n  };\n}\n"
  },
  {
    "path": "src/renderer/services/api/index.ts",
    "content": "import { store } from '@/electron'\nimport ky from 'ky'\nimport { Api } from './generated'\n\nconst apiPort = store.preferences.get('apiPort')\n\nexport const api = new Api({\n  baseUrl: `http://localhost:${apiPort}`,\n  customFetch: ky,\n})\n"
  },
  {
    "path": "src/renderer/services/notifications/donate.ts",
    "content": "import Donate from '@/components/ui/sonner/templates/Donate.vue'\nimport { useApp, useSonner } from '@/composables'\nimport { store } from '@/electron'\nimport { addDays } from 'date-fns'\n\nconst INTERVAL = 1000 * 60 * 60 * 3 // 3 часа\n\nconst { sonner } = useSonner()\nconst { isSponsored } = useApp()\n\nconst isShownDonateNotification = ref(false)\n\nfunction setNextDonateNotification() {\n  const nextDonateNotification = addDays(new Date(), 14)\n  store.app.set('nextDonateNotification', nextDonateNotification.getTime())\n}\n\nfunction initFirstDonateNotification() {\n  const nextDonateNotification = store.app.get('nextDonateNotification')\n\n  if (!nextDonateNotification) {\n    setNextDonateNotification()\n  }\n}\n\nfunction showDonateNotification() {\n  if (isSponsored) {\n    return\n  }\n\n  const nextDonateNotification = store.app.get('nextDonateNotification')\n  const now = new Date().getTime()\n\n  if (\n    !nextDonateNotification\n    || nextDonateNotification > now\n    || isShownDonateNotification.value\n  ) {\n    return\n  }\n\n  sonner({\n    closeButton: true,\n    component: Donate,\n    duration: Infinity,\n    onClose: () => {\n      isShownDonateNotification.value = false\n      setNextDonateNotification()\n    },\n  })\n\n  isShownDonateNotification.value = true\n}\n\nfunction startNotificationCheck() {\n  initFirstDonateNotification()\n\n  showDonateNotification()\n\n  setInterval(() => {\n    showDonateNotification()\n  }, INTERVAL)\n}\n\nexport function donateNotification() {\n  startNotificationCheck()\n}\n"
  },
  {
    "path": "src/renderer/services/notifications/index.ts",
    "content": "import { donateNotification } from './donate'\n\nexport function notifications() {\n  donateNotification()\n}\n"
  },
  {
    "path": "src/renderer/spaceDefinitions.ts",
    "content": "import type { Component } from 'vue'\nimport type { RouteLocationRaw, RouteRecordName } from 'vue-router'\nimport { i18n } from '@/electron'\nimport { router, RouterName } from '@/router'\nimport { Blocks, Calculator, Code2 } from 'lucide-vue-next'\n\nexport type SpaceId = 'code' | 'tools' | 'math'\n\nexport interface SpaceDefinition {\n  id: SpaceId\n  label: string\n  tooltip: string\n  icon: Component\n  to: RouteLocationRaw\n  isActive: (routeName: RouteRecordName | null | undefined) => boolean\n}\n\nfunction isRouteNameInSpace(\n  routeName: RouteRecordName | null | undefined,\n  prefix: string,\n) {\n  return (\n    typeof routeName === 'string'\n    && (routeName === prefix || routeName.startsWith(`${prefix}/`))\n  )\n}\n\nexport function getSpaceDefinitions(): SpaceDefinition[] {\n  return [\n    {\n      id: 'code',\n      label: i18n.t('spaces.code'),\n      tooltip: i18n.t('spaces.codeTooltip'),\n      icon: Code2,\n      to: { name: RouterName.main },\n      isActive: routeName => routeName === RouterName.main,\n    },\n    {\n      id: 'tools',\n      label: i18n.t('spaces.tools'),\n      tooltip: i18n.t('spaces.toolsTooltip'),\n      icon: Blocks,\n      to: { name: RouterName.devtoolsCaseConverter },\n      isActive: routeName =>\n        isRouteNameInSpace(routeName, RouterName.devtools),\n    },\n    {\n      id: 'math',\n      label: i18n.t('spaces.math'),\n      tooltip: i18n.t('spaces.mathTooltip'),\n      icon: Calculator,\n      to: { name: RouterName.mathNotebook },\n      isActive: routeName => routeName === RouterName.mathNotebook,\n    },\n  ]\n}\n\nexport function isSpaceRouteName(\n  routeName: RouteRecordName | null | undefined,\n) {\n  return getSpaceDefinitions().some(space => space.isActive(routeName))\n}\n\nexport function getActiveSpaceId(): SpaceId | null {\n  const routeName = router.currentRoute.value.name\n  const space = getSpaceDefinitions().find(s => s.isActive(routeName))\n  return space?.id ?? null\n}\n"
  },
  {
    "path": "src/renderer/styles.css",
    "content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n\n@custom-variant dark (&:is(.dark *));\n\n:root {\n  --content-top-offset: 8px;\n  --editor-tool-header-height: 28px;\n  --radius: 0.625rem;\n\n  /* Core */\n  --background: oklch(100% 0 0);\n  --foreground: oklch(20% 0 0);\n  --card: color-mix(in oklch, var(--foreground) 4%, var(--background));\n  --card-foreground: oklch(20% 0 0);\n  --popover: var(--background);\n  --popover-foreground: oklch(20% 0 0);\n  --primary: oklch(50% 0.19 260);\n  --primary-foreground: oklch(100% 0 0);\n  --secondary: oklch(97% 0 0);\n  --secondary-foreground: oklch(20% 0 0);\n  --muted: oklch(97% 0 0);\n  --muted-foreground: oklch(60% 0 0);\n  --accent: oklch(92% 0 0);\n  --accent-hover: color-mix(in oklch, var(--accent) 50%, var(--background));\n  --accent-foreground: oklch(20% 0 0);\n  --destructive: oklch(0.577 0.245 27.325);\n  --border: oklch(90% 0 0);\n  --input: oklch(90% 0 0);\n  --ring: oklch(50% 0.19 260);\n\n  /* Misc */\n  --text-highlight: oklch(90.5% 0.182 98.111);\n  --scrollbar: oklch(0% 0 0 / 0.2);\n\n  /* Charts */\n  --chart-1: oklch(0.646 0.222 41.116);\n  --chart-2: oklch(0.6 0.118 184.704);\n  --chart-3: oklch(0.398 0.07 227.392);\n  --chart-4: oklch(0.828 0.189 84.429);\n  --chart-5: oklch(0.769 0.188 70.08);\n\n  /* Sidebar */\n  --sidebar: oklch(100% 0 0);\n  --sidebar-foreground: oklch(20% 0 0);\n  --sidebar-primary: oklch(50% 0.19 260);\n  --sidebar-primary-foreground: oklch(100% 0 0);\n  --sidebar-accent: oklch(97% 0 0);\n  --sidebar-accent-foreground: oklch(20% 0 0);\n  --sidebar-border: oklch(90% 0 0);\n  --sidebar-ring: oklch(50% 0.19 260);\n}\n\n.dark {\n  /* Core */\n  --background: oklch(24.78% 0 0);\n  --foreground: oklch(75% 0 0);\n  --card: color-mix(in oklch, var(--foreground) 4%, var(--background));\n  --card-foreground: oklch(75% 0 0);\n  --popover: var(--background);\n  --popover-foreground: oklch(75% 0 0);\n  --primary: oklch(50% 0.19 260);\n  --primary-foreground: oklch(100% 0 0);\n  --secondary: oklch(27% 0 0);\n  --secondary-foreground: oklch(95% 0 0);\n  --muted: oklch(27% 0 0);\n  --muted-foreground: oklch(60% 0 0);\n  --accent: oklch(32% 0 0);\n  --accent-hover: color-mix(in oklch, var(--accent) 50%, var(--background));\n  --accent-foreground: oklch(95% 0 0);\n  --destructive: oklch(0.704 0.191 22.216);\n  --border: oklch(30% 0 0);\n  --input: oklch(30% 0 0);\n  --ring: oklch(50% 0.19 260);\n\n  /* Misc */\n  --text-highlight: oklch(90.5% 0.182 98.111);\n  --scrollbar: oklch(100% 0 0 / 0.2);\n\n  /* Charts */\n  --chart-1: oklch(0.488 0.243 264.376);\n  --chart-2: oklch(0.696 0.17 162.48);\n  --chart-3: oklch(0.769 0.188 70.08);\n  --chart-4: oklch(0.627 0.265 303.9);\n  --chart-5: oklch(0.645 0.246 16.439);\n\n  /* Sidebar */\n  --sidebar: oklch(24.78% 0 0);\n  --sidebar-foreground: oklch(75% 0 0);\n  --sidebar-primary: oklch(50% 0.19 260);\n  --sidebar-primary-foreground: oklch(100% 0 0);\n  --sidebar-accent: oklch(27% 0 0);\n  --sidebar-accent-foreground: oklch(95% 0 0);\n  --sidebar-border: oklch(30% 0 0);\n  --sidebar-ring: oklch(50% 0.19 260);\n}\n\n@theme inline {\n  --radius-sm: calc(var(--radius) - 4px);\n  --radius-md: calc(var(--radius) - 2px);\n  --radius-lg: var(--radius);\n  --radius-xl: calc(var(--radius) + 4px);\n\n  /* Core */\n  --color-background: var(--background);\n  --color-foreground: var(--foreground);\n  --color-card: var(--card);\n  --color-card-foreground: var(--card-foreground);\n  --color-popover: var(--popover);\n  --color-popover-foreground: var(--popover-foreground);\n  --color-primary: var(--primary);\n  --color-primary-foreground: var(--primary-foreground);\n  --color-secondary: var(--secondary);\n  --color-secondary-foreground: var(--secondary-foreground);\n  --color-muted: var(--muted);\n  --color-muted-foreground: var(--muted-foreground);\n  --color-accent: var(--accent);\n  --color-accent-hover: var(--accent-hover);\n  --color-accent-foreground: var(--accent-foreground);\n  --color-destructive: var(--destructive);\n  --color-border: var(--border);\n  --color-input: var(--input);\n  --color-ring: var(--ring);\n\n  /* Misc */\n  --color-text-highlight: var(--text-highlight);\n  --color-scrollbar: var(--scrollbar);\n\n  /* Charts */\n  --color-chart-1: var(--chart-1);\n  --color-chart-2: var(--chart-2);\n  --color-chart-3: var(--chart-3);\n  --color-chart-4: var(--chart-4);\n  --color-chart-5: var(--chart-5);\n\n  /* Sidebar */\n  --color-sidebar: var(--sidebar);\n  --color-sidebar-foreground: var(--sidebar-foreground);\n  --color-sidebar-primary: var(--sidebar-primary);\n  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n  --color-sidebar-accent: var(--sidebar-accent);\n  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n  --color-sidebar-border: var(--sidebar-border);\n  --color-sidebar-ring: var(--sidebar-ring);\n}\n\nbody {\n  font-size: 14px;\n}\n\n.scrollbar {\n  scrollbar-width: auto;\n  scrollbar-color: var(--scrollbar) transparent;\n}\n\n.scrollbar::-webkit-scrollbar {\n  width: 6px;\n}\n\n.scrollbar::-webkit-scrollbar-track {\n  background: transparent;\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n  background-color: var(--scrollbar);\n  border-radius: 3px;\n  opacity: 0.6;\n}\n\n.scrollbar::-webkit-scrollbar-thumb:hover {\n  opacity: 0.8;\n}\n\n.scrollbar::-webkit-scrollbar-thumb:active {\n  opacity: 1;\n}\n\n@layer base {\n  * {\n    @apply border-border outline-ring/50;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "src/renderer/utils/index.ts",
    "content": "import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport const isMac = navigator.userAgent.toLowerCase().includes('mac')\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n\nexport function scrollToElement(selector: string) {\n  const element = document.querySelector(selector)\n  if (element) {\n    element.scrollIntoView({ block: 'center' })\n  }\n}\n\nexport function getContiguousSelection(\n  orderedIds: number[],\n  anchorId: number | undefined,\n  targetId: number,\n): number[] {\n  if (!orderedIds.length) {\n    return []\n  }\n\n  const anchorIndex\n    = anchorId !== undefined ? orderedIds.indexOf(anchorId) : -1\n  const targetIndex = orderedIds.indexOf(targetId)\n\n  if (targetIndex === -1) {\n    return []\n  }\n\n  if (anchorIndex === -1) {\n    return [targetId]\n  }\n\n  const startIndex = Math.min(anchorIndex, targetIndex)\n  const endIndex = Math.max(anchorIndex, targetIndex)\n\n  return orderedIds.slice(startIndex, endIndex + 1)\n}\n"
  },
  {
    "path": "src/renderer/views/Devtools.vue",
    "content": "<script setup lang=\"ts\">\nimport { i18n } from '@/electron'\nimport { RouterName } from '@/router'\nimport { useRoute } from 'vue-router'\n\nconst route = useRoute()\n\nconst isActiveRoute = computed(() => {\n  return (name: string) => route.name === name\n})\n\nconst convertersNav = [\n  {\n    label: i18n.t('devtools:converters.caseConverter.label'),\n    name: RouterName.devtoolsCaseConverter,\n  },\n  {\n    label: i18n.t('devtools:converters.textToUnicode.label'),\n    name: RouterName.devtoolsTextToUnicode,\n  },\n  {\n    label: i18n.t('devtools:converters.textToAscii.label'),\n    name: RouterName.devtoolsTextToAscii,\n  },\n  {\n    label: i18n.t('devtools:converters.base64.label'),\n    name: RouterName.devtoolsBase64Converter,\n  },\n  {\n    label: i18n.t('devtools:converters.jsonToYaml.label'),\n    name: RouterName.devtoolsJsonToYaml,\n  },\n  {\n    label: i18n.t('devtools:converters.jsonToToml.label'),\n    name: RouterName.devtoolsJsonToToml,\n  },\n  {\n    label: i18n.t('devtools:converters.jsonToXml.label'),\n    name: RouterName.devtoolsJsonToXml,\n  },\n  {\n    label: i18n.t('devtools:converters.colorConverter.label'),\n    name: RouterName.devtoolsColorConverter,\n  },\n]\n\nconst cryptoNav = [\n  {\n    label: i18n.t('devtools:crypto.hash.label'),\n    name: RouterName.devtoolsHash,\n  },\n  {\n    label: i18n.t('devtools:crypto.hmac.label'),\n    name: RouterName.devtoolsHmac,\n  },\n  {\n    label: i18n.t('devtools:crypto.password.label'),\n    name: RouterName.devtoolsPassword,\n  },\n  {\n    label: i18n.t('devtools:crypto.uuid.label'),\n    name: RouterName.devtoolsUuid,\n  },\n]\n\nconst webNav = [\n  {\n    label: i18n.t('devtools:web.urlParser.label'),\n    name: RouterName.devtoolsUrlParser,\n  },\n  {\n    label: i18n.t('devtools:web.urlEncoder.label'),\n    name: RouterName.devtoolsUrlEncoder,\n  },\n  {\n    label: i18n.t('devtools:web.slugify.label'),\n    name: RouterName.devtoolsSlugify,\n  },\n]\n\nconst generatorsNav = [\n  {\n    label: i18n.t('devtools:generators.json.label'),\n    name: RouterName.devtoolsJsonGenerator,\n  },\n  {\n    label: i18n.t('devtools:generators.lorem.label'),\n    name: RouterName.devtoolsLoremIpsumGenerator,\n  },\n]\n\nconst uiNav = [\n  {\n    label: 'shadcn demo',\n    name: RouterName.devtoolsShadcnComparison,\n  },\n]\n</script>\n\n<template>\n  <LayoutTwoColumn\n    :title=\"i18n.t('devtools:label')\"\n    :show-back=\"false\"\n  >\n    <template #left>\n      <div class=\"scrollbar h-full min-h-0 overflow-y-auto px-2\">\n        <div class=\"text-muted-foreground mb-2 text-[10px] uppercase\">\n          {{ i18n.t(\"devtools:converters.label\") }}\n        </div>\n        <RouterLink\n          v-for=\"item in convertersNav\"\n          :key=\"item.name\"\n          class=\"cursor-default\"\n          :to=\"{ name: item.name }\"\n        >\n          <UiMenuItem\n            :label=\"item.label\"\n            :is-active=\"isActiveRoute(item.name)\"\n          />\n        </RouterLink>\n        <div class=\"text-muted-foreground my-2 text-[10px] uppercase\">\n          {{ i18n.t(\"devtools:crypto.label\") }}\n        </div>\n        <RouterLink\n          v-for=\"item in cryptoNav\"\n          :key=\"item.name\"\n          class=\"cursor-default\"\n          :to=\"{ name: item.name }\"\n        >\n          <UiMenuItem\n            :label=\"item.label\"\n            :is-active=\"isActiveRoute(item.name)\"\n          />\n        </RouterLink>\n        <div class=\"text-muted-foreground my-2 text-[10px] uppercase\">\n          {{ i18n.t(\"devtools:web.label\") }}\n        </div>\n        <RouterLink\n          v-for=\"item in webNav\"\n          :key=\"item.name\"\n          class=\"cursor-default\"\n          :to=\"{ name: item.name }\"\n        >\n          <UiMenuItem\n            :label=\"item.label\"\n            :is-active=\"isActiveRoute(item.name)\"\n          />\n        </RouterLink>\n        <div class=\"text-muted-foreground my-2 text-[10px] uppercase\">\n          {{ i18n.t(\"devtools:generators.label\") }}\n        </div>\n        <RouterLink\n          v-for=\"item in generatorsNav\"\n          :key=\"item.name\"\n          class=\"cursor-default\"\n          :to=\"{ name: item.name }\"\n        >\n          <UiMenuItem\n            :label=\"item.label\"\n            :is-active=\"isActiveRoute(item.name)\"\n          />\n        </RouterLink>\n        <div class=\"text-muted-foreground my-2 text-[10px] uppercase\">\n          demo\n        </div>\n        <RouterLink\n          v-for=\"item in uiNav\"\n          :key=\"item.name\"\n          class=\"cursor-default\"\n          :to=\"{ name: item.name }\"\n        >\n          <UiMenuItem\n            :label=\"item.label\"\n            :is-active=\"isActiveRoute(item.name)\"\n          />\n        </RouterLink>\n      </div>\n    </template>\n    <template #right>\n      <div class=\"scrollbar h-full min-h-0 overflow-y-auto px-5 pb-5\">\n        <RouterView />\n      </div>\n    </template>\n  </LayoutTwoColumn>\n</template>\n"
  },
  {
    "path": "src/renderer/views/Main.vue",
    "content": "<template>\n  <CodeSpaceLayout />\n</template>\n"
  },
  {
    "path": "src/renderer/views/MarkdownPresentation.vue",
    "content": "<script setup lang=\"ts\"></script>\n\n<template>\n  <div>\n    <EditorMarkdownPresentation />\n  </div>\n</template>\n"
  },
  {
    "path": "src/renderer/views/MathNotebook.vue",
    "content": "<script setup lang=\"ts\">\nimport { useApp, useMathNotebook } from '@/composables'\nimport { i18n } from '@/electron'\n\nconst { isAppLoading } = useApp()\nconst { init } = useMathNotebook()\n\nonMounted(async () => {\n  await init()\n  isAppLoading.value = false\n})\n</script>\n\n<template>\n  <LayoutTwoColumn\n    :title=\"i18n.t('mathNotebook.label')\"\n    :show-back=\"false\"\n  >\n    <template #left>\n      <MathNotebookSheetList />\n    </template>\n    <template #right>\n      <MathNotebookWorkspace />\n    </template>\n  </LayoutTwoColumn>\n</template>\n"
  },
  {
    "path": "src/renderer/views/Preferences.vue",
    "content": "<script setup lang=\"ts\">\nimport type { Component } from 'vue'\nimport { preferencesKeys } from '@/components/preferences/keys'\nimport { i18n } from '@/electron'\nimport { router, RouterName } from '@/router'\nimport { isMac } from '@/utils'\nimport { Code, Globe, HardDrive, Palette, Plug } from 'lucide-vue-next'\nimport { RouterLink, useRoute } from 'vue-router'\n\nconst route = useRoute()\n\nconst scrollRef = useTemplateRef<HTMLElement>('scrollRef')\n\nconst isActiveRoute = computed(() => {\n  return (name: string) => route.name === name\n})\n\nconst nav: { label: string, name: string, icon: Component }[] = [\n  {\n    label: i18n.t('preferences:storage.label'),\n    name: RouterName.preferencesStorage,\n    icon: HardDrive,\n  },\n  {\n    label: i18n.t('preferences:editor.label'),\n    name: RouterName.preferencesEditor,\n    icon: Code,\n  },\n  {\n    label: i18n.t('preferences:language.label'),\n    name: RouterName.preferencesLanguage,\n    icon: Globe,\n  },\n  {\n    label: i18n.t('preferences:appearance.label'),\n    name: RouterName.preferencesAppearance,\n    icon: Palette,\n  },\n  {\n    label: i18n.t('preferences:api.label'),\n    name: RouterName.preferencesAPI,\n    icon: Plug,\n  },\n]\n\nprovide(preferencesKeys, {\n  scrollRef,\n})\n</script>\n\n<template>\n  <LayoutTwoColumn\n    :title=\"i18n.t('preferences:label')\"\n    :top-space=\"isMac ? 16 : 6\"\n    @back=\"() => router.push({ name: RouterName.main })\"\n  >\n    <template #left>\n      <div class=\"scrollbar h-full min-h-0 overflow-y-auto px-2\">\n        <RouterLink\n          v-for=\"item in nav\"\n          :key=\"item.name\"\n          class=\"cursor-default\"\n          :to=\"{ name: item.name }\"\n        >\n          <UiMenuItem\n            :label=\"item.label\"\n            :is-active=\"isActiveRoute(item.name)\"\n          >\n            <template #icon>\n              <component\n                :is=\"item.icon\"\n                class=\"h-4 w-4\"\n              />\n            </template>\n          </UiMenuItem>\n        </RouterLink>\n      </div>\n    </template>\n    <template #right>\n      <div\n        ref=\"scrollRef\"\n        class=\"scrollbar h-full min-h-0 overflow-y-auto px-5 pt-3 pb-5\"\n      >\n        <RouterView />\n      </div>\n    </template>\n  </LayoutTwoColumn>\n</template>\n"
  },
  {
    "path": "src/renderer/vue-virtual-scroller.d.ts",
    "content": "declare module 'vue-virtual-scroller' {\n  import type { DefineComponent } from 'vue'\n\n  export const RecycleScroller: DefineComponent<any, any, any>\n  export const DynamicScroller: DefineComponent<any, any, any>\n  export const DynamicScrollerItem: DefineComponent<any, any, any>\n\n  const plugin: {\n    install: (app: any) => void\n  }\n\n  export default plugin\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"jsx\": \"preserve\",\n    \"lib\": [\"ESNext\", \"DOM\"],\n    \"baseUrl\": \".\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"node\",\n    \"paths\": {\n      \"~/*\": [\"src/*\"],\n      \"@/*\": [\"src/renderer/*\"]\n    },\n    \"resolveJsonModule\": true,\n    \"types\": [\"vite/client\", \"node\"],\n    \"strict\": true,\n    \"sourceMap\": true,\n    \"esModuleInterop\": true\n  },\n  \"include\": [\n    \"src/renderer/**/*.ts\",\n    \"src/renderer/**/*.d.ts\",\n    \"src/renderer/**/*.tsx\",\n    \"src/renderer/**/*.vue\",\n    \"src/main/types/**/*.ts\"\n  ]\n}\n"
  },
  {
    "path": "tsconfig.main.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2023\",\n    \"rootDir\": \"src/main\",\n    \"module\": \"CommonJS\",\n    \"resolveJsonModule\": true,\n    \"strict\": true,\n    \"inlineSources\": true,\n    \"outDir\": \"build/main\",\n    \"sourceMap\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  },\n  \"include\": [\n    \"src/main/**/*\",\n    \"src/main/i18n/locales/**/*.json\"\n  ]\n}\n"
  },
  {
    "path": "vite.config.mjs",
    "content": "import path from 'node:path'\nimport tailwindcss from '@tailwindcss/vite'\nimport vue from '@vitejs/plugin-vue'\nimport AutoImport from 'unplugin-auto-import/vite'\nimport Components from 'unplugin-vue-components/vite'\nimport { defineConfig } from 'vite'\n\nconst root = path.resolve(__dirname)\nconst rootSrc = path.resolve(__dirname, 'src')\nconst rootRenderer = path.resolve(__dirname, 'src/renderer')\n\nexport default defineConfig({\n  root: rootRenderer,\n  base: './',\n  plugins: [\n    vue(),\n    tailwindcss(),\n    AutoImport({\n      imports: ['vue'],\n    }),\n    Components({\n      dirs: [`${rootRenderer}/components`],\n      extensions: ['vue'],\n      dts: true,\n      directoryAsNamespace: true,\n      collapseSamePrefixes: true,\n    }),\n  ],\n  build: {\n    outDir: path.resolve(__dirname, 'build/renderer'),\n    emptyOutDir: true,\n  },\n  resolve: {\n    alias: {\n      '@': rootRenderer,\n      '~': rootSrc,\n    },\n  },\n  define: {\n    'process.env': {},\n    'process': {},\n  },\n  server: {\n    watch: {\n      ignored: [\n        `${root}/src/main/i18n/locales/**/*`,\n        `${root}/scripts/**/*`,\n        `${root}/build/**/*`,\n        `${root}/src/main/**/*`,\n      ],\n    },\n  },\n})\n"
  },
  {
    "path": "vitest.config.ts",
    "content": "import path from 'node:path'\nimport { defineConfig } from 'vitest/config'\n\nexport default defineConfig({\n  resolve: {\n    alias: {\n      '@': path.resolve(__dirname, 'src/renderer'),\n      '~': path.resolve(__dirname, 'src'),\n    },\n  },\n  test: {\n    globals: true,\n  },\n})\n"
  }
]